'售后单号', 'nickname' => '用户昵称', 'order_sn' => '订单编号', 'refund_type_desc' => '售后类型', 'refund_method_desc' => '售后方式', 'refund_total_amount' => '售后金额', 'sub_status_desc' => '售后状态', 'create_time' => '申请时间', ]; } /** * @notes 导出表名 * @return string * @author Tab * @date 2021/9/22 17:40 */ public function setFileName(): string { return '售后列表'; } /** * @notes 统计信息 * @return mixed|void * @author Tab * @date 2021/8/18 19:24 */ public function extend() { $all = AfterSale::count(); $ing = AfterSale::where('status', AfterSaleEnum::STATUS_ING)->count(); $success = AfterSale::where('status', AfterSaleEnum::STATUS_SUCCESS)->count(); $fail = AfterSale::where('status', AfterSaleEnum::STATUS_FAIL)->count(); return [ 'all' => $all, 'ing' => $ing, 'success' => $success, 'fail' => $fail ]; } /** * @notes 设置搜索 * @author Tab * @date 2021/8/2 16:25 */ public function setSearch() { // 售后编号 if(isset($this->params['after_sale_sn']) && $this->params['after_sale_sn']) { $this->searchWhere[] = ['as.sn', 'like', '%'.$this->params['after_sale_sn'].'%']; } // 订单编号 if(isset($this->params['order_sn']) && $this->params['order_sn']) { $this->searchWhere[] = ['o.sn', 'like', '%'.$this->params['order_sn'].'%']; } // 用户信息 if(isset($this->params['user_info']) && $this->params['user_info']) { $this->searchWhere[] = ['u.sn|u.nickname|u.mobile', 'like', '%'.$this->params['user_info'].'%']; } // 售后类型 if(isset($this->params['refund_type']) && $this->params['refund_type']) { $this->searchWhere[] = ['as.refund_type', '=', $this->params['refund_type']]; } // 售后方式 if(isset($this->params['refund_method']) && $this->params['refund_method']) { $this->searchWhere[] = ['as.refund_method', '=', $this->params['refund_method']]; } // 申请时间 if(isset($this->params['start_time']) && $this->params['start_time']) { $this->searchWhere[] = ['as.create_time', '>=', strtotime($this->params['start_time'])]; } if(isset($this->params['end_time']) && $this->params['end_time']) { $this->searchWhere[] = ['as.create_time', '<=', strtotime($this->params['end_time'])]; } // 售后主状态 if(isset($this->params['status']) && $this->params['status']) { $this->searchWhere[] = ['as.status', '=', $this->params['status']]; } // 快递单号 if(isset($this->params['invoice_no']) && $this->params['invoice_no']) { $this->searchWhere[] = ['as.invoice_no', 'like', '%'.$this->params['invoice_no'].'%']; } } /** * @notes 售后列表 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author Tab * @date 2021/8/2 16:13 */ public function lists() : array { // 设置搜索 $this->setSearch(); $field = 'as.id,as.user_id,as.order_id,as.sn,as.refund_type,as.refund_method,as.refund_total_amount,as.status,as.sub_status,as.create_time'; $field .= ',as.refund_type as refund_type_desc,as.refund_method as refund_method_desc,as.status as status_desc,as.sub_status as sub_status_desc'; $field .= ',o.sn as order_sn'; $field .= ',u.nickname,u.avatar,u.sn as user_sn'; $lists = AfterSale::with(['after_sale_goods']) ->alias('as') ->leftJoin('order o', 'o.id = as.order_id') ->leftJoin('user u', 'u.id = as.user_id') ->field($field) ->where($this->searchWhere) ->withSearch(['goods_info'], $this->params) ->limit($this->limitOffset, $this->limitLength) ->order('id', 'desc') ->select() ->toArray(); foreach($lists as &$item) { $item['avatar'] = FileService::getFileUrl($item['avatar']); } return $lists; } /** * @notes 售后记录数 * @return int * @author Tab * @date 2021/8/2 15:44 */ public function count() : int { // 设置搜索 $this->setSearch(); $count = AfterSale::alias('as') ->leftJoin('order o', 'o.id = as.order_id') ->leftJoin('user u', 'u.id = as.user_id') ->where($this->searchWhere)->count(); return $count; } }