作者 陈志颖

Merge branch 'dev' of http://gitlab.fjmaimaimai.com/mmm-go/partnermg into dev

@@ -16,7 +16,7 @@ import ( @@ -16,7 +16,7 @@ import (
16 16
17 //从其他系统接收订单数据 17 //从其他系统接收订单数据
18 const ( 18 const (
19 - BEST_SHOP_UNIONID string = "gh_18eb644002fb" //海鲜干货小程序原始id 19 + BEST_SHOP_UNIONID string = "gh_18eb644002fb" //香米小程序原始id
20 ) 20 )
21 21
22 type SyncOrderService struct { 22 type SyncOrderService struct {
@@ -79,6 +79,7 @@ func (s SyncOrderService) SyncOrderFromBestshop(cmd command.CreateOrderFromBests @@ -79,6 +79,7 @@ func (s SyncOrderService) SyncOrderFromBestshop(cmd command.CreateOrderFromBests
79 // 79 //
80 logs.Warning("订单数据已存在:order_code=%s", cmd.OrderCode) 80 logs.Warning("订单数据已存在:order_code=%s", cmd.OrderCode)
81 } else { 81 } else {
  82 + //复制数据到order_base表
82 err = s.CreateOrderFromBestshop(cmd) 83 err = s.CreateOrderFromBestshop(cmd)
83 } 84 }
84 return err 85 return err
@@ -225,6 +226,8 @@ func (s SyncOrderService) copyOrderBestshopToOrderBase(orderBestshop *domain.Ord @@ -225,6 +226,8 @@ func (s SyncOrderService) copyOrderBestshopToOrderBase(orderBestshop *domain.Ord
225 return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) 226 return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e)
226 } 227 }
227 for _, v := range companyData.Applets { 228 for _, v := range companyData.Applets {
  229 + //BEST_SHOP_UNIONID string = "gh_18eb644002fb" //香米小程序原始id
  230 + //接收香米小程序的订单数据
228 if len(v.Id) > 0 { 231 if len(v.Id) > 0 {
229 canCopyOrder = true 232 canCopyOrder = true
230 } 233 }
@@ -237,7 +240,7 @@ func (s SyncOrderService) copyOrderBestshopToOrderBase(orderBestshop *domain.Ord @@ -237,7 +240,7 @@ func (s SyncOrderService) copyOrderBestshopToOrderBase(orderBestshop *domain.Ord
237 orderbase domain.OrderBase 240 orderbase domain.OrderBase
238 ordergoods []domain.OrderGood 241 ordergoods []domain.OrderGood
239 ) 242 )
240 - //TODO 添加orderBase 243 + //添加orderBase
241 orderBestshop.CopyToOrderBase(&orderbase) 244 orderBestshop.CopyToOrderBase(&orderbase)
242 orderbase.CompanyId = companyData.Id 245 orderbase.CompanyId = companyData.Id
243 for i := range orderBestshop.Goods { 246 for i := range orderBestshop.Goods {
@@ -245,13 +248,15 @@ func (s SyncOrderService) copyOrderBestshopToOrderBase(orderBestshop *domain.Ord @@ -245,13 +248,15 @@ func (s SyncOrderService) copyOrderBestshopToOrderBase(orderBestshop *domain.Ord
245 orderBestshop.Goods[i].CopyToOrderGood(&good) 248 orderBestshop.Goods[i].CopyToOrderGood(&good)
246 good.CompanyId = partnerData.CompanyId 249 good.CompanyId = partnerData.CompanyId
247 good.Compute() 250 good.Compute()
  251 + //初始接收的订单按照待支付状态处理
248 good.CurrentBonusStatus.WartPayPartnerBonus(&good) 252 good.CurrentBonusStatus.WartPayPartnerBonus(&good)
249 ordergoods = append(ordergoods, good) 253 ordergoods = append(ordergoods, good)
250 } 254 }
251 orderbase.Goods = ordergoods 255 orderbase.Goods = ordergoods
252 orderbase.PartnerId = partnerData.Partner.Id 256 orderbase.PartnerId = partnerData.Partner.Id
253 orderbase.CompanyId = partnerData.CompanyId 257 orderbase.CompanyId = partnerData.CompanyId
254 - orderbase.PartnerCategory = domain.PartnerCategory{Id: 1, Name: "事业合伙人"} // 默认设定为事业合伙人订单 258 + // 默认设定为事业合伙人订单
  259 + orderbase.PartnerCategory = domain.PartnerCategory{Id: 1, Name: "事业合伙人"}
255 orderbase.Compute() 260 orderbase.Compute()
256 err = orderBaseRepository.Save(&orderbase) 261 err = orderBaseRepository.Save(&orderbase)
257 if err != nil { 262 if err != nil {
@@ -6,8 +6,9 @@ import ( @@ -6,8 +6,9 @@ import (
6 ) 6 )
7 7
8 type SyncCallbackCommand struct { 8 type SyncCallbackCommand struct {
9 - //position:职位,department:部门,employee:员工,company:公司 9 + //模块:position:职位,department:部门,employee:员工,company:公司
10 Module string `json:"module"` 10 Module string `json:"module"`
  11 + //动作:
11 //add:添加,edit:编辑,delete删除,batchDelete:批量删除, 12 //add:添加,edit:编辑,delete删除,batchDelete:批量删除,
12 //setCompanyCharge:更改公司主管,batchForbid:批量禁用用户, 13 //setCompanyCharge:更改公司主管,batchForbid:批量禁用用户,
13 //batchRemove:批量更改用户部门,changeAdmin换管理员 14 //batchRemove:批量更改用户部门,changeAdmin换管理员
@@ -198,16 +198,25 @@ func (order *OrderBase) Compute() error { @@ -198,16 +198,25 @@ func (order *OrderBase) Compute() error {
198 planPartnerBonus := decimal.NewFromFloat(0) 198 planPartnerBonus := decimal.NewFromFloat(0)
199 planOrderAmount := decimal.NewFromFloat(0) 199 planOrderAmount := decimal.NewFromFloat(0)
200 var ( 200 var (
  201 + //预计的货品总数,不包含调整后的值
201 planOrderCount int = 0 202 planOrderCount int = 0
  203 + //调整后的货品总数,混合相加计算预计值和调整值中的一个,优先取调整值计算
202 useOrderCount int = 0 204 useOrderCount int = 0
  205 + //订单的货品列表中是否存在调整货品数量
203 HasUseOrderCount bool = false 206 HasUseOrderCount bool = false
204 ) 207 )
  208 + //调整后的合伙人分红,混合相加计算预计值和调整值中的一个,优先取调整值计算
205 usePartnerBonus := decimal.NewFromFloat(0) 209 usePartnerBonus := decimal.NewFromFloat(0)
  210 + //订单的货品列表中是否存在调整的合伙人分红
206 var hasUsePartnerBonus bool = false 211 var hasUsePartnerBonus bool = false
  212 + //调整后的订单总额,混合相加计算预计值和调整值中的一个,优先取调整值计算
207 useOrderAmount := decimal.NewFromFloat(0) 213 useOrderAmount := decimal.NewFromFloat(0)
208 var hasUseOrderAmount bool = false 214 var hasUseOrderAmount bool = false
  215 + //已支付分红
209 partnerBonusHas := decimal.NewFromFloat(0) 216 partnerBonusHas := decimal.NewFromFloat(0)
  217 + //未支付分红
210 partnerBonusNot := decimal.NewFromFloat(0) 218 partnerBonusNot := decimal.NewFromFloat(0)
  219 + //分红支出
211 partnerBonusExpense := decimal.NewFromFloat(0) 220 partnerBonusExpense := decimal.NewFromFloat(0)
212 //初始订单的支付状态 221 //初始订单的支付状态
213 order.BonusStatus = OrderGoodWaitPay 222 order.BonusStatus = OrderGoodWaitPay
@@ -215,14 +224,20 @@ func (order *OrderBase) Compute() error { @@ -215,14 +224,20 @@ func (order *OrderBase) Compute() error {
215 for i := range order.Goods { 224 for i := range order.Goods {
216 if order.Goods[i].BonusStatus == OrderGoodHasPay { 225 if order.Goods[i].BonusStatus == OrderGoodHasPay {
217 //确定订单的支付状态 226 //确定订单的支付状态
  227 + //订单的货品列表中“存在”支付状态的为已支付,则整体订单设定为已支付状态
218 order.BonusStatus = OrderGoodHasPay 228 order.BonusStatus = OrderGoodHasPay
219 } 229 }
  230 + //计算预计的合伙人分红,不含调整的值
220 planPartnerBonus = planPartnerBonus.Add(decimal.NewFromFloat(order.Goods[i].GoodCompute.PlanPartnerBonus)) 231 planPartnerBonus = planPartnerBonus.Add(decimal.NewFromFloat(order.Goods[i].GoodCompute.PlanPartnerBonus))
  232 + //计算预计的订单总金额,不含调整的值
221 planOrderAmount = planOrderAmount.Add(decimal.NewFromFloat(order.Goods[i].GoodCompute.PlanAmount)) 233 planOrderAmount = planOrderAmount.Add(decimal.NewFromFloat(order.Goods[i].GoodCompute.PlanAmount))
  234 + //计算预计的订单中货品总数,不含调整的值
222 planOrderCount += order.Goods[i].PlanGoodNumber 235 planOrderCount += order.Goods[i].PlanGoodNumber
  236 + //获取调整货品调整后(数量)的总金额,
223 goodUseAmount := decimal.NewFromFloat(order.Goods[i].GoodCompute.UseAmount) 237 goodUseAmount := decimal.NewFromFloat(order.Goods[i].GoodCompute.UseAmount)
  238 +
224 if goodUseAmount.GreaterThanOrEqual(decimal.NewFromFloat(0)) { 239 if goodUseAmount.GreaterThanOrEqual(decimal.NewFromFloat(0)) {
225 - //调整值非负值得情况 240 + //调整后货品总金额,非负值(大于等于0)的情况
226 hasUseOrderAmount = true 241 hasUseOrderAmount = true
227 useOrderAmount = useOrderAmount.Add(goodUseAmount) 242 useOrderAmount = useOrderAmount.Add(goodUseAmount)
228 } else { 243 } else {
@@ -230,12 +245,14 @@ func (order *OrderBase) Compute() error { @@ -230,12 +245,14 @@ func (order *OrderBase) Compute() error {
230 } 245 }
231 goodUsePartnerBonus := decimal.NewFromFloat(order.Goods[i].GoodCompute.UsePartnerBonus) 246 goodUsePartnerBonus := decimal.NewFromFloat(order.Goods[i].GoodCompute.UsePartnerBonus)
232 if goodUsePartnerBonus.GreaterThanOrEqual(decimal.NewFromFloat(0)) { 247 if goodUsePartnerBonus.GreaterThanOrEqual(decimal.NewFromFloat(0)) {
  248 + //货品中存在调整后的合伙人分红,即调整大于等于0
233 hasUsePartnerBonus = true 249 hasUsePartnerBonus = true
234 usePartnerBonus = usePartnerBonus.Add(goodUsePartnerBonus) 250 usePartnerBonus = usePartnerBonus.Add(goodUsePartnerBonus)
235 } else { 251 } else {
236 usePartnerBonus = usePartnerBonus.Add(decimal.NewFromFloat(order.Goods[i].GoodCompute.PlanPartnerBonus)) 252 usePartnerBonus = usePartnerBonus.Add(decimal.NewFromFloat(order.Goods[i].GoodCompute.PlanPartnerBonus))
237 } 253 }
238 if order.Goods[i].UseGoodNumber >= 0 { 254 if order.Goods[i].UseGoodNumber >= 0 {
  255 + //货品中存在调整后的数量,调整值大于等于0
239 HasUseOrderCount = true 256 HasUseOrderCount = true
240 useOrderCount += order.Goods[i].UseGoodNumber 257 useOrderCount += order.Goods[i].UseGoodNumber
241 } else { 258 } else {
@@ -311,6 +311,7 @@ func (good *OrderGood) Compute() error { @@ -311,6 +311,7 @@ func (good *OrderGood) Compute() error {
311 planamount := price.Mul(decimal.NewFromInt(int64(planGoodNumber))) 311 planamount := price.Mul(decimal.NewFromInt(int64(planGoodNumber)))
312 var partnerBonusPercent float64 312 var partnerBonusPercent float64
313 if good.PartnerBonusPercent < 0 { 313 if good.PartnerBonusPercent < 0 {
  314 + //判断合伙人分成比例是否设置,若未设置则按照 0 来计算分成
314 partnerBonusPercent = 0 315 partnerBonusPercent = 0
315 } else { 316 } else {
316 partnerBonusPercent = good.PartnerBonusPercent 317 partnerBonusPercent = good.PartnerBonusPercent