auth->id; $list = UniversityEventModel::with([ 'apply' => function ($query) use ($user_id) { $query->field('id,event_id,user_id')->where('user_id', $user_id)->where('status', 1); } ]) ->field('id,name,price,image,start_apply_time,end_apply_time,start_time,address') ->where('status', 1) ->order('id desc') ->autopage() ->select(); $list = json_decode(json_encode($list),true); foreach ($list as $k => $v) { $list[$k]['start_apply_time'] = date('Y-m-d H:i', $v['start_apply_time']); $list[$k]['end_apply_time'] = date('Y-m-d H:i', $v['end_apply_time']); $list[$k]['start_time'] = date('Y-m-d H:i', $v['start_time']); $list[$k]['apply'] = !empty($v['apply']) ? 1 : 0; } return $this->success('success', $list); } // 活动详情 public function info() { $params = $this->request->param(); if (empty($params['event_id'])) { return $this->error('参数缺失'); } $user_id = $this->auth->id; $info = UniversityEventModel::with([ 'apply' => function ($query) use ($user_id) { $query->field('id,event_id,user_id')->where('user_id', $user_id)->where('status', 1); } ]) ->field('id,name,price,image,images,start_apply_time,end_apply_time,start_time,address,content') ->where('id', $params['event_id']) ->where('status', 1) ->order('id desc') ->find(); $info['start_apply_time'] = date('Y-m-d', $info['start_apply_time']); $info['end_apply_time'] = date('Y-m-d', $info['end_apply_time']); $info['start_time'] = date('Y-m-d', $info['start_time']); $info['apply'] = !empty($info['apply']) ? 1 : 0; return $this->success('success', $info); } public function apply() { $params = $this->request->param(); if (empty($params['event_id'])) { return $this->error('参数缺失'); } // if (empty($params['pay_type']) || empty($params['platform'])) { // return $this->error('请选择支付方式'); // } if (empty($params['apply_list'])) { return $this->error('请提交报名信息'); } foreach ($params['apply_list'] as $k => $v) { if (empty($v['name'])) { return $this->error('报名信息姓名不能为空'); } if (empty($v['phone'])) { return $this->error('报名信息手机号不能为空'); } if (!isset($v['sex']) && $v['sex'] !== 0) { return $this->error('报名信息性别不能为空'); } if (empty($v['age'])) { return $this->error('报名信息年龄不能为空'); } } $user_id = $this->auth->id; $info = UniversityEventModel::with([ 'apply' => function ($query) use ($user_id) { $query->field('id,event_id,user_id')->where('user_id', $user_id)->where('status', 1); } ]) ->field('id,name,price,image,images,start_apply_time,end_apply_time,start_time,address,content') ->where('id', $params['event_id']) ->where('status', 1) ->order('id desc') ->find(); if (!$info) { return $this->error('活动不存在'); } if (!empty($info['apply'])) { return $this->error('您已报过名了'); } $nowTime = time(); if ($info['start_apply_time'] > $nowTime) { return $this->error('报名未开始'); } if ($info['end_apply_time'] < $nowTime) { return $this->error('报名已结束'); } // 开始报名 $num = count($params['apply_list']); $data = [ 'user_id' => $user_id, 'event_id' => $params['event_id'], 'order_no' => createUniqueNo('E', $user_id), 'pay_amount' => bcmul($info['price'], $num, 2), 'status' => 1, 'create_time' => $nowTime ]; Db::startTrans(); $apply_id = Db::name('university_event_apply')->insertGetId($data); if (!$apply_id) { Db::rollback(); return $this->error('订单创建失败'); } $apply_info = []; foreach ($params['apply_list'] as $k => $v) { $apply_info[] = [ 'user_id' => $user_id, 'event_id' => $params['event_id'], 'order_id' => $apply_id, 'order_no' => $data['order_no'], 'name' => $v['name'], 'phone' => $v['phone'], 'sex' => $v['sex'], 'age' => $v['age'], ]; } if (!Db::name('university_event_apply_info')->insertAll($apply_info)) { Db::rollback(); return $this->error('订单创建失败'); } Db::commit(); return $this->success('报名成功'); // // 创建支付订单 // $remark = '老年大学活动报名'; // $orderData = [ // 'user_id' => $user_id, // 'out_trade_no' => $data['order_no'], // 'order_amount' => $data['pay_amount'], // 'pay_type' => $params['pay_type'], // 'platform' => $params['platform'], // 'table_name' => 'university_event_apply', // 'table_id' => $apply_id, // 'createtime' => time(), // 'args' => json_encode([ // 'table_id' => $apply_id, // 'remark' => $remark // ], JSON_UNESCAPED_UNICODE), // ]; // if (!Db::name('pay_order')->insert($orderData)) { // return $this->error('订单创建失败'); // } // // // 拉起支付 余额支付 // if ($params['pay_type'] == 'wallet') { // Db::startTrans(); // //钱包更新 // $walletService = new Wallet(); // if (!$walletService->change($user_id, -$orderData['order_amount'], 'money', 20, $remark, $orderData['table_name'], $orderData['table_id'])) { // Db::rollback(); // return $this->error($walletService->getMessage()); // } // // 支付成功,更改支付金额 // [$res,$msg] = PayOrderModel::university_event($orderData['out_trade_no']); // if (!$res){ // Db::rollback(); // return $this->error($msg); // } // Db::commit(); // return $this->success('支付成功'); // } // // // 第三方支付下单 // $params = [ // 'type' => $orderData['pay_type'], // 'orderid' => $orderData['out_trade_no'], // 'title' => $remark, // 'amount' => $orderData['order_amount'], // 'method' => $orderData['platform'], // 'notifyurl' => CurlUtil::getHttp("/api/notify/university_event_{$params['pay_type']}"), // 'returnurl' => '', // ]; // // 如果是小程序则需要添加 openid // if ($params['pay_type'] == 'wechat' && $params['platform'] == 'miniapp') { // $params['openid'] = $this->auth->mini_openid; // } // $res = Service::submitOrder($params); // if ($params['pay_type'] == 'wechat') { // $this->success('success', json_decode($res, true)); // } else { // $this->success('success', $res); // } } public function applyList() { $user_id = $this->auth->id; $query = UniversityEventApplyModel::with([ 'events' => function ($query) { $query->field(['id','name','image','start_time']); } ])->where('user_id',$user_id)->where('status',1)->order('id','desc')->autopage()->select(); foreach ($query as $key=>$val){ $query[$key]['events']['start_time'] = date('Y-m-d H:i', $val['events']['start_time']); } $this->success('success', $query); } }