本文整理汇总了Golang中go2o/core/domain/interface/member.IMember.AddExp方法的典型用法代码示例。如果您正苦于以下问题:Golang IMember.AddExp方法的具体用法?Golang IMember.AddExp怎么用?Golang IMember.AddExp使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类go2o/core/domain/interface/member.IMember
的用法示例。
在下文中一共展示了IMember.AddExp方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: updateAccountForOrder
// 更新账户
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
}