123 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| 
 | |
| 
 | |
| namespace app\shop\logic\finance;
 | |
| 
 | |
| 
 | |
| use app\common\basics\Logic;
 | |
| use app\common\enum\ShopEnum;
 | |
| use app\common\model\shop\ShopAccountLog;
 | |
| use app\common\server\ExportExcelServer;
 | |
| use app\common\server\UrlServer;
 | |
| 
 | |
| class ShopLogic extends Logic
 | |
| {
 | |
|     /**
 | |
|      * @Notes: 账户明细
 | |
|      * @param $get
 | |
|      * @param $shop_id (商家ID)
 | |
|      * @return array
 | |
|      */
 | |
|     public static function account($get, $shop_id, $is_export = false)
 | |
|     {
 | |
|         $where[] = ['shop_id', '=', (int)$shop_id];
 | |
|         if (isset($get['search_key']) && $get['search_key']) {
 | |
|             switch($get['search_key']){
 | |
|                 case 'settle':
 | |
|                     $where[] = ['SAL.source_type', '=', ShopAccountLog::settlement_add_money];
 | |
|                     break;
 | |
|                 case 'withdrawal':
 | |
|                     $where[] = ['SAL.source_type', '=', ShopAccountLog::withdrawal_dec_money];
 | |
|                     break;
 | |
|                 case 'withdrawal_error':
 | |
|                     $where[] = ['SAL.source_type', '=', ShopAccountLog::withdrawal_fail_money];
 | |
|                     break;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         if (!empty($get['start_time']) and $get['start_time']) {
 | |
|             $where[] = ['SAL.create_time', '>=', strtotime($get['start_time'])];
 | |
|         }
 | |
| 
 | |
|         if (!empty($get['end_time']) and $get['end_time']) {
 | |
|             $where[] = ['SAL.create_time', '<=', strtotime($get['end_time'])];
 | |
|         }
 | |
| 
 | |
|         if (true === $is_export) {
 | |
|             return self::export($where);
 | |
|         }
 | |
| 
 | |
|         $model = new ShopAccountLog();
 | |
|         $lists = $model->alias('SAL')
 | |
|             ->field(['SAL.*', 'S.name,S.logo,S.type'])
 | |
|             ->join('shop S', 'S.id = SAL.shop_id')
 | |
|             ->where($where)
 | |
|             ->order('create_time','desc')
 | |
|             ->paginate([
 | |
|                 'page'      => $get['page'],
 | |
|                 'list_rows' => $get['limit'],
 | |
|                 'var_page'  => 'page'
 | |
|             ])->toArray();
 | |
| 
 | |
| 
 | |
|         foreach ($lists['data'] as &$item) {
 | |
|             $item['type'] = ShopEnum::getShopTypeDesc($item['type']);
 | |
|             $item['source_type'] = ShopAccountLog::getSourceType($item['source_type']);
 | |
|             $symbol = $item['change_type'] === 1 ? '+' : '-';
 | |
|             $item['change_amount'] = $symbol.$item['change_amount'];
 | |
|             $item['logo'] = UrlServer::getFileUrl($item['logo']);
 | |
|         }
 | |
| 
 | |
|         return ['count'=>$lists['total'], 'lists'=>$lists['data']];
 | |
|     }
 | |
| 
 | |
| 
 | |
|     /**
 | |
|      * @notes 导出
 | |
|      * @param $where
 | |
|      * @return array|false
 | |
|      * @author 段誉
 | |
|      * @date 2022/4/24 11:59
 | |
|      */
 | |
|     public static function export($where)
 | |
|     {
 | |
|         try {
 | |
|             $lists = (new ShopAccountLog())->alias('SAL')
 | |
|                 ->field(['SAL.*', 'S.name,S.logo,S.type'])
 | |
|                 ->join('shop S', 'S.id = SAL.shop_id')
 | |
|                 ->where($where)
 | |
|                 ->order('create_time','desc')
 | |
|                 ->select()->toArray();
 | |
| 
 | |
|             foreach ($lists as &$item) {
 | |
|                 $item['type'] = ShopEnum::getShopTypeDesc($item['type']);
 | |
|                 $item['source_type'] = ShopAccountLog::getSourceType($item['source_type']);
 | |
|                 $symbol = $item['change_type'] === 1 ? '+' : '-';
 | |
|                 $item['change_amount'] = $symbol.$item['change_amount'];
 | |
|             }
 | |
| 
 | |
|             $excelFields = [
 | |
|                 'name' => '商家名称',
 | |
|                 'type' => '商家类型',
 | |
|                 'log_sn' => '明细流水号',
 | |
|                 'source_sn' => '来源单号',
 | |
|                 'source_type' => '明细类型',
 | |
|                 'change_amount' => '变动金额',
 | |
|                 'left_amount' => '剩余金额',
 | |
|                 'create_time' => '记录时间',
 | |
|             ];
 | |
| 
 | |
|             $export = new ExportExcelServer();
 | |
|             $export->setFileName('账户明细');
 | |
|             $export->setExportNumber(['log_sn', 'source_sn']);
 | |
|             $result = $export->createExcel($excelFields, $lists);
 | |
| 
 | |
|             return ['url' => $result];
 | |
| 
 | |
|         } catch (\Exception $e) {
 | |
|             self::$error = $e->getMessage();
 | |
|             return false;
 | |
|         }
 | |
|     }
 | |
| 
 | |
| } |