From 99ba3e82fc961d0c62e057349e6b90fcf3af3755 Mon Sep 17 00:00:00 2001 From: liutong <836164388@qq.com> Date: Wed, 4 Jun 2025 15:53:28 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat(api):=20=E6=B7=BB=E5=8A=A0=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E7=94=A8=E6=88=B7=E7=AB=AF=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 CustomerResourcesAuth 控制器,实现学生登录、忘记密码、获取配置信息等功能- 更新路由配置,添加学生用户端相关路由 - 修改 CommonService 中的 forgetPassword 方法,支持学生用户重置密码 --- .../apiController/CustomerResourcesAuth.php | 130 ++++++++++++++++++ niucloud/app/api/route/route.php | 6 +- .../service/api/apiService/CommonService.php | 18 +++ 3 files changed, 151 insertions(+), 3 deletions(-) create mode 100644 niucloud/app/api/controller/apiController/CustomerResourcesAuth.php diff --git a/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php b/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php new file mode 100644 index 00000000..3d9b4a06 --- /dev/null +++ b/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php @@ -0,0 +1,130 @@ +param('phone', ''); //手机号 + $password = $request->param('password', ''); //密码 + $openid = $request->param('openid', ''); //微信小程序openid + + if (empty($phone)) { + return fail('请输入手机号'); + } + if (empty($password)) { + return fail('请输入密码'); + } + + $member_info = Member::where('mobile', $phone)->find();//查账户表信息是否存在 + + + if (!$member_info) { + return fail('账户手机号有误'); + } + + $customerResources = \app\model\customer_resources\CustomerResources::where('member_id', $member_info['member_id'])->find();//查客户资源表信息是否存在 + if (!$customerResources) { + return fail('账户信息有误'); + } + + //创建密码 + //$a = create_password($password); + //验证密码 + if (!check_password($password, $member_info->password)) { + return fail('手机号或密码不正确'); + } + + + $res = (new LoginService())->login($member_info, MemberLoginTypeDict::MOBILE); + if (!$res) { + return fail('账户信息有误'); + } + $res['user_type'] = '3';//用户类型|3=学员 + return success($res); + } + + //忘记密码-通过短信验证码进行密码重置(学生/员工通用) + public function forgetPassword(Request $request) + { + $phone = $request->param('phone', '');//手机号 + $code = $request->param('code', '');//短信验证码 + $code_type = $request->param('code_type', '');//短信验证码类型(发送/验证 短信验证码的类型)|修改密码=editPassword + $password = $request->param('password', '');//新密码 + $user_type = $request->param('user_type', '');//用户类型|customer=学生|personnel=员工(销售/教师) + + if (empty($phone) || empty($code) || empty($code_type) || empty($password) || empty($user_type)) { + return fail('缺少必填参数'); + } + + //@todo 验证短信验证码是否正确(等发送短信验证码接入后在写) + //... + + + //重置密码 + $res = (new CommonService())->forgetPassword($phone, $password, $user_type); + if (!$res['code']) { + return fail($res['msg']); + } + return success([]); + + } + + //获取配置信息 + public function getConfig(Request $request) + { + $config_key = $request->param('config_key', '');//配置项关键字 + if (empty($config_key)) { + return fail('缺少必填参数'); + } + $where = [ + 'config_key' => $config_key + ]; + + $res = (new CommonService())->getConfig($where); + if (!$res) { + return fail('配置信息有误'); + } + return success($res); + } + + public function getMiniWxOpenId(Request $request) + { + $code = $request->param('code', '');//微信code + if (empty($code)) { + return fail('缺少必填参数'); + } + + $res = (new CommonService())->getMiniWxOpenId($code); + if (!$res['code']) { + return fail($res['msg']); + } + return success($res['data']); + } + + +} diff --git a/niucloud/app/api/route/route.php b/niucloud/app/api/route/route.php index f26b3824..eff8d3d0 100644 --- a/niucloud/app/api/route/route.php +++ b/niucloud/app/api/route/route.php @@ -314,10 +314,10 @@ Route::group(function () { //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-----员工端相关-----↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ -//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-----用户端相关-----↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ +//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-----学生用户端相关-----↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ //无需token验证的 Route::group(function () { -// Route::post('personnelLogin', 'login.Login/personnelLogin'); + Route::post('customerResourcesAuth/login', 'apiController.CustomerResourcesAuth/login'); })->middleware(ApiChannel::class) ->middleware(ApiCheckToken::class) ->middleware(ApiLog::class); @@ -330,7 +330,7 @@ Route::group(function () { })->middleware(ApiChannel::class) ->middleware(ApiCheckToken::class, true) ->middleware(ApiLog::class); -//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-----用户端相关-----↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ +//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-----学生用户端相关-----↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ //加载插件路由 diff --git a/niucloud/app/service/api/apiService/CommonService.php b/niucloud/app/service/api/apiService/CommonService.php index 1dde8cfd..07380753 100644 --- a/niucloud/app/service/api/apiService/CommonService.php +++ b/niucloud/app/service/api/apiService/CommonService.php @@ -54,6 +54,15 @@ class CommonService extends BaseApiService */ public function forgetPassword($phone, $new_password, $user_type){ if($user_type == 'personnel'){ + $data = SysUser::where('username', $phone)->find(); + if (!$data){ + $res = [ + 'code' => 0, + 'msg' => '用户不存在', + 'data' => [] + ]; + return $res; + } //重置员工(销售/教师)密码 $update = SysUser::where('username', $phone)->update([ 'password' => create_password($new_password),//创建密码 @@ -74,6 +83,15 @@ class CommonService extends BaseApiService } return $res; }else{ + $data = Member::where('username', $phone)->find(); + if (!$data){ + $res = [ + 'code' => 0, + 'msg' => '用户不存在', + 'data' => [] + ]; + return $res; + } //重置用户(学生)密码 $update = Member::where('username', $phone)->update([ 'password' => create_password($new_password),//创建密码 From f5ad994e1dc39d2678706f782438da92488bc26d Mon Sep 17 00:00:00 2001 From: liutong <836164388@qq.com> Date: Wed, 4 Jun 2025 15:54:18 +0800 Subject: [PATCH 2/7] =?UTF-8?q?refactor(CustomerResourcesAuth):=20?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=9C=AA=E4=BD=BF=E7=94=A8=E7=9A=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除了 forgetPassword、getConfig 和 getMiniWxOpenId 三个未使用的方法 - 移除了未使用的 CommonService 类的引用 --- .../apiController/CustomerResourcesAuth.php | 60 ------------------- 1 file changed, 60 deletions(-) diff --git a/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php b/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php index 3d9b4a06..da434e18 100644 --- a/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php +++ b/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php @@ -14,7 +14,6 @@ namespace app\api\controller\apiController; use app\dict\member\MemberLoginTypeDict; use app\model\member\Member; use app\Request; -use app\service\api\apiService\CommonService; use app\service\api\login\LoginService; use core\base\BaseApiService; @@ -68,63 +67,4 @@ class customerResourcesAuth extends BaseApiService return success($res); } - //忘记密码-通过短信验证码进行密码重置(学生/员工通用) - public function forgetPassword(Request $request) - { - $phone = $request->param('phone', '');//手机号 - $code = $request->param('code', '');//短信验证码 - $code_type = $request->param('code_type', '');//短信验证码类型(发送/验证 短信验证码的类型)|修改密码=editPassword - $password = $request->param('password', '');//新密码 - $user_type = $request->param('user_type', '');//用户类型|customer=学生|personnel=员工(销售/教师) - - if (empty($phone) || empty($code) || empty($code_type) || empty($password) || empty($user_type)) { - return fail('缺少必填参数'); - } - - //@todo 验证短信验证码是否正确(等发送短信验证码接入后在写) - //... - - - //重置密码 - $res = (new CommonService())->forgetPassword($phone, $password, $user_type); - if (!$res['code']) { - return fail($res['msg']); - } - return success([]); - - } - - //获取配置信息 - public function getConfig(Request $request) - { - $config_key = $request->param('config_key', '');//配置项关键字 - if (empty($config_key)) { - return fail('缺少必填参数'); - } - $where = [ - 'config_key' => $config_key - ]; - - $res = (new CommonService())->getConfig($where); - if (!$res) { - return fail('配置信息有误'); - } - return success($res); - } - - public function getMiniWxOpenId(Request $request) - { - $code = $request->param('code', '');//微信code - if (empty($code)) { - return fail('缺少必填参数'); - } - - $res = (new CommonService())->getMiniWxOpenId($code); - if (!$res['code']) { - return fail($res['msg']); - } - return success($res['data']); - } - - } From a8cbc26d2363155dea9a45843bad5e3bfd2442e1 Mon Sep 17 00:00:00 2001 From: LLL <15374889135@163.com> Date: Wed, 4 Jun 2025 19:02:04 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/apiController/ClassApi.php | 18 ++-- .../apiController/TeachingResearch.php | 7 +- niucloud/app/api/route/route.php | 2 + niucloud/app/model/class_grade/ClassGrade.php | 11 ++ .../class_personnel_rel/ClassPersonnelRel.php | 57 ++++++++++ .../service/api/apiService/jlClassService.php | 102 ++++++++++++++++++ 6 files changed, 188 insertions(+), 9 deletions(-) create mode 100644 niucloud/app/model/class_personnel_rel/ClassPersonnelRel.php create mode 100644 niucloud/app/service/api/apiService/jlClassService.php diff --git a/niucloud/app/api/controller/apiController/ClassApi.php b/niucloud/app/api/controller/apiController/ClassApi.php index 83f4ec5b..0b12e697 100644 --- a/niucloud/app/api/controller/apiController/ClassApi.php +++ b/niucloud/app/api/controller/apiController/ClassApi.php @@ -12,7 +12,7 @@ namespace app\api\controller\apiController; use app\Request; -use app\service\api\apiService\CourseService; +use app\service\api\apiService\jlClassService; use core\base\BaseApiService; @@ -21,22 +21,24 @@ use core\base\BaseApiService; * Class Personnel * @package app\api\controller\apiController */ -class ClassSpi extends BaseApiService +class ClassApi extends BaseApiService { //课程列表 public function jlClassList(Request $request){ $id = $this->member_id; - dd(111); - return success((new CourseService())->list($id,$data)); + $data = $this->request->params([ + ["name",''] + ]); + return success((new jlClassService())->list($id,$data)); } - //获取课程详情 - public function courseInfo(Request $request){ + //课程详情 + public function jlClassInfo(Request $request){ $data = $this->request->params([ - ["id",0] + ["class_id",0] ]); - return success('SUCCESS',(new CourseService())->info($data['id'])); + return success('获取成功',(new jlClassService())->info($data['class_id'])); } } diff --git a/niucloud/app/api/controller/apiController/TeachingResearch.php b/niucloud/app/api/controller/apiController/TeachingResearch.php index b202071b..71cd1a5f 100644 --- a/niucloud/app/api/controller/apiController/TeachingResearch.php +++ b/niucloud/app/api/controller/apiController/TeachingResearch.php @@ -115,10 +115,15 @@ class TeachingResearch extends BaseApiService if ($resLessonTeaching['answers_num'] >= $res['number_answers']) { return fail('已超过答题次数', []); } else { + if (count($userRes['data']['cameus_dept_arr']) > 0) { + $campus_id = $userRes['data']['cameus_dept_arr'][0]['campus_id']; + } else { + $campus_id = 0; + } foreach ($result as &$v){ $v['user_id'] = $userRes['data']['id']; $v['question_id'] = $v['ids']; - $v['campus_id'] = 0; + $v['campus_id'] = $campus_id; $v['answer'] = $v['value']; $resEq = $ExamQuestions->where('id',$v['ids'])->find(); if ($resEq['correct_answer'] == $v['value']){ diff --git a/niucloud/app/api/route/route.php b/niucloud/app/api/route/route.php index f26b3824..3b72577e 100644 --- a/niucloud/app/api/route/route.php +++ b/niucloud/app/api/route/route.php @@ -294,6 +294,8 @@ Route::group(function () { Route::get('course/delStudentCourse', 'apiController.course/delStudentCourse'); //班级列表 Route::get('class/jlClassList', 'apiController.classApi/jlClassList'); + //班级详情 + Route::get('class/jlClassInfo', 'apiController.classApi/jlClassInfo'); //课程列表 Route::get('course/courseList', 'apiController.course/courseList'); //获取课程详情 diff --git a/niucloud/app/model/class_grade/ClassGrade.php b/niucloud/app/model/class_grade/ClassGrade.php index acff649b..8e8ce49f 100644 --- a/niucloud/app/model/class_grade/ClassGrade.php +++ b/niucloud/app/model/class_grade/ClassGrade.php @@ -13,6 +13,7 @@ namespace app\model\class_grade; use app\model\campus\Campus; use app\model\personnel\Personnel; +use app\model\class_personnel_rel\ClassPersonnelRel; use core\base\BaseModel; use think\model\concern\SoftDelete; use think\model\relation\HasMany; @@ -229,6 +230,16 @@ class ClassGrade extends BaseModel return $this->hasOne(Personnel::class, 'id', 'head_coach')->joinType('left')->withField('name,id')->bind(['head_coach_name'=>'name']); } + public function personnelAll(){ + return $this->hasOne(Personnel::class, 'id', 'head_coach')->joinType('left')->withField('head_img,id')->bind(['head_coach_head_img'=>'head_img']); + } + public function personnelName(){ + return $this->hasOne(Personnel::class, 'id', 'head_coach')->joinType('left')->withField('name,id')->bind(['head_coach_name'=>'name']); + } + + public function classPersonnelRel(){ + return $this->hasMany(ClassPersonnelRel::class, 'class_id', 'id'); + } } diff --git a/niucloud/app/model/class_personnel_rel/ClassPersonnelRel.php b/niucloud/app/model/class_personnel_rel/ClassPersonnelRel.php new file mode 100644 index 00000000..7644993d --- /dev/null +++ b/niucloud/app/model/class_personnel_rel/ClassPersonnelRel.php @@ -0,0 +1,57 @@ +hasOne(Student::class, 'id', 'source_id'); + } + + public function studentCourses(){ + return $this->hasOne(StudentCourses::class, 'student_id', 'source_id')->joinType('left')->withField('end_date,student_id')->bind(['end_date'=>'end_date']); + } + + public function studentCoursesInfo(){ + return $this->hasOne(StudentCourses::class, 'student_id', 'source_id'); + } + + +} diff --git a/niucloud/app/service/api/apiService/jlClassService.php b/niucloud/app/service/api/apiService/jlClassService.php new file mode 100644 index 00000000..d3628355 --- /dev/null +++ b/niucloud/app/service/api/apiService/jlClassService.php @@ -0,0 +1,102 @@ +model = (new ClassGrade()); + } + + //列表 + public function list($id,$data) + { + $order = 'id desc'; + $where = []; + if ($data['name'] !== '') { + $where[] = ['name','like','%'.$data['name'].'%']; + } + $search_model = $this->model->where('head_coach', $id)->where($where)->order($order) + ->with(['classPersonnelRel' => function($query) { + $query->with(['student' => function($query) { + $query->with(['customerResources' => function($query) { + $query->with(['member' => function($query) { + $query->select(); + }]); + }]); + },'studentCourses']); + + },'personnelAll']); + $list = $this->pageQuery($search_model); + foreach ($list['data'] as &$v){ + if (count($v['classPersonnelRel']) > 0) { + $now = time(); + $count = 0; + foreach ($v['classPersonnelRel'] as $item) { + if (isset($item['end_date'])) { + $endTime = strtotime($item['end_date']); + if ($endTime > $now && $endTime <= $now + 7 * 86400) { + $count++; + } + } + } + $v['end_count'] = $count; + } else { + $v['end_count'] = 0; + } + } + return $list; + } + + + public function info($data) + { + $search_model = $this->model->where('id', $data) + ->with(['classPersonnelRel' => function($query) { + $query->with(['student' => function($query) { + $query->with(['customerResources' => function($query) { + $query->with(['member' => function($query) { + $query->select(); + }]); + }]); + },'studentCourses','studentCoursesInfo']); + },'personnelAll', 'personnelName']); + $list = $search_model->find(); + if (count($list['classPersonnelRel']) > 0) { + $now = time(); + $count = 0; + foreach ($list['classPersonnelRel'] as $item) { + if (isset($item['end_date'])) { + $endTime = strtotime($item['end_date']); + if ($endTime > $now && $endTime <= $now + 7 * 86400) { + $count++; + } + } + } + $v['end_count'] = $count; + } else { + $v['end_count'] = 0; + } + return $list; + } + +} From 8099ede01359bad92c8bfdbb1142ff276e959e9b Mon Sep 17 00:00:00 2001 From: liutong <836164388@qq.com> Date: Wed, 4 Jun 2025 19:49:19 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat(customer):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AD=A6=E7=94=9F=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CustomerResourcesAuth 控制器中添加 info 方法,用于获取学生详情 - 在路由文件中添加对应的学生详情路由 - 在 CustomerResources 模型中添加与 Member 表的一对一关联 - 在 CustomerResourcesService 服务中实现 getInfo 方法,用于获取客户资源详情 --- .../apiController/CustomerResourcesAuth.php | 14 +++++++++ niucloud/app/api/route/route.php | 7 ++++- .../customer_resources/CustomerResources.php | 6 ++++ .../apiService/CustomerResourcesService.php | 31 +++++++++++++++++++ 4 files changed, 57 insertions(+), 1 deletion(-) diff --git a/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php b/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php index da434e18..daff3e80 100644 --- a/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php +++ b/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php @@ -14,6 +14,7 @@ namespace app\api\controller\apiController; use app\dict\member\MemberLoginTypeDict; use app\model\member\Member; use app\Request; +use app\service\api\apiService\CustomerResourcesService; use app\service\api\login\LoginService; use core\base\BaseApiService; @@ -67,4 +68,17 @@ class customerResourcesAuth extends BaseApiService return success($res); } + //学生详情 + public function info(){ + $member_id = $this->member_id; + $where = [ + 'member_id'=>$member_id + ]; + $res = (new CustomerResourcesService())->getInfo($where); + if (!$res['code']) { + return fail($res['msg']); + } + return success($res['data']); + } + } diff --git a/niucloud/app/api/route/route.php b/niucloud/app/api/route/route.php index 8032d2e3..3e296836 100644 --- a/niucloud/app/api/route/route.php +++ b/niucloud/app/api/route/route.php @@ -319,6 +319,7 @@ Route::group(function () { //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-----学生用户端相关-----↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ //无需token验证的 Route::group(function () { + //学生登录 Route::post('customerResourcesAuth/login', 'apiController.CustomerResourcesAuth/login'); })->middleware(ApiChannel::class) ->middleware(ApiCheckToken::class) @@ -327,7 +328,11 @@ Route::group(function () { //需要token验证的 Route::group(function () { -// Route::get('personnel/info', 'apiController.Personnel/info'); + //员工端-上传图片 + Route::post('memberUploadImage', 'upload.Upload/image'); + //学生详情 + Route::get('customerResourcesAuth/info', 'apiController.CustomerResourcesAuth/info'); + })->middleware(ApiChannel::class) ->middleware(ApiCheckToken::class, true) diff --git a/niucloud/app/model/customer_resources/CustomerResources.php b/niucloud/app/model/customer_resources/CustomerResources.php index 218f156d..5dcdfe4e 100644 --- a/niucloud/app/model/customer_resources/CustomerResources.php +++ b/niucloud/app/model/customer_resources/CustomerResources.php @@ -162,6 +162,12 @@ class CustomerResources extends BaseModel return $this->hasMany(ResourceSharing::class, 'resource_id', 'id'); } + //一对一关联"用户账号登陆表" + public function memberHasOne() + { + return $this->hasOne(Member::class, 'member_id', 'member_id'); + } + diff --git a/niucloud/app/service/api/apiService/CustomerResourcesService.php b/niucloud/app/service/api/apiService/CustomerResourcesService.php index 142dec68..b5cd055e 100644 --- a/niucloud/app/service/api/apiService/CustomerResourcesService.php +++ b/niucloud/app/service/api/apiService/CustomerResourcesService.php @@ -36,6 +36,37 @@ class CustomerResourcesService extends BaseApiService parent::__construct(); } + //获取客户资源详情 + public function getInfo(array $where,string $field = '*'){ + $res = [ + 'code' => 0, + 'msg' => '操作失败', + 'data' => [] + ]; + $model = new CustomerResources(); + if(!empty($where['member_id'])){ + $model = $model->where('member_id', $where['member_id']); + } + $data = $model->field($field) + ->with([ + 'memberHasOne', + 'resourceSharingHasMany' + ]) + ->append([ + 'gender_name', + 'initial_intent_name' + ]) + ->find(); + if ($data){ + $data = $data->toArray(); + $res['code'] = 1; + $res['data'] = $data; + }else{ + $res['msg'] = '暂无数据'; + } + return $res; + } + //获取全部客户资源数据 public function getAll(array $where,string $field = '*') { From b062174ab21e6dbb7bbc2f132aff3e3d6d036baf Mon Sep 17 00:00:00 2001 From: liutong <836164388@qq.com> Date: Thu, 5 Jun 2025 10:59:43 +0800 Subject: [PATCH 5/7] =?UTF-8?q?feat(customer):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AD=A6=E7=94=9F=E8=AF=A6=E6=83=85=E4=BF=AE=E6=94=B9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 CustomerResourcesAuth 控制器的 edit 方法处理学生信息修改请求 - 在路由中添加 customerResourcesAuth/edit 路由 - 新增 CustomerResourcesService服务的 editInfo 方法实现学生信息修改逻辑 - 优化 CommonService 的 compareData 方法,增加 JSON格式返回值 --- .../apiController/CustomerResourcesAuth.php | 35 ++++++++ niucloud/app/api/route/route.php | 2 + .../service/api/apiService/CommonService.php | 6 ++ .../apiService/CustomerResourcesService.php | 89 +++++++++++++++++++ 4 files changed, 132 insertions(+) diff --git a/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php b/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php index daff3e80..1fd574ab 100644 --- a/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php +++ b/niucloud/app/api/controller/apiController/CustomerResourcesAuth.php @@ -81,4 +81,39 @@ class customerResourcesAuth extends BaseApiService return success($res['data']); } + //学生详情-修改 + public function edit(Request $request){ + $member_id = $this->member_id; + $where = [ + 'member_id'=>$member_id + ]; + $data = [ + 'headimg' => $request->param('headimg', ''), + 'name' => $request->param('name', ''), + 'gender' => $request->param('gender', ''), + 'age' => $request->param('age', ''), + 'phone_number' => $request->param('phone_number', ''), + ]; + + // 验证必填字段 + if (empty($data['name'])) { + return fail('姓名不能为空'); + } + if (empty($data['gender'])) { + return fail('性别不能为空'); + } + if (empty($data['age'])) { + return fail('年龄不能为空'); + } + if (empty($data['phone_number'])) { + return fail('手机号不能为空'); + } + + $res = (new CustomerResourcesService())->editInfo($where,$data); + if (!$res['code']) { + return fail($res['msg']); + } + return success([]); + } + } diff --git a/niucloud/app/api/route/route.php b/niucloud/app/api/route/route.php index 3e296836..b502522d 100644 --- a/niucloud/app/api/route/route.php +++ b/niucloud/app/api/route/route.php @@ -332,6 +332,8 @@ Route::group(function () { Route::post('memberUploadImage', 'upload.Upload/image'); //学生详情 Route::get('customerResourcesAuth/info', 'apiController.CustomerResourcesAuth/info'); + //学生详情-修改 + Route::post('customerResourcesAuth/edit', 'apiController.CustomerResourcesAuth/edit'); })->middleware(ApiChannel::class) diff --git a/niucloud/app/service/api/apiService/CommonService.php b/niucloud/app/service/api/apiService/CommonService.php index 07380753..1f0e82cf 100644 --- a/niucloud/app/service/api/apiService/CommonService.php +++ b/niucloud/app/service/api/apiService/CommonService.php @@ -143,12 +143,18 @@ class CommonService extends BaseApiService } return [ + // 返回发生更改的字段名数组 'changed_fields' => $changedFields, + // 返回旧数据中的更改字段及其值 'old_values' => $oldChanges, + // 返回新数据中的更改字段及其值 'new_values' => $newChanges, + // 将 changed_fields 转换为 JSON 格式,保留中文字符 'changed_fields_json' => json_encode($changedFields, JSON_UNESCAPED_UNICODE), + // 将 old_changes 转换为 JSON 格式,保留中文字符 'old_values_json' => json_encode($oldChanges, JSON_UNESCAPED_UNICODE), + // 将 new_changes 转换为 JSON 格式,保留中文字符 'new_values_json' => json_encode($newChanges, JSON_UNESCAPED_UNICODE) ]; } diff --git a/niucloud/app/service/api/apiService/CustomerResourcesService.php b/niucloud/app/service/api/apiService/CustomerResourcesService.php index b5cd055e..ff5e380a 100644 --- a/niucloud/app/service/api/apiService/CustomerResourcesService.php +++ b/niucloud/app/service/api/apiService/CustomerResourcesService.php @@ -311,6 +311,95 @@ class CustomerResourcesService extends BaseApiService } } + //客户资源(学生个人资料)-编辑 + public function editInfo(array $where, array $data) + { + + $res = [ + 'code' => 0, + 'msg' => '操作失败', + 'data' => [] + ]; + + if (!$where) { + $res['msg'] = '查询条件不能为空'; + return $res; + } + + $customer_resources_data = [ + 'name' => $data['name'], // 姓名 + 'gender' => $data['gender'], // 性别(male:男, female:女) + 'age' => $data['age'], // 年龄 + 'phone_number' => $data['phone_number'], // 手机号 + ]; + + $date = date('Y-m-d H:i:s'); + $customer_resources_data['updated_at'] = $date; + + //开启事物 + Db::startTrans(); + try { + $customer_resources = CustomerResources::where('member_id', $where['member_id'])->find(); + + if ($customer_resources) { + $customer_resources = $customer_resources->toArray(); + } + $update_1 = CustomerResources::where('id', $customer_resources['id'])->update($customer_resources_data);//客户资源表 + if (!$update_1) { + Db::rollback(); + return $res; + } + + //更新学生账户登录表 + $member_data = [ + 'username'=>$data['phone_number'], + 'mobile'=>$data['phone_number'], + 'update_time'=>time() + ]; + if(!empty($data['headimg'])){ + $member_data['headimg'] = $data['headimg']; + } + $update_member = Member::where('member_id', $where['member_id'])->update($member_data); + if(!$update_member){ + Db::rollback(); + return $res; + } + + + + //更近客户资源日志表 + $compareData = (new CommonService)->compareData($customer_resources, $customer_resources_data); + if ($compareData['changed_fields']) { + $data = [ + "customer_resource_id" => $customer_resources['id'],//客户资源的ID + "operator_id" => 0,//操作人的ID + "campus_id" => 0,//操作人校区的ID|如果这人有2校区就填0 + "modified_fields" => $compareData['changed_fields_json'],//修改的哪些字段 + "old_values" => $compareData['old_values_json'],//修改前的值 + "new_values" => $compareData['new_values_json'],//修改后的值 + ]; + + $id = CustomerResourceChanges::insertGetId($data); + if (!$id) { + Db::rollback(); + return $res; + } + } + + + + Db::commit(); + $res = [ + 'code' => 1, + 'msg' => '操作成功' + ]; + return $res; + } catch (\Exception $exception) { + Db::rollback(); + return $res; + } + } + //客户资源-获取客户资源修改记录列表 public function getCustomerResourceChangesEditLog(array $where) { From 88d333cc714e1d65f899550d3af334d126471c3d Mon Sep 17 00:00:00 2001 From: liutong <836164388@qq.com> Date: Thu, 5 Jun 2025 11:00:13 +0800 Subject: [PATCH 6/7] =?UTF-8?q?refactor(niucloud):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AD=A6=E7=94=9F=E8=B4=A6=E6=88=B7=E7=99=BB=E5=BD=95=E8=A1=A8?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除了多余的空行和注释 - 改进了代码格式,使代码更加清晰易读- 优化了条件判断语句的写法,提高了代码质量 --- .../api/apiService/CustomerResourcesService.php | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/niucloud/app/service/api/apiService/CustomerResourcesService.php b/niucloud/app/service/api/apiService/CustomerResourcesService.php index ff5e380a..8b0ab131 100644 --- a/niucloud/app/service/api/apiService/CustomerResourcesService.php +++ b/niucloud/app/service/api/apiService/CustomerResourcesService.php @@ -352,21 +352,20 @@ class CustomerResourcesService extends BaseApiService //更新学生账户登录表 $member_data = [ - 'username'=>$data['phone_number'], - 'mobile'=>$data['phone_number'], - 'update_time'=>time() + 'username' => $data['phone_number'], + 'mobile' => $data['phone_number'], + 'update_time' => time() ]; - if(!empty($data['headimg'])){ + if (!empty($data['headimg'])) { $member_data['headimg'] = $data['headimg']; } $update_member = Member::where('member_id', $where['member_id'])->update($member_data); - if(!$update_member){ + if (!$update_member) { Db::rollback(); return $res; } - //更近客户资源日志表 $compareData = (new CommonService)->compareData($customer_resources, $customer_resources_data); if ($compareData['changed_fields']) { @@ -386,8 +385,6 @@ class CustomerResourcesService extends BaseApiService } } - - Db::commit(); $res = [ 'code' => 1, From 235000c57949346442eada1e78d89545b908607f Mon Sep 17 00:00:00 2001 From: liutong <836164388@qq.com> Date: Thu, 5 Jun 2025 14:46:33 +0800 Subject: [PATCH 7/7] =?UTF-8?q?feat(api):=20=E6=B7=BB=E5=8A=A0=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E6=8E=A7=E5=88=B6=E5=99=A8=E5=92=8C=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 Test 控制器,用于测试相关接口- 新增 UserFeedback 控制器,用于处理学生用户反馈 - 更新 Upload 控制器,增加文件扩展名和名称信息 - 在路由中添加用户反馈相关路由 --- .../app/api/controller/apiController/Test.php | 46 ++++++++++++++++ .../controller/apiController/UserFeedback.php | 53 +++++++++++++++++++ niucloud/app/api/controller/upload/Upload.php | 12 ++++- niucloud/app/api/route/route.php | 4 ++ 4 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 niucloud/app/api/controller/apiController/Test.php create mode 100644 niucloud/app/api/controller/apiController/UserFeedback.php diff --git a/niucloud/app/api/controller/apiController/Test.php b/niucloud/app/api/controller/apiController/Test.php new file mode 100644 index 00000000..93490b91 --- /dev/null +++ b/niucloud/app/api/controller/apiController/Test.php @@ -0,0 +1,46 @@ +param('personnel_id', '');//员工人力资源表id(两个参数2选1) + $customer_resources_id = $request->param('customer_resources_id', '');//学生资源表id(两个参数2选1) + if (empty($personnel_id) && empty($customer_resources_id)) { + return fail('缺少参数'); + } + + $where = [ + 'personnel_id' => $personnel_id, + 'customer_resources_id' => $customer_resources_id, + ]; + + $res = (new ChatService())->getChatFriendsPage($where); + + return success($res); + } +} diff --git a/niucloud/app/api/controller/apiController/UserFeedback.php b/niucloud/app/api/controller/apiController/UserFeedback.php new file mode 100644 index 00000000..8ac04a98 --- /dev/null +++ b/niucloud/app/api/controller/apiController/UserFeedback.php @@ -0,0 +1,53 @@ +post('user_id', ''); // 用户ID(对应school_customer_resources表id) + $feedback_text = $request->post('feedback_text', ''); // 反馈内容 + $attachment_url = $request->post('attachment_url', null); // 附件URL(OSS对象存储),允许为空 + + + //验证必填 + if (empty($user_id) || empty($feedback_text)) { + return fail('必填参数不能为空'); + } + + $data = [ + 'user_id' => $user_id, + 'feedback_text' => $feedback_text, + 'attachment_url' => $attachment_url ?? null, + ]; + + $add = \app\model\user_feedback\UserFeedback::create($data); + + if (!$add) { + return fail('添加失败'); + } + + return success([]); + } +} diff --git a/niucloud/app/api/controller/upload/Upload.php b/niucloud/app/api/controller/upload/Upload.php index 1463faaf..b24b7733 100644 --- a/niucloud/app/api/controller/upload/Upload.php +++ b/niucloud/app/api/controller/upload/Upload.php @@ -33,7 +33,17 @@ class Upload extends BaseApiController ['file', 'file'], ]); $upload_service = new UploadService(); - return success($upload_service->image($data['file'],$extraData)); + + $res = $upload_service->image($data['file'],$extraData); + + $res['ext'] = ''; // 初始化文件扩展名 + $res['name'] = ''; // 初始化文件名称 + if (isset($res['url'])) { + $res['ext'] = pathinfo($res['url'], PATHINFO_EXTENSION); + $res['name'] = basename($res['url']); + } + + return success($res); } /** diff --git a/niucloud/app/api/route/route.php b/niucloud/app/api/route/route.php index b502522d..ba452b10 100644 --- a/niucloud/app/api/route/route.php +++ b/niucloud/app/api/route/route.php @@ -335,6 +335,10 @@ Route::group(function () { //学生详情-修改 Route::post('customerResourcesAuth/edit', 'apiController.CustomerResourcesAuth/edit'); + //学生用户反馈-添加 + Route::post('userFeedback/add', 'apiController.UserFeedback/add'); + + })->middleware(ApiChannel::class) ->middleware(ApiCheckToken::class, true)