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 @@
+
+
+
+
+
+
+
+
+
+ 购买成功
+ 成功购买一张月卡,可免费阅读30天
+
+
+
+
+
+
+
+
+
+ 确认删除
+ 删除后无法恢复,确定要继续吗?
+
+
+
+
+
+
+
+
+
+
+ 支付二维码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 @@
-
-
-
-
+
+ {{ expanded[rIdx] ? '收起' : '展开全部' }}
+
+
+
\ No newline at end of file