正在显示
6 个修改的文件
包含
124 行增加
和
2 行删除
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "reflect" | ||
6 | + "strings" | ||
7 | + | ||
8 | + "github.com/beego/beego/v2/core/validation" | ||
9 | +) | ||
10 | + | ||
11 | +type BatchRemoveDividendsReturnedOrderCommand struct { | ||
12 | + // 分红退货单ID列表 | ||
13 | + DividendsReturnedOrderIds []string `cname:"分红退货单ID列表" json:"dividendsReturnedOrderIds,omitempty"` | ||
14 | + // 公司ID,通过集成REST上下文获取 | ||
15 | + CompanyId int64 `cname:"公司ID" json:"companyId,string" valid:"Required"` | ||
16 | + // 组织机构ID | ||
17 | + OrgId int64 `cname:"组织机构ID" json:"orgId,string" valid:"Required"` | ||
18 | + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员 | ||
19 | + UserId int64 `cname:"用户ID" json:"userId,string" valid:"Required"` | ||
20 | + // 用户基础数据id | ||
21 | + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId,string" valid:"Required"` | ||
22 | +} | ||
23 | + | ||
24 | +func (batchRemoveDividendsReturnedOrderCommand *BatchRemoveDividendsReturnedOrderCommand) Valid(validation *validation.Validation) { | ||
25 | + //validation.SetError("CustomValid", "未实现的自定义认证") | ||
26 | +} | ||
27 | + | ||
28 | +func (batchRemoveDividendsReturnedOrderCommand *BatchRemoveDividendsReturnedOrderCommand) ValidateCommand() error { | ||
29 | + valid := validation.Validation{} | ||
30 | + b, err := valid.Valid(batchRemoveDividendsReturnedOrderCommand) | ||
31 | + if err != nil { | ||
32 | + return err | ||
33 | + } | ||
34 | + if !b { | ||
35 | + elem := reflect.TypeOf(batchRemoveDividendsReturnedOrderCommand).Elem() | ||
36 | + for _, validErr := range valid.Errors { | ||
37 | + field, isExist := elem.FieldByName(validErr.Field) | ||
38 | + if isExist { | ||
39 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
40 | + } else { | ||
41 | + return fmt.Errorf(validErr.Message) | ||
42 | + } | ||
43 | + } | ||
44 | + } | ||
45 | + return nil | ||
46 | +} |
@@ -10,6 +10,7 @@ import ( | @@ -10,6 +10,7 @@ import ( | ||
10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" |
11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" | 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" |
12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" | 12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" |
13 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" | ||
13 | "time" | 14 | "time" |
14 | ) | 15 | ) |
15 | 16 | ||
@@ -306,6 +307,51 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) RemoveDivide | @@ -306,6 +307,51 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) RemoveDivide | ||
306 | } | 307 | } |
307 | } | 308 | } |
308 | 309 | ||
310 | +// BatchRemoveDividendsReturnedOrder 批量移除分红退货单实体对象 | ||
311 | +func (dividendsReturnedOrderService *DividendsReturnedOrderService) BatchRemoveDividendsReturnedOrder(batchRemoveDividendsOrderCommand *command.BatchRemoveDividendsReturnedOrderCommand) (interface{}, error) { | ||
312 | + if err := batchRemoveDividendsOrderCommand.ValidateCommand(); err != nil { | ||
313 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
314 | + } | ||
315 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
316 | + if err != nil { | ||
317 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
318 | + } | ||
319 | + if err := transactionContext.StartTransaction(); err != nil { | ||
320 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
321 | + } | ||
322 | + defer func() { | ||
323 | + _ = transactionContext.RollbackTransaction() | ||
324 | + }() | ||
325 | + var dividendsReturnedOrderRepository domain.DividendsReturnedOrderRepository | ||
326 | + if value, err := factory.CreateDividendsReturnedOrderRepository(map[string]interface{}{ | ||
327 | + "transactionContext": transactionContext, | ||
328 | + }); err != nil { | ||
329 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
330 | + } else { | ||
331 | + dividendsReturnedOrderRepository = value | ||
332 | + } | ||
333 | + | ||
334 | + dividendsReturnedOrderIds, _ := utils.SliceAtoi(batchRemoveDividendsOrderCommand.DividendsReturnedOrderIds) | ||
335 | + if count, dividendsReturnedOrders, err := dividendsReturnedOrderRepository.Find(map[string]interface{}{ | ||
336 | + "dividendsReturnedOrderIds": dividendsReturnedOrderIds, | ||
337 | + }); err != nil { | ||
338 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
339 | + } else { | ||
340 | + if count > 0 { | ||
341 | + dividendsOrdersRemoved, err := dividendsReturnedOrderRepository.BatchRemove(dividendsReturnedOrders) | ||
342 | + if err != nil { | ||
343 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
344 | + } | ||
345 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
346 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
347 | + } | ||
348 | + return dividendsOrdersRemoved, nil | ||
349 | + } else { | ||
350 | + return map[string]interface{}{}, nil | ||
351 | + } | ||
352 | + } | ||
353 | +} | ||
354 | + | ||
309 | // SearchDividendsReturnedOrder 查找分红退货单 | 355 | // SearchDividendsReturnedOrder 查找分红退货单 |
310 | func (dividendsReturnedOrderService *DividendsReturnedOrderService) SearchDividendsReturnedOrder(searchDividendsReturnedOrderQuery *query.SearchDividendsReturnedOrderQuery) (interface{}, error) { | 356 | func (dividendsReturnedOrderService *DividendsReturnedOrderService) SearchDividendsReturnedOrder(searchDividendsReturnedOrderQuery *query.SearchDividendsReturnedOrderQuery) (interface{}, error) { |
311 | if err := searchDividendsReturnedOrderQuery.ValidateQuery(); err != nil { | 357 | if err := searchDividendsReturnedOrderQuery.ValidateQuery(); err != nil { |
@@ -47,6 +47,7 @@ type DividendsReturnedOrder struct { | @@ -47,6 +47,7 @@ type DividendsReturnedOrder struct { | ||
47 | type DividendsReturnedOrderRepository interface { | 47 | type DividendsReturnedOrderRepository interface { |
48 | Save(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) | 48 | Save(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) |
49 | Remove(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) | 49 | Remove(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) |
50 | + BatchRemove(dividendsReturnedOrders []*DividendsReturnedOrder) ([]*DividendsReturnedOrder, error) | ||
50 | FindOne(queryOptions map[string]interface{}) (*DividendsReturnedOrder, error) | 51 | FindOne(queryOptions map[string]interface{}) (*DividendsReturnedOrder, error) |
51 | Find(queryOptions map[string]interface{}) (int64, []*DividendsReturnedOrder, error) | 52 | Find(queryOptions map[string]interface{}) (int64, []*DividendsReturnedOrder, error) |
52 | } | 53 | } |
@@ -331,6 +331,9 @@ func (repository *DividendsOrderRepository) Find(queryOptions map[string]interfa | @@ -331,6 +331,9 @@ func (repository *DividendsOrderRepository) Find(queryOptions map[string]interfa | ||
331 | if customerName, ok := queryOptions["customerName"]; ok && customerName != "" { | 331 | if customerName, ok := queryOptions["customerName"]; ok && customerName != "" { |
332 | query.Where("customer_name like ?", fmt.Sprintf("%%%s%%", customerName)) | 332 | query.Where("customer_name like ?", fmt.Sprintf("%%%s%%", customerName)) |
333 | } | 333 | } |
334 | + if dividendsOrderIds, ok := queryOptions["dividendsOrderIds"]; ok && len(dividendsOrderIds.([]int64)) > 0 { | ||
335 | + query.Where("dividends_order_id IN (?)", pg.In(dividendsOrderIds.([]int64))) | ||
336 | + } | ||
334 | offsetLimitFlag := true | 337 | offsetLimitFlag := true |
335 | if offsetLimit, ok := queryOptions["offsetLimit"]; ok { | 338 | if offsetLimit, ok := queryOptions["offsetLimit"]; ok { |
336 | offsetLimitFlag = offsetLimit.(bool) | 339 | offsetLimitFlag = offsetLimit.(bool) |
@@ -96,7 +96,7 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder | @@ -96,7 +96,7 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder | ||
96 | dividendsReturnedOrder.Org, | 96 | dividendsReturnedOrder.Org, |
97 | dividendsReturnedOrder.Company, | 97 | dividendsReturnedOrder.Company, |
98 | dividendsReturnedOrder.CreatedAt, | 98 | dividendsReturnedOrder.CreatedAt, |
99 | - dividendsReturnedOrder.DeletedAt, | 99 | + nil, |
100 | dividendsReturnedOrder.UpdatedAt, | 100 | dividendsReturnedOrder.UpdatedAt, |
101 | dividendsReturnedOrder.Operator, | 101 | dividendsReturnedOrder.Operator, |
102 | dividendsReturnedOrder.OperateTime, | 102 | dividendsReturnedOrder.OperateTime, |
@@ -162,7 +162,7 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder | @@ -162,7 +162,7 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder | ||
162 | dividendsReturnedOrder.Org, | 162 | dividendsReturnedOrder.Org, |
163 | dividendsReturnedOrder.Company, | 163 | dividendsReturnedOrder.Company, |
164 | dividendsReturnedOrder.CreatedAt, | 164 | dividendsReturnedOrder.CreatedAt, |
165 | - dividendsReturnedOrder.DeletedAt, | 165 | + nil, |
166 | dividendsReturnedOrder.UpdatedAt, | 166 | dividendsReturnedOrder.UpdatedAt, |
167 | dividendsReturnedOrder.Operator, | 167 | dividendsReturnedOrder.Operator, |
168 | dividendsReturnedOrder.OperateTime, | 168 | dividendsReturnedOrder.OperateTime, |
@@ -273,6 +273,28 @@ func (repository *DividendsReturnedOrderRepository) Remove(dividendsReturnedOrde | @@ -273,6 +273,28 @@ func (repository *DividendsReturnedOrderRepository) Remove(dividendsReturnedOrde | ||
273 | return dividendsReturnedOrder, nil | 273 | return dividendsReturnedOrder, nil |
274 | } | 274 | } |
275 | 275 | ||
276 | +func (repository *DividendsReturnedOrderRepository) BatchRemove(dividendsReturnedOrders []*domain.DividendsReturnedOrder) ([]*domain.DividendsReturnedOrder, error) { | ||
277 | + tx := repository.transactionContext.PgTx | ||
278 | + var dividendsReturnedOrderModels []*models.DividendsReturnedOrder | ||
279 | + for _, dividendsReturnedOrder := range dividendsReturnedOrders { | ||
280 | + dividendsReturnedOrderModels = append(dividendsReturnedOrderModels, &models.DividendsReturnedOrder{ | ||
281 | + DividendsReturnedOrderId: dividendsReturnedOrder.Identify().(int64), | ||
282 | + }) | ||
283 | + } | ||
284 | + if _, err := tx.Model(÷ndsReturnedOrderModels).WherePK().Delete(); err != nil { | ||
285 | + return dividendsReturnedOrders, err | ||
286 | + } else { | ||
287 | + for _, dividendsReturnedOrder := range dividendsReturnedOrders { | ||
288 | + // 删除退货单产品 | ||
289 | + var orderGoodModels []*models.OrderGood | ||
290 | + if _, err := tx.Model(&orderGoodModels).Where("dividends_returned_order_number = ?", dividendsReturnedOrder.DividendsReturnedOrderNumber).Delete(); err != nil { | ||
291 | + return nil, err | ||
292 | + } | ||
293 | + } | ||
294 | + } | ||
295 | + return dividendsReturnedOrders, nil | ||
296 | +} | ||
297 | + | ||
276 | func (repository *DividendsReturnedOrderRepository) FindOne(queryOptions map[string]interface{}) (*domain.DividendsReturnedOrder, error) { | 298 | func (repository *DividendsReturnedOrderRepository) FindOne(queryOptions map[string]interface{}) (*domain.DividendsReturnedOrder, error) { |
277 | tx := repository.transactionContext.PgTx | 299 | tx := repository.transactionContext.PgTx |
278 | dividendsReturnedOrderModel := new(models.DividendsReturnedOrder) | 300 | dividendsReturnedOrderModel := new(models.DividendsReturnedOrder) |
@@ -304,6 +326,9 @@ func (repository *DividendsReturnedOrderRepository) Find(queryOptions map[string | @@ -304,6 +326,9 @@ func (repository *DividendsReturnedOrderRepository) Find(queryOptions map[string | ||
304 | var dividendsReturnedOrderModels []*models.DividendsReturnedOrder | 326 | var dividendsReturnedOrderModels []*models.DividendsReturnedOrder |
305 | dividendsReturnedOrders := make([]*domain.DividendsReturnedOrder, 0) | 327 | dividendsReturnedOrders := make([]*domain.DividendsReturnedOrder, 0) |
306 | query := sqlbuilder.BuildQuery(tx.Model(÷ndsReturnedOrderModels), queryOptions) | 328 | query := sqlbuilder.BuildQuery(tx.Model(÷ndsReturnedOrderModels), queryOptions) |
329 | + if dividendsReturnedOrderIds, ok := queryOptions["dividendsReturnedOrderIds"]; ok && len(dividendsReturnedOrderIds.([]int64)) > 0 { | ||
330 | + query.Where("dividends_returned_order_id IN (?)", pg.In(dividendsReturnedOrderIds.([]int64))) | ||
331 | + } | ||
307 | offsetLimitFlag := true | 332 | offsetLimitFlag := true |
308 | if offsetLimit, ok := queryOptions["offsetLimit"]; ok { | 333 | if offsetLimit, ok := queryOptions["offsetLimit"]; ok { |
309 | offsetLimitFlag = offsetLimit.(bool) | 334 | offsetLimitFlag = offsetLimit.(bool) |
@@ -10,6 +10,7 @@ func init() { | @@ -10,6 +10,7 @@ func init() { | ||
10 | web.Router("/dividends-orders/:dividendsOrderId", &controllers.DividendsOrderController{}, "Put:UpdateDividendsOrder") | 10 | web.Router("/dividends-orders/:dividendsOrderId", &controllers.DividendsOrderController{}, "Put:UpdateDividendsOrder") |
11 | web.Router("/dividends-orders/:dividendsOrderId", &controllers.DividendsOrderController{}, "Get:GetDividendsOrder") | 11 | web.Router("/dividends-orders/:dividendsOrderId", &controllers.DividendsOrderController{}, "Get:GetDividendsOrder") |
12 | web.Router("/dividends-orders/:dividendsOrderId", &controllers.DividendsOrderController{}, "Delete:RemoveDividendsOrder") | 12 | web.Router("/dividends-orders/:dividendsOrderId", &controllers.DividendsOrderController{}, "Delete:RemoveDividendsOrder") |
13 | + web.Router("/dividends-orders/batch-remove", &controllers.DividendsOrderController{}, "Post:BatchRemoveDividendsOrder") | ||
13 | web.Router("/dividends-orders/search", &controllers.DividendsOrderController{}, "Post:SearchDividendsOrder") | 14 | web.Router("/dividends-orders/search", &controllers.DividendsOrderController{}, "Post:SearchDividendsOrder") |
14 | web.Router("/dividends-orders/search-order-number", &controllers.DividendsOrderController{}, "Post:SearchDividendsOrderNumber") | 15 | web.Router("/dividends-orders/search-order-number", &controllers.DividendsOrderController{}, "Post:SearchDividendsOrderNumber") |
15 | web.Router("/dividends-orders/", &controllers.DividendsOrderController{}, "Get:ListDividendsOrders") | 16 | web.Router("/dividends-orders/", &controllers.DividendsOrderController{}, "Get:ListDividendsOrders") |
-
请 注册 或 登录 后发表评论