// +---------------------------------------------------------------------- namespace App\Services\Common; use App\Models\MeetingModel; use App\Models\MeetingRecordsModel; use App\Services\BaseService; use App\Services\RedisService; /** * 会议签到记录管理-服务类 * @author laravel开发员 * @since 2020/11/11 * @package App\Services\Common */ class MeetingRecordService extends BaseService { public static $instance = null; /** * 构造函数 * @author laravel开发员 * @since 2020/11/11 */ public function __construct() { $this->model = new MeetingRecordsModel(); } /** * 静态入口 */ 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]; $status = isset($params['status']) ? $params['status'] : 0; if ($status > 0) { $where['a.status'] = $status; } $userId = isset($params['user_id']) ? $params['user_id'] : 0; if ($userId > 0) { $where['a.user_id'] = $userId; } $meetingId = isset($params['meeting_id']) ? $params['meeting_id'] : 0; if ($meetingId > 0) { $where['a.meeting_id'] = $meetingId; } $query = $this->model->with(['member','meeting'])->from('meetings_records 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('b.realname', 'like', "%{$keyword}%"); } }) ->select(['a.*']); $query->orderBy('a.id', 'desc'); $list = $query->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') : ''; } } return [ 'msg' => '操作成功', 'code' => 0, 'data' => isset($list['data']) ? $list['data'] : [], 'count' => isset($list['total']) ? $list['total'] : 0, ]; } public function status() { $id = request()->post('id',0); $status = request()->post('status',1); $mid = request()->post('mid',0); $money = request()->post('money',0); $this->model->where('id', $id)->update(['status'=> $status,'money'=>$money,'update_time'=>time()]); RedisService::keyDel("caches:meeting:info_{$mid}*"); return message(); // $ids = request()->post('ids'); // $fee = $status==1 && $mid?MeetingModel::where(['id'=>$mid])->value('fee'):0; // if($ids){ // $this->model->whereIn('id', $ids)->update(['status'=> $status,'money'=>$fee,'update_time'=>time()]); // foreach ($ids as $id){ // RedisService::keyDel("caches:meeting:info_{$mid}*"); // } // // return message(); // }else{ // $this->model->where('id', $id)->update(['status'=> $status,'money'=>$fee,'update_time'=>time()]); // RedisService::keyDel("caches:meeting:info_{$mid}*"); // return message(); // } } /** * 领取 * @return array */ public function claim() { $id = request()->post('id',0); $isClaim = request()->post('is_claim',1); $mid = request()->post('mid',0); $info= $this->model->where('id', $id)->first(); if(empty($info)){ return message('报名记录不存在',false); } if($info['is_sign']!=1 && $isClaim == 1){ return message('该用户未签到,请先签到',false); } $this->model->where('id', $id)->update(['is_claim'=> $isClaim,'update_time'=>time()]); RedisService::keyDel("caches:meeting:info_{$mid}*"); return message(); } public function delete() { $this->model->where(['mark'=>0])->where('update_time','<', time() - 600)->delete(); return parent::delete(); // TODO: Change the autogenerated stub } }