auth->id; $list = UniversityCourseModel::with([ 'apply' => function ($query) use ($user_id) { $query->field('id,course_id,user_id')->where('user_id', $user_id)->where('status', 1); } ]) ->field('id,name,image') ->where('status', 1) ->order('weigh desc,id desc') ->autopage() ->select(); $list = json_decode(json_encode($list),true); foreach ($list as $k => $v) { $list[$k]['apply'] = !empty($v['apply']) ? 1 : 0; } return $this->success('success', $list); } // 活动详情 public function info() { $params = $this->request->param(); if (empty($params['course_id'])) { return $this->error('参数缺失'); } $user_id = $this->auth->id; $info = UniversityCourseModel::with([ 'chapter', 'apply' => function ($query) use ($user_id) { $query->field('id,course_id,user_id')->where('user_id', $user_id)->where('status', 1); } ]) ->field('id,name,image,images,content') ->where('id', $params['course_id']) ->where('status', 1) ->find(); $info['apply'] = !empty($info['apply']) ? 1 : 0; return $this->success('success', $info); } public function apply() { $params = $this->request->param(); if (empty($params['course_id'])) { return $this->error('参数缺失'); } if (empty($params['name'])) { return $this->error('报名信息姓名不能为空'); } if (empty($params['phone'])) { return $this->error('报名信息手机号不能为空'); } if (empty($params['coupon_id'])) { return $this->error('请选择抵扣券'); } $user_id = $this->auth->id; $info = UniversityCourseModel::with([ 'apply' => function ($query) use ($user_id) { $query->field('id,course_id,user_id')->where('user_id', $user_id)->where('status', 1); } ]) ->field('id,name,image,images,content') ->where('id', $params['course_id']) ->where('status', 1) ->find(); if (!$info) { return $this->error('课程不存在'); } if (!empty($info['apply'])) { return $this->error('您已报过名了'); } $coupon = Db::name('vip_coupon_user')->where('user_id',$user_id)->where('id',$params['coupon_id'])->find(); if (!$coupon || $coupon['status'] != 1){ return $this->error('优惠券不存在或已使用'); } if ($coupon['end_time'] < time()){ return $this->error('优惠券已过期'); } if ($coupon['use_frequency_day'] > 0 && $coupon['use_frequency_times'] > 0){ $use_frequency_times = Db::name('vip_coupon_user')->where('user_id',$user_id) ->where('coupon_id',$coupon['coupon_id']) ->where('status',2) ->whereBetween('use_time',[time() - (86400 * $coupon['use_frequency_day']),time()]) ->count(); if ($use_frequency_times >= $coupon['use_frequency_times']){ return $this->error("优惠券{$coupon['use_frequency_day']}天内仅可使用{$coupon['use_frequency_times']}次!"); } } $nowTime = time(); // 开始报名 $data = [ 'user_id' => $user_id, 'course_id' => $params['course_id'], 'order_no' => createUniqueNo('C', $user_id), 'name' => $params['name'], 'phone' => $params['phone'], 'status' => 1, 'create_time' => $nowTime ]; Db::startTrans(); if (!$apply_id = Db::name('university_course_apply')->insertGetId($data)) { Db::rollback(); return $this->error('订单创建失败'); } // 抵扣券 if (!Db::name('vip_coupon_user')->where('id',$coupon['id'])->update(['order_id'=>$apply_id,'status' => 2,'use_time' => time()])) { Db::rollback(); return $this->error('订单创建失败'); } Db::commit(); return $this->success('报名成功'); } public function applyList() { $user_id = $this->auth->id; $query = UniversityCourseApplyModel::with([ 'course' => function ($query) { $query->field(['id','name','image']); }, 'chapters' => function ($query) { $query->field(['id','course_id','name']); } ])->where('user_id',$user_id)->where('status',1)->order('id','desc')->autopage()->select(); $this->success('success', $query); } }