作者 唐旭辉

订单详情里各种操作,完成

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(&param); 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(&param); 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(&param); 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 +}