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