|
@@ -149,58 +149,101 @@ class Packageorder extends Backend
|
|
|
$this->assign('package_id',$package_id);
|
|
|
return $this->view->fetch();
|
|
|
}
|
|
|
- $params = $this->request->post('row/a');
|
|
|
- if (empty($params)) {
|
|
|
- $this->error(__('Parameter %s can not be empty', ''));
|
|
|
+
|
|
|
+ //
|
|
|
+ $package_id = input('package_id');
|
|
|
+ $user_id = input('user_id');
|
|
|
+ $package_info = Db::name('lesson_package')->where('id',$package_id)->find();
|
|
|
+
|
|
|
+ //初次购买,主订单增加赠送小时数
|
|
|
+ if($package_info['sessions_first'] > 0){
|
|
|
+ $check_first = Db::name('package_order')->where('user_id',$user_id)->where('package_id',$package_id)->where('order_status',1)->where('is_gift',0)->find();
|
|
|
+ if(empty($check_first)){
|
|
|
+ $package_info['sessions'] = $package_info['sessions'] + $package_info['sessions_first'];
|
|
|
+ }
|
|
|
}
|
|
|
- $params = $this->preExcludeFields($params);
|
|
|
|
|
|
- if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
|
|
|
- $params[$this->dataLimitField] = $this->auth->id;
|
|
|
+ //套餐订单
|
|
|
+ $data = [
|
|
|
+ 'order_no' => createUniqueNo('P',$params['user_id']),
|
|
|
+ 'user_id' => $user_id,
|
|
|
+ 'type' => $package_info['type'],
|
|
|
+ 'package_id' => $package_id,
|
|
|
+ 'lesson_ids' => $package_info['lesson_ids'],
|
|
|
+ 'sessions' => $package_info['sessions'],
|
|
|
+ 'starttime' => 0,
|
|
|
+ 'days' => $package_info['days'],
|
|
|
+ 'endtime' => 0,
|
|
|
+ 'price' => $package_info['price'],
|
|
|
+ 'remain' => $package_info['sessions'],
|
|
|
+ 'order_status'=> 1, //默认支付了
|
|
|
+ 'use_status' => 0,//默认不激活
|
|
|
+ 'paytime' => time(),
|
|
|
+ 'pay_type' => 2, //线下支付
|
|
|
+ 'createtime' => time(),
|
|
|
+ 'updatetime' => time(),
|
|
|
+ 'is_gift' => 0,
|
|
|
+ 'remark' => input('remark',''),
|
|
|
+ ];
|
|
|
+
|
|
|
+ //如果有赠品,赠品订单
|
|
|
+ $gift = [];
|
|
|
+ if(!empty($package_info['gift_lesson_id']) && !empty($package_info['gift_sessions'])){
|
|
|
+ $gift = $data;
|
|
|
+
|
|
|
+ //订单号不换了
|
|
|
+ $gift['type'] = $package_info['gift_type'];
|
|
|
+ $gift['lesson_ids'] = $package_info['gift_lesson_id'];
|
|
|
+ $gift['sessions'] = $package_info['gift_sessions'];
|
|
|
+ $gift['remain'] = $package_info['gift_sessions'];
|
|
|
+ $gift['is_gift'] = 1;
|
|
|
}
|
|
|
- $result = false;
|
|
|
- Db::startTrans();
|
|
|
- try {
|
|
|
- //是否采用模型验证
|
|
|
- if ($this->modelValidate) {
|
|
|
- $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
|
|
|
- $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
|
|
|
- $this->model->validateFailException()->validate($validate);
|
|
|
- }
|
|
|
|
|
|
- //
|
|
|
- $package_id = $params['package_id'];
|
|
|
- $package_info = Db::name('lesson_package')->where('id',$package_id)->find();
|
|
|
- //套餐订单
|
|
|
- $data = [
|
|
|
- 'order_no' => createUniqueNo('P',$params['user_id']),
|
|
|
- 'lesson_ids' => $package_info['lesson_ids'],
|
|
|
- 'sessions' => $package_info['sessions'],
|
|
|
- 'starttime' => 0,
|
|
|
- 'days' => $package_info['days'],
|
|
|
- 'endtime' => 0,
|
|
|
- 'price' => $package_info['price'],
|
|
|
- 'remain' => $package_info['sessions'],
|
|
|
- 'order_status'=> 1,
|
|
|
- 'use_status' => 0,//默认不激活
|
|
|
- 'paytime' => time(),
|
|
|
- 'pay_type' => 2, //线下支付
|
|
|
- 'is_gift' => 0,
|
|
|
- ];
|
|
|
- $params = array_merge($params,$data);
|
|
|
- //
|
|
|
-
|
|
|
-
|
|
|
- $result = $this->model->allowField(true)->save($params);
|
|
|
- Db::commit();
|
|
|
- } catch (ValidateException|PDOException|Exception $e) {
|
|
|
+ //入库
|
|
|
+ Db::startTrans();
|
|
|
+ $order_id = Db::name('package_order')->insertGetId($data);
|
|
|
+ if(!$order_id){
|
|
|
Db::rollback();
|
|
|
- $this->error($e->getMessage());
|
|
|
+ $this->error('下单失败');
|
|
|
+ }
|
|
|
+
|
|
|
+ //礼物
|
|
|
+ if(!empty($gift)){
|
|
|
+ $gift_order_id = Db::name('package_order')->insertGetId($gift);
|
|
|
+ if(!$gift_order_id){
|
|
|
+ Db::rollback();
|
|
|
+ $this->error('下单失败');
|
|
|
+ }
|
|
|
}
|
|
|
- if ($result === false) {
|
|
|
- $this->error(__('No rows were inserted'));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //大于等于5小时的
|
|
|
+ if($data['remain'] >= 5){
|
|
|
+
|
|
|
+ //赠送积分
|
|
|
+ $wallet_rs = model('wallet')->lockChangeAccountRemain($user_id,'score',$data['price'],2,'线上购买配套','package_order',$order_id);
|
|
|
+ if($wallet_rs['status'] === false){
|
|
|
+ Db::rollback();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ //新会员变成旧会员
|
|
|
+ $oldstatus = Db::name('user')->where('id',$user_id)->value('oldstatus');
|
|
|
+ if($oldstatus == 0){
|
|
|
+ $user_rs = Db::name('user')->where('id',$user_id)->update(['oldstatus'=>1]);
|
|
|
+ if($user_rs === false){
|
|
|
+ Db::rollback();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
- $this->success();
|
|
|
+
|
|
|
+ Db::commit();
|
|
|
+
|
|
|
+
|
|
|
+ $this->success('下单成功');
|
|
|
}
|
|
|
|
|
|
public function selectpagenew()
|