正在显示
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" |
| @@ -162,8 +163,87 @@ func (repository *DividendsOrderRepository) Save(dividendsOrder *domain.Dividend | @@ -162,8 +163,87 @@ func (repository *DividendsOrderRepository) Save(dividendsOrder *domain.Dividend | ||
| 162 | ); err != nil { | 163 | ); err != nil { |
| 163 | return dividendsOrder, err | 164 | return dividendsOrder, err |
| 164 | } | 165 | } |
| 165 | - //TODO 新增、更新、删除分红订单产品 | ||
| 166 | 166 | ||
| 167 | + // 更新分红订单产品 | ||
| 168 | + var orderGoodsFetched []*models.OrderGood | ||
| 169 | + orderGoodsQuery := tx.Model(&orderGoodsFetched) | ||
| 170 | + if err := orderGoodsQuery.Where("dividends_order_number = ?", dividendsOrder.DividendsOrderNumber).Select(); err != nil { | ||
| 171 | + return nil, err | ||
| 172 | + } | ||
| 173 | + | ||
| 174 | + // 提取分红订单产品id | ||
| 175 | + var orderGoodIdsFetched []int64 | ||
| 176 | + for _, orderGood := range orderGoodsFetched { | ||
| 177 | + orderGoodIdsFetched = append(orderGoodIdsFetched, orderGood.OrderGoodId) | ||
| 178 | + } | ||
| 179 | + | ||
| 180 | + // 待更新分红产品 | ||
| 181 | + var orderGoodsToUpdate []*domain.OrderGood | ||
| 182 | + // 待添加分红产品 | ||
| 183 | + var orderGoodsToAdd []*domain.OrderGood | ||
| 184 | + for _, good := range dividendsOrder.Goods { | ||
| 185 | + if good.OrderGoodId != 0 { | ||
| 186 | + orderGoodsToUpdate = append(orderGoodsToUpdate, good) | ||
| 187 | + } else { | ||
| 188 | + orderGoodsToAdd = append(orderGoodsToAdd, good) | ||
| 189 | + } | ||
| 190 | + } | ||
| 191 | + | ||
| 192 | + // 将待添加的分红订单产品领域模型转换为数据模型 | ||
| 193 | + var orderGoodsToAddModels []*models.OrderGood | ||
| 194 | + for _, goodDomain := range orderGoodsToAdd { | ||
| 195 | + orderGoodsToAddModels = append(orderGoodsToAddModels, &models.OrderGood{ | ||
| 196 | + OrderGoodAmount: goodDomain.OrderGoodAmount, | ||
| 197 | + OrderGoodName: goodDomain.OrderGoodName, | ||
| 198 | + OrderGoodPrice: goodDomain.OrderGoodPrice, | ||
| 199 | + OrderGoodQuantity: goodDomain.OrderGoodQuantity, | ||
| 200 | + DividendsOrderNumber: goodDomain.DividendsOrderNumber, | ||
| 201 | + DividendsReturnedOrderNumber: goodDomain.DividendsReturnedOrderNumber, | ||
| 202 | + CooperationContractNumber: goodDomain.CooperationContractNumber, | ||
| 203 | + OrderGoodExpense: goodDomain.OrderGoodExpense, | ||
| 204 | + CreatedAt: time.Time{}, | ||
| 205 | + DeletedAt: time.Time{}, | ||
| 206 | + UpdatedAt: time.Now(), | ||
| 207 | + }) | ||
| 208 | + } | ||
| 209 | + // 添加分红订单产品 | ||
| 210 | + if _, err := tx.Model(&orderGoodsToAddModels).Insert(); err != nil { | ||
| 211 | + return nil, err | ||
| 212 | + } | ||
| 213 | + | ||
| 214 | + // 待更新或者删除的ids | ||
| 215 | + var orderGoodIdsToUpdateOrDelete []int64 | ||
| 216 | + for _, orderGoodToUpdate := range orderGoodsToUpdate { | ||
| 217 | + orderGoodIdsToUpdateOrDelete = append(orderGoodIdsToUpdateOrDelete, orderGoodToUpdate.OrderGoodId) | ||
| 218 | + } | ||
| 219 | + | ||
| 220 | + // 待更新的分红订单产品id | ||
| 221 | + orderGoodIdsToUpdate := utils.Intersect(orderGoodIdsFetched, orderGoodIdsToUpdateOrDelete) | ||
| 222 | + var orderGoodModelsToUpdate []*models.OrderGood | ||
| 223 | + for _, id := range orderGoodIdsToUpdate { | ||
| 224 | + for _, orderGoodModel := range orderGoodsFetched { | ||
| 225 | + if orderGoodModel.OrderGoodId == id { | ||
| 226 | + orderGoodModelsToUpdate = append(orderGoodModelsToUpdate, orderGoodModel) | ||
| 227 | + } | ||
| 228 | + } | ||
| 229 | + } | ||
| 230 | + if _, err := tx.Model(&orderGoodModelsToUpdate).WherePK().Update(); err != nil { | ||
| 231 | + return nil, err | ||
| 232 | + } | ||
| 233 | + | ||
| 234 | + // 待删除的分红订单产品id | ||
| 235 | + orderGoodIdsToDelete := utils.Difference(orderGoodIdsFetched, orderGoodIdsToUpdateOrDelete) | ||
| 236 | + var orderGoodModelsToDelete []*models.OrderGood | ||
| 237 | + for _, id := range orderGoodIdsToDelete { | ||
| 238 | + for _, orderGoodModel := range orderGoodsFetched { | ||
| 239 | + if orderGoodModel.OrderGoodId == id { | ||
| 240 | + orderGoodModelsToDelete = append(orderGoodModelsToDelete, orderGoodModel) | ||
| 241 | + } | ||
| 242 | + } | ||
| 243 | + } | ||
| 244 | + if _, err := tx.Model(&orderGoodModelsToDelete).WherePK().Delete(); err != nil { | ||
| 245 | + return nil, err | ||
| 246 | + } | ||
| 167 | } | 247 | } |
| 168 | return dividendsOrder, nil | 248 | return dividendsOrder, nil |
| 169 | } | 249 | } |
-
请 注册 或 登录 后发表评论