// +---------------------------------------------------------------------- namespace App\Services\Common; use App\Models\FreightPackageModel; use App\Models\OrderModel; use App\Models\TicketModel; use App\Services\BaseService; use App\Services\RedisService; use Illuminate\Support\Facades\DB; /** * 开票记录管理-服务类 * @author laravel开发员 * @since 2020/11/11 * Class TicketService * @package App\Services\Common */ class TicketService extends BaseService { // 静态对象 protected static $instance = null; /** * 构造函数 * @author laravel开发员 * @since 2020/11/11 */ public function __construct() { $this->model = new TicketModel(); } /** * 静态入口 */ public static function make() { if (!self::$instance) { self::$instance = new static(); } return self::$instance; } /** * 列表 * @param $params * @param int $pageSize * @return array */ public function getDataList($params, $pageSize = 15) { $where = ['a.mark' => 1]; $list = $this->model->from('ticket as a') ->leftJoin('member as b','b.id','=','a.user_id') ->where($where) ->where(function ($query) use($params){ $keyword = isset($params['keyword'])? $params['keyword'] : ''; if($keyword){ $query->where('b.nickname','like',"%{$keyword}%")->orWhere('b.mobile','like',"%{$keyword}%")->orWhere('a.company','like',"%{$keyword}%"); } }) ->where(function ($query) use($params){ $status = isset($params['status'])? $params['status'] : 0; if($status>0 && is_array($status)){ $query->whereIn('a.status', $status); }else if($status){ $query->where('a.status', $status); } $type = isset($params['type'])? $params['type'] : 0; if($type>0){ $query->where('a.type', $type); } }) ->select(['a.*','b.nickname','b.mobile']) ->orderBy('a.create_time','desc') ->orderBy('a.id','desc') ->paginate($pageSize > 0 ? $pageSize : 9999999); $list = $list? $list->toArray() :[]; if($list){ foreach($list['data'] as &$item){ $item['create_time'] = $item['create_time']? datetime($item['create_time'],'Y-m-d H.i.s') : ''; $item['ticket_img'] = $item['ticket_img']? get_image_url($item['ticket_img']) : ''; $item['username'] = $item['nickname']? $item['nickname'].($item['mobile']?'-'.$item['mobile']:'') : ''; $item['orders'] = $item['orders']? explode(',',$item['orders']) : []; } } return [ 'pageSize'=> $pageSize, 'total'=>isset($list['total'])? $list['total'] : 0, 'list'=> isset($list['data'])? $list['data'] : [] ]; } /** * 编辑 * @return array */ public function edit() { $data = request()->post(); $orders = []; if(isset($data['orders']) && $data['orders']){ $data['orders'] = implode(',', $data['orders']); $orders = $data['orders']; } $data['ticket_img'] = isset($data['ticket_img'])? $data['ticket_img'] : ''; if($data['ticket_img']){ $data['ticket_img'] = get_image_path($data['ticket_img']); } return parent::edit($data); } public function delete() { // 参数 $param = request()->all(); $ids = getter($param, "id"); if (empty($ids)) { return message("记录ID不能为空", false); } $ids = is_array($ids)? $ids : [$ids]; $result = parent::delete(); // TODO: Change the autogenerated stub $success = isset($result['success'])? $result['success'] : ''; $ids = array_filter($ids); if($success && $ids){ foreach ($ids as $id){ $orders = $this->model->where(['id'=> $id])->whereIn('status',[1,2])->value('orders'); $orders = $orders? explode(',', $orders) : []; if($orders){ // 更新订单开票状态 $updateData = ['ticket_status'=> 2,'update_time'=>time()]; OrderModel::where(['mark'=>1])->whereIn('order_no',$orders)->update($updateData); } } } return $result; } }