<?php namespace App\Model; use Illuminate\Database\Eloquent\Model; use Request; use Excel; use DB; class UserSampleApplyModel extends Model { protected $connection = 'order'; protected $table = 'lie_user_sample_apply'; protected $primaryKey = 'apply_id'; public $timestamps = true; const CREATED_AT = 'create_time'; /** * @param \DateTime|int $value * @return false|int * @author dividez */ public function fromDateTime($value) { return strtotime(parent::fromDateTime($value)); } // 获取领取列表 public function lists($request, $export='') { $page = $request->input('page', 1); $limit = $request->input('limit', 10); $field = ['a.apply_id', 'a.user_id', 'a.account', 'a.order_id', 'order_sn', 'a.goods_id', 'a.goods_name', 'a.apply_num', 'a.create_time']; $map['account'] = $request->input('account', ''); // 用户账户 $map['goods_name'] = $request->input('goods_name', ''); // 商品名称 $map['order_sn'] = $request->input('order_sn', ''); // 订单号 $map['begin_time'] = $request->input('begin_time', '') ? strtotime($request->input('begin_time')) : ''; $map['end_time'] = $request->input('end_time', '') ? strtotime($request->input('end_time')) + 86399 : ''; $sub = UserSampleApplyModel::select(DB::raw('max(apply_id) as apply_id'))->groupBy('user_id'); $list = $this->from('lie_user_sample_apply as a') ->join(DB::raw("({$sub->toSql()}) as b"), function($join) { $join->on('a.apply_id', '=', 'b.apply_id'); })->where(function($query) use ($map) { // 客服名称 if ($map['account']) { $query->where('a.account', '=', $map['account']); } })->where(function($query) use ($map) { // 邮箱 if ($map['goods_name']) { $query->where('a.goods_name', 'like', $map['goods_name'].'%'); } })->where(function($query) use ($map) { // 客服名称 if ($map['order_sn']) { $query->where('a.order_sn', '=', $map['order_sn']); } })->where(function($query) use ($map) { // 创建时间 if(!empty($map['begin_time']) && !empty($map['end_time'])) { $query->whereBetween('a.create_time', [$map['begin_time'], $map['end_time']]); } else if(!empty($map['begin_time'])) { $query->where('a.create_time', '>=', $map['begin_time']); } else if(!empty($map['end_time'])) { $query->where('a.create_time', '<=', $map['end_time']); } }) ->select($field) ->orderBy('a.create_time', 'desc') ->orderBy('a.apply_id', 'asc'); if ($export) { $list = $list->get()->toArray(); $list = $this->handle($list); if (empty($list)) { echo '<script>alert("导出数据为空");history.go(-1);</script>';die; } return $list; } else { $list = $list->paginate($limit, ['*'], 'page', $page)->toArray(); $data = $this->handle($list['data']); return [0, '获取成功', $data, $list['total']]; } } // 处理数据 public function handle($data) { if (!$data) return false; foreach ($data as &$v) { $UserSampleInviteModel = new UserSampleInviteModel; $UserInfoModel = new UserInfoModel; $v['invite_count'] = $UserSampleInviteModel->getUserInviteCount($v['user_id']); $v['apply_num_total'] = $this->getSampleApplySum($v['user_id']); $v['apply_count'] = $UserInfoModel->getUserApplyCount($v['user_id']); } return $data; } // 获取指定用户申请的样片总数 public function getSampleApplySum($user_id) { return $this->where('user_id', $user_id)->sum('apply_num'); } // 获取领取记录 public function applyLog($request) { $user_id = $request->input('user_id'); $page = $request->input('page', 1); $limit = $request->input('limit', 10); $field = ['apply_id', 'user_id', 'account', 'order_id', 'order_sn', 'goods_id', 'goods_name', 'apply_num', 'create_time']; $list = $this->where('user_id', $user_id) ->select($field) ->orderBy('create_time', 'desc') ->orderBy('apply_id', 'asc') ->paginate($limit, ['*'], 'page', $page)->toArray(); return [0, '获取成功', $list['data'], $list['total']]; } }