// 更新账户 func (o *subOrderImpl) updateAccountForOrder(m member.IMember) error { if o._value.State != order.StatCompleted { return order.ErrUnusualOrderStat } var err error ov := o._value conf := o._valRep.GetGlobNumberConf() amount := ov.FinalAmount acc := m.GetAccount() // 增加经验 rate := conf.ExperienceRateByOrder if exp := int(amount * rate); exp > 0 { if err = m.AddExp(exp); err != nil { return err } } // 增加积分 //todo: 增加阶梯的返积分,比如订单满30送100积分 integral := int(amount*conf.IntegralRateByOrder) + conf.IntegralBackExtra // 赠送积分 if integral > 0 { err = m.GetAccount().AddIntegral(ov.VendorId, enum.INTEGRAL_TYPE_ORDER, integral, fmt.Sprintf("订单返积分%d个", integral)) if err != nil { return err } } acv := acc.GetValue() acv.TotalFee += ov.GoodsAmount acv.TotalPay += ov.FinalAmount acv.UpdateTime = time.Now().Unix() _, err = acc.Save() return err }