正在显示
1 个修改的文件
包含
81 行增加
和
1 行删除
| @@ -3,6 +3,7 @@ package repository | @@ -3,6 +3,7 @@ package repository | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | "github.com/go-pg/pg/v10" | 5 | "github.com/go-pg/pg/v10" |
| 6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" | ||
| 6 | "time" | 7 | "time" |
| 7 | 8 | ||
| 8 | "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder" | 9 | "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder" |
| @@ -167,8 +168,87 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder | @@ -167,8 +168,87 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder | ||
| 167 | ); err != nil { | 168 | ); err != nil { |
| 168 | return dividendsReturnedOrder, err | 169 | return dividendsReturnedOrder, err |
| 169 | } | 170 | } |
| 170 | - //TODO 新增、更新、删除分红退货单产品 | ||
| 171 | 171 | ||
| 172 | + // 获取分红退货订单产品 | ||
| 173 | + var orderGoodsFetched []*models.OrderGood | ||
| 174 | + orderGoodsQuery := tx.Model(&orderGoodsFetched) | ||
| 175 | + if err := orderGoodsQuery.Where("dividends_return_order_number = ?", dividendsReturnedOrder.DividendsReturnedOrderNumber).Select(); err != nil { | ||
| 176 | + return nil, err | ||
| 177 | + } | ||
| 178 | + | ||
| 179 | + // 提取分红退货订单产品id | ||
| 180 | + var orderGoodIdsFetched []int64 | ||
| 181 | + for _, orderGood := range orderGoodsFetched { | ||
| 182 | + orderGoodIdsFetched = append(orderGoodIdsFetched, orderGood.OrderGoodId) | ||
| 183 | + } | ||
| 184 | + | ||
| 185 | + // 待更新分红退货单产品 | ||
| 186 | + var orderGoodsToUpdate []*domain.OrderGood | ||
| 187 | + // 待添加分红退货单产品 | ||
| 188 | + var orderGoodsToAdd []*domain.OrderGood | ||
| 189 | + for _, good := range dividendsReturnedOrder.Goods { | ||
| 190 | + if good.OrderGoodId != 0 { | ||
| 191 | + orderGoodsToUpdate = append(orderGoodsToUpdate, good) | ||
| 192 | + } else { | ||
| 193 | + orderGoodsToAdd = append(orderGoodsToAdd, good) | ||
| 194 | + } | ||
| 195 | + } | ||
| 196 | + | ||
| 197 | + // 将待添加的分红退户订单产品领域模型转换为数据模型 | ||
| 198 | + var orderGoodsToAddModels []*models.OrderGood | ||
| 199 | + for _, goodDomain := range orderGoodsToAdd { | ||
| 200 | + orderGoodsToAddModels = append(orderGoodsToAddModels, &models.OrderGood{ | ||
| 201 | + OrderGoodAmount: goodDomain.OrderGoodAmount, | ||
| 202 | + OrderGoodName: goodDomain.OrderGoodName, | ||
| 203 | + OrderGoodPrice: goodDomain.OrderGoodPrice, | ||
| 204 | + OrderGoodQuantity: goodDomain.OrderGoodQuantity, | ||
| 205 | + DividendsOrderNumber: goodDomain.DividendsOrderNumber, | ||
| 206 | + DividendsReturnedOrderNumber: goodDomain.DividendsReturnedOrderNumber, | ||
| 207 | + CooperationContractNumber: goodDomain.CooperationContractNumber, | ||
| 208 | + OrderGoodExpense: goodDomain.OrderGoodExpense, | ||
| 209 | + CreatedAt: time.Time{}, | ||
| 210 | + DeletedAt: time.Time{}, | ||
| 211 | + UpdatedAt: time.Now(), | ||
| 212 | + }) | ||
| 213 | + } | ||
| 214 | + // 添加分红退货订单产品 | ||
| 215 | + if _, err := tx.Model(&orderGoodsToAddModels).Insert(); err != nil { | ||
| 216 | + return nil, err | ||
| 217 | + } | ||
| 218 | + | ||
| 219 | + // 待更新或者删除的ids | ||
| 220 | + var orderGoodIdsToUpdateOrDelete []int64 | ||
| 221 | + for _, orderGoodToUpdate := range orderGoodsToUpdate { | ||
| 222 | + orderGoodIdsToUpdateOrDelete = append(orderGoodIdsToUpdateOrDelete, orderGoodToUpdate.OrderGoodId) | ||
| 223 | + } | ||
| 224 | + | ||
| 225 | + // 待更新的分红退货订单产品id | ||
| 226 | + orderGoodIdsToUpdate := utils.Intersect(orderGoodIdsFetched, orderGoodIdsToUpdateOrDelete) | ||
| 227 | + var orderGoodModelsToUpdate []*models.OrderGood | ||
| 228 | + for _, id := range orderGoodIdsToUpdate { | ||
| 229 | + for _, orderGoodModel := range orderGoodsFetched { | ||
| 230 | + if orderGoodModel.OrderGoodId == id { | ||
| 231 | + orderGoodModelsToUpdate = append(orderGoodModelsToUpdate, orderGoodModel) | ||
| 232 | + } | ||
| 233 | + } | ||
| 234 | + } | ||
| 235 | + if _, err := tx.Model(&orderGoodModelsToUpdate).WherePK().Update(); err != nil { | ||
| 236 | + return nil, err | ||
| 237 | + } | ||
| 238 | + | ||
| 239 | + // 待删除的分红退货订单产品id | ||
| 240 | + orderGoodIdsToDelete := utils.Difference(orderGoodIdsFetched, orderGoodIdsToUpdateOrDelete) | ||
| 241 | + var orderGoodModelsToDelete []*models.OrderGood | ||
| 242 | + for _, id := range orderGoodIdsToDelete { | ||
| 243 | + for _, orderGoodModel := range orderGoodsFetched { | ||
| 244 | + if orderGoodModel.OrderGoodId == id { | ||
| 245 | + orderGoodModelsToDelete = append(orderGoodModelsToDelete, orderGoodModel) | ||
| 246 | + } | ||
| 247 | + } | ||
| 248 | + } | ||
| 249 | + if _, err := tx.Model(&orderGoodModelsToDelete).WherePK().Delete(); err != nil { | ||
| 250 | + return nil, err | ||
| 251 | + } | ||
| 172 | } | 252 | } |
| 173 | return dividendsReturnedOrder, nil | 253 | return dividendsReturnedOrder, nil |
| 174 | } | 254 | } |
-
请 注册 或 登录 后发表评论