154 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			154 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace app\admin\logic\team;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use app\common\basics\Logic;
							 | 
						||
| 
								 | 
							
								use app\common\enum\OrderEnum;
							 | 
						||
| 
								 | 
							
								use app\common\enum\TeamEnum;
							 | 
						||
| 
								 | 
							
								use app\common\model\order\Order;
							 | 
						||
| 
								 | 
							
								use app\common\model\team\TeamFound;
							 | 
						||
| 
								 | 
							
								use app\common\model\team\TeamJoin;
							 | 
						||
| 
								 | 
							
								use app\common\server\FileServer;
							 | 
						||
| 
								 | 
							
								use app\common\server\UrlServer;
							 | 
						||
| 
								 | 
							
								use Exception;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class FoundLogic extends Logic
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @Notes: 开团列表
							 | 
						||
| 
								 | 
							
								     * @Author: 张无忌
							 | 
						||
| 
								 | 
							
								     * @param $get
							 | 
						||
| 
								 | 
							
								     * @return array|bool
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function lists($get)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $where = [];
							 | 
						||
| 
								 | 
							
								            if (isset($get['type']) and is_numeric($get['type']) and $get['type'] != 100) {
							 | 
						||
| 
								 | 
							
								                $where[] = ['status', '=', (int)$get['type']];
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (!empty($get['team_sn']) and $get['team_sn']) {
							 | 
						||
| 
								 | 
							
								                $where[] = ['team_sn', 'like', '%'.$get['team_sn'].'%'];
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (!empty($get['goods']) and $get['goods']) {
							 | 
						||
| 
								 | 
							
								                $where[] = ['goods_snap->name', 'like', '%'.$get['goods'].'%'];
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (!empty($get['datetime']) and $get['datetime']) {
							 | 
						||
| 
								 | 
							
								                list($start, $end) = explode(' - ', $get['datetime']);
							 | 
						||
| 
								 | 
							
								                $where[] = ['kaituan_time', '>=', strtotime($start.' 00:00:00')];
							 | 
						||
| 
								 | 
							
								                $where[] = ['kaituan_time', '<=', strtotime($end.' 23:59:59')];
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            $model = new TeamFound();
							 | 
						||
| 
								 | 
							
								            $lists = $model->alias('TF')->field(['TF.*,U.nickname,U.sn,U.avatar'])
							 | 
						||
| 
								 | 
							
								                ->join('user U', 'U.id = TF.user_id')
							 | 
						||
| 
								 | 
							
								                ->order('id desc')
							 | 
						||
| 
								 | 
							
								                ->where($where)
							 | 
						||
| 
								 | 
							
								                ->paginate([
							 | 
						||
| 
								 | 
							
								                    'page'      => $get['page'] ?? 1,
							 | 
						||
| 
								 | 
							
								                    'list_rows' => $get['limit'] ?? 20,
							 | 
						||
| 
								 | 
							
								                    'var_page'  => 'page'
							 | 
						||
| 
								 | 
							
								                ])->toArray();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            foreach ($lists['data'] as &$item) {
							 | 
						||
| 
								 | 
							
								                $item['peopleJoin'] = $item['people'] . '/' . $item['join'];
							 | 
						||
| 
								 | 
							
								                $item['kaituan_time'] = date('Y-m-d H:i:s', $item['kaituan_time']);
							 | 
						||
| 
								 | 
							
								                $item['invalid_time'] = date('Y-m-d H:i:s', $item['invalid_time']);
							 | 
						||
| 
								 | 
							
								                $item['goods_snap']   = json_decode($item['goods_snap'], true);
							 | 
						||
| 
								 | 
							
								                $item['status_text'] = TeamEnum::getStatusDesc($item['status']);
							 | 
						||
| 
								 | 
							
								                $item['avatar'] = UrlServer::getFileUrl($item['avatar']);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            return ['count'=>$lists['total'], 'lists'=>$lists['data']];
							 | 
						||
| 
								 | 
							
								        } catch (Exception $e) {
							 | 
						||
| 
								 | 
							
								            static::$error = $e->getMessage();
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @Notes: 数据统计
							 | 
						||
| 
								 | 
							
								     * @Author: 张无忌
							 | 
						||
| 
								 | 
							
								     * @return mixed
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function statistics()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $model = new TeamFound();
							 | 
						||
| 
								 | 
							
								        $detail['total']       = $model->count();
							 | 
						||
| 
								 | 
							
								        $detail['stayStatus']   = $model->where(['status'=>0])->count();
							 | 
						||
| 
								 | 
							
								        $detail['successStatus']  = $model->where(['status'=>1])->count();
							 | 
						||
| 
								 | 
							
								        $detail['failStatus'] = $model->where(['status'=>2])->count();
							 | 
						||
| 
								 | 
							
								        return $detail;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @Notes: 拼团详细
							 | 
						||
| 
								 | 
							
								     * @Author: 张无忌
							 | 
						||
| 
								 | 
							
								     * @param $id
							 | 
						||
| 
								 | 
							
								     * @return array
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function detail($id)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $teamFound = (new TeamFound())->alias('TF')
							 | 
						||
| 
								 | 
							
								            ->field(['TF.*,U.sn,U.nickname,U.mobile'])
							 | 
						||
| 
								 | 
							
								            ->join('user U', 'U.id = TF.user_id')
							 | 
						||
| 
								 | 
							
								            ->where('TF.id', '=', intval($id))
							 | 
						||
| 
								 | 
							
								            ->findOrEmpty()->toArray();
							 | 
						||
| 
								 | 
							
								        $teamFound['kaituan_time'] = date('Y-m-d H:i:s', $teamFound['kaituan_time']);
							 | 
						||
| 
								 | 
							
								        $teamFound['invalid_time'] = date('Y-m-d H:i:s', $teamFound['invalid_time']);
							 | 
						||
| 
								 | 
							
								        $teamFound['team_end_time'] = date('Y-m-d H:i:s', $teamFound['team_end_time']);
							 | 
						||
| 
								 | 
							
								        $teamFound['status_text'] = TeamEnum::getStatusDesc($teamFound['status']);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return ['teamFound'=>$teamFound];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @Notes: 参团列表
							 | 
						||
| 
								 | 
							
								     * @Author: 张无忌
							 | 
						||
| 
								 | 
							
								     * @param $get
							 | 
						||
| 
								 | 
							
								     * @return array|bool
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function join($get)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $where[] = ['TJ.team_id', '=', $get['team_id']];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            $model = new TeamJoin();
							 | 
						||
| 
								 | 
							
								            $lists = $model->alias('TJ')->field(['TJ.*,U.sn,U.nickname,U.avatar'])
							 | 
						||
| 
								 | 
							
								                ->join('user U', 'U.id = TJ.user_id')
							 | 
						||
| 
								 | 
							
								                ->where($where)
							 | 
						||
| 
								 | 
							
								                ->paginate([
							 | 
						||
| 
								 | 
							
								                    'page'      => $get['page'] ?? 1,
							 | 
						||
| 
								 | 
							
								                    'list_rows' => $get['limit'] ?? 20,
							 | 
						||
| 
								 | 
							
								                    'var_page'  => 'page'
							 | 
						||
| 
								 | 
							
								                ])->toArray();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            $orderModel = new Order();
							 | 
						||
| 
								 | 
							
								            foreach ($lists['data'] as &$item) {
							 | 
						||
| 
								 | 
							
								                $item['identity'] = $item['identity'] == 1 ? '团长' : '团员';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                $item['order'] = $orderModel->field([
							 | 
						||
| 
								 | 
							
								                        'id,order_sn,order_type,order_status,
							 | 
						||
| 
								 | 
							
								                        refund_status,pay_status,order_amount,create_time'
							 | 
						||
| 
								 | 
							
								                    ])
							 | 
						||
| 
								 | 
							
								                    ->with(['orderGoods'])
							 | 
						||
| 
								 | 
							
								                    ->findOrEmpty($item['order_id'])->toArray();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                $item['order']['order_status'] = OrderEnum::getOrderStatus($item['order']['order_status']);
							 | 
						||
| 
								 | 
							
								                $item['order']['pay_status'] = OrderEnum::getPayStatus($item['order']['pay_status']);
							 | 
						||
| 
								 | 
							
								                $item['order']['refund_status'] = OrderEnum::getRefundStatus($item['order']['refund_status']);
							 | 
						||
| 
								 | 
							
								                $item['avatar'] = UrlServer::getFileUrl($item['avatar']);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            return ['count'=>$lists['total'], 'lists'=>$lists['data']];
							 | 
						||
| 
								 | 
							
								        } catch (Exception $e) {
							 | 
						||
| 
								 | 
							
								            static::$error = $e->getMessage();
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |