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; | |||
|  |     } | |||
|  | } |