-
Notifications
You must be signed in to change notification settings - Fork 1.6k
赠送经验
liaofei edited this page Jan 20, 2021
·
1 revision
系统目前赠送经验有三个地方,分别是:1,用户下单赠送经验;2,签到赠送经验;3,邀请新用户赠送经验。
所有的赠送行为都必须建立在用户等级启用的前提下。
后台赠送经验规则设置,导航菜单【设置】【系统设置】【商城配置】【用户等级配置】
下面我们从三个方面讲解一下逻辑,以便开发者二开。
第一,用户下单赠送经验
用户下单赠送经验是在用户确认收货后进行赠送,涉及数据表eb_user:用户表,eb_user_bill:赠送经验记录表,eb_system_user_level:用户等级配置表,eb_user_level:用户等级升级记录表。
确认收货接口控制器:app/api/controller/v1/order/StoreOrderController.php
方法: public function take(Request $request, StoreOrderTakeServices $services, StoreCouponIssueServices $issueServices)
赠送经验业务类:app/services/order/StoreOrderTakeServices.php
赠送经验方法: public function gainUserExp($order, $userInfo)
1,赠送时首先对用户进行校验
2,根据规则配置赠送规则,核算赠送经验数据。
3,根据赠送经验,核算用户等级。
核算用户等级业务类:app/services/user/UserLevelServices.php
核算用户等级方法:public function detection(int $uid)
第二,签到赠送经验
用户签到时会赠送积分和经验,此处一并讲解。涉及数据表eb_user:用户表,eb_user_bill:赠送经验记录表,eb_system_user_level:用户等级配置表,eb_user_level:用户等级升级记录表,eb_user_sign:用户签到记录表。
用户签到接口控制器:app/api/controller/v1/user/UserSignController.php
用户签到方法: public function sign_integral(Request $request)
1,接收用户信息
2,调用签到业务类方法
业务类:app/services/user/UserSignServices.php
方法:public function sign(int $uid)
3,判断用户签到天数配置
4,校验用户签到情况
5,核算用户签到积分数据
6,核算用户签到经验数据
7,修改用户主表积分数和经验值
8,增加赠送积分和经验记录
9,根据赠送经验,核算用户等级。
如果在签到中需要二开什么逻辑可以在此业务类中进行二开。
第三,邀请新用户赠送经验 涉及数据表eb_user:用户表,eb_user_bill:赠送经验记录表,eb_system_user_level:用户等级配置表,eb_user_level:用户等级升级记录。
邀请新用户业务类:app/services/user/UserBillServices.php
方法:public function inviteUserIncExp(int $spreadUid)