正在显示
13 个修改的文件
包含
390 行增加
和
76 行删除
| @@ -14,7 +14,7 @@ import ( | @@ -14,7 +14,7 @@ import ( | ||
| 14 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | 14 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" |
| 15 | ) | 15 | ) |
| 16 | 16 | ||
| 17 | -//OrderService 管理员相关服务 | 17 | +//OrderService 自建订单,意向单,实发订单 |
| 18 | type OrderInfoService struct { | 18 | type OrderInfoService struct { |
| 19 | } | 19 | } |
| 20 | 20 | ||
| @@ -151,6 +151,7 @@ func (service OrderInfoService) GetOrderDetail(getOrderQuery query.GetOrderQuery | @@ -151,6 +151,7 @@ func (service OrderInfoService) GetOrderDetail(getOrderQuery query.GetOrderQuery | ||
| 151 | return order, nil | 151 | return order, nil |
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | +//CreateNewOrder 创建订单 | ||
| 154 | func (service OrderInfoService) CreateNewOrder(cmd command.CreateOrderCommand) (*domain.OrderBase, error) { | 155 | func (service OrderInfoService) CreateNewOrder(cmd command.CreateOrderCommand) (*domain.OrderBase, error) { |
| 155 | var ( | 156 | var ( |
| 156 | transactionContext, _ = factory.CreateTransactionContext(nil) | 157 | transactionContext, _ = factory.CreateTransactionContext(nil) |
| @@ -436,9 +437,11 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) | @@ -436,9 +437,11 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) | ||
| 436 | oldOrderData.Goods = newOrderGoods | 437 | oldOrderData.Goods = newOrderGoods |
| 437 | //删不需要的订单总不需要的商品 | 438 | //删不需要的订单总不需要的商品 |
| 438 | delGoods = service.deleteOldOrderGoods(newOrderGoods, oldOrderGoods) | 439 | delGoods = service.deleteOldOrderGoods(newOrderGoods, oldOrderGoods) |
| 439 | - err = orderGoodRepository.Remove(oldOrderData.Id, cmd.CompanyId, delGoods...) | ||
| 440 | - if err != nil { | ||
| 441 | - return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("删除订单中的商品数据失败:%s", err)) | 440 | + if len(delGoods) > 0 { |
| 441 | + err = orderGoodRepository.Remove(oldOrderData.Id, cmd.CompanyId, delGoods...) | ||
| 442 | + if err != nil { | ||
| 443 | + return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("删除订单中的商品数据失败:%s", err)) | ||
| 444 | + } | ||
| 442 | } | 445 | } |
| 443 | err = transactionContext.CommitTransaction() | 446 | err = transactionContext.CommitTransaction() |
| 444 | if err != nil { | 447 | if err != nil { |
| @@ -41,8 +41,6 @@ type Company struct { | @@ -41,8 +41,6 @@ type Company struct { | ||
| 41 | UpdateAt time.Time `json:"updateAt"` | 41 | UpdateAt time.Time `json:"updateAt"` |
| 42 | // 删除时间 | 42 | // 删除时间 |
| 43 | DeleteAt time.Time `json:"deleteAt"` | 43 | DeleteAt time.Time `json:"deleteAt"` |
| 44 | - //模块授权 | ||
| 45 | - // Permission map[string]bool `json:"permission"` | ||
| 46 | } | 44 | } |
| 47 | 45 | ||
| 48 | func (c Company) EnableIsOk() bool { | 46 | func (c Company) EnableIsOk() bool { |
| @@ -4,7 +4,8 @@ const ( | @@ -4,7 +4,8 @@ const ( | ||
| 4 | PAY_ORDER_GOOD_BONUS_EVENT string = "pay-order-good-bonus-event" | 4 | PAY_ORDER_GOOD_BONUS_EVENT string = "pay-order-good-bonus-event" |
| 5 | ) | 5 | ) |
| 6 | 6 | ||
| 7 | -//PayOrderGoodBonus 事件:支付订单中货品的分红 | 7 | +//WxPayOrderGoodBonus |
| 8 | +//事件:支付来自微信小程序的订单中货品的分红 | ||
| 8 | type PayOrderGoodBonus struct { | 9 | type PayOrderGoodBonus struct { |
| 9 | //订单id | 10 | //订单id |
| 10 | OrderId int64 | 11 | OrderId int64 |
| @@ -4,21 +4,35 @@ const ( | @@ -4,21 +4,35 @@ const ( | ||
| 4 | ORDER_GOOD_MODIFY_EVENT string = "order-good-modify-event" | 4 | ORDER_GOOD_MODIFY_EVENT string = "order-good-modify-event" |
| 5 | ) | 5 | ) |
| 6 | 6 | ||
| 7 | -//OrderGoodModify 事件:修改订单中货品的数据 | ||
| 8 | -type OrderGoodModify struct { | ||
| 9 | - //订单id | ||
| 10 | - OrderId int64 | 7 | +type WxOrderGoodModify struct { |
| 11 | //订单id | 8 | //订单id |
| 12 | GoodId int64 | 9 | GoodId int64 |
| 13 | - //货品名称 | ||
| 14 | - GoodName string | 10 | + //货品名称 [0]旧值,[1]新值 |
| 11 | + GoodName [2]string | ||
| 12 | + //商品数量 [0]旧值,[1]新值 | ||
| 13 | + GoodNumber [2]string | ||
| 14 | + //合伙人分红比例 [0]旧值,[1]新值 | ||
| 15 | + PartnerBonusPercent [2]string | ||
| 16 | + //合伙人应收分红 [0]旧值,[1]新值 | ||
| 17 | + PartnerBonus [2]string | ||
| 18 | + //总价 | ||
| 19 | + Amount [2]string | ||
| 20 | +} | ||
| 21 | + | ||
| 22 | +//OrderModify | ||
| 23 | +//事件:修改微信小程序的订单数据 | ||
| 24 | +type WxOrderModify struct { | ||
| 25 | + //订单id | ||
| 26 | + OrderId int64 | ||
| 15 | //管理员id | 27 | //管理员id |
| 16 | AdminId int64 | 28 | AdminId int64 |
| 17 | //更改的订单基础数据 | 29 | //更改的订单基础数据 |
| 18 | - UpdateGoodData map[string]string | 30 | + GoodModify []WxOrderGoodModify |
| 31 | + //订单备注 [0]旧值,[1]新值 | ||
| 32 | + Remark [2]string | ||
| 19 | } | 33 | } |
| 20 | 34 | ||
| 21 | //EventType 事件名称 | 35 | //EventType 事件名称 |
| 22 | -func (m OrderGoodModify) EventType() string { | 36 | +func (m WxOrderModify) EventType() string { |
| 23 | return ORDER_GOOD_MODIFY_EVENT | 37 | return ORDER_GOOD_MODIFY_EVENT |
| 24 | } | 38 | } |
| @@ -26,6 +26,42 @@ type Buyer struct { | @@ -26,6 +26,42 @@ type Buyer struct { | ||
| 26 | ShippingAddress string `json:"shippingAddress"` | 26 | ShippingAddress string `json:"shippingAddress"` |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | +//OrderDataFrom 订单数据来源 | ||
| 30 | +type OrderDataFrom struct { | ||
| 31 | + Platform string `json:"platform"` //订单数据来源平台 | ||
| 32 | + PlatformId string `json:"platformId"` //平台唯一标识 | ||
| 33 | + DataId int64 `json:"dataId"` //订单数据id标识 | ||
| 34 | +} | ||
| 35 | + | ||
| 36 | +type OrderCompute struct { | ||
| 37 | + //合伙人应收分红 | ||
| 38 | + PlanPartnerBonus float64 `json:"planPartnerBonus"` | ||
| 39 | + //调整后的合伙人应收分红 (初始值=-1); | ||
| 40 | + //业务判定时0是有效值, | ||
| 41 | + //所以用空串表示无值,转换到数据库中为负值 | ||
| 42 | + UsePartnerBonus float64 `json:"usePartnerBonus"` | ||
| 43 | + //合伙人已收分红 | ||
| 44 | + PartnerBonusHas float64 `json:"partnerBonusHas"` | ||
| 45 | + //合伙人未收分红 | ||
| 46 | + PartnerBonusNot float64 `json:"partnerBonusNot"` | ||
| 47 | + //合伙人分红支出 | ||
| 48 | + PartnerBonusExpense float64 `json:"partnerBonusExpense"` | ||
| 49 | + //业务员抽成 | ||
| 50 | + SalesmanBonus float64 `json:"salesmanBonus"` | ||
| 51 | + //预计的订单内货品总数 | ||
| 52 | + PlanOrderCount int `json:"planOrderCount"` | ||
| 53 | + //预计的订单的总金额 | ||
| 54 | + PlanOrderAmount float64 `json:"planOrderAmount"` | ||
| 55 | + //按需使用的订单内货品总数 (初始值=-1) | ||
| 56 | + //业务判定时0是有效值, | ||
| 57 | + //所以用空串表示无值,转换到数据库中为负值 | ||
| 58 | + UseOrderCount int `json:"useOrderCount"` | ||
| 59 | + //按需使用的订单内货总金额 (初始值=-1) | ||
| 60 | + //业务判定时0是有效值, | ||
| 61 | + //所以用空串表示无值,转换到数据库中为负值 | ||
| 62 | + UseOrderAmount float64 `json:"useOrderAmount"` | ||
| 63 | +} | ||
| 64 | + | ||
| 29 | //OrderBase 订单基础 | 65 | //OrderBase 订单基础 |
| 30 | type OrderBase struct { | 66 | type OrderBase struct { |
| 31 | //表id | 67 | //表id |
| @@ -61,35 +97,61 @@ type OrderBase struct { | @@ -61,35 +97,61 @@ type OrderBase struct { | ||
| 61 | BonusStatus int `json:"bonusStatus"` | 97 | BonusStatus int `json:"bonusStatus"` |
| 62 | //公司 | 98 | //公司 |
| 63 | CompanyId int64 `json:"companyId"` | 99 | CompanyId int64 `json:"companyId"` |
| 100 | + //数据来源 | ||
| 101 | + DataFrom OrderDataFrom `json:"dataFrom"` | ||
| 64 | } | 102 | } |
| 65 | 103 | ||
| 66 | -type OrderCompute struct { | ||
| 67 | - //合伙人应收分红 | ||
| 68 | - PlanPartnerBonus float64 `json:"planPartnerBonus"` | ||
| 69 | - //调整后的合伙人应收分红 (初始值=-1); | ||
| 70 | - //业务判定时0是有效值, | ||
| 71 | - //所以用空串表示无值,转换到数据库中为负值 | ||
| 72 | - UsePartnerBonus float64 `json:"usePartnerBonus"` | ||
| 73 | - //合伙人已收分红 | ||
| 74 | - PartnerBonusHas float64 `json:"partnerBonusHas"` | ||
| 75 | - //合伙人未收分红 | ||
| 76 | - PartnerBonusNot float64 `json:"partnerBonusNot"` | ||
| 77 | - //合伙人分红支出 | ||
| 78 | - PartnerBonusExpense float64 `json:"partnerBonusExpense"` | ||
| 79 | - //业务员抽成 | ||
| 80 | - SalesmanBonus float64 `json:"salesmanBonus"` | ||
| 81 | - //预计的订单内货品总数 | ||
| 82 | - PlanOrderCount int `json:"planOrderCount"` | ||
| 83 | - //预计的订单的总金额 | ||
| 84 | - PlanOrderAmount float64 `json:"planOrderAmount"` | ||
| 85 | - //按需使用的订单内货品总数 (初始值=-1) | ||
| 86 | - //业务判定时0是有效值, | ||
| 87 | - //所以用空串表示无值,转换到数据库中为负值 | ||
| 88 | - UseOrderCount int `json:"useOrderCount"` | ||
| 89 | - //按需使用的订单内货总金额 (初始值=-1) | ||
| 90 | - //业务判定时0是有效值, | ||
| 91 | - //所以用空串表示无值,转换到数据库中为负值 | ||
| 92 | - UseOrderAmount float64 `json:"useOrderAmount"` | 104 | +//Update 更新订单数据 |
| 105 | +//orderData 订单数据 | ||
| 106 | +//goodsMap 货品的数据,以货品的id做键,map[id]map[string]interface{} | ||
| 107 | +func (order *OrderBase) Update(orderData map[string]interface{}, goodsMap map[int64]map[string]interface{}) error { | ||
| 108 | + if v, ok := orderData["OrderCode"]; ok { | ||
| 109 | + order.OrderCode = v.(string) | ||
| 110 | + } | ||
| 111 | + if v, ok := orderData["DeliveryCode"]; ok { | ||
| 112 | + order.DeliveryCode = v.(string) | ||
| 113 | + } | ||
| 114 | + if v, ok := orderData["Buyer"]; ok { | ||
| 115 | + order.Buyer = v.(Buyer) | ||
| 116 | + } | ||
| 117 | + if v, ok := orderData["SalesmanBonusPercent"]; ok { | ||
| 118 | + order.SalesmanBonusPercent = v.(float64) | ||
| 119 | + } | ||
| 120 | + if v, ok := orderData["DeliveryTime"]; ok { | ||
| 121 | + order.DeliveryTime = v.(time.Time) | ||
| 122 | + } | ||
| 123 | + if v, ok := orderData["IsDisable"]; ok { | ||
| 124 | + order.IsDisable = v.(int) | ||
| 125 | + } | ||
| 126 | + for i := range order.Goods { | ||
| 127 | + goodId := order.Goods[i].Id | ||
| 128 | + if _, ok := goodsMap[goodId]; !ok { | ||
| 129 | + continue | ||
| 130 | + } | ||
| 131 | + if err := order.Goods[i].Update(goodsMap[goodId]); err != nil { | ||
| 132 | + return err | ||
| 133 | + } | ||
| 134 | + } | ||
| 135 | + err := order.Compute() | ||
| 136 | + return err | ||
| 137 | +} | ||
| 138 | + | ||
| 139 | +func (order *OrderBase) AddGoods(goods []OrderGood) { | ||
| 140 | + order.Goods = append(order.Goods, goods...) | ||
| 141 | + order.Compute() | ||
| 142 | +} | ||
| 143 | + | ||
| 144 | +func (order *OrderBase) DeleteGoods(goodIds []int64) { | ||
| 145 | + var newGoods []OrderGood | ||
| 146 | + for i := range order.Goods { | ||
| 147 | + for _, goodId := range goodIds { | ||
| 148 | + order.Goods[i].Id = goodId | ||
| 149 | + continue | ||
| 150 | + } | ||
| 151 | + newGoods = append(newGoods, order.Goods[i]) | ||
| 152 | + } | ||
| 153 | + order.Goods = newGoods | ||
| 154 | + order.Compute() | ||
| 93 | } | 155 | } |
| 94 | 156 | ||
| 95 | //Compute 数据汇总核算 | 157 | //Compute 数据汇总核算 |
| @@ -22,6 +22,28 @@ const ( | @@ -22,6 +22,28 @@ const ( | ||
| 22 | OrderGoodHasPay int = 2 | 22 | OrderGoodHasPay int = 2 |
| 23 | ) | 23 | ) |
| 24 | 24 | ||
| 25 | +//GoodCompute 货品中计算值 | ||
| 26 | +type GoodCompute struct { | ||
| 27 | + //预计的货品总额 | ||
| 28 | + PlanAmount float64 `json:"planAmount"` | ||
| 29 | + //调整后的货品总额 (初始值=-1) | ||
| 30 | + //业务判定时0是有效值, | ||
| 31 | + //所以用空串表示无值,转换到数据库中为负值 | ||
| 32 | + UseAmount float64 `json:"useAmount"` | ||
| 33 | + //预计的合伙人分红 | ||
| 34 | + PlanPartnerBonus float64 `json:"planPartnerBonus"` | ||
| 35 | + //合伙人应收分红调整 (初始值=-1), | ||
| 36 | + //业务判定时0是有效值, | ||
| 37 | + //所以用空串表示无值,转换到数据库中为负值 | ||
| 38 | + UsePartnerBonus float64 `json:"usePartnerBonus"` | ||
| 39 | + //合伙人已收分红 | ||
| 40 | + PartnerBonusHas float64 `json:"partnerBonusHas"` | ||
| 41 | + //合伙人未收分红 | ||
| 42 | + PartnerBonusNot float64 `json:"partnerBonusNot"` | ||
| 43 | + //合伙人分红支出 | ||
| 44 | + PartnerBonusExpense float64 `json:"partnerBonusExpense"` | ||
| 45 | +} | ||
| 46 | + | ||
| 25 | //OrderGood 订单中的货品 | 47 | //OrderGood 订单中的货品 |
| 26 | type OrderGood struct { | 48 | type OrderGood struct { |
| 27 | //货品id | 49 | //货品id |
| @@ -52,25 +74,28 @@ type OrderGood struct { | @@ -52,25 +74,28 @@ type OrderGood struct { | ||
| 52 | CompanyId int64 | 74 | CompanyId int64 |
| 53 | } | 75 | } |
| 54 | 76 | ||
| 55 | -type GoodCompute struct { | ||
| 56 | - //预计的货品总额 | ||
| 57 | - PlanAmount float64 `json:"planAmount"` | ||
| 58 | - //调整后的货品总额 (初始值=-1) | ||
| 59 | - //业务判定时0是有效值, | ||
| 60 | - //所以用空串表示无值,转换到数据库中为负值 | ||
| 61 | - UseAmount float64 `json:"useAmount"` | ||
| 62 | - //预计的合伙人分红 | ||
| 63 | - PlanPartnerBonus float64 `json:"planPartnerBonus"` | ||
| 64 | - //合伙人应收分红调整 (初始值=-1), | ||
| 65 | - //业务判定时0是有效值, | ||
| 66 | - //所以用空串表示无值,转换到数据库中为负值 | ||
| 67 | - UsePartnerBonus float64 `json:"usePartnerBonus"` | ||
| 68 | - //合伙人已收分红 | ||
| 69 | - PartnerBonusHas float64 `json:"partnerBonusHas"` | ||
| 70 | - //合伙人未收分红 | ||
| 71 | - PartnerBonusNot float64 `json:"partnerBonusNot"` | ||
| 72 | - //合伙人分红支出 | ||
| 73 | - PartnerBonusExpense float64 `json:"partnerBonusExpense"` | 77 | +//Update 更新商品相关的数据 |
| 78 | +func (good *OrderGood) Update(m map[string]interface{}) error { | ||
| 79 | + if v, ok := m["GoodName"]; ok { | ||
| 80 | + good.GoodName = v.(string) | ||
| 81 | + } | ||
| 82 | + if v, ok := m["PlanGoodNumber"]; ok { | ||
| 83 | + good.PlanGoodNumber = v.(int) | ||
| 84 | + } | ||
| 85 | + if v, ok := m["UseGoodNumber"]; ok { | ||
| 86 | + good.UseGoodNumber = v.(int) | ||
| 87 | + } | ||
| 88 | + if v, ok := m["Price"]; ok { | ||
| 89 | + good.Price = v.(float64) | ||
| 90 | + } | ||
| 91 | + if v, ok := m["PartnerBonusPercent"]; ok { | ||
| 92 | + good.PartnerBonusPercent = v.(float64) | ||
| 93 | + } | ||
| 94 | + if v, ok := m["Remark"]; ok { | ||
| 95 | + good.Remark = v.(string) | ||
| 96 | + } | ||
| 97 | + err := good.Compute() | ||
| 98 | + return err | ||
| 74 | } | 99 | } |
| 75 | 100 | ||
| 76 | //OrderGoodBonusWaitPay 货品分红待支付 | 101 | //OrderGoodBonusWaitPay 货品分红待支付 |
| @@ -177,9 +202,12 @@ type OrderGoodFindQuery struct { | @@ -177,9 +202,12 @@ type OrderGoodFindQuery struct { | ||
| 177 | Limit int | 202 | Limit int |
| 178 | CompanyId int64 | 203 | CompanyId int64 |
| 179 | } | 204 | } |
| 180 | - | 205 | +type OrderGoodFindOneQuery struct { |
| 206 | + GoodId int64 | ||
| 207 | +} | ||
| 181 | type OrderGoodRepository interface { | 208 | type OrderGoodRepository interface { |
| 182 | Save(order []OrderGood) error | 209 | Save(order []OrderGood) error |
| 183 | Find(queryOptions OrderGoodFindQuery) ([]OrderGood, int, error) | 210 | Find(queryOptions OrderGoodFindQuery) ([]OrderGood, int, error) |
| 211 | + FindOne(queryOptions OrderGoodFindOneQuery) (OrderGood, error) | ||
| 184 | Remove(orderid int64, companyId int64, ids ...int64) error | 212 | Remove(orderid int64, companyId int64, ids ...int64) error |
| 185 | } | 213 | } |
pkg/domain/order_log.go
0 → 100644
| 1 | +package domain | ||
| 2 | + | ||
| 3 | +import "time" | ||
| 4 | + | ||
| 5 | +// 日志数据来源 | ||
| 6 | +const ( | ||
| 7 | + //管理后台 | ||
| 8 | + ORDER_LOG_FROM string = "web_admin" | ||
| 9 | +) | ||
| 10 | + | ||
| 11 | +//操作人员的类型 | ||
| 12 | +const ( | ||
| 13 | + //操作人类型 | ||
| 14 | + ORDER_LOG_OPERATOR_ADMIN string = "admin" | ||
| 15 | +) | ||
| 16 | + | ||
| 17 | +//OrderLogDescript 描述日志内容 | ||
| 18 | +type OrderLogDescript struct { | ||
| 19 | + Title string `json:"title"` //标题 | ||
| 20 | + Action string `json:"action"` //执行的动作描述 | ||
| 21 | + Modifyitem []string `json:"modifyItem"` //动作执行结果 | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +//OrderLogContentItem 记录订单的相关属性值的修改 | ||
| 25 | +type OrderLogContentItem struct { | ||
| 26 | + Table string `json:"table"` //修改的表数据主体,"order_good","order_base" | ||
| 27 | + TableId string `json:"tableId"` //表id | ||
| 28 | + Title string `json:"title"` //名称标题 | ||
| 29 | + Item string `json:"item"` //修改的项目 | ||
| 30 | + FormerValue string `json:"formerValue"` //旧值 | ||
| 31 | + NewValue string `json:"newValue"` //新值 | ||
| 32 | +} | ||
| 33 | + | ||
| 34 | +//OrderLog 订单修改记录 | ||
| 35 | +type OrderLog struct { | ||
| 36 | + OrderId int64 `json:"order_id"` //订单id | ||
| 37 | + AlterTime time.Time `json:"alter_time"` //时间 | ||
| 38 | + Operator string `json:"operator"` //操作人员 | ||
| 39 | + OperatorType string `json:"operatorType"` //操作人员的类型 | ||
| 40 | + LogAction string `json:"logAction"` //执行动作 | ||
| 41 | + Descript []OrderLogDescript `json:"descript"` //描述日志内容 | ||
| 42 | + Content []OrderLogContentItem `json:"content"` //记录订单的操作动作 | ||
| 43 | + DataFrom string `json:"dataFrom"` //修改操作的来源:"web_admin" | ||
| 44 | +} |
| 1 | package domainService | 1 | package domainService |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "fmt" | ||
| 5 | + | ||
| 4 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 6 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 7 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | ||
| 5 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain/event" | 8 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain/event" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" | 9 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" |
| 10 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/repository" | ||
| 11 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | ||
| 7 | ) | 12 | ) |
| 8 | 13 | ||
| 9 | -type OrderServices struct { | 14 | +//WxOrderServices 处理来自微信小程序(海鲜干货)的订单 |
| 15 | +type WxOrderServices struct { | ||
| 10 | coreDomain.BaseEventPublisher | 16 | coreDomain.BaseEventPublisher |
| 11 | transactionContext *transaction.TransactionContext | 17 | transactionContext *transaction.TransactionContext |
| 12 | } | 18 | } |
| 13 | 19 | ||
| 14 | -//UpdateOrderGoodData 修改订单中的货品数据 | ||
| 15 | -func (serve OrderServices) UpdateOrderGoodData(orderId int64, goodId int64, adminId int64, updateData map[string]string) error { | ||
| 16 | - var err error | 20 | +//ModifyOrderGoodData 修改订单中的单个货品的数量 |
| 21 | +func (serve WxOrderServices) ModifyOrderGoodNumber(orderId int64, goodId int64, adminId int64, goodNumber int) error { | ||
| 22 | + var ( | ||
| 23 | + userRepository domain.UsersRepository | ||
| 24 | + orderBaseReponsitory domain.OrderBaseRepository | ||
| 25 | + orderGoodRepository domain.OrderGoodRepository | ||
| 26 | + oldOrderGoods domain.OrderGood | ||
| 27 | + oldOrder *domain.OrderBase | ||
| 28 | + adminUser domain.Users | ||
| 29 | + err error | ||
| 30 | + ) | ||
| 31 | + if orderGoodRepository, err = repository.NewOrderGoodRepository(serve.transactionContext); err != nil { | ||
| 32 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 33 | + } | ||
| 34 | + if orderBaseReponsitory, err = repository.NewOrderBaseRepository(serve.transactionContext); err != nil { | ||
| 35 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 36 | + } | ||
| 37 | + if userRepository, err = repository.NewUsersRepository(serve.transactionContext); err != nil { | ||
| 38 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 39 | + } | ||
| 40 | + oldOrder, err = orderBaseReponsitory.FindOne(domain.OrderBaseFindOneQuery{OrderId: orderId}) | ||
| 41 | + if err != nil { | ||
| 42 | + e := fmt.Sprintf("获取订单(id=%d)数据失败,%s", orderId, err) | ||
| 43 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 44 | + } | ||
| 45 | + oldOrder.Goods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{OrderId: orderId}) | ||
| 46 | + if err != nil { | ||
| 47 | + e := fmt.Sprintf("获取订单中的货品(id=%d)数据失败,%s", goodId, err) | ||
| 48 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 49 | + } | ||
| 50 | + adminUser, err = userRepository.FindOne(domain.UsersFindOneQuery{Id: adminId}) | ||
| 51 | + if err != nil { | ||
| 52 | + e := fmt.Sprintf("获取管理员用户(id=%d)数据失败,%s", adminId, err) | ||
| 53 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 54 | + } | ||
| 55 | + if adminUser.CompanyId != oldOrderGoods.CompanyId { | ||
| 56 | + e := fmt.Sprintf("获取管理员用户(id=%d)和货品(id=%d)不在同一家公司", adminId, goodId) | ||
| 57 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 58 | + } | ||
| 17 | //TODO数据更新操作 | 59 | //TODO数据更新操作 |
| 18 | //事件发布 | 60 | //事件发布 |
| 19 | - modifyEvent := event.OrderGoodModify{ | ||
| 20 | - OrderId: orderId, | ||
| 21 | - GoodId: goodId, | ||
| 22 | - AdminId: adminId, | ||
| 23 | - UpdateGoodData: updateData, | 61 | + // modifyEvent := event.OrderModify{ |
| 62 | + // OrderId: oldOrderGoods.OrderId, | ||
| 63 | + // AdminId: adminId, | ||
| 64 | + // // | ||
| 65 | + // } | ||
| 66 | + // if err = serve.Publish(modifyEvent); err != nil { | ||
| 67 | + // return err | ||
| 68 | + // } | ||
| 69 | + return nil | ||
| 70 | +} | ||
| 71 | + | ||
| 72 | +//ModifyOrderGoodData 修改订单中的单个货品的合伙人分成比例 | ||
| 73 | +func (serve WxOrderServices) ModifyOrderGoodPartnerBonusPercent(orderId int64, goodId int64, adminId int64, goodNumber int) error { | ||
| 74 | + var ( | ||
| 75 | + userRepository domain.UsersRepository | ||
| 76 | + orderBaseReponsitory domain.OrderBaseRepository | ||
| 77 | + orderGoodRepository domain.OrderGoodRepository | ||
| 78 | + oldOrderGoods domain.OrderGood | ||
| 79 | + oldOrder *domain.OrderBase | ||
| 80 | + adminUser domain.Users | ||
| 81 | + err error | ||
| 82 | + ) | ||
| 83 | + if orderGoodRepository, err = repository.NewOrderGoodRepository(serve.transactionContext); err != nil { | ||
| 84 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 24 | } | 85 | } |
| 25 | - if err = serve.Publish(modifyEvent); err != nil { | ||
| 26 | - return err | 86 | + if orderBaseReponsitory, err = repository.NewOrderBaseRepository(serve.transactionContext); err != nil { |
| 87 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 88 | + } | ||
| 89 | + if userRepository, err = repository.NewUsersRepository(serve.transactionContext); err != nil { | ||
| 90 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 91 | + } | ||
| 92 | + oldOrder, err = orderBaseReponsitory.FindOne(domain.OrderBaseFindOneQuery{OrderId: orderId}) | ||
| 93 | + if err != nil { | ||
| 94 | + e := fmt.Sprintf("获取订单(id=%d)数据失败,%s", orderId, err) | ||
| 95 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 27 | } | 96 | } |
| 97 | + oldOrder.Goods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{OrderId: orderId}) | ||
| 98 | + if err != nil { | ||
| 99 | + e := fmt.Sprintf("获取订单中的货品(id=%d)数据失败,%s", goodId, err) | ||
| 100 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 101 | + } | ||
| 102 | + adminUser, err = userRepository.FindOne(domain.UsersFindOneQuery{Id: adminId}) | ||
| 103 | + if err != nil { | ||
| 104 | + e := fmt.Sprintf("获取管理员用户(id=%d)数据失败,%s", adminId, err) | ||
| 105 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 106 | + } | ||
| 107 | + if adminUser.CompanyId != oldOrderGoods.CompanyId { | ||
| 108 | + e := fmt.Sprintf("获取管理员用户(id=%d)和货品(id=%d)不在同一家公司", adminId, goodId) | ||
| 109 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 110 | + } | ||
| 111 | + //TODO数据更新操作 | ||
| 112 | + //事件发布 | ||
| 113 | + // modifyEvent := event.OrderModify{ | ||
| 114 | + // OrderId: oldOrderGoods.OrderId, | ||
| 115 | + // AdminId: adminId, | ||
| 116 | + // // | ||
| 117 | + // } | ||
| 118 | + // if err = serve.Publish(modifyEvent); err != nil { | ||
| 119 | + // return err | ||
| 120 | + // } | ||
| 28 | return nil | 121 | return nil |
| 29 | } | 122 | } |
| 30 | 123 | ||
| 31 | //PayOrderGoodBonus 支付订单中货品的分红 | 124 | //PayOrderGoodBonus 支付订单中货品的分红 |
| 32 | -func (serve OrderServices) PayOrderGoodBonus(orderId int64, goodId int64, adminId int64) error { | 125 | +func (serve WxOrderServices) PayOrderGoodBonus(goodId int64, adminId int64) error { |
| 33 | var err error | 126 | var err error |
| 34 | //TODO | 127 | //TODO |
| 35 | payEvent := event.PayOrderGoodBonus{ | 128 | payEvent := event.PayOrderGoodBonus{ |
| 36 | - OrderId: orderId, | ||
| 37 | GoodId: goodId, | 129 | GoodId: goodId, |
| 38 | AdminId: adminId, | 130 | AdminId: adminId, |
| 39 | } | 131 | } |
| @@ -63,6 +63,9 @@ type OrderBase struct { | @@ -63,6 +63,9 @@ type OrderBase struct { | ||
| 63 | //分红支付状态 | 63 | //分红支付状态 |
| 64 | BonusStatus int | 64 | BonusStatus int |
| 65 | CompanyId int64 | 65 | CompanyId int64 |
| 66 | + | ||
| 67 | + //数据来源 | ||
| 68 | + DataFrom domain.OrderDataFrom `` | ||
| 66 | } | 69 | } |
| 67 | 70 | ||
| 68 | var _ pg.BeforeUpdateHook = (*OrderBase)(nil) | 71 | var _ pg.BeforeUpdateHook = (*OrderBase)(nil) |
pkg/infrastructure/pg/models/order_log.go
0 → 100644
| 1 | +package models | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "time" | ||
| 5 | + | ||
| 6 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +//OrderLog 订单修改记录 | ||
| 10 | +type OrderLog struct { | ||
| 11 | + tableName struct{} `pg:"order_log"` | ||
| 12 | + OrderId int64 `` //订单id | ||
| 13 | + AlterTime time.Time `` //时间 | ||
| 14 | + Operator string `` //操作人员 | ||
| 15 | + OperatorType string `` //操作人员的类型 | ||
| 16 | + Action string `` //执行动作 | ||
| 17 | + Descript []domain.OrderLogDescript `` //描述日志内容 | ||
| 18 | + //Content []domain.OrderLogContent `` //记录订单的操作动作 | ||
| 19 | + DataFrom string `` //修改操作的来源:"web_admin" | ||
| 20 | +} |
| 1 | package repository | 1 | package repository |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "errors" | ||
| 4 | "fmt" | 5 | "fmt" |
| 5 | 6 | ||
| 6 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | 7 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" |
| @@ -138,3 +139,27 @@ func (repository OrderGoodRepository) Remove(orderId int64, companyId int64, goo | @@ -138,3 +139,27 @@ func (repository OrderGoodRepository) Remove(orderId int64, companyId int64, goo | ||
| 138 | _, err = query.Delete() | 139 | _, err = query.Delete() |
| 139 | return err | 140 | return err |
| 140 | } | 141 | } |
| 142 | + | ||
| 143 | +func (repository OrderGoodRepository) FindOne(queryOption domain.OrderGoodFindOneQuery) (domain.OrderGood, error) { | ||
| 144 | + var ( | ||
| 145 | + good domain.OrderGood | ||
| 146 | + goodModel models.OrderGood | ||
| 147 | + err error | ||
| 148 | + hasCondition bool | ||
| 149 | + ) | ||
| 150 | + tx := repository.transactionContext.GetDB() | ||
| 151 | + query := tx.Model(&goodModel) | ||
| 152 | + if queryOption.GoodId > 0 { | ||
| 153 | + query = query.Where("id=?", queryOption.GoodId) | ||
| 154 | + hasCondition = true | ||
| 155 | + } | ||
| 156 | + if !hasCondition { | ||
| 157 | + return good, errors.New("OrderGoodRepository.FindOne 必须使用查询条件") | ||
| 158 | + } | ||
| 159 | + err = query.First() | ||
| 160 | + if err != nil { | ||
| 161 | + return good, fmt.Errorf("获取订单的货品数据失败,%s", err) | ||
| 162 | + } | ||
| 163 | + good, err = repository.transformPgModelToDomainModel(&goodModel) | ||
| 164 | + return good, err | ||
| 165 | +} |
| 1 | +package repository | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + | ||
| 6 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | ||
| 7 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +//订单日志 | ||
| 11 | +type OrderLogRepository struct { | ||
| 12 | + transactionContext *transaction.TransactionContext | ||
| 13 | +} | ||
| 14 | + | ||
| 15 | +func NewOrderInfoRepository(transactionContext *transaction.TransactionContext) (*OrderLogRepository, error) { | ||
| 16 | + if transactionContext == nil { | ||
| 17 | + return nil, fmt.Errorf("transactionContext参数不能为nil") | ||
| 18 | + } | ||
| 19 | + return &OrderLogRepository{transactionContext: transactionContext}, nil | ||
| 20 | +} | ||
| 21 | + | ||
| 22 | +func (reponsitory OrderLogRepository) transformPgModelToDomainModel() (data domain.OrderLog, err error) { | ||
| 23 | + return domain.OrderLog{}, nil | ||
| 24 | +} |
| @@ -141,7 +141,7 @@ func (reponsitory UsersRepository) FindOne(queryOptions domain.UsersFindOneQuery | @@ -141,7 +141,7 @@ func (reponsitory UsersRepository) FindOne(queryOptions domain.UsersFindOneQuery | ||
| 141 | query = query.Where("open_id=?", queryOptions.OpenId) | 141 | query = query.Where("open_id=?", queryOptions.OpenId) |
| 142 | } | 142 | } |
| 143 | if !hasCondition { | 143 | if !hasCondition { |
| 144 | - return domain.Users{}, errors.New("FindOne 必须要有查询条件") | 144 | + return domain.Users{}, errors.New("UsersRepository.FindOne 必须要有查询条件") |
| 145 | } | 145 | } |
| 146 | err = query.First() | 146 | err = query.First() |
| 147 | if err != nil { | 147 | if err != nil { |
-
请 注册 或 登录 后发表评论