129 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			129 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | 
 | ||
|  | namespace app\common\model\shop; | ||
|  | 
 | ||
|  | 
 | ||
|  | use app\common\basics\Models; | ||
|  | use think\Exception; | ||
|  | use think\facade\Db; | ||
|  | 
 | ||
|  | /** | ||
|  |  * 商户账号流水模型 | ||
|  |  * Class ShopAccountLog | ||
|  |  * @package app\common\model\shop | ||
|  |  */ | ||
|  | class ShopAccountLog extends Models | ||
|  | { | ||
|  |     const settlement_add_money  = 100; //商家结算入账
 | ||
|  |     const withdrawal_stay_money = 101; //商家提现中
 | ||
|  |     const withdrawal_dec_money  = 102; //商家提现扣减
 | ||
|  |     const withdrawal_fail_money = 103; //商家提现失败
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @Notes: 增加资金 | ||
|  |      * @Author: 张无忌 | ||
|  |      * @param $shopId | ||
|  |      * @param $sourceType (来源类型,参考上面定义) | ||
|  |      * @param $changeAmount (增加的金额) | ||
|  |      * @param int $left_amount (增加后的金额, 如果=-1,则自动去计算) | ||
|  |      * @param array $data (其他信息) | ||
|  |      * @throws Exception | ||
|  |      */ | ||
|  |     public static function incData($shopId, $sourceType, $changeAmount, $left_amount=-1, $data=[]) | ||
|  |     { | ||
|  |         try { | ||
|  |             if ($left_amount === -1) { | ||
|  |                 $left_amount = 0; | ||
|  |                 $wallet = (new Shop())->where(['id'=>$shopId])->value('wallet') ?? 0; | ||
|  |                 $left_amount += ($wallet + $changeAmount); | ||
|  |             } elseif ($left_amount === 0)  { | ||
|  |                 $left_amount = 0; | ||
|  |                 $wallet = (new Shop())->where(['id'=>$shopId])->value('wallet') ?? 0; | ||
|  |                 $left_amount += $wallet; | ||
|  |             } | ||
|  | 
 | ||
|  |             self::create([ | ||
|  |                 'log_sn'        => createSn('shop_account_log', 'log_sn'), | ||
|  |                 'shop_id'       => $shopId, | ||
|  |                 'source_type'   => $sourceType, | ||
|  |                 'change_amount' => $changeAmount, | ||
|  |                 'left_amount'   => $left_amount, | ||
|  |                 'source_id'     => $data['source_id'] ?? 0, | ||
|  |                 'source_sn'     => $data['source_sn'] ?? '', | ||
|  |                 'remark'        => $data['remark'] ?? '', | ||
|  |                 'extra'         => $data['extra'] ?? '', | ||
|  |                 'change_type'   => 1, | ||
|  |                 'create_time'   => time() | ||
|  |             ]); | ||
|  | 
 | ||
|  |         } catch (\Exception $e) { | ||
|  |             throw new Exception($e->getMessage()); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @Notes: 减少资金 | ||
|  |      * @Author: 张无忌 | ||
|  |      * @param $shopId | ||
|  |      * @param $sourceType (来源类型,参考上面定义) | ||
|  |      * @param $changeAmount (减少的金额) | ||
|  |      * @param int $left_amount (增加后的金额, 如果=-1,则自动去计算) | ||
|  |      * @param array $data (其他信息) | ||
|  |      * @throws Exception | ||
|  |      */ | ||
|  |     public static function decData($shopId, $sourceType, $changeAmount, $left_amount=-1, $data=[]) | ||
|  |     { | ||
|  |         try { | ||
|  |             if ($left_amount === -1) { | ||
|  |                 $left_amount = 0; | ||
|  |                 $wallet = (new Shop())->where(['id'=>$shopId])->value('wallet') ?? 0; | ||
|  |                 $left_amount += ($wallet - $changeAmount); | ||
|  |             } elseif ($left_amount === 0)  { | ||
|  |                 $left_amount = 0; | ||
|  |                 $wallet = (new Shop())->where(['id'=>$shopId])->value('wallet') ?? 0; | ||
|  |                 $left_amount += $wallet; | ||
|  |             } | ||
|  | 
 | ||
|  |             self::create([ | ||
|  |                 'log_sn'        => createSn('shop_account_log', 'log_sn'), | ||
|  |                 'shop_id'       => $shopId, | ||
|  |                 'source_type'   => $sourceType, | ||
|  |                 'change_amount' => $changeAmount, | ||
|  |                 'left_amount'   => $left_amount, | ||
|  |                 'source_id'     => $data['source_id'] ?? 0, | ||
|  |                 'source_sn'     => $data['source_sn'] ?? '', | ||
|  |                 'remark'        => $data['remark'] ?? '', | ||
|  |                 'extra'         => $data['extra'] ?? '', | ||
|  |                 'change_type'   => 2, | ||
|  |                 'create_time'   => time() | ||
|  |             ]); | ||
|  | 
 | ||
|  |         } catch (\Exception $e) { | ||
|  |             throw new Exception($e->getMessage()); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @Notes: 来源类型 | ||
|  |      * @param bool $status | ||
|  |      * @return array|mixed|string | ||
|  |      */ | ||
|  |     public static function getSourceType($status = true) | ||
|  |     { | ||
|  |         $desc = [ | ||
|  |             ShopAccountLog::settlement_add_money  => '结算入账', | ||
|  |             ShopAccountLog::withdrawal_dec_money  => '商家提现', | ||
|  |             ShopAccountLog::withdrawal_stay_money => '商家提现中', | ||
|  |             ShopAccountLog::withdrawal_fail_money => '商家提现失败', | ||
|  |         ]; | ||
|  | 
 | ||
|  |         if ($status === true) { | ||
|  |             return $desc; | ||
|  |         } | ||
|  | 
 | ||
|  |         return $desc[$status] ?? '未知'; | ||
|  |     } | ||
|  | 
 | ||
|  | } |