正在显示
8 个修改的文件
包含
602 行增加
和
44 行删除
| 1 | package subscriber | 1 | package subscriber |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | - "github.com/linmadan/egglib-go/core/domain" | 4 | + "fmt" |
| 5 | + "time" | ||
| 6 | + | ||
| 7 | + coreDomain "github.com/linmadan/egglib-go/core/domain" | ||
| 8 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | ||
| 5 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain/event" | 9 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain/event" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" | 10 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" |
| 11 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/repository" | ||
| 12 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | ||
| 7 | ) | 13 | ) |
| 8 | 14 | ||
| 9 | //订单数据修改触发的订阅事件 | 15 | //订单数据修改触发的订阅事件 |
| 10 | type OrderLogSubscriber struct { | 16 | type OrderLogSubscriber struct { |
| 11 | - transactionContext *transaction.TransactionContext | 17 | + TransactionContext *transaction.TransactionContext |
| 12 | } | 18 | } |
| 13 | 19 | ||
| 14 | -var _ domain.DomainEventSubscriber = (*OrderLogSubscriber)(nil) | 20 | +var _ coreDomain.DomainEventSubscriber = (*OrderLogSubscriber)(nil) |
| 21 | + | ||
| 22 | +func (subscriber *OrderLogSubscriber) HandleEvent(domainEvent coreDomain.DomainEvent) error { | ||
| 23 | + var ( | ||
| 24 | + orderLogRepository domain.OrderLogRepository | ||
| 25 | + userRepository domain.UsersRepository | ||
| 26 | + adminUser domain.Users | ||
| 27 | + err error | ||
| 28 | + ) | ||
| 29 | + | ||
| 30 | + if orderLogRepository, err = repository.NewOrderLogRepository(subscriber.TransactionContext); err != nil { | ||
| 31 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 32 | + } | ||
| 33 | + if userRepository, err = repository.NewUsersRepository(subscriber.TransactionContext); err != nil { | ||
| 34 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 35 | + } | ||
| 15 | 36 | ||
| 16 | -func (subscriber *OrderLogSubscriber) HandleEvent(domainEvent domain.DomainEvent) error { | ||
| 17 | switch domainEvent.EventType() { | 37 | switch domainEvent.EventType() { |
| 18 | //订单分红因为货品的数量变动而发送改变 | 38 | //订单分红因为货品的数量变动而发送改变 |
| 19 | case event.UPDATE_BONUS_BY_GOOD_NUMBER_EVENT: | 39 | case event.UPDATE_BONUS_BY_GOOD_NUMBER_EVENT: |
| 40 | + currentEvent := domainEvent.(event.UpdateBonusByGoodNumber) | ||
| 41 | + adminUser, err = userRepository.FindOne(domain.UsersFindOneQuery{Id: currentEvent.AdminId}) | ||
| 42 | + if err != nil { | ||
| 43 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 44 | + } | ||
| 45 | + orderLog := domain.OrderLog{ | ||
| 46 | + OperatorType: domain.ORDER_LOG_OPERATOR_ADMIN, | ||
| 47 | + OperatorId: currentEvent.AdminId, | ||
| 48 | + Operator: adminUser.Name, | ||
| 49 | + AlterTime: time.Now(), | ||
| 50 | + DataFrom: domain.ORDER_LOG_FROM, | ||
| 51 | + LogAction: "修改", | ||
| 52 | + OrderId: currentEvent.OrderId, | ||
| 53 | + GoodId: currentEvent.GoodId, | ||
| 54 | + Descript: []domain.OrderLogDescript{ | ||
| 55 | + domain.OrderLogDescript{ | ||
| 56 | + Title: "调整商品数量", | ||
| 57 | + Item: currentEvent.GoodName, | ||
| 58 | + Action: []string{ | ||
| 59 | + fmt.Sprintf("购买数量由%s调整为%s", currentEvent.FormerNumber, currentEvent.NewNumber), | ||
| 60 | + fmt.Sprintf("商品总价由¥%s调整为¥%s", currentEvent.FormerAmount, currentEvent.NewAmount), | ||
| 61 | + }, | ||
| 62 | + }, | ||
| 63 | + }, | ||
| 64 | + } | ||
| 65 | + err = orderLogRepository.Add(&orderLog) | ||
| 66 | + break | ||
| 20 | //订单分红因为合伙人分红比例变动而发送改变 | 67 | //订单分红因为合伙人分红比例变动而发送改变 |
| 21 | case event.UPDATE_BONUS_BY_PARTENT_BONUS_PERCENT_EVENT: | 68 | case event.UPDATE_BONUS_BY_PARTENT_BONUS_PERCENT_EVENT: |
| 69 | + currentEvent := domainEvent.(event.UpdateBounsByPartnerBonusPercent) | ||
| 70 | + adminUser, err = userRepository.FindOne(domain.UsersFindOneQuery{Id: currentEvent.AdminId}) | ||
| 71 | + if err != nil { | ||
| 72 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 73 | + } | ||
| 74 | + orderLog := domain.OrderLog{ | ||
| 75 | + OperatorType: domain.ORDER_LOG_OPERATOR_ADMIN, | ||
| 76 | + OperatorId: currentEvent.AdminId, | ||
| 77 | + Operator: adminUser.Name, | ||
| 78 | + AlterTime: time.Now(), | ||
| 79 | + DataFrom: domain.ORDER_LOG_FROM, | ||
| 80 | + LogAction: "修改", | ||
| 81 | + OrderId: currentEvent.OrderId, | ||
| 82 | + GoodId: currentEvent.GoodId, | ||
| 83 | + Descript: []domain.OrderLogDescript{ | ||
| 84 | + domain.OrderLogDescript{ | ||
| 85 | + Title: "合伙人分红比例", | ||
| 86 | + Item: currentEvent.GoodName, | ||
| 87 | + Action: []string{ | ||
| 88 | + fmt.Sprintf("分红比例由%s调整为%s", currentEvent.FormerPartnerBonusPercent, currentEvent.NewPartnerBonusPercent), | ||
| 89 | + fmt.Sprintf("应收分红由¥%s调整为¥%s", currentEvent.FormerPartnerBonus, currentEvent.NewPartnerBonus), | ||
| 90 | + }, | ||
| 91 | + }, | ||
| 92 | + }, | ||
| 93 | + } | ||
| 94 | + err = orderLogRepository.Add(&orderLog) | ||
| 95 | + break | ||
| 22 | //更新订单的备注 | 96 | //更新订单的备注 |
| 23 | case event.UPDATE_ORDER_REMARK: | 97 | case event.UPDATE_ORDER_REMARK: |
| 98 | + currentEvent := domainEvent.(event.UpdateOrderRemark) | ||
| 99 | + adminUser, err = userRepository.FindOne(domain.UsersFindOneQuery{Id: currentEvent.AdminId}) | ||
| 100 | + if err != nil { | ||
| 101 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 102 | + } | ||
| 103 | + orderLog := domain.OrderLog{ | ||
| 104 | + OperatorType: domain.ORDER_LOG_OPERATOR_ADMIN, | ||
| 105 | + OperatorId: currentEvent.AdminId, | ||
| 106 | + Operator: adminUser.Name, | ||
| 107 | + AlterTime: time.Now(), | ||
| 108 | + DataFrom: domain.ORDER_LOG_FROM, | ||
| 109 | + LogAction: "修改", | ||
| 110 | + OrderId: currentEvent.OrderId, | ||
| 111 | + GoodId: 0, | ||
| 112 | + Descript: []domain.OrderLogDescript{ | ||
| 113 | + domain.OrderLogDescript{ | ||
| 114 | + Title: "编辑备注", | ||
| 115 | + Item: currentEvent.NewRemark, | ||
| 116 | + Action: []string{}, | ||
| 117 | + }, | ||
| 118 | + }, | ||
| 119 | + } | ||
| 120 | + err = orderLogRepository.Add(&orderLog) | ||
| 121 | + break | ||
| 24 | // 支付订单中货品的分红 | 122 | // 支付订单中货品的分红 |
| 25 | case event.PAY_ORDER_GOOD_BONUS_EVENT: | 123 | case event.PAY_ORDER_GOOD_BONUS_EVENT: |
| 124 | + currentEvent := domainEvent.(event.PayOrderGoodBonus) | ||
| 125 | + adminUser, err = userRepository.FindOne(domain.UsersFindOneQuery{Id: currentEvent.AdminId}) | ||
| 126 | + if err != nil { | ||
| 127 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 128 | + } | ||
| 129 | + orderLog := domain.OrderLog{ | ||
| 130 | + OperatorType: domain.ORDER_LOG_OPERATOR_ADMIN, | ||
| 131 | + OperatorId: currentEvent.AdminId, | ||
| 132 | + Operator: adminUser.Name, | ||
| 133 | + AlterTime: time.Now(), | ||
| 134 | + DataFrom: domain.ORDER_LOG_FROM, | ||
| 135 | + LogAction: "支付", | ||
| 136 | + OrderId: currentEvent.OrderId, | ||
| 137 | + GoodId: currentEvent.GoodId, | ||
| 138 | + Descript: []domain.OrderLogDescript{ | ||
| 139 | + domain.OrderLogDescript{ | ||
| 140 | + Title: "支付分红", | ||
| 141 | + Item: currentEvent.GoodName, | ||
| 142 | + Action: []string{ | ||
| 143 | + fmt.Sprintf("支付分红¥%.2f", currentEvent.PartnerBonus), | ||
| 144 | + }, | ||
| 145 | + }, | ||
| 146 | + }, | ||
| 147 | + } | ||
| 148 | + err = orderLogRepository.Add(&orderLog) | ||
| 149 | + break | ||
| 26 | } | 150 | } |
| 27 | - return nil | 151 | + return err |
| 28 | } | 152 | } |
| 29 | 153 | ||
| 30 | func (subscriber *OrderLogSubscriber) SubscribedToEventTypes() []string { | 154 | func (subscriber *OrderLogSubscriber) SubscribedToEventTypes() []string { |
| @@ -13,3 +13,11 @@ func CreateBusinessBonusService(options map[string]interface{}) (service.Busines | @@ -13,3 +13,11 @@ func CreateBusinessBonusService(options map[string]interface{}) (service.Busines | ||
| 13 | } | 13 | } |
| 14 | return domainService.NewBusinessBonusService(transactionContext), nil | 14 | return domainService.NewBusinessBonusService(transactionContext), nil |
| 15 | } | 15 | } |
| 16 | + | ||
| 17 | +func CreateOrderBonusService(options map[string]interface{}) (service.OrderBonusService, error) { | ||
| 18 | + var transactionContext *transaction.TransactionContext | ||
| 19 | + if value, ok := options["transactionContext"]; ok { | ||
| 20 | + transactionContext = value.(*transaction.TransactionContext) | ||
| 21 | + } | ||
| 22 | + return domainService.NewOrderBonusService(transactionContext), nil | ||
| 23 | +} |
| @@ -7,12 +7,15 @@ import ( | @@ -7,12 +7,15 @@ import ( | ||
| 7 | 7 | ||
| 8 | "github.com/astaxie/beego/logs" | 8 | "github.com/astaxie/beego/logs" |
| 9 | 9 | ||
| 10 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/event/subscriber" | ||
| 10 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/factory" | 11 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/factory" |
| 11 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/command" | 12 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/command" |
| 12 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/query" | 13 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/query" |
| 13 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | 14 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" |
| 15 | + domainService "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain/service" | ||
| 14 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/dao" | 16 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/dao" |
| 15 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/models" | 17 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/models" |
| 18 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" | ||
| 16 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | 19 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" |
| 17 | ) | 20 | ) |
| 18 | 21 | ||
| @@ -976,23 +979,39 @@ func (service OrderInfoService) buildOrderBestshopInfoData(orderBase *domain.Ord | @@ -976,23 +979,39 @@ func (service OrderInfoService) buildOrderBestshopInfoData(orderBase *domain.Ord | ||
| 976 | "order": order, | 979 | "order": order, |
| 977 | "product": product, | 980 | "product": product, |
| 978 | "modify": modifyLog, | 981 | "modify": modifyLog, |
| 982 | + "remark": orderBase.Remark.RemarkBonus, | ||
| 979 | } | 983 | } |
| 980 | return result | 984 | return result |
| 981 | } | 985 | } |
| 982 | 986 | ||
| 983 | //UpdateBounsWithGoodNumber 分红时,因修改订单中商品的数量发生分红变动 | 987 | //UpdateBounsWithGoodNumber 分红时,因修改订单中商品的数量发生分红变动 |
| 984 | -func (service OrderInfoService) UpdateBonusByGoodNumber() error { | 988 | +func (service OrderInfoService) UpdateBonusByGoodNumber(orderId int64, goodId int64, adminId int64, goodNumber int, reason string) error { |
| 985 | var ( | 989 | var ( |
| 986 | transactionContext, _ = factory.CreateTransactionContext(nil) | 990 | transactionContext, _ = factory.CreateTransactionContext(nil) |
| 987 | err error | 991 | err error |
| 988 | ) | 992 | ) |
| 989 | if err = transactionContext.StartTransaction(); err != nil { | 993 | if err = transactionContext.StartTransaction(); err != nil { |
| 990 | - return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 994 | + return lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) |
| 991 | } | 995 | } |
| 992 | defer func() { | 996 | defer func() { |
| 993 | transactionContext.RollbackTransaction() | 997 | transactionContext.RollbackTransaction() |
| 994 | }() | 998 | }() |
| 995 | - //TODO | 999 | + var ( |
| 1000 | + orderBonuSrv domainService.OrderBonusService | ||
| 1001 | + ) | ||
| 1002 | + orderBonuSrv, err = factory.CreateOrderBonusService(map[string]interface{}{ | ||
| 1003 | + "transactionContext": transactionContext, | ||
| 1004 | + }) | ||
| 1005 | + if err != nil { | ||
| 1006 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1007 | + } | ||
| 1008 | + orderBonuSrv.Subscribe(&subscriber.OrderLogSubscriber{ | ||
| 1009 | + TransactionContext: transactionContext.(*transaction.TransactionContext), | ||
| 1010 | + }) | ||
| 1011 | + err = orderBonuSrv.UpdateBounsByGoodNumber(orderId, goodId, adminId, goodNumber, reason) | ||
| 1012 | + if err != nil { | ||
| 1013 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1014 | + } | ||
| 996 | err = transactionContext.CommitTransaction() | 1015 | err = transactionContext.CommitTransaction() |
| 997 | if err != nil { | 1016 | if err != nil { |
| 998 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 1017 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| @@ -1001,18 +1020,103 @@ func (service OrderInfoService) UpdateBonusByGoodNumber() error { | @@ -1001,18 +1020,103 @@ func (service OrderInfoService) UpdateBonusByGoodNumber() error { | ||
| 1001 | } | 1020 | } |
| 1002 | 1021 | ||
| 1003 | //UpdateBounsByPartnerBonusPercent 分红时,因修改订单中商品的合伙人分行比例发生分红变动 | 1022 | //UpdateBounsByPartnerBonusPercent 分红时,因修改订单中商品的合伙人分行比例发生分红变动 |
| 1004 | -func (service OrderInfoService) UpdateBonusByPartnerBonusPercent() error { | 1023 | +func (service OrderInfoService) UpdateBonusByPartnerBonusPercent(orderId int64, goodId int64, adminId int64, percent float64, reason string) error { |
| 1024 | + var ( | ||
| 1025 | + transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 1026 | + err error | ||
| 1027 | + ) | ||
| 1028 | + if err = transactionContext.StartTransaction(); err != nil { | ||
| 1029 | + return lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) | ||
| 1030 | + } | ||
| 1031 | + defer func() { | ||
| 1032 | + transactionContext.RollbackTransaction() | ||
| 1033 | + }() | ||
| 1034 | + var ( | ||
| 1035 | + orderBonuSrv domainService.OrderBonusService | ||
| 1036 | + ) | ||
| 1037 | + orderBonuSrv, err = factory.CreateOrderBonusService(map[string]interface{}{ | ||
| 1038 | + "transactionContext": transactionContext, | ||
| 1039 | + }) | ||
| 1040 | + if err != nil { | ||
| 1041 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1042 | + } | ||
| 1043 | + orderBonuSrv.Subscribe(&subscriber.OrderLogSubscriber{ | ||
| 1044 | + TransactionContext: transactionContext.(*transaction.TransactionContext), | ||
| 1045 | + }) | ||
| 1046 | + err = orderBonuSrv.UpdateBounsByPartnerBonusPercent(orderId, goodId, adminId, percent, reason) | ||
| 1047 | + if err != nil { | ||
| 1048 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1049 | + } | ||
| 1050 | + err = transactionContext.CommitTransaction() | ||
| 1051 | + if err != nil { | ||
| 1052 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1053 | + } | ||
| 1054 | + return nil | ||
| 1055 | +} | ||
| 1056 | + | ||
| 1057 | +//PayPartnerBonusWithOrderBestshop 支付分红,海鲜干货的订单 (orderType=domain.OrderTypeBestShop) | ||
| 1058 | +func (service OrderInfoService) PayPartnerBonusWithOrderBestshop(orderId int64, goodId int64, adminId int64) error { | ||
| 1005 | var ( | 1059 | var ( |
| 1006 | transactionContext, _ = factory.CreateTransactionContext(nil) | 1060 | transactionContext, _ = factory.CreateTransactionContext(nil) |
| 1007 | err error | 1061 | err error |
| 1008 | ) | 1062 | ) |
| 1009 | if err = transactionContext.StartTransaction(); err != nil { | 1063 | if err = transactionContext.StartTransaction(); err != nil { |
| 1064 | + return lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) | ||
| 1065 | + } | ||
| 1066 | + defer func() { | ||
| 1067 | + transactionContext.RollbackTransaction() | ||
| 1068 | + }() | ||
| 1069 | + var ( | ||
| 1070 | + orderBonuSrv domainService.OrderBonusService | ||
| 1071 | + ) | ||
| 1072 | + orderBonuSrv, err = factory.CreateOrderBonusService(map[string]interface{}{ | ||
| 1073 | + "transactionContext": transactionContext, | ||
| 1074 | + }) | ||
| 1075 | + if err != nil { | ||
| 1076 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1077 | + } | ||
| 1078 | + orderBonuSrv.Subscribe(&subscriber.OrderLogSubscriber{ | ||
| 1079 | + TransactionContext: transactionContext.(*transaction.TransactionContext), | ||
| 1080 | + }) | ||
| 1081 | + err = orderBonuSrv.PayOrderGoodBonus(orderId, goodId, adminId) | ||
| 1082 | + if err != nil { | ||
| 1010 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 1083 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| 1011 | } | 1084 | } |
| 1085 | + err = transactionContext.CommitTransaction() | ||
| 1086 | + if err != nil { | ||
| 1087 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1088 | + } | ||
| 1089 | + return nil | ||
| 1090 | +} | ||
| 1091 | + | ||
| 1092 | +//PayPartnerBonusWithOrderBestshop 支付分红,海鲜干货的订单 (orderType=domain.OrderTypeBestShop) | ||
| 1093 | +func (service OrderInfoService) UpdateOrderRemarkBonus(orderId int64, adminId int64, remark string) error { | ||
| 1094 | + var ( | ||
| 1095 | + transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 1096 | + err error | ||
| 1097 | + ) | ||
| 1098 | + if err = transactionContext.StartTransaction(); err != nil { | ||
| 1099 | + return lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) | ||
| 1100 | + } | ||
| 1012 | defer func() { | 1101 | defer func() { |
| 1013 | transactionContext.RollbackTransaction() | 1102 | transactionContext.RollbackTransaction() |
| 1014 | }() | 1103 | }() |
| 1015 | - //TODO | 1104 | + var ( |
| 1105 | + orderBonuSrv domainService.OrderBonusService | ||
| 1106 | + ) | ||
| 1107 | + orderBonuSrv, err = factory.CreateOrderBonusService(map[string]interface{}{ | ||
| 1108 | + "transactionContext": transactionContext, | ||
| 1109 | + }) | ||
| 1110 | + if err != nil { | ||
| 1111 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1112 | + } | ||
| 1113 | + orderBonuSrv.Subscribe(&subscriber.OrderLogSubscriber{ | ||
| 1114 | + TransactionContext: transactionContext.(*transaction.TransactionContext), | ||
| 1115 | + }) | ||
| 1116 | + err = orderBonuSrv.UpdateOrderRemarkBonus(orderId, adminId, remark) | ||
| 1117 | + if err != nil { | ||
| 1118 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1119 | + } | ||
| 1016 | err = transactionContext.CommitTransaction() | 1120 | err = transactionContext.CommitTransaction() |
| 1017 | if err != nil { | 1121 | if err != nil { |
| 1018 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 1122 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| @@ -10,10 +10,14 @@ const ( | @@ -10,10 +10,14 @@ const ( | ||
| 10 | type PayOrderGoodBonus struct { | 10 | type PayOrderGoodBonus struct { |
| 11 | //订单id | 11 | //订单id |
| 12 | OrderId int64 | 12 | OrderId int64 |
| 13 | + //货品名称 | ||
| 14 | + GoodName string | ||
| 13 | //订单中的货品id | 15 | //订单中的货品id |
| 14 | GoodId int64 | 16 | GoodId int64 |
| 15 | //管理员id | 17 | //管理员id |
| 16 | AdminId int64 | 18 | AdminId int64 |
| 19 | + // | ||
| 20 | + PartnerBonus float64 | ||
| 17 | } | 21 | } |
| 18 | 22 | ||
| 19 | func (p PayOrderGoodBonus) EventType() string { | 23 | func (p PayOrderGoodBonus) EventType() string { |
| @@ -24,8 +24,9 @@ type OrderLogDescript struct { | @@ -24,8 +24,9 @@ type OrderLogDescript struct { | ||
| 24 | //OrderLog 订单修改记录 | 24 | //OrderLog 订单修改记录 |
| 25 | type OrderLog struct { | 25 | type OrderLog struct { |
| 26 | Id int64 | 26 | Id int64 |
| 27 | - OrderId int64 `json:"order_id"` //订单id | ||
| 28 | - AlterTime time.Time `json:"alter_time"` //时间 | 27 | + OrderId int64 `json:"orderId"` //订单id |
| 28 | + GoodId int64 `json:"goodId"` | ||
| 29 | + AlterTime time.Time `json:"alterTime"` //时间 | ||
| 29 | Operator string `json:"operator"` //操作人员 | 30 | Operator string `json:"operator"` //操作人员 |
| 30 | OperatorId int64 `json:"operatorId"` //操作人员Id | 31 | OperatorId int64 `json:"operatorId"` //操作人员Id |
| 31 | OperatorType string `json:"operatorType"` //操作人员的类型 | 32 | OperatorType string `json:"operatorType"` //操作人员的类型 |
| 1 | package service | 1 | package service |
| 2 | 2 | ||
| 3 | +import ( | ||
| 4 | + coreDomain "github.com/linmadan/egglib-go/core/domain" | ||
| 5 | +) | ||
| 6 | + | ||
| 3 | type OrderBonusService interface { | 7 | type OrderBonusService interface { |
| 4 | - UpdateBounsByGoodNumber(orderId int64, adminId int64, goodWithNumber int) error | ||
| 5 | - UpdateBounsByPartnerBonusPercent(orderId int64, adminId int64, partnerPercent float64) error | ||
| 6 | - UpdateOrderRemark(orderId int64, adminId int64, remark string) error | 8 | + coreDomain.DomainEventPublisher |
| 9 | + UpdateBounsByGoodNumber(orderId int64, adminId int64, goodid int64, goodWithNumber int, reason string) error | ||
| 10 | + UpdateBounsByPartnerBonusPercent(orderId int64, adminId int64, goodId int64, partnerPercent float64, reason string) error | ||
| 11 | + UpdateOrderRemarkBonus(orderId int64, adminId int64, remark string) error | ||
| 7 | PayOrderGoodBonus(orderId int64, goodId int64, adminId int64) error | 12 | PayOrderGoodBonus(orderId int64, goodId int64, adminId int64) error |
| 8 | } | 13 | } |
| 1 | package domainService | 1 | package domainService |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "errors" | ||
| 4 | "fmt" | 5 | "fmt" |
| 5 | 6 | ||
| 6 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 7 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| @@ -13,15 +14,22 @@ import ( | @@ -13,15 +14,22 @@ import ( | ||
| 13 | ) | 14 | ) |
| 14 | 15 | ||
| 15 | //OrderBonusServices 处理订单分红的相关操作 | 16 | //OrderBonusServices 处理订单分红的相关操作 |
| 16 | -type OrderBonusServices struct { | 17 | +type OrderBonusService struct { |
| 17 | coreDomain.BaseEventPublisher | 18 | coreDomain.BaseEventPublisher |
| 18 | transactionContext *transaction.TransactionContext | 19 | transactionContext *transaction.TransactionContext |
| 19 | } | 20 | } |
| 20 | 21 | ||
| 21 | -var _ service.OrderBonusService = (*OrderBonusServices)(nil) | 22 | +var _ service.OrderBonusService = (*OrderBonusService)(nil) |
| 23 | + | ||
| 24 | +func NewOrderBonusService(tcx *transaction.TransactionContext) *OrderBonusService { | ||
| 25 | + return &OrderBonusService{ | ||
| 26 | + transactionContext: tcx, | ||
| 27 | + } | ||
| 28 | +} | ||
| 22 | 29 | ||
| 23 | //UpdateBounsWithGoodNumber 分红时,因修改订单中商品的数量发生分红变动 | 30 | //UpdateBounsWithGoodNumber 分红时,因修改订单中商品的数量发生分红变动 |
| 24 | -func (serve *OrderBonusServices) UpdateBounsByGoodNumber(orderId int64, adminId int64, goodWithNumber int) error { | 31 | +//目前只处理 海鲜干货的订单 即 order_type = OrderTypeBestShop (3) |
| 32 | +func (serve *OrderBonusService) UpdateBounsByGoodNumber(orderId int64, adminId int64, goodId int64, goodWithNumber int, reason string) error { | ||
| 25 | var ( | 33 | var ( |
| 26 | userRepository domain.UsersRepository | 34 | userRepository domain.UsersRepository |
| 27 | orderBaseReponsitory domain.OrderBaseRepository | 35 | orderBaseReponsitory domain.OrderBaseRepository |
| @@ -44,6 +52,9 @@ func (serve *OrderBonusServices) UpdateBounsByGoodNumber(orderId int64, adminId | @@ -44,6 +52,9 @@ func (serve *OrderBonusServices) UpdateBounsByGoodNumber(orderId int64, adminId | ||
| 44 | e := fmt.Sprintf("获取订单(id=%d)数据失败,%s", orderId, err) | 52 | e := fmt.Sprintf("获取订单(id=%d)数据失败,%s", orderId, err) |
| 45 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | 53 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) |
| 46 | } | 54 | } |
| 55 | + if oldOrder.OrderType != domain.OrderTypeBestShop { | ||
| 56 | + return lib.ThrowError(lib.BUSINESS_ERROR, "订单类型错误") | ||
| 57 | + } | ||
| 47 | oldOrder.Goods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{OrderId: orderId}) | 58 | oldOrder.Goods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{OrderId: orderId}) |
| 48 | if err != nil { | 59 | if err != nil { |
| 49 | e := fmt.Sprintf("获取订单(id=%d)中的货品数据失败,%s", orderId, err) | 60 | e := fmt.Sprintf("获取订单(id=%d)中的货品数据失败,%s", orderId, err) |
| @@ -54,22 +65,69 @@ func (serve *OrderBonusServices) UpdateBounsByGoodNumber(orderId int64, adminId | @@ -54,22 +65,69 @@ func (serve *OrderBonusServices) UpdateBounsByGoodNumber(orderId int64, adminId | ||
| 54 | e := fmt.Sprintf("获取管理员用户(id=%d)数据失败,%s", adminId, err) | 65 | e := fmt.Sprintf("获取管理员用户(id=%d)数据失败,%s", adminId, err) |
| 55 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | 66 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) |
| 56 | } | 67 | } |
| 57 | - _ = adminUser | ||
| 58 | - //TODO数据更新操作 | ||
| 59 | - //事件发布 | ||
| 60 | - // modifyEvent := event.OrderModify{ | ||
| 61 | - // OrderId: oldOrderGoods.OrderId, | ||
| 62 | - // AdminId: adminId, | ||
| 63 | - // // | ||
| 64 | - // } | ||
| 65 | - // if err = serve.Publish(modifyEvent); err != nil { | ||
| 66 | - // return err | ||
| 67 | - // } | 68 | + if ok := adminUser.InCompany(oldOrder.CompanyId); !ok { |
| 69 | + return lib.ThrowError(lib.BUSINESS_ERROR, "用户不能更新非自己公司的订单") | ||
| 70 | + } | ||
| 71 | + var ( | ||
| 72 | + updateGood domain.OrderGood | ||
| 73 | + formerNumber int | ||
| 74 | + formerAmount float64 | ||
| 75 | + newAmount float64 | ||
| 76 | + goodExist bool | ||
| 77 | + ) | ||
| 78 | + for i := range oldOrder.Goods { | ||
| 79 | + if oldOrder.Goods[i].Id != goodId { | ||
| 80 | + continue | ||
| 81 | + } | ||
| 82 | + updateGood = oldOrder.Goods[i] | ||
| 83 | + formerNumber = updateGood.GetCurrentGoodNumber() | ||
| 84 | + formerAmount = updateGood.GetCurrentAmount() | ||
| 85 | + updateGood.UseGoodNumber = goodWithNumber | ||
| 86 | + updateGood.RemarkReason.ModifyGoodNumber = reason | ||
| 87 | + //计算 | ||
| 88 | + if err := updateGood.Compute(); err != nil { | ||
| 89 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "核算商品数据失败"+err.Error()) | ||
| 90 | + } | ||
| 91 | + newAmount = updateGood.GetCurrentAmount() | ||
| 92 | + goodExist = true | ||
| 93 | + oldOrder.Goods[i] = updateGood | ||
| 94 | + } | ||
| 95 | + if !goodExist { | ||
| 96 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "未找到指定的货品") | ||
| 97 | + } | ||
| 98 | + if err := oldOrder.Compute(); err != nil { | ||
| 99 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "核算订单数据失败"+err.Error()) | ||
| 100 | + } | ||
| 101 | + //更新商品数据 | ||
| 102 | + err = orderGoodRepository.Save([]domain.OrderGood{updateGood}) | ||
| 103 | + if err != nil { | ||
| 104 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "更新商品数据失败,"+err.Error()) | ||
| 105 | + } | ||
| 106 | + //更新订单数据 | ||
| 107 | + err = orderBaseReponsitory.Save(oldOrder) | ||
| 108 | + if err != nil { | ||
| 109 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "更新订单数据失败,"+err.Error()) | ||
| 110 | + } | ||
| 111 | + // 事件发布 | ||
| 112 | + modifyEvent := event.UpdateBonusByGoodNumber{ | ||
| 113 | + OrderId: oldOrder.Id, | ||
| 114 | + AdminId: adminId, | ||
| 115 | + GoodId: oldOrder.Id, | ||
| 116 | + GoodName: updateGood.GoodName, | ||
| 117 | + FormerNumber: fmt.Sprint(formerNumber), | ||
| 118 | + NewNumber: fmt.Sprint(goodWithNumber), | ||
| 119 | + FormerAmount: fmt.Sprint(formerAmount), | ||
| 120 | + NewAmount: fmt.Sprint(newAmount), | ||
| 121 | + } | ||
| 122 | + if err = serve.Publish(modifyEvent); err != nil { | ||
| 123 | + return err | ||
| 124 | + } | ||
| 68 | return nil | 125 | return nil |
| 69 | } | 126 | } |
| 70 | 127 | ||
| 71 | //UpdateBounsByPartnerBonusPercent 分红时,因修改订单中商品的合伙人分行比例发生分红变动 | 128 | //UpdateBounsByPartnerBonusPercent 分红时,因修改订单中商品的合伙人分行比例发生分红变动 |
| 72 | -func (serve *OrderBonusServices) UpdateBounsByPartnerBonusPercent(orderId int64, adminId int64, partnerPercent float64) error { | 129 | +////目前只处理 海鲜干货的订单 即 order_type = OrderTypeBestShop (3) |
| 130 | +func (serve *OrderBonusService) UpdateBounsByPartnerBonusPercent(orderId int64, adminId int64, goodId int64, partnerPercent float64, reason string) error { | ||
| 73 | var ( | 131 | var ( |
| 74 | userRepository domain.UsersRepository | 132 | userRepository domain.UsersRepository |
| 75 | orderBaseReponsitory domain.OrderBaseRepository | 133 | orderBaseReponsitory domain.OrderBaseRepository |
| @@ -92,6 +150,9 @@ func (serve *OrderBonusServices) UpdateBounsByPartnerBonusPercent(orderId int64, | @@ -92,6 +150,9 @@ func (serve *OrderBonusServices) UpdateBounsByPartnerBonusPercent(orderId int64, | ||
| 92 | e := fmt.Sprintf("获取订单(id=%d)数据失败,%s", orderId, err) | 150 | e := fmt.Sprintf("获取订单(id=%d)数据失败,%s", orderId, err) |
| 93 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | 151 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) |
| 94 | } | 152 | } |
| 153 | + if oldOrder.OrderType != domain.OrderTypeBestShop { | ||
| 154 | + return lib.ThrowError(lib.BUSINESS_ERROR, "订单类型错误") | ||
| 155 | + } | ||
| 95 | oldOrder.Goods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{OrderId: orderId}) | 156 | oldOrder.Goods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{OrderId: orderId}) |
| 96 | if err != nil { | 157 | if err != nil { |
| 97 | e := fmt.Sprintf("获取订单中(id=%d)的货品数据失败,%s", orderId, err) | 158 | e := fmt.Sprintf("获取订单中(id=%d)的货品数据失败,%s", orderId, err) |
| @@ -102,22 +163,69 @@ func (serve *OrderBonusServices) UpdateBounsByPartnerBonusPercent(orderId int64, | @@ -102,22 +163,69 @@ func (serve *OrderBonusServices) UpdateBounsByPartnerBonusPercent(orderId int64, | ||
| 102 | e := fmt.Sprintf("获取管理员用户(id=%d)数据失败,%s", adminId, err) | 163 | e := fmt.Sprintf("获取管理员用户(id=%d)数据失败,%s", adminId, err) |
| 103 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | 164 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) |
| 104 | } | 165 | } |
| 105 | - _ = adminUser | ||
| 106 | - //TODO数据更新操作 | 166 | + if ok := adminUser.InCompany(oldOrder.CompanyId); !ok { |
| 167 | + return lib.ThrowError(lib.BUSINESS_ERROR, "用户不能更新非自己公司的订单") | ||
| 168 | + } | ||
| 169 | + var ( | ||
| 170 | + updateGood domain.OrderGood | ||
| 171 | + formerPartnerBonusPercent float64 | ||
| 172 | + formerPartnerBonus float64 | ||
| 173 | + newPartnerBonus float64 | ||
| 174 | + goodExist bool | ||
| 175 | + ) | ||
| 176 | + for i := range oldOrder.Goods { | ||
| 177 | + if oldOrder.Goods[i].Id != goodId { | ||
| 178 | + continue | ||
| 179 | + } | ||
| 180 | + updateGood = oldOrder.Goods[i] | ||
| 181 | + formerPartnerBonusPercent = updateGood.PartnerBonusPercent | ||
| 182 | + formerPartnerBonus = updateGood.GetCurrentPartnerBonus() | ||
| 183 | + updateGood.PartnerBonusPercent = partnerPercent | ||
| 184 | + updateGood.RemarkReason.ModifyPartnerBonusPercent = reason | ||
| 185 | + //计算 | ||
| 186 | + if err := updateGood.Compute(); err != nil { | ||
| 187 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "核算商品数据失败"+err.Error()) | ||
| 188 | + } | ||
| 189 | + newPartnerBonus = updateGood.GetCurrentPartnerBonus() | ||
| 190 | + goodExist = true | ||
| 191 | + oldOrder.Goods[i] = updateGood | ||
| 192 | + } | ||
| 193 | + if !goodExist { | ||
| 194 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "未找到指定的货品") | ||
| 195 | + } | ||
| 196 | + if err := oldOrder.Compute(); err != nil { | ||
| 197 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "核算订单数据失败"+err.Error()) | ||
| 198 | + } | ||
| 199 | + //更新商品数据 | ||
| 200 | + err = orderGoodRepository.Save([]domain.OrderGood{updateGood}) | ||
| 201 | + if err != nil { | ||
| 202 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "更新商品数据失败,"+err.Error()) | ||
| 203 | + } | ||
| 204 | + //更新订单数据 | ||
| 205 | + err = orderBaseReponsitory.Save(oldOrder) | ||
| 206 | + if err != nil { | ||
| 207 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "更新订单数据失败,"+err.Error()) | ||
| 208 | + } | ||
| 107 | //事件发布 | 209 | //事件发布 |
| 108 | - // modifyEvent := event.OrderModify{ | ||
| 109 | - // OrderId: oldOrderGoods.OrderId, | ||
| 110 | - // AdminId: adminId, | ||
| 111 | - // // | ||
| 112 | - // } | ||
| 113 | - // if err = serve.Publish(modifyEvent); err != nil { | ||
| 114 | - // return err | ||
| 115 | - // } | 210 | + modifyEvent := event.UpdateBounsByPartnerBonusPercent{ |
| 211 | + OrderId: oldOrder.Id, | ||
| 212 | + AdminId: adminUser.Id, | ||
| 213 | + GoodId: updateGood.Id, | ||
| 214 | + GoodName: updateGood.GoodName, | ||
| 215 | + FormerPartnerBonusPercent: fmt.Sprint(formerPartnerBonusPercent), | ||
| 216 | + NewPartnerBonusPercent: fmt.Sprint(partnerPercent), | ||
| 217 | + FormerPartnerBonus: fmt.Sprint(formerPartnerBonus), | ||
| 218 | + NewPartnerBonus: fmt.Sprint(newPartnerBonus), | ||
| 219 | + } | ||
| 220 | + if err = serve.Publish(modifyEvent); err != nil { | ||
| 221 | + return err | ||
| 222 | + } | ||
| 116 | return nil | 223 | return nil |
| 117 | } | 224 | } |
| 118 | 225 | ||
| 119 | //PayOrderGoodBonus 支付订单中货品的分红 | 226 | //PayOrderGoodBonus 支付订单中货品的分红 |
| 120 | -func (serve *OrderBonusServices) PayOrderGoodBonus(orderId int64, goodId int64, adminId int64) error { | 227 | +//目前只处理 海鲜干货的订单 即 order_type = OrderTypeBestShop (3) |
| 228 | +func (serve *OrderBonusService) PayOrderGoodBonus(orderId int64, goodId int64, adminId int64) error { | ||
| 121 | var ( | 229 | var ( |
| 122 | userRepository domain.UsersRepository | 230 | userRepository domain.UsersRepository |
| 123 | orderBaseReponsitory domain.OrderBaseRepository | 231 | orderBaseReponsitory domain.OrderBaseRepository |
| @@ -140,6 +248,9 @@ func (serve *OrderBonusServices) PayOrderGoodBonus(orderId int64, goodId int64, | @@ -140,6 +248,9 @@ func (serve *OrderBonusServices) PayOrderGoodBonus(orderId int64, goodId int64, | ||
| 140 | e := fmt.Sprintf("获取订单(id=%d)数据失败,%s", orderId, err) | 248 | e := fmt.Sprintf("获取订单(id=%d)数据失败,%s", orderId, err) |
| 141 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | 249 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) |
| 142 | } | 250 | } |
| 251 | + if oldOrder.OrderType != domain.OrderTypeBestShop { | ||
| 252 | + return lib.ThrowError(lib.BUSINESS_ERROR, "订单类型错误") | ||
| 253 | + } | ||
| 143 | oldOrder.Goods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{OrderId: orderId}) | 254 | oldOrder.Goods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{OrderId: orderId}) |
| 144 | if err != nil { | 255 | if err != nil { |
| 145 | e := fmt.Sprintf("获取订单中(id=%d)的货品数据失败,%s", orderId, err) | 256 | e := fmt.Sprintf("获取订单中(id=%d)的货品数据失败,%s", orderId, err) |
| @@ -150,11 +261,50 @@ func (serve *OrderBonusServices) PayOrderGoodBonus(orderId int64, goodId int64, | @@ -150,11 +261,50 @@ func (serve *OrderBonusServices) PayOrderGoodBonus(orderId int64, goodId int64, | ||
| 150 | e := fmt.Sprintf("获取管理员用户(id=%d)数据失败,%s", adminId, err) | 261 | e := fmt.Sprintf("获取管理员用户(id=%d)数据失败,%s", adminId, err) |
| 151 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | 262 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) |
| 152 | } | 263 | } |
| 153 | - _ = adminUser | ||
| 154 | - //TODO | 264 | + if ok := adminUser.InCompany(oldOrder.CompanyId); !ok { |
| 265 | + return lib.ThrowError(lib.BUSINESS_ERROR, "用户不能更新非自己公司的订单") | ||
| 266 | + } | ||
| 267 | + var ( | ||
| 268 | + updateGood domain.OrderGood | ||
| 269 | + goodExist bool | ||
| 270 | + ) | ||
| 271 | + for i := range oldOrder.Goods { | ||
| 272 | + if oldOrder.Goods[i].Id != goodId { | ||
| 273 | + continue | ||
| 274 | + } | ||
| 275 | + updateGood = oldOrder.Goods[i] | ||
| 276 | + updateGood.CurrentBonusStatus.PayPartnerBonus(&updateGood) | ||
| 277 | + //计算 | ||
| 278 | + if err := updateGood.Compute(); err != nil { | ||
| 279 | + return errors.New("核算商品数据失败" + err.Error()) | ||
| 280 | + } | ||
| 281 | + goodExist = true | ||
| 282 | + oldOrder.Goods[i] = updateGood | ||
| 283 | + } | ||
| 284 | + if !goodExist { | ||
| 285 | + return errors.New("未找到指定的货品") | ||
| 286 | + } | ||
| 287 | + //计算订单的总数据 | ||
| 288 | + if err := oldOrder.Compute(); err != nil { | ||
| 289 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "核算订单数据失败"+err.Error()) | ||
| 290 | + } | ||
| 291 | + //更新商品数据 | ||
| 292 | + err = orderGoodRepository.Save([]domain.OrderGood{updateGood}) | ||
| 293 | + if err != nil { | ||
| 294 | + return fmt.Errorf("更新商品数据失败,%s", err) | ||
| 295 | + } | ||
| 296 | + //更新订单数据 | ||
| 297 | + err = orderBaseReponsitory.Save(oldOrder) | ||
| 298 | + if err != nil { | ||
| 299 | + return fmt.Errorf("更新订单数据失败,%s", err) | ||
| 300 | + } | ||
| 301 | + // | ||
| 155 | payEvent := event.PayOrderGoodBonus{ | 302 | payEvent := event.PayOrderGoodBonus{ |
| 303 | + OrderId: orderId, | ||
| 156 | GoodId: goodId, | 304 | GoodId: goodId, |
| 157 | AdminId: adminId, | 305 | AdminId: adminId, |
| 306 | + GoodName: updateGood.GoodName, | ||
| 307 | + PartnerBonus: updateGood.GetCurrentPartnerBonus(), | ||
| 158 | } | 308 | } |
| 159 | if err = serve.Publish(payEvent); err != nil { | 309 | if err = serve.Publish(payEvent); err != nil { |
| 160 | return err | 310 | return err |
| @@ -162,6 +312,54 @@ func (serve *OrderBonusServices) PayOrderGoodBonus(orderId int64, goodId int64, | @@ -162,6 +312,54 @@ func (serve *OrderBonusServices) PayOrderGoodBonus(orderId int64, goodId int64, | ||
| 162 | return nil | 312 | return nil |
| 163 | } | 313 | } |
| 164 | 314 | ||
| 165 | -func (serve *OrderBonusServices) UpdateOrderRemark(orderId int64, adminId int64, remark string) error { | 315 | +//UpdateOrderRemarkBonus 更新备注 |
| 316 | +//目前只处理 海鲜干货的订单 即 order_type = OrderTypeBestShop (3) | ||
| 317 | +func (serve *OrderBonusService) UpdateOrderRemarkBonus(orderId int64, adminId int64, remark string) error { | ||
| 318 | + var ( | ||
| 319 | + userRepository domain.UsersRepository | ||
| 320 | + orderBaseReponsitory domain.OrderBaseRepository | ||
| 321 | + oldOrder *domain.OrderBase | ||
| 322 | + adminUser domain.Users | ||
| 323 | + err error | ||
| 324 | + ) | ||
| 325 | + if orderBaseReponsitory, err = repository.NewOrderBaseRepository(serve.transactionContext); err != nil { | ||
| 326 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 327 | + } | ||
| 328 | + if userRepository, err = repository.NewUsersRepository(serve.transactionContext); err != nil { | ||
| 329 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 330 | + } | ||
| 331 | + oldOrder, err = orderBaseReponsitory.FindOne(domain.OrderBaseFindOneQuery{OrderId: orderId}) | ||
| 332 | + if err != nil { | ||
| 333 | + e := fmt.Sprintf("获取订单(id=%d)数据失败,%s", orderId, err) | ||
| 334 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 335 | + } | ||
| 336 | + if oldOrder.OrderType != domain.OrderTypeBestShop { | ||
| 337 | + return lib.ThrowError(lib.BUSINESS_ERROR, "订单类型错误") | ||
| 338 | + } | ||
| 339 | + adminUser, err = userRepository.FindOne(domain.UsersFindOneQuery{Id: adminId}) | ||
| 340 | + if err != nil { | ||
| 341 | + e := fmt.Sprintf("获取管理员用户(id=%d)数据失败,%s", adminId, err) | ||
| 342 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 343 | + } | ||
| 344 | + if ok := adminUser.InCompany(oldOrder.CompanyId); !ok { | ||
| 345 | + return lib.ThrowError(lib.BUSINESS_ERROR, "用户不能更新非自己公司的订单") | ||
| 346 | + } | ||
| 347 | + formerRemark := oldOrder.Remark.RemarkBonus | ||
| 348 | + oldOrder.Remark.RemarkBonus = remark | ||
| 349 | + //更新订单数据 | ||
| 350 | + err = orderBaseReponsitory.Save(oldOrder) | ||
| 351 | + if err != nil { | ||
| 352 | + return fmt.Errorf("更新订单数据失败,%s", err) | ||
| 353 | + } | ||
| 354 | + //事件发布 | ||
| 355 | + modifyEvent := event.UpdateOrderRemark{ | ||
| 356 | + OrderId: oldOrder.Id, | ||
| 357 | + AdminId: adminUser.Id, | ||
| 358 | + FormerRemark: formerRemark, | ||
| 359 | + NewRemark: remark, | ||
| 360 | + } | ||
| 361 | + if err = serve.Publish(modifyEvent); err != nil { | ||
| 362 | + return err | ||
| 363 | + } | ||
| 166 | return nil | 364 | return nil |
| 167 | } | 365 | } |
| @@ -305,3 +305,117 @@ func (c *OrderDividendController) OrderDividendDetailForBestshop() { | @@ -305,3 +305,117 @@ func (c *OrderDividendController) OrderDividendDetailForBestshop() { | ||
| 305 | c.ResponseData(respData) | 305 | c.ResponseData(respData) |
| 306 | return | 306 | return |
| 307 | } | 307 | } |
| 308 | + | ||
| 309 | +//EditOrderForBestshop 编辑海鲜干货的订单 中的 货品数量和分红比例 | ||
| 310 | +func (c *OrderDividendController) EditOrderDividendForBestshop() { | ||
| 311 | + type Parameter struct { | ||
| 312 | + State int `json:"state"` | ||
| 313 | + OrderId string `json:"id"` | ||
| 314 | + ProductId string `json:"id"` | ||
| 315 | + Reason string `json:"reason"` | ||
| 316 | + GoodNumber int `json:"contents"` | ||
| 317 | + PartnerBonusPercent float64 `json:"partnerBonusPercent"` | ||
| 318 | + } | ||
| 319 | + var ( | ||
| 320 | + param Parameter | ||
| 321 | + err error | ||
| 322 | + ) | ||
| 323 | + if err = c.BindJsonData(¶m); err != nil { | ||
| 324 | + logs.Error(err) | ||
| 325 | + c.ResponseError(errors.New("json数据解析失败")) | ||
| 326 | + return | ||
| 327 | + } | ||
| 328 | + orderid, _ := strconv.ParseInt(param.OrderId, 10, 64) | ||
| 329 | + if orderid == 0 { | ||
| 330 | + c.ResponseError(errors.New("参数错误")) | ||
| 331 | + return | ||
| 332 | + } | ||
| 333 | + productId, _ := strconv.ParseInt(param.ProductId, 10, 64) | ||
| 334 | + if productId == 0 { | ||
| 335 | + c.ResponseError(errors.New("参数错误")) | ||
| 336 | + return | ||
| 337 | + } | ||
| 338 | + adminId := c.GetUserId() | ||
| 339 | + orderSrv := orderService.NewOrderInfoService(nil) | ||
| 340 | + | ||
| 341 | + switch param.State { | ||
| 342 | + case 1: | ||
| 343 | + err = orderSrv.UpdateBonusByGoodNumber(orderid, productId, adminId, param.GoodNumber, param.Reason) | ||
| 344 | + case 2: | ||
| 345 | + err = orderSrv.UpdateBonusByPartnerBonusPercent(orderid, productId, adminId, param.PartnerBonusPercent, param.Reason) | ||
| 346 | + } | ||
| 347 | + if err != nil { | ||
| 348 | + c.ResponseError(err) | ||
| 349 | + return | ||
| 350 | + } | ||
| 351 | + c.ResponseData(nil) | ||
| 352 | + return | ||
| 353 | +} | ||
| 354 | + | ||
| 355 | +//PayOrderGoodBonusForBestshop 支付海鲜干货订单中的分红 | ||
| 356 | +func (c *OrderDividendController) PayOrderGoodBonusForBestshop() { | ||
| 357 | + type Parameter struct { | ||
| 358 | + OrderId string `json:"id"` | ||
| 359 | + ProductId string `json:"id"` | ||
| 360 | + } | ||
| 361 | + var ( | ||
| 362 | + param Parameter | ||
| 363 | + err error | ||
| 364 | + ) | ||
| 365 | + if err = c.BindJsonData(¶m); err != nil { | ||
| 366 | + logs.Error(err) | ||
| 367 | + c.ResponseError(errors.New("json数据解析失败")) | ||
| 368 | + return | ||
| 369 | + } | ||
| 370 | + orderid, _ := strconv.ParseInt(param.OrderId, 10, 64) | ||
| 371 | + if orderid == 0 { | ||
| 372 | + c.ResponseError(errors.New("参数错误")) | ||
| 373 | + return | ||
| 374 | + } | ||
| 375 | + productId, _ := strconv.ParseInt(param.ProductId, 10, 64) | ||
| 376 | + if productId == 0 { | ||
| 377 | + c.ResponseError(errors.New("参数错误")) | ||
| 378 | + return | ||
| 379 | + } | ||
| 380 | + adminId := c.GetUserId() | ||
| 381 | + orderSrv := orderService.NewOrderInfoService(nil) | ||
| 382 | + err = orderSrv.PayPartnerBonusWithOrderBestshop(orderid, productId, adminId) | ||
| 383 | + if err != nil { | ||
| 384 | + c.ResponseError(err) | ||
| 385 | + return | ||
| 386 | + } | ||
| 387 | + c.ResponseData(nil) | ||
| 388 | + return | ||
| 389 | +} | ||
| 390 | + | ||
| 391 | +//EditOrderRemarkBonusForBestshop 编辑海鲜干货订单中的备注 | ||
| 392 | +func (c *OrderDividendController) EditOrderRemarkBonusForBestshop() { | ||
| 393 | + type Parameter struct { | ||
| 394 | + OrderId string `json:"id"` | ||
| 395 | + Remark string `json:"remark"` | ||
| 396 | + } | ||
| 397 | + var ( | ||
| 398 | + param Parameter | ||
| 399 | + err error | ||
| 400 | + ) | ||
| 401 | + if err = c.BindJsonData(¶m); err != nil { | ||
| 402 | + logs.Error(err) | ||
| 403 | + c.ResponseError(errors.New("json数据解析失败")) | ||
| 404 | + return | ||
| 405 | + } | ||
| 406 | + orderid, _ := strconv.ParseInt(param.OrderId, 10, 64) | ||
| 407 | + if orderid == 0 { | ||
| 408 | + c.ResponseError(errors.New("参数错误")) | ||
| 409 | + return | ||
| 410 | + } | ||
| 411 | + | ||
| 412 | + adminId := c.GetUserId() | ||
| 413 | + orderSrv := orderService.NewOrderInfoService(nil) | ||
| 414 | + err = orderSrv.UpdateOrderRemarkBonus(orderid, adminId, param.Remark) | ||
| 415 | + if err != nil { | ||
| 416 | + c.ResponseError(err) | ||
| 417 | + return | ||
| 418 | + } | ||
| 419 | + c.ResponseData(nil) | ||
| 420 | + return | ||
| 421 | +} |
-
请 注册 或 登录 后发表评论