合并分支 'dev' 到 'test'
Dev 查看合并请求 !2
正在显示
4 个修改的文件
包含
46 行增加
和
22 行删除
| @@ -411,7 +411,7 @@ func (PartnerInfoService *PartnerInfoService) ListPartnerInfo(listPartnerInfoQue | @@ -411,7 +411,7 @@ func (PartnerInfoService *PartnerInfoService) ListPartnerInfo(listPartnerInfoQue | ||
| 411 | 411 | ||
| 412 | /** | 412 | /** |
| 413 | * @Author SteveChan | 413 | * @Author SteveChan |
| 414 | - * @Description //TODO 移除合伙人 | 414 | + * @Description // 移除合伙人 |
| 415 | * @Date 16:40 2020/12/29 | 415 | * @Date 16:40 2020/12/29 |
| 416 | * @Param | 416 | * @Param |
| 417 | * @return | 417 | * @return |
| @@ -432,6 +432,8 @@ func (PartnerInfoService *PartnerInfoService) RemovePartnerInfo(cmd command.Remo | @@ -432,6 +432,8 @@ func (PartnerInfoService *PartnerInfoService) RemovePartnerInfo(cmd command.Remo | ||
| 432 | 432 | ||
| 433 | var ( | 433 | var ( |
| 434 | partnerInfoRepository domain.PartnerInfoRepository | 434 | partnerInfoRepository domain.PartnerInfoRepository |
| 435 | + orderBaseRepository domain.OrderBaseRepository | ||
| 436 | + orders []domain.OrderBase | ||
| 435 | ) | 437 | ) |
| 436 | 438 | ||
| 437 | if partnerInfoRepository, err = factory.CreatePartnerInfoRepository(map[string]interface{}{ | 439 | if partnerInfoRepository, err = factory.CreatePartnerInfoRepository(map[string]interface{}{ |
| @@ -440,7 +442,19 @@ func (PartnerInfoService *PartnerInfoService) RemovePartnerInfo(cmd command.Remo | @@ -440,7 +442,19 @@ func (PartnerInfoService *PartnerInfoService) RemovePartnerInfo(cmd command.Remo | ||
| 440 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 442 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| 441 | } | 443 | } |
| 442 | 444 | ||
| 445 | + if orderBaseRepository, err = factory.CreateOrderBaseRepository(map[string]interface{}{ | ||
| 446 | + "transactionContext": transactionContext, | ||
| 447 | + }); err != nil { | ||
| 448 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 449 | + } | ||
| 450 | + | ||
| 443 | // 判断合伙人是否有业务数据 | 451 | // 判断合伙人是否有业务数据 |
| 452 | + orders, _, err = orderBaseRepository.Find(domain.OrderBaseFindQuery{ | ||
| 453 | + PartnerId: cmd.Id, | ||
| 454 | + }) | ||
| 455 | + if len(orders) > 0 { | ||
| 456 | + return lib.ThrowError(lib.BUSINESS_ERROR, "该合伙人有业务数据,不可删除!") | ||
| 457 | + } | ||
| 444 | 458 | ||
| 445 | if err = partnerInfoRepository.Remove(cmd.Id); err != nil { | 459 | if err = partnerInfoRepository.Remove(cmd.Id); err != nil { |
| 446 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 460 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| @@ -9,7 +9,7 @@ import ( | @@ -9,7 +9,7 @@ import ( | ||
| 9 | const ( | 9 | const ( |
| 10 | OrderReal = iota + 1 //实发订单 | 10 | OrderReal = iota + 1 //实发订单 |
| 11 | OrderIntention //意向订单 | 11 | OrderIntention //意向订单 |
| 12 | - OrderTypeBestShop //来自小程序海鲜干货的订单 | 12 | + OrderTypeBestShop //来自小程序香米的订单 |
| 13 | ) | 13 | ) |
| 14 | 14 | ||
| 15 | func GetOrderBaseTypeName(orderType int) string { | 15 | func GetOrderBaseTypeName(orderType int) string { |
| @@ -70,7 +70,7 @@ type OrderGood struct { | @@ -70,7 +70,7 @@ type OrderGood struct { | ||
| 70 | UseGoodNumber int `json:"useGoodNumber"` | 70 | UseGoodNumber int `json:"useGoodNumber"` |
| 71 | //货品单价 | 71 | //货品单价 |
| 72 | Price float64 `json:"price"` | 72 | Price float64 `json:"price"` |
| 73 | - //合伙人分红比例 | 73 | + //合伙人分红比例 比如12.7等同于12.7%,使用负值表示分红比例未进行设置 |
| 74 | PartnerBonusPercent float64 `json:"partnerBonusPercent"` | 74 | PartnerBonusPercent float64 `json:"partnerBonusPercent"` |
| 75 | //分红支付状态 | 75 | //分红支付状态 |
| 76 | BonusStatus int `json:"bonusStatus"` | 76 | BonusStatus int `json:"bonusStatus"` |
| @@ -87,6 +87,20 @@ type OrderGood struct { | @@ -87,6 +87,20 @@ type OrderGood struct { | ||
| 87 | DataFrom OrderDataFrom `json:"data_from"` | 87 | DataFrom OrderDataFrom `json:"data_from"` |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | +//NewOrderGood 初始值设定 | ||
| 91 | +func NewOrderGood() OrderGood { | ||
| 92 | + return OrderGood{ | ||
| 93 | + UseGoodNumber: -1, | ||
| 94 | + BonusStatus: OrderGoodWaitPay, | ||
| 95 | + PartnerBonusPercent: -1, | ||
| 96 | + GoodCompute: GoodCompute{ | ||
| 97 | + UsePartnerBonus: -1, | ||
| 98 | + UseAmount: -1, | ||
| 99 | + }, | ||
| 100 | + CurrentBonusStatus: OrderGoodBonusWaitPay{}, | ||
| 101 | + } | ||
| 102 | +} | ||
| 103 | + | ||
| 90 | //GetCurrentGoodNumber 获取当前的商品数量 | 104 | //GetCurrentGoodNumber 获取当前的商品数量 |
| 91 | func (good OrderGood) GetCurrentGoodNumber() int { | 105 | func (good OrderGood) GetCurrentGoodNumber() int { |
| 92 | if good.UseGoodNumber >= 0 { | 106 | if good.UseGoodNumber >= 0 { |
| @@ -111,7 +125,7 @@ func (good OrderGood) GetCurrentPartnerBonus() float64 { | @@ -111,7 +125,7 @@ func (good OrderGood) GetCurrentPartnerBonus() float64 { | ||
| 111 | return good.GoodCompute.PlanPartnerBonus | 125 | return good.GoodCompute.PlanPartnerBonus |
| 112 | } | 126 | } |
| 113 | 127 | ||
| 114 | -//GetCurrentAmount 获取当前的商品合伙人分红 | 128 | +//ModifyOrderGoodNumber 修改货品数量 |
| 115 | func (good *OrderGood) ModifyOrderGoodNumber(number int, orderType int) error { | 129 | func (good *OrderGood) ModifyOrderGoodNumber(number int, orderType int) error { |
| 116 | if good.PlanGoodNumber < number { | 130 | if good.PlanGoodNumber < number { |
| 117 | return fmt.Errorf("修改数量不能大于初始值:%d", good.PlanGoodNumber) | 131 | return fmt.Errorf("修改数量不能大于初始值:%d", good.PlanGoodNumber) |
| @@ -120,6 +134,7 @@ func (good *OrderGood) ModifyOrderGoodNumber(number int, orderType int) error { | @@ -120,6 +134,7 @@ func (good *OrderGood) ModifyOrderGoodNumber(number int, orderType int) error { | ||
| 120 | return err | 134 | return err |
| 121 | } | 135 | } |
| 122 | 136 | ||
| 137 | +//ModifyPertnerBonusPercent 修改货品的分红比例 | ||
| 123 | func (good *OrderGood) ModifyPertnerBonusPercent(percent float64, orderType int) error { | 138 | func (good *OrderGood) ModifyPertnerBonusPercent(percent float64, orderType int) error { |
| 124 | err := good.CurrentBonusStatus.ModifyPertnerBonusPercent(good, percent, orderType) | 139 | err := good.CurrentBonusStatus.ModifyPertnerBonusPercent(good, percent, orderType) |
| 125 | return err | 140 | return err |
| @@ -162,6 +177,7 @@ type OrderGoodBonusHasPay struct{} | @@ -162,6 +177,7 @@ type OrderGoodBonusHasPay struct{} | ||
| 162 | 177 | ||
| 163 | var _ OrderGoodBonusStatus = (*OrderGoodBonusHasPay)(nil) | 178 | var _ OrderGoodBonusStatus = (*OrderGoodBonusHasPay)(nil) |
| 164 | 179 | ||
| 180 | +//WartPayPartnerBonus 货品的支付状态从“待支付”状态变更为“待支付” | ||
| 165 | func (waitPay OrderGoodBonusWaitPay) WartPayPartnerBonus(good *OrderGood) error { | 181 | func (waitPay OrderGoodBonusWaitPay) WartPayPartnerBonus(good *OrderGood) error { |
| 166 | good.GoodCompute.PartnerBonusExpense = 0 | 182 | good.GoodCompute.PartnerBonusExpense = 0 |
| 167 | good.GoodCompute.PartnerBonusHas = 0 | 183 | good.GoodCompute.PartnerBonusHas = 0 |
| @@ -178,6 +194,7 @@ func (waitPay OrderGoodBonusWaitPay) WartPayPartnerBonus(good *OrderGood) error | @@ -178,6 +194,7 @@ func (waitPay OrderGoodBonusWaitPay) WartPayPartnerBonus(good *OrderGood) error | ||
| 178 | return nil | 194 | return nil |
| 179 | } | 195 | } |
| 180 | 196 | ||
| 197 | +//PayPartnerBonus 货品的支付状态从“待支付”状态变更为“已支付” | ||
| 181 | func (waitPay OrderGoodBonusWaitPay) PayPartnerBonus(good *OrderGood) error { | 198 | func (waitPay OrderGoodBonusWaitPay) PayPartnerBonus(good *OrderGood) error { |
| 182 | //待支付状态转支付时 | 199 | //待支付状态转支付时 |
| 183 | //合伙人已收收分红等于合伙人应收分红(或者调整的) | 200 | //合伙人已收收分红等于合伙人应收分红(或者调整的) |
| @@ -196,6 +213,7 @@ func (waitPay OrderGoodBonusWaitPay) PayPartnerBonus(good *OrderGood) error { | @@ -196,6 +213,7 @@ func (waitPay OrderGoodBonusWaitPay) PayPartnerBonus(good *OrderGood) error { | ||
| 196 | return nil | 213 | return nil |
| 197 | } | 214 | } |
| 198 | 215 | ||
| 216 | +//PayPartnerBonus 货品的支付状态从“已支付”状态变更为“已支付” | ||
| 199 | func (hasPay OrderGoodBonusHasPay) PayPartnerBonus(good *OrderGood) error { | 217 | func (hasPay OrderGoodBonusHasPay) PayPartnerBonus(good *OrderGood) error { |
| 200 | //已支付的值保持不变 | 218 | //已支付的值保持不变 |
| 201 | //未支付的值保持不变 | 219 | //未支付的值保持不变 |
| @@ -210,10 +228,12 @@ func (hasPay OrderGoodBonusHasPay) PayPartnerBonus(good *OrderGood) error { | @@ -210,10 +228,12 @@ func (hasPay OrderGoodBonusHasPay) PayPartnerBonus(good *OrderGood) error { | ||
| 210 | return nil | 228 | return nil |
| 211 | } | 229 | } |
| 212 | 230 | ||
| 231 | +//WartPayPartnerBonus 货品的支付状态从“已支付”状态变更为“待支付” | ||
| 213 | func (hasPay OrderGoodBonusHasPay) WartPayPartnerBonus(good *OrderGood) error { | 232 | func (hasPay OrderGoodBonusHasPay) WartPayPartnerBonus(good *OrderGood) error { |
| 214 | return errors.New("已支付的货单不能将状态回退为待支付") | 233 | return errors.New("已支付的货单不能将状态回退为待支付") |
| 215 | } | 234 | } |
| 216 | 235 | ||
| 236 | +//ModifyOrderGoodNumber 货品的支付状态为“已支付”状态变时,修改货品数量 | ||
| 217 | func (hasPay OrderGoodBonusHasPay) ModifyOrderGoodNumber(good *OrderGood, number int, orderType int) error { | 237 | func (hasPay OrderGoodBonusHasPay) ModifyOrderGoodNumber(good *OrderGood, number int, orderType int) error { |
| 218 | //规则描述: | 238 | //规则描述: |
| 219 | //实际自建订单(orderType==1),已支付分红状态下“可以”修改货品数量 | 239 | //实际自建订单(orderType==1),已支付分红状态下“可以”修改货品数量 |
| @@ -233,6 +253,7 @@ func (hasPay OrderGoodBonusHasPay) ModifyOrderGoodNumber(good *OrderGood, number | @@ -233,6 +253,7 @@ func (hasPay OrderGoodBonusHasPay) ModifyOrderGoodNumber(good *OrderGood, number | ||
| 233 | return nil | 253 | return nil |
| 234 | } | 254 | } |
| 235 | 255 | ||
| 256 | +//ModifyOrderGoodNumber 货品的支付状态为“待支付”状态变时,修改货品数量 | ||
| 236 | func (waitPay OrderGoodBonusWaitPay) ModifyOrderGoodNumber(good *OrderGood, number int, orderType int) error { | 257 | func (waitPay OrderGoodBonusWaitPay) ModifyOrderGoodNumber(good *OrderGood, number int, orderType int) error { |
| 237 | //规则描述: | 258 | //规则描述: |
| 238 | //实际自建订单(orderType==1),未支付分红状态下“可以”修改货品数量 | 259 | //实际自建订单(orderType==1),未支付分红状态下“可以”修改货品数量 |
| @@ -247,6 +268,7 @@ func (waitPay OrderGoodBonusWaitPay) ModifyOrderGoodNumber(good *OrderGood, numb | @@ -247,6 +268,7 @@ func (waitPay OrderGoodBonusWaitPay) ModifyOrderGoodNumber(good *OrderGood, numb | ||
| 247 | return nil | 268 | return nil |
| 248 | } | 269 | } |
| 249 | 270 | ||
| 271 | +//ModifyPertnerBonusPercent 货品的支付状态为“待支付”状态变时,修改货品合伙人分红比例 | ||
| 250 | func (waitPay OrderGoodBonusWaitPay) ModifyPertnerBonusPercent(good *OrderGood, percent float64, orderType int) error { | 272 | func (waitPay OrderGoodBonusWaitPay) ModifyPertnerBonusPercent(good *OrderGood, percent float64, orderType int) error { |
| 251 | //规则描述: | 273 | //规则描述: |
| 252 | //实际自建订单(orderType==1),未支付分红状态下“不可以”修改合伙人分红比例 | 274 | //实际自建订单(orderType==1),未支付分红状态下“不可以”修改合伙人分红比例 |
| @@ -276,20 +298,6 @@ func (hasPay OrderGoodBonusHasPay) ModifyPertnerBonusPercent(good *OrderGood, pe | @@ -276,20 +298,6 @@ func (hasPay OrderGoodBonusHasPay) ModifyPertnerBonusPercent(good *OrderGood, pe | ||
| 276 | return errors.New("已支付分红的货品订单,不能修改合伙人分红比例") | 298 | return errors.New("已支付分红的货品订单,不能修改合伙人分红比例") |
| 277 | } | 299 | } |
| 278 | 300 | ||
| 279 | -//NewOrderGood 初始值设定 | ||
| 280 | -func NewOrderGood() OrderGood { | ||
| 281 | - return OrderGood{ | ||
| 282 | - UseGoodNumber: -1, | ||
| 283 | - BonusStatus: OrderGoodWaitPay, | ||
| 284 | - PartnerBonusPercent: -1, | ||
| 285 | - GoodCompute: GoodCompute{ | ||
| 286 | - UsePartnerBonus: -1, | ||
| 287 | - UseAmount: -1, | ||
| 288 | - }, | ||
| 289 | - CurrentBonusStatus: OrderGoodBonusWaitPay{}, | ||
| 290 | - } | ||
| 291 | -} | ||
| 292 | - | ||
| 293 | //Compute 数据汇总核算 | 301 | //Compute 数据汇总核算 |
| 294 | func (good *OrderGood) Compute() error { | 302 | func (good *OrderGood) Compute() error { |
| 295 | //计算预计货品总值 | 303 | //计算预计货品总值 |
| @@ -299,15 +307,17 @@ func (good *OrderGood) Compute() error { | @@ -299,15 +307,17 @@ func (good *OrderGood) Compute() error { | ||
| 299 | if good.PlanGoodNumber < 0 { | 307 | if good.PlanGoodNumber < 0 { |
| 300 | planGoodNumber = 0 | 308 | planGoodNumber = 0 |
| 301 | } | 309 | } |
| 302 | - planamount := price.Mul(decimal.NewFromInt(int64(planGoodNumber))) //price*planGoodNumber | 310 | + //计算预计货品总值(planamount), 货品单价*预计货品数量(price*planGoodNumber) |
| 311 | + planamount := price.Mul(decimal.NewFromInt(int64(planGoodNumber))) | ||
| 303 | var partnerBonusPercent float64 | 312 | var partnerBonusPercent float64 |
| 304 | if good.PartnerBonusPercent < 0 { | 313 | if good.PartnerBonusPercent < 0 { |
| 305 | partnerBonusPercent = 0 | 314 | partnerBonusPercent = 0 |
| 306 | } else { | 315 | } else { |
| 307 | partnerBonusPercent = good.PartnerBonusPercent | 316 | partnerBonusPercent = good.PartnerBonusPercent |
| 308 | } | 317 | } |
| 309 | - //price*useGoodNumber | 318 | + //计算预计合伙人分红(planPartnerBonus), 预计货品总值*合伙人分成比例/100(planamount*partnerBonusPercent/100) |
| 310 | planPartnerBonus := planamount.Mul(decimal.NewFromFloat(partnerBonusPercent)).Div(decimal.NewFromInt(100)) //price*planGoodNumber*PartnerBonusPercent | 319 | planPartnerBonus := planamount.Mul(decimal.NewFromFloat(partnerBonusPercent)).Div(decimal.NewFromInt(100)) //price*planGoodNumber*PartnerBonusPercent |
| 320 | + //货品预计总值 | ||
| 311 | good.GoodCompute.PlanAmount, _ = planamount.Round(2).BigFloat().Float64() | 321 | good.GoodCompute.PlanAmount, _ = planamount.Round(2).BigFloat().Float64() |
| 312 | good.GoodCompute.PlanPartnerBonus, _ = planPartnerBonus.Round(2).BigFloat().Float64() | 322 | good.GoodCompute.PlanPartnerBonus, _ = planPartnerBonus.Round(2).BigFloat().Float64() |
| 313 | if good.UseGoodNumber < 0 { | 323 | if good.UseGoodNumber < 0 { |
| @@ -316,8 +326,8 @@ func (good *OrderGood) Compute() error { | @@ -316,8 +326,8 @@ func (good *OrderGood) Compute() error { | ||
| 316 | good.GoodCompute.UseAmount = -1 | 326 | good.GoodCompute.UseAmount = -1 |
| 317 | } else { | 327 | } else { |
| 318 | //计算调整后的货品总值 | 328 | //计算调整后的货品总值 |
| 319 | - //计算调整后的合伙人分红 | ||
| 320 | - useamount := price.Mul(decimal.NewFromInt(int64(good.UseGoodNumber))) //price*useGoodNumber/price*useGoodNumber | 329 | + useamount := price.Mul(decimal.NewFromInt(int64(good.UseGoodNumber))) |
| 330 | + //计算调整后的合伙人分红 //price*useGoodNumber/price*useGoodNumber | ||
| 321 | usePartnerBonus := useamount.Mul(decimal.NewFromFloat(partnerBonusPercent)).Div(decimal.NewFromInt(100)) //price*useGoodNumber*PartnerBonusPercent | 331 | usePartnerBonus := useamount.Mul(decimal.NewFromFloat(partnerBonusPercent)).Div(decimal.NewFromInt(100)) //price*useGoodNumber*PartnerBonusPercent |
| 322 | good.GoodCompute.UsePartnerBonus, _ = usePartnerBonus.Round(2).BigFloat().Float64() | 332 | good.GoodCompute.UsePartnerBonus, _ = usePartnerBonus.Round(2).BigFloat().Float64() |
| 323 | good.GoodCompute.UseAmount, _ = useamount.Round(2).BigFloat().Float64() | 333 | good.GoodCompute.UseAmount, _ = useamount.Round(2).BigFloat().Float64() |
tags
0 → 100644
此 diff 太大无法显示。
-
请 注册 或 登录 后发表评论