From 129fcb13f0cd9a81801dd1dbf000d99c4503fdf9 Mon Sep 17 00:00:00 2001 From: zeyan <258785420@qq.com> Date: Thu, 3 Jul 2025 13:22:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- niucloud/app/api/controller/pay/Pay.php | 6 +- niucloud/app/api/route/route.php | 2 + niucloud/app/listener/personnel/Student.php | 3 +- .../model/student_courses/StudentCourses.php | 8 +- niucloud/app/service/admin/pay/PayService.php | 66 +- uniapp/api/apiRoute.js | 7 +- .../components/custom-modal/custom-modal.vue | 70 ++ uniapp/components/custom-modal/example.vue | 234 ++++++ uniapp/pages.json | 7 +- uniapp/pages/market/clue/clue_table.vue | 120 ++- uniapp/pages/market/clue/order_list.vue | 737 ++++++++++-------- 11 files changed, 835 insertions(+), 425 deletions(-) create mode 100644 uniapp/components/custom-modal/custom-modal.vue create mode 100644 uniapp/components/custom-modal/example.vue diff --git a/niucloud/app/api/controller/pay/Pay.php b/niucloud/app/api/controller/pay/Pay.php index f4757902..c3b08d02 100644 --- a/niucloud/app/api/controller/pay/Pay.php +++ b/niucloud/app/api/controller/pay/Pay.php @@ -101,11 +101,9 @@ class Pay extends BaseApiController */ public function getQrcode(){ $data = $this->request->params([ - ['trade_type', ''], - ['trade_id', ''], - ['type', ''], + ['order_id', ''], ]); - return success('SUCCESS',(new PayService())->getQrcode($data['type'], $data['trade_type'], $data['trade_id'])); + return success('SUCCESS',(new \app\service\admin\pay\PayService())->order_pay($data)); } public function qrcodeNotify(int $order_id) diff --git a/niucloud/app/api/route/route.php b/niucloud/app/api/route/route.php index 71ebd452..31224872 100644 --- a/niucloud/app/api/route/route.php +++ b/niucloud/app/api/route/route.php @@ -369,6 +369,8 @@ Route::group(function () { Route::get('personnel/serviceLogDetail', 'apiController.Personnel/serviceLogDetail'); Route::post('personnel/updateServiceRemark', 'apiController.Personnel/updateServiceRemark'); + Route::get('getQrcode', 'pay.Pay/getQrcode'); + })->middleware(ApiChannel::class) ->middleware(ApiPersonnelCheckToken::class, true) diff --git a/niucloud/app/listener/personnel/Student.php b/niucloud/app/listener/personnel/Student.php index 824a124f..129592c5 100644 --- a/niucloud/app/listener/personnel/Student.php +++ b/niucloud/app/listener/personnel/Student.php @@ -91,7 +91,8 @@ class Student 'gift_hours' => $course_info['gift_session_count'], 'start_date' => date("Y-m-d"), 'end_date' => date("Y-m-d", strtotime("+30 days")), - 'single_session_count' => $course_info['single_session_count'] + 'single_session_count' => $course_info['single_session_count'], + 'resource_id'=> $order_info['resource_id'] ]); diff --git a/niucloud/app/model/student_courses/StudentCourses.php b/niucloud/app/model/student_courses/StudentCourses.php index 7b5b7126..970df88c 100644 --- a/niucloud/app/model/student_courses/StudentCourses.php +++ b/niucloud/app/model/student_courses/StudentCourses.php @@ -69,18 +69,14 @@ class StudentCourses extends BaseModel $query->where("course_id", $value); } } - - - - public function student(){ - return $this->hasOne(Student::class, 'id', 'student_id')->joinType('left')->withField('name,id')->bind(['student_id_name'=>'name']); + return $this->hasOne(Student::class, 'id', 'student_id'); } public function course(){ - return $this->hasOne(Course::class, 'id', 'course_id')->joinType('left')->withField('course_name,id')->bind(['course_id_name'=>'course_name']); + return $this->hasOne(Course::class, 'id', 'course_id'); } } diff --git a/niucloud/app/service/admin/pay/PayService.php b/niucloud/app/service/admin/pay/PayService.php index d41e816c..5af587b9 100644 --- a/niucloud/app/service/admin/pay/PayService.php +++ b/niucloud/app/service/admin/pay/PayService.php @@ -49,7 +49,7 @@ class PayService extends BaseAdminService public function getAuditPage(array $where) { $field = 'id, out_trade_no, type, money, body, voucher, create_time, trade_id, trade_type, status'; - $search_model = $this->model->where([ [ 'type', '=', PayDict::OFFLINEPAY ] ])->withSearch([ 'create_time', 'out_trade_no', 'status' ], $where)->field($field)->append([ 'type_name' ])->order('create_time desc'); + $search_model = $this->model->where([['type', '=', PayDict::OFFLINEPAY]])->withSearch(['create_time', 'out_trade_no', 'status'], $where)->field($field)->append(['type_name'])->order('create_time desc'); return $this->pageQuery($search_model); } @@ -61,9 +61,9 @@ class PayService extends BaseAdminService public function getDetail(int $id) { $field = 'id,out_trade_no,trade_type,trade_id,trade_no,body,money,voucher,status,create_time,pay_time,cancel_time,type,channel,fail_reason'; - return $this->model->where([ [ 'id', '=', $id ] ]) + return $this->model->where([['id', '=', $id]]) ->field($field) - ->append([ 'type_name', 'channel_name', 'status_name' ]) + ->append(['type_name', 'channel_name', 'status_name']) ->findOrEmpty() ->toArray(); } @@ -75,7 +75,7 @@ class PayService extends BaseAdminService */ public function pass(string $out_trade_no) { - return ( new CoreOfflineService() )->pass($out_trade_no); + return (new CoreOfflineService())->pass($out_trade_no); } /** @@ -85,7 +85,7 @@ class PayService extends BaseAdminService */ public function refuse(string $out_trade_no, string $reason) { - return ( new CoreOfflineService() )->refuse($out_trade_no, $reason); + return (new CoreOfflineService())->refuse($out_trade_no, $reason); } /** @@ -114,7 +114,7 @@ class PayService extends BaseAdminService */ public function pay(string $type, string $trade_type, int $trade_id, string $return_url = '', string $quit_url = '', string $buyer_id = '', string $voucher = '', string $openid = '') { - return ( new CorePayService() )->pay($trade_type, $trade_id, $type, ChannelDict::PC, $openid, $return_url, $quit_url, $buyer_id, $voucher); + return (new CorePayService())->pay($trade_type, $trade_id, $type, ChannelDict::PC, $openid, $return_url, $quit_url, $buyer_id, $voucher); } /** @@ -125,7 +125,7 @@ class PayService extends BaseAdminService */ public function getInfoByTrade(string $trade_type, int $trade_id) { - return ( new CorePayService() )->getInfoByTrade($trade_type, $trade_id, ChannelDict::H5); + return (new CorePayService())->getInfoByTrade($trade_type, $trade_id, ChannelDict::H5); } /** @@ -136,26 +136,26 @@ class PayService extends BaseAdminService */ public function getFriendspayInfoByTrade(string $trade_type, int $trade_id, string $channel) { - $pay_info = ( new CorePayService() )->getInfoByTrade($trade_type, $trade_id, ChannelDict::H5, PaySceneDict::FRIENDSPAY); + $pay_info = (new CorePayService())->getInfoByTrade($trade_type, $trade_id, ChannelDict::H5, PaySceneDict::FRIENDSPAY); if (!empty($pay_info)) { //海报 - $poster = ( new Poster() )->field('id')->where([ - [ 'type', '=', 'friendspay' ], - [ 'status', '=', 1 ], - [ 'is_default', '=', 1 ] + $poster = (new Poster())->field('id')->where([ + ['type', '=', 'friendspay'], + ['status', '=', 1], + ['is_default', '=', 1] ])->findOrEmpty()->toArray(); if (!empty($poster)) { - $pay_info[ 'poster_id' ] = $poster[ 'id' ]; + $pay_info['poster_id'] = $poster['id']; } //发起帮付会员信息 - $member = ( new Member() )->field('member_id,nickname,headimg')->where([ - [ 'member_id', '=', $pay_info[ 'from_main_id' ] ] + $member = (new Member())->field('member_id,nickname,headimg')->where([ + ['member_id', '=', $pay_info['from_main_id']] ])->findOrEmpty()->toArray(); - $pay_info[ 'member' ] = $member; + $pay_info['member'] = $member; //二维码 $qrcode = $this->getQrcode($trade_type, $trade_id, $channel); - $pay_info[ 'link' ] = $qrcode[ 'url' ]; - $pay_info[ 'qrcode' ] = $qrcode[ 'path' ]; + $pay_info['link'] = $qrcode['url']; + $pay_info['qrcode'] = $qrcode['path']; } return $pay_info; } @@ -168,7 +168,7 @@ class PayService extends BaseAdminService */ public function getQrcode(string $trade_type, int $trade_id, string $channel) { - $url = ( new CoreSysConfigService() )->getSceneDomain()[ 'wap_url' ]; + $url = (new CoreSysConfigService())->getSceneDomain()['wap_url']; $page = 'app/pages/friendspay/money'; $data = [ @@ -193,7 +193,7 @@ class PayService extends BaseAdminService $url = $url . '/' . $page; $scene = []; foreach ($data as $v) { - $scene[] = $v[ 'key' ] . '=' . $v[ 'value' ]; + $scene[] = $v['key'] . '=' . $v['value']; } $url .= '?' . implode('&', $scene); @@ -212,11 +212,11 @@ class PayService extends BaseAdminService */ public function getPayTypeList() { - $pay_type_list = ( new CorePayService() )->getPayTypeByTrade('', ChannelDict::H5); + $pay_type_list = (new CorePayService())->getPayTypeByTrade('', ChannelDict::H5); if (!empty($pay_type_list)) { foreach ($pay_type_list as $k => $v) { - if (!in_array($v['key'], [ PayDict::BALANCEPAY, PayDict::FRIENDSPAY ])) { - unset($pay_type_list[ $k ]); + if (!in_array($v['key'], [PayDict::BALANCEPAY, PayDict::FRIENDSPAY])) { + unset($pay_type_list[$k]); } } $pay_type_list = array_values($pay_type_list); @@ -224,17 +224,18 @@ class PayService extends BaseAdminService return $pay_type_list; } - public function order_pay($data){ - $out_trade_no = 'sm'.date("YmdHis").time(); + public function order_pay($data) + { + $out_trade_no = 'sm' . date("YmdHis") . time(); $order = new OrderTable(); $order_info = $order->where(['id' => $data['order_id']])->find(); $cr = new CustomerResources(); $resource_info = $cr->where(['id' => $order_info['resource_id']])->find(); - $config = return_pay_config($resource_info['campus'],$data['order_id']); + $config = return_pay_config($resource_info['campus'], $data['order_id']); $params = [ 'out_trade_no' => $out_trade_no, - 'body' => '订单扫码支付:'.$out_trade_no, + 'body' => '订单扫码支付:' . $out_trade_no, 'money' => $order_info['order_amount'] * 100, ]; @@ -242,15 +243,16 @@ class PayService extends BaseAdminService $url = $pay->scan($params); - $path = qrcode($url['code_url'],'',[],'upload/qrcode/pay/'); + $path = qrcode($url['code_url'], '', [], 'upload/qrcode/pay/'); - $order->where(['id' => $data['order_id']])->update(['payment_id' => $out_trade_no,'ipv3' => $config['mch_secret_key']]); - return ['qrcode_url' => getCurrentDomain().$path,'out_trade_no'=>$out_trade_no]; + $order->where(['id' => $data['order_id']])->update(['payment_id' => $out_trade_no, 'ipv3' => $config['mch_secret_key']]); + return ['qrcode_url' => getCurrentDomain() . $path, 'out_trade_no' => $out_trade_no, 'code_url' => $url['code_url']]; } - public function check_payment_status($data){ + public function check_payment_status($data) + { $order = new OrderTable(); $order_status = $order->where(['payment_id' => $data['out_trade_no']])->value("order_status"); - return ['order_status'=>$order_status]; + return ['order_status' => $order_status]; } } diff --git a/uniapp/api/apiRoute.js b/uniapp/api/apiRoute.js index 8c45cd65..48e7ef16 100644 --- a/uniapp/api/apiRoute.js +++ b/uniapp/api/apiRoute.js @@ -387,7 +387,10 @@ export default { //更新学生课程人员配置 async updateStudentCoursePersonnel(data = {}) { return await http.post('/updateStudentCoursePersonnel', data); - } - + }, +// 获取订单支付二维码 + async getOrderPayQrcode(data = {}) { + return await http.get('/getQrcode', data); + }, } \ No newline at end of file diff --git a/uniapp/components/custom-modal/custom-modal.vue b/uniapp/components/custom-modal/custom-modal.vue new file mode 100644 index 00000000..8cbe164d --- /dev/null +++ b/uniapp/components/custom-modal/custom-modal.vue @@ -0,0 +1,70 @@ + + + + + \ No newline at end of file diff --git a/uniapp/components/custom-modal/example.vue b/uniapp/components/custom-modal/example.vue new file mode 100644 index 00000000..d10b26b1 --- /dev/null +++ b/uniapp/components/custom-modal/example.vue @@ -0,0 +1,234 @@ + + + + + \ No newline at end of file diff --git a/uniapp/pages.json b/uniapp/pages.json index 9b78e1eb..a6f22eaa 100644 --- a/uniapp/pages.json +++ b/uniapp/pages.json @@ -177,7 +177,7 @@ { "path": "pages/common/im_chat_info", "style": { - "navigationBarTitleText": "", + "navigationBarTitleText": "消息", "navigationStyle": "default", "navigationBarBackgroundColor": "#292929", "navigationBarTextStyle": "white" @@ -677,9 +677,8 @@ { "path": "pages/market/clue/clue_table", "style": { - "navigationBarTitleText": "线索统计表", - "navigationStyle": "default", - "navigationBarBackgroundColor": "#18181c", + "navigationBarTitleText": "数据统计", + "navigationBarBackgroundColor": "#292929", "navigationBarTextStyle": "white" } } diff --git a/uniapp/pages/market/clue/clue_table.vue b/uniapp/pages/market/clue/clue_table.vue index e830be48..46f36e54 100644 --- a/uniapp/pages/market/clue/clue_table.vue +++ b/uniapp/pages/market/clue/clue_table.vue @@ -1,31 +1,42 @@ \ No newline at end of file