作者 唐旭辉

更新注释

@@ -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()