当前位置: 首页>>代码示例>>Golang>>正文


Golang IMember.AddExp方法代码示例

本文整理汇总了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
}
开发者ID:yonglehou,项目名称:go2o,代码行数:37,代码来源:order.go


注:本文中的go2o/core/domain/interface/member.IMember.AddExp方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。