model = new Order(); $this->refund_model = new RefundOrder(); $this->order_goods_model = new OrderGoods(); // $this->model->coachBalanceArr($this->_uniacid); } /** * @author chenniang * @DataTime: 2021-07-12 00:26 * @功能说明:天数 */ public function dayText(){ $config_model = new Config(); $config = $config_model->dataInfo(['uniacid'=>$this->_uniacid]); $start_time = strtotime(date('Y-m-d',time())); // $start_time = $start_time+$config['max_day']*86400; $i=0; while ($i<$config['max_day']){ $str = $start_time+$i*86400; $data[$i]['dat_str'] = $str; $data[$i]['dat_text'] = date('m-d',$str); $data[$i]['week'] = changeWeek(date('w',$str)); $i++; } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-07-09 14:41 * @功能说明:时间段 */ public function timeText(){ $input = $this->_param; $config_model = new Config(); $coach_model = new Coach(); $config = $config_model->dataInfo(['uniacid'=>$this->_uniacid]); $coach = $coach_model->dataInfo(['id'=>$input['coach_id']]); $end_time = strtotime($coach['end_time'])- strtotime(date("Y-m-d",time()))+strtotime(date("Y-m-d",$input['day'])); $start_time = strtotime($coach['start_time'])-strtotime(date("Y-m-d",time()))+strtotime(date("Y-m-d",$input['day'])); $i = 0; $data = []; $time = $start_time; while ($time<$end_time){ $time = $start_time+$config['time_unit']*$i*60; //时间戳 $data[$i]['time_str'] = $time; $data[$i]['time_text']= date('H:i',$time); $where = []; $where[] = ['coach_id','=',$input['coach_id']]; $where[] = ['start_time','<=',$time]; $where[] = ['end_time','>=',$time]; $where[] = ['pay_type','not in',[-1]]; $order = $this->model->dataInfo($where); if(!empty($order)){ $data[$i]['status'] = 0; }else{ $data[$i]['status'] = 1; } $data[$i]['status'] = $timesuccess($data); } /** * @author chenniang * @DataTime: 2021-03-19 15:48 * @功能说明:个人中心 */ public function orderList(){ //超时自动取消订单 $this->model->autoCancelOrder($this->_uniacid,$this->getUserId()); $input = $this->_param; $dis[] = ['a.uniacid','=',$this->_uniacid]; $dis[] = ['a.user_id','=',$this->getUserId()]; $dis[] = ['a.is_show','=',1]; $where = []; if(!empty($input['name'])){ $where[] = ['b.goods_name','like','%'.$input['name'].'%']; $where[] = ['a.order_code','like','%'.$input['name'].'%']; } if(!empty($input['pay_type'])){ $dis[] = ['a.pay_type','=',$input['pay_type']]; } $data = $this->model->indexDataList($dis,$where); if(!empty($data['data'])){ foreach ($data['data'] as &$v){ $can_refund_num = is_array($v['order_goods'])?array_sum(array_column($v['order_goods'],'can_refund_num')):0; //是否可以申请退款 // if(($v['pay_type']==7&&$v['can_tx_date']>time()&&$can_refund_num>0)||(in_array($v['pay_type'],[2,3,4,5,6])&&$can_refund_num>0)){ if((in_array($v['pay_type'],[2])&&$can_refund_num>0)){ $v['can_refund'] = 1; }else{ $v['can_refund'] = 0; } } } //查询待支付订单待条数 $dis = [ 'pay_type' => 1, 'user_id' => $this->getUserId() ]; $data['no_pay_count'] = $this->model->where($dis)->count(); return $this->success($data); } /** * @author chenniang * @DataTime: 2021-03-15 14:58 * @功能说明:订单详情 */ public function orderInfo(){ $input = $this->_param; $dis = [ 'id' => $input['id'] ]; $data = $this->model->dataInfo($dis); // $data['order_end_time'] -= time(); $data['create_time'] = date('Y-m-d H:i:s',$data['create_time']); $data['pay_time'] = date('Y-m-d H:i:s',$data['pay_time']); $data['hx_time'] = date('Y-m-d H:i:s',$data['hx_time']); //剩余可申请退款数量 $can_refund_num = array_sum(array_column($data['order_goods'],'can_refund_num')); //是否可以申请退款 if((in_array($data['pay_type'],[2])&&$can_refund_num>0)){ $data['can_refund'] = 1; }else{ $data['can_refund'] = 0; } $data['over_time'] -= time(); $data['over_time'] = $data['over_time']>0?$data['over_time']:0; return $this->success($data); } /** * @author chenniang * @DataTime: 2021-03-19 17:29 * @功能说明:退款订单详情 * */ public function refundOrderList(){ $input = $this->_param; $dis[] = ['a.uniacid','=',$this->_uniacid]; $dis[] = ['a.user_id','=',$this->getUserId()]; $where = []; if(!empty($input['name'])){ $where[] = ['b.goods_name','like','%'.$input['name'].'%']; $where[] = ['a.order_code','like','%'.$input['name'].'%']; } if(!empty($input['status'])){ $dis[] = ['a.status','=',$input['status']]; }else{ $dis[] = ['a.status','>',-1]; } $data = $this->refund_model->indexDataList($dis,$where); //待接单数量 $data['ing_count'] = $this->refund_model->where(['user_id'=>$this->getUserId(),'status'=>1])->count(); return $this->success($data); } /** * @author chenniang * @DataTime: 2021-03-19 17:50 * @功能说明:退款订单详情 */ public function refundOrderInfo(){ $input = $this->_param; $dis = [ 'id' => $input['id'] ]; $data = $this->refund_model->dataInfo($dis); $data['create_time'] = date('Y-m-d H:i:s',$data['create_time']); $data['refund_time'] = date('Y-m-d H:i:s',$data['refund_time']); return $this->success($data); } /** * @author chenniang * @DataTime: 2021-03-22 09:43 * @功能说明:下单页面详情 */ public function payOrderInfo(){ $input = $this->_param; $coupon = !empty($input['coupon_id'])?$input['coupon_id']:0; $coupon_modle = new Coupon(); $coupon_record_model = new CouponRecord(); $order_info = $this->model->payOrderInfo($this->getUserId(),$coupon); //可用优惠券数量 $canUseCoupon = $coupon_modle->canUseCoupon($this->getUserId()); $order_info['canUseCoupon'] = $coupon_record_model->where('id','in',$canUseCoupon)->sum('num'); // $car_model = new CarPrice(); // // $dis = [ // // 'uniacid' => $this->_uniacid // ]; // // $order_info['car_config'] = $car_model->dataInfo($dis); return $this->success($order_info); } /** * @author chenniang * @DataTime: 2021-07-10 00:40 * @功能说明:可用的优惠券列表 */ public function couponList(){ $input = $this->_param; $coupon_model = new Coupon(); $coupon_record_model = new CouponRecord(); $coupon_id = $coupon_model->canUseCoupon($this->getUserId()); $data = $coupon_record_model->where('id','in',$coupon_id)->order('id desc')->paginate(10)->toArray(); if(!empty($data['data'])){ foreach ($data['data'] as &$v){ $v['start_time'] = date('Y.m.d H:i',$v['start_time']).' - '.date('Y.m.d H:i',$v['end_time']); } } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-03-22 09:53 * @功能说明:下单 */ public function payOrder(){ $input = $this->_input; $coupon_record_model = new CouponRecord(); $cap_dis[] = ['user_id','=',$this->getUserId()]; $coupon_id = !empty($input['coupon_id'])?$input['coupon_id']:0; $order_info = $this->model->payOrderInfo($this->getUserId(),$coupon_id); $config_model = new Config(); $config = $config_model->dataInfo(['uniacid'=>$this->_uniacid]); Db::startTrans(); $member_config_model = new \app\member\model\Config(); $member_config = $member_config_model->configInfo(['uniacid'=>$this->_uniacid]); $order_insert = [ 'uniacid' => $this->_uniacid, 'over_time' => time()+$config['over_time']*60, 'order_code' => orderCode(), 'user_id' => $this->getUserId(), 'pay_price' => $order_info['pay_price'], 'init_price' => $order_info['init_goods_price'], 'balance' => !empty($input['is_balance'])?$order_info['pay_price']:0, 'discount' => $order_info['discount'], 'pay_type' => 1, 'mobile' => $input['mobile'], 'total_circle'=> $order_info['total_circle'], //付费获得的积分 'get_integral'=> empty($input['is_balance'])?floor($order_info['pay_price']*$member_config['integral_cash']):0, //备注 // 'text' => $input['text'], // 'can_tx_time' => $config['can_tx_time'], ]; //下单 $res = $this->model->dataAdd($order_insert); if($res!=1){ Db::rollback(); $this->errorMsg('下单失败'); } $order_id = $this->model->getLastInsID(); //使用优惠券 if(!empty($coupon_id)){ $coupon_id = $coupon_record_model->couponUse($coupon_id,$order_id); $this->model->dataUpdate(['id'=>$order_id],['coupon_id'=>$coupon_id]); } //添加到子订单 $res = $this->order_goods_model->orderGoodsAdd($order_info['order_goods'],$order_id,$this->getUserId()); if(!empty($res['code'])){ Db::rollback(); $code = $res['code']==50001?50001:400; $this->errorMsg($res['msg'],$code); } Db::commit(); //如果是0元 if($order_insert['pay_price']<=0){ $this->model->orderResult($order_insert['order_code'],$order_insert['order_code']); return $this->success(true); } //余额支付 if(!empty($input['is_balance'])){ $user_model = new User(); $user_balance= $user_model->where(['id'=>$this->getUserId()])->value('balance'); if($user_balance<$order_insert['pay_price']){ $this->errorMsg('余额不足'); } $this->model->orderResult($order_insert['order_code'],$order_insert['order_code']); return $this->success(true); } //微信支付 $pay_controller = new IndexWxPay($this->app); //支付 $jsApiParameters= $pay_controller->createWeixinPay($this->payConfig(),$this->getUserInfo()['openid'],$this->_uniacid,"anmo",['type' => 'Massage' , 'out_trade_no' => $order_insert['order_code']],$order_insert['pay_price']); $arr['pay_list']= $jsApiParameters; return $this->success($arr); } /** * @author chenniang * @DataTime: 2021-03-25 15:59 * @功能说明:重新支付 */ public function rePayOrder(){ $input = $this->_input; $order_insert = $this->model->dataInfo(['id'=>$input['id']]); if($order_insert['pay_type']!=1){ $this->errorMsg('订单状态错误'); } //余额支付 if(!empty($order_insert['balance'])){ $user_model = new User(); $user_balance= $user_model->where(['id'=>$this->getUserId()])->value('balance'); if($user_balance<$order_insert['pay_price']){ $this->errorMsg('余额不足'); } $this->model->orderResult($order_insert['order_code'],$order_insert['order_code']); return $this->success(true); } //微信支付 $pay_controller = new IndexWxPay($this->app); //支付 $jsApiParameters= $pay_controller->createWeixinPay($this->payConfig(),$this->getUserInfo()['openid'],$this->_uniacid,"anmo",['type' => 'Massage' , 'out_trade_no' => $order_insert['order_code']],$order_insert['pay_price']); $arr['pay_list']= $jsApiParameters; return $this->success($arr); } /** * @author chenniang * @DataTime: 2021-09-27 13:44 * @功能说明:核销订单 */ public function hxOrder(){ $input = $this->_input; $record = $this->model->dataInfo(['id'=>$input['order_id']]); if($record['pay_type']!=3){ $this->errorMsg('订单状态错误'); } $user_model = new User(); $user_role = $user_model->where(['id'=>$this->getUserId()])->value('role'); if($user_role!=1){ $this->errorMsg('管理员才有核销权限'); } $refund_model = new RefundOrder(); //判断有无申请中的退款订单 $refund_order = $refund_model->dataInfo(['order_id'=>$record['id'],'status'=>1]); if(!empty($refund_order)){ $this->errorMsg('该订单正在申请退款,请先处理再核销'); } Db::startTrans(); $res = $this->model->hxOrder($record,$this->getUserId()); if($res==0){ Db::rollback(); $this->errorMsg('核销失败'); } $game_model = new CarGame(); //清空当前使用卡 $game_model->dataUpdate(['now_card_id'=>$input['card_id']],['now_card_id'=>'']); //判断类型 专业组还是普通 $car_type_model = new CarType(); $type = $car_type_model->getType($record['order_goods'][0]['car_type_id'],$record['user_id']); $insert = [ 'uniacid' => $this->_uniacid, 'user_id' => $record['user_id'], 'record_id' => $record['id'], 'card_id' => $input['card_id'], 'now_card_id' => $input['card_id'], 'type' => 2, 'major' => $type, 'car_type_id' => $record['order_goods'][0]['car_type_id'], ]; //添加比赛记录标 准备开始比赛 $res = $game_model->dataAdd($insert); if($res==0){ Db::rollback(); $this->errorMsg('核销失败'); } //查询是否正在排队 $line_model = new CarLineUp(); $dis = [ 'order_id' => $record['id'], 'type' => 1 ]; $line_model->dataUpdate($dis,['status'=>2]); //如果有需要到账的积分 if(!empty($record['get_integral'])&&$record['have_tx']==0){ $integral_model = new \app\member\model\Integral(); $integral_model->integralUserAdd($record['user_id'],$record['get_integral'],$record['uniacid'],2,9,$record['id']); } Db::commit(); return $this->success($res); } /** * @author chenniang * @DataTime: 2021-03-25 16:38 * @功能说明:取消订单 */ public function cancelOrder(){ $input = $this->_input; $order_insert = $this->model->dataInfo(['id'=>$input['id']]); if($order_insert['pay_type']!=1){ $this->errorMsg('订单状态错误'); } $res = $this->model->cancelOrder($order_insert); if(!empty($res['code'])){ $this->errorMsg($res['msg']); } return $this->success($res); } /** * @author chenniang * @DataTime: 2021-03-26 11:39 * @功能说明:申请退款 */ public function applyOrder(){ $input = $this->_input; $order = $this->model->dataInfo(['id'=>$input['order_id']]); if(empty($order)){ $this->errorMsg('订单未找到'); } if($order['pay_type']<2){ $this->errorMsg('订单状态错误'); } if(empty($input['list'])){ $this->errorMsg('请选择商品'); } //申请退款 $res = $this->refund_model->applyRefund($order,$input); if(!empty($res['code'])){ $this->errorMsg($res['msg']); } return $this->success($res); } /** * @author chenniang * @DataTime: 2021-03-26 15:55 * @功能说明:取消退款 */ public function cancelRefundOrder(){ $input = $this->_input; $order = $this->refund_model->dataInfo(['id'=>$input['id']]); if($order['status']!=1){ $this->errorMsg('订单已经审核'); } Db::startTrans(); $res = $this->refund_model->dataUpdate(['id'=>$input['id']],['status'=>-1,'cancel_time'=>time()]); if($res!=1){ Db::rollback(); $this->errorMsg('取消失败'); } if(!empty($order['order_goods'])){ $order_goods_model = new OrderGoods(); foreach ($order['order_goods'] as $v){ if(!empty($v['order_goods_id'])){ $num = $v['num']; $res = $order_goods_model->where(['id'=>$v['order_goods_id']])->update(['can_refund_num'=>Db::Raw("can_refund_num+$num")]); if($res!=1){ Db::rollback(); $this->errorMsg('取消失败'); } } } } Db::commit(); return $this->success($res); } /** * @author chenniang * @DataTime: 2021-04-07 15:30 * @功能说明:刷新订单二维码 */ public function refreshQr(){ $input = $this->_input; // $qr_insert = [ // // 'id' => $input['id'] // ]; $user_model = new User(); //获取二维码 $qr = $user_model->orderQr($input,$this->_uniacid); if(!empty($qr)){ $this->model->dataUpdate(['id'=>$input['id']],['qr'=>$qr]); } return $this->success($qr); } /** * @author chenniang * @DataTime: 2021-07-13 00:18 * @功能说明:评价标签 */ public function lableList(){ $dis = [ 'uniacid' => $this->_uniacid, 'status' => 1 ]; $lable_model = new Lable(); $res = $lable_model->where($dis)->order('top desc,id desc')->select()->toArray(); return $this->success($res); } /** * @author chenniang * @DataTime: 2021-07-12 14:01 * @功能说明:添加评价 */ public function addComment(){ $input = $this->_input; $order = $this->model->dataInfo(['id'=>$input['order_id']]); if($order['is_comment']==1){ $this->errorMsg('你已经评价过了'); } $insert = [ 'uniacid' => $this->_uniacid, 'user_id' => $this->getUserId(), 'order_id'=> $input['order_id'], 'star' => $input['star'], 'text' => $input['text'], 'coach_id'=> $order['coach_id'], ]; Db::startTrans(); $comment_model = new Comment(); $coach_model = new Coach(); $comment_lable_model = new CommentLable(); $lable_model = new Lable(); $res = $comment_model->dataAdd($insert); if($res==0){ Db::rollback(); $this->errorMsg('评价失败'); } $comment_id = $comment_model->getLastInsID(); if(!empty($input['lable'])){ foreach ($input['lable'] as $value){ $title = $lable_model->where(['id'=>$value])->value('title'); $insert = [ 'uniacid' => $this->_uniacid, 'comment_id' => $comment_id, 'lable_id' => $value, 'lable_title'=> $title, ]; $comment_lable_model->dataAdd($insert); } } $all_count = $comment_model->where(['coach_id'=>$order['coach_id']])->count(); $all_star = $comment_model->where(['coach_id'=>$order['coach_id']])->sum('star'); $now_star = round($all_star/$all_count,1); $now_star = $now_star>5?5:$now_star; $coach_model->dataUpdate(['id'=>$order['coach_id']],['star'=>$now_star]); $res = $this->model->dataUpdate(['id'=>$order['id']],['is_comment'=>1]); if($res==0){ Db::rollback(); $this->errorMsg('评价失败'); } Db::commit(); return $this->success($res); } /** * @author chenniang * @DataTime: 2021-07-16 18:35 * @功能说明:删除订单 */ public function delOrder(){ $input = $this->_input; $order = $this->model->dataInfo(['id'=>$input['id']]); if($order['pay_type']!=-1){ $this->errorMsg('只有取消的订单才能删除'); } $res = $this->model->dataUpdate(['id'=>$input['id']],['is_show'=>0]); return $this->success($res); } }