66 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								namespace app\common\logic;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use app\common\basics\Logic;
							 | 
						|||
| 
								 | 
							
								use app\common\model\user\User;
							 | 
						|||
| 
								 | 
							
								use app\common\model\AccountLog;
							 | 
						|||
| 
								 | 
							
								use app\admin\logic\user\LevelLogic;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								class AccountLogLogic extends Logic
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:记录会员账户流水,如果变动类型是成长值,且是增加的,则调用更新会员等级方法。该方法应在添加用户账户后调用
							 | 
						|||
| 
								 | 
							
								     * @param int $user_id  用户id
							 | 
						|||
| 
								 | 
							
								     * @param float $amount 变动数量
							 | 
						|||
| 
								 | 
							
								     * @param int $change_type  变动类型:1-增加;2-减少
							 | 
						|||
| 
								 | 
							
								     * @param int $source_type 来源类型
							 | 
						|||
| 
								 | 
							
								     * @param string $remark 说明
							 | 
						|||
| 
								 | 
							
								     * @param string $source_id 来源id
							 | 
						|||
| 
								 | 
							
								     * @param string $source_sn 来源单号
							 | 
						|||
| 
								 | 
							
								     * @param string $extra 额外字段说明
							 | 
						|||
| 
								 | 
							
								     * @return bool
							 | 
						|||
| 
								 | 
							
								     * @throws \think\db\exception\DataNotFoundException
							 | 
						|||
| 
								 | 
							
								     * @throws \think\db\exception\ModelNotFoundException
							 | 
						|||
| 
								 | 
							
								     * @throws \think\exception\DbException
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function AccountRecord($user_id,$amount,$change_type,$source_type,$remark ='',$source_id ='',$source_sn='',$extra=''){
							 | 
						|||
| 
								 | 
							
								        $user = User::findOrEmpty($user_id);
							 | 
						|||
| 
								 | 
							
								        if($user->isEmpty()){
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $type = AccountLog::getChangeType($source_type);
							 | 
						|||
| 
								 | 
							
								        $left_amount = 0;
							 | 
						|||
| 
								 | 
							
								        switch ($type){
							 | 
						|||
| 
								 | 
							
								            case 'money':
							 | 
						|||
| 
								 | 
							
								                $left_amount = $user->user_money;
							 | 
						|||
| 
								 | 
							
								                break;
							 | 
						|||
| 
								 | 
							
								            case 'integral':
							 | 
						|||
| 
								 | 
							
								                $left_amount = $user->user_integral;
							 | 
						|||
| 
								 | 
							
								                break;
							 | 
						|||
| 
								 | 
							
								            case 'growth':
							 | 
						|||
| 
								 | 
							
								                $left_amount = $user->user_growth;
							 | 
						|||
| 
								 | 
							
								                break;
							 | 
						|||
| 
								 | 
							
								            case 'earnings':
							 | 
						|||
| 
								 | 
							
								                $left_amount = $user->earnings;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $account_log = new AccountLog();
							 | 
						|||
| 
								 | 
							
								        $account_log->log_sn = createSn('account_log','log_sn','',4);
							 | 
						|||
| 
								 | 
							
								        $account_log->user_id = $user_id;
							 | 
						|||
| 
								 | 
							
								        $account_log->source_type = $source_type;
							 | 
						|||
| 
								 | 
							
								        $account_log->source_id = $source_id;
							 | 
						|||
| 
								 | 
							
								        $account_log->source_sn = $source_sn;
							 | 
						|||
| 
								 | 
							
								        $account_log->change_amount = $amount;
							 | 
						|||
| 
								 | 
							
								        $account_log->left_amount = $left_amount;
							 | 
						|||
| 
								 | 
							
								        $account_log->remark = AccountLog::getRemarkDesc($source_type,$source_sn,$remark);
							 | 
						|||
| 
								 | 
							
								        $account_log->extra = $extra;
							 | 
						|||
| 
								 | 
							
								        $account_log->change_type = $change_type;
							 | 
						|||
| 
								 | 
							
								        $account_log->create_time = time();
							 | 
						|||
| 
								 | 
							
								        $account_log->save();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //更新会员等级
							 | 
						|||
| 
								 | 
							
								        if($type === 'growth' && $change_type == 1){
							 | 
						|||
| 
								 | 
							
								            LevelLogic::updateUserLevel([$user]);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return true;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |