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] ?? '未知';
 | |
|     }
 | |
| 
 | |
| } |