From 9ba3e4dc7cc8d1d5334b80d880eb01389dc6ff73 Mon Sep 17 00:00:00 2001 From: "1213317725@qq.com" <1213317725@qq.com> Date: Fri, 30 May 2025 13:45:14 +0800 Subject: [PATCH] 1 --- niucloud/app/api/controller/login/Login.php | 42 +----- niucloud/app/event.php | 3 + niucloud/app/listener/personnel/Student.php | 124 ++++++++++++++++++ .../PersonCourseScheduleService.php | 7 +- niucloud/app/service/api/pay/PayService.php | 35 +---- 5 files changed, 135 insertions(+), 76 deletions(-) create mode 100644 niucloud/app/listener/personnel/Student.php diff --git a/niucloud/app/api/controller/login/Login.php b/niucloud/app/api/controller/login/Login.php index 6bce779e..2ad930a0 100644 --- a/niucloud/app/api/controller/login/Login.php +++ b/niucloud/app/api/controller/login/Login.php @@ -12,6 +12,7 @@ namespace app\api\controller\login; use app\dict\member\MemberLoginTypeDict; +use app\model\order_table\OrderTable; use app\model\sys\SysConfig; use app\service\admin\sys\SystemService; use app\service\api\captcha\CaptchaService; @@ -138,43 +139,8 @@ class Login extends BaseController } public function test(){ - $pay_config = Db::name("campus_pay")->where(['campus_id' => 1])->find(); - - $sysConfig = new SysConfig(); - - $vx_config = $sysConfig->where(['config_key' => 'WECHAT'])->value("value"); - - $config = [ - // 必填-商户号 - 'mch_id' => $pay_config['mchid'], - // 必填-商户私钥 字符串或路径 - 'mch_secret_cert' => $pay_config['apiclient_cert'], - // 必填-商户公钥证书路径 - 'mch_public_cert_path' => $pay_config['apiclient_key'], - // 必填 - 'notify_url' => 'https://zh.hnhbty.cn/api/pay/qrcodenotify', - // 选填-公众号 的 app_id - 'mp_app_id' => $vx_config['app_id'], - // 选填-小程序 的 app_id - 'mini_app_id' => '', - 'mch_secret_key' => $pay_config['pay_sign_key'], - ]; - $params = [ - 'out_trade_no' => '123123', - 'body' => '测试', - 'money' => 100, - ]; - $pay = new PayLoader('Wechatpay', $config); - - $url = $pay->scan($params); - - $path = qrcode( - $url['code_url'], - '', - [], - 'upload/qrcode/pay/' - ); - - echo "";die; + $order = new OrderTable(); + $order_info = $order->where(['id' => 8])->find(); + event('Student', ['event_type' => 'add','order_info' => $order_info]); } } diff --git a/niucloud/app/event.php b/niucloud/app/event.php index 40759800..d8b36fcb 100644 --- a/niucloud/app/event.php +++ b/niucloud/app/event.php @@ -113,6 +113,9 @@ $system_event = [ //计算业绩 'CalculatePerformance' => [ 'app\listener\personnel\CalculatePerformance' ], + + //学员 + 'Student' => [ 'app\listener\personnel\Student' ], ], 'subscribe' => [ ], diff --git a/niucloud/app/listener/personnel/Student.php b/niucloud/app/listener/personnel/Student.php new file mode 100644 index 00000000..824a124f --- /dev/null +++ b/niucloud/app/listener/personnel/Student.php @@ -0,0 +1,124 @@ +studentAdd($params['data']); + } + + if ($params['event_type'] === 'xiaoke') { + $this->studentXiaoke($params['data']); + } + } + + public function studentXiaoke($data){ + $courseSchedule = new CourseSchedule(); + $studentCourses = new StudentCourses(); + $student_course_usage = new StudentCourseUsage(); + $schedule_info = $courseSchedule->where(['id' => $data['schedule_id']])->find(); + $studentCourses_info = $studentCourses->where(['student_id' => $data['student_id'],'course_id' => $schedule_info['course_id']])->find(); + + $student_course_usage->insert([ + 'student_course_id' => $studentCourses_info['id'], + 'used_hours' => $studentCourses_info['single_session_count'], + 'usage_date' => date("Y-m-d") + ]); + + } + + public function studentAdd($order_info){ + $student = new \app\model\student\Student(); + $order = new OrderTable(); + $cust = new CustomerResources(); + $class_resources_rel = new ClassResourcesRel(); + $course = new Course(); + $studentCourses = new StudentCourses(); + $order_count = $order->where(['resource_id' => $order_info['resource_id']])->count(); + $cust_info = $cust->where(['id' => $order_info['resource_id']])->find(); + //创建学员关系逻辑 + if($order_count <= 1){ + $sex_arr = ['male' => 1, 'female' => 2, 'other' => 0]; + //首次支付创建学员 + $student_id = $student->insertGetId([ + 'name' => $cust_info['name'], + 'gender' => $sex_arr[$cust_info['gender']], + 'age' => $cust_info['age'], + 'campus_id' => $cust_info['campus'], + 'class_id' => $order_info['class_id'], + 'status' => 1, + 'user_id' => $order_info['resource_id'] + ]); + }else{ + $student_id = $student->where(['user_id' => $order_info['resource_id'],'class_id' => $order_info['class_id']])->value('id'); + } + + //学员课程逻辑 + $course_info = $course->where(['id' => $order_info['course_id']])->find(); + $studentCourses->insert([ + 'student_id' => $student_id, + 'course_id' => $order_info['course_id'], + 'total_hours' => $course_info['session_count'], + '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'] + ]); + + + //班级资源关系逻辑 + $is_rel = $class_resources_rel->where( + ['resource_id' => $order_info['resource_id'],'class_id' => $order_info['class_id']] + )->find(); + if($is_rel){ + $class_resources_rel->where(['id' => $is_rel['id']])->update(['status' => 2]); + }else{ + $class_resources_rel->insert([ + 'class_id' => $order_info['class_id'], + 'resource_id' => $order_info['resource_id'], + 'campus_id' => $cust_info['campus'], + 'source_type' => 'student', + 'join_time' => time(), + 'status' => 1, + 'create_time' => date("Y-m-d H:i:s"), + 'update_time' => date("Y-m-d H:i:s") + ]); + } + + + + + + } + + +} diff --git a/niucloud/app/service/admin/person_course_schedule/PersonCourseScheduleService.php b/niucloud/app/service/admin/person_course_schedule/PersonCourseScheduleService.php index 4825af1d..0bca593b 100644 --- a/niucloud/app/service/admin/person_course_schedule/PersonCourseScheduleService.php +++ b/niucloud/app/service/admin/person_course_schedule/PersonCourseScheduleService.php @@ -219,10 +219,9 @@ class PersonCourseScheduleService extends BaseAdminService return $data; } public function xk(int $id){ - $model = $this->model->where([['id', '=', $id]])->find(); - $res = $model->delete(); - return $res; - + $data = $this->model->where([['id', '=', $id]])->find(); + event('Student', ['event_type' => 'xiaoke','data' => $data]); + return true; } public function getCustomerResourcesAll(){ diff --git a/niucloud/app/service/api/pay/PayService.php b/niucloud/app/service/api/pay/PayService.php index 66f54dba..52e53909 100644 --- a/niucloud/app/service/api/pay/PayService.php +++ b/niucloud/app/service/api/pay/PayService.php @@ -166,9 +166,7 @@ class PayService extends BaseApiService public function qrcodeNotify($data,$order_id) { - $student = new Student(); $order = new OrderTable(); - $cust = new CustomerResources(); $order_info = $order->where(['id' => $order_id])->find(); if($order_info['order_status'] == 'pending' and !empty($order_info['ipv3'])){ $resource = $data['resource']; @@ -182,39 +180,8 @@ class PayService extends BaseApiService $order->where(['payment_id' => $info['out_trade_no']])->update(['order_status' => 'paid','payment_time' => date("Y-m-d H:i:s")]); - $order_count = $order->where(['resource_id' => $order_info['resource_id']])->count(); - $cust_info = $cust->where(['id' => $order_info['resource_id']])->find(); - if($order_count <= 1){ - $sex_arr = ['male' => 1, 'female' => 2, 'other' => 0]; - //首次支付创建学员 - $student->insert([ - 'name' => $cust_info['name'], - 'gender' => $sex_arr[$cust_info['gender']], - 'age' => $cust_info['age'], - 'campus_id' => $cust_info['campus'], - 'class_id' => $order_info['class_id'], - 'status' => 1, - 'user_id' => $order_info['resource_id'] - ]); - } - $is_rel = Db::name("class_resources_rel")->where( - ['resource_id' => $order_info['resource_id'],'class_id' => $order_info['class_id']] - )->find(); - if($is_rel){ - Db::name("class_resources_rel")->where(['id' => $is_rel['id']])->update(['status' => 2]); - }else{ - Db::name("class_resources_rel")->insert([ - 'class_id' => $order_info['class_id'], - 'resource_id' => $order_info['resource_id'], - 'campus_id' => $cust_info['campus'], - 'source_type' => 'student', - 'join_time' => time(), - 'status' => 1, - 'create_time' => date("Y-m-d H:i:s"), - 'update_time' => date("Y-m-d H:i:s") - ]); - } + event('Student', ['event_type' => 'add','data' => $order_info]); } }