diff --git a/niucloud/app/api/controller/apiController/CustomerResources.php b/niucloud/app/api/controller/apiController/CustomerResources.php index 7cfb3f3c..16fc4e53 100644 --- a/niucloud/app/api/controller/apiController/CustomerResources.php +++ b/niucloud/app/api/controller/apiController/CustomerResources.php @@ -131,6 +131,9 @@ class CustomerResources extends BaseApiService "distance" => $request->param('distance', ''),//距离 "communication" => $request->param('communication', ''),//沟通备注 "staff_id" => $request->param('staff_id', ''),//人员ID + + "first_visit_status" => $request->param('first_visit_status', null),//一访情况 + "second_visit_status" => $request->param('second_visit_status', null),//二访情况 ]; foreach($customer_resources_data as $k=>$v){ @@ -139,6 +142,10 @@ class CustomerResources extends BaseApiService } } foreach($six_speed_data as $k=>$v){ + // 排除 first_visit_status 和 second_visit_status 的必填校验 + if (in_array($k, ['first_visit_status', 'second_visit_status'])) { + continue; + } if(!isset($v) || $v === ''){ return fail("缺少必填项{$k}"); } diff --git a/niucloud/app/api/controller/apiController/TeachingResearch.php b/niucloud/app/api/controller/apiController/TeachingResearch.php index dfddb9ea..b202071b 100644 --- a/niucloud/app/api/controller/apiController/TeachingResearch.php +++ b/niucloud/app/api/controller/apiController/TeachingResearch.php @@ -12,6 +12,10 @@ namespace app\api\controller\apiController; use app\dict\member\MemberLoginTypeDict; +use app\model\exam_papers\ExamPapers; +use app\model\exam_questions\ExamQuestions; +use app\model\lesson_course_teaching\LessonCourseTeaching; +use app\model\exam_answers\ExamAnswers; use app\Request; use app\service\api\apiService\PersonnelService; use app\service\api\apiService\TeachingResearchService; @@ -49,4 +53,90 @@ class TeachingResearch extends BaseApiService return success((new TeachingResearchService())->lookType($id)); } + //获取试卷 + public function teachingTestPaper(){ + $data = $this->request->params([ + ["exam_papers_id",0] + ]); + $ExamPapers = new ExamPapers(); + $ExamQuestions = new ExamQuestions(); + $exam_papers_id = $data['exam_papers_id']; + $res = $ExamPapers->where('id',$exam_papers_id)->find(); + $textArr = $this->safeExplode($res['questions_ids']); + $res['count'] = count($textArr); + $arrayText = []; + foreach ($textArr as $v){ + $resText = $ExamQuestions->where('id', $v)->find(); + array_push($arrayText,$resText); + } + $res['resText'] = $arrayText; + return success('SUCCESS', $res); + } + //处理字符串 + public function safeExplode($value, $delimiter = ',') { + if (is_array($value)) { + return $value; + } + if (is_string($value) && trim($value) !== '') { + return explode($delimiter, $value); + } + return []; + } + //提交试卷 + public function submitTestPaper(){ + $data = $this->request->params([ + ["optionList",0], + ["testPaperId",0], + ["id",0], + ]); + $ExamPapers = new ExamPapers(); + $ExamQuestions = new ExamQuestions(); + $optionList = $data['optionList']; + $testPaperId = $data['testPaperId']; + $res = $ExamPapers->where('id',$testPaperId)->find(); + $textArr = $this->safeExplode($res['questions_ids']); + $optionArr = json_decode($optionList, true); + $textArr = array_filter($textArr); + $optionArr = array_filter($optionArr); + if (count($textArr) !== count($optionArr)) { + return fail('请填写全部问题', []); + } + $result = array_map(function($id, $value) { + return ['ids' => (int)$id, 'value' => $value]; + }, $textArr, $optionArr); + $where = [ + 'id'=>$this->member_id, + ]; + $userRes = (new PersonnelService())->info($where); + + $LessonCourseTeaching = new LessonCourseTeaching(); + $resLessonTeaching = $LessonCourseTeaching->where('id',$data['id'])->find(); + + if ($resLessonTeaching['answers_num'] >= $res['number_answers']) { + return fail('已超过答题次数', []); + } else { + foreach ($result as &$v){ + $v['user_id'] = $userRes['data']['id']; + $v['question_id'] = $v['ids']; + $v['campus_id'] = 0; + $v['answer'] = $v['value']; + $resEq = $ExamQuestions->where('id',$v['ids'])->find(); + if ($resEq['correct_answer'] == $v['value']){ + $v['is_correct'] = 1; + } else { + $v['is_correct'] = 0; + } + $ExamAnswers = new ExamAnswers(); + $ress = $ExamAnswers->create($v); + } + $LessonCourseTeaching->where('id',$data['id'])->update(['answers_num'=>$resLessonTeaching['answers_num'] + 1]); + $correct = array_filter($result, function($item) { + return $item['is_correct'] == 1; + }); + $incorrect = array_filter($result, function($item) { + return $item['is_correct'] == 0; + }); + return success('SUCCESS', ['success'=>count($correct),'error'=>count($incorrect),'num'=>(count($correct) * $res['every_score'])]); + } + } } diff --git a/niucloud/app/api/controller/upload/Upload.php b/niucloud/app/api/controller/upload/Upload.php index c5e422ff..1463faaf 100644 --- a/niucloud/app/api/controller/upload/Upload.php +++ b/niucloud/app/api/controller/upload/Upload.php @@ -15,6 +15,7 @@ use app\service\api\upload\Base64Service; use app\service\api\upload\FetchService; use app\service\api\upload\UploadService; use core\base\BaseApiController; +use think\Request; use think\Response; class Upload extends BaseApiController @@ -24,12 +25,15 @@ class Upload extends BaseApiController * 图片上传 * @return Response */ - public function image(){ + public function image(Request $request){ + + $extraData = $request->all(); + $data = $this->request->params([ ['file', 'file'], ]); $upload_service = new UploadService(); - return success($upload_service->image($data['file'])); + return success($upload_service->image($data['file'],$extraData)); } /** diff --git a/niucloud/app/api/route/route.php b/niucloud/app/api/route/route.php index 28a6e959..2a918b90 100644 --- a/niucloud/app/api/route/route.php +++ b/niucloud/app/api/route/route.php @@ -201,7 +201,7 @@ Route::group(function () { //需要token验证的 Route::group(function () { - //上传图片 + //员工端-上传图片 Route::post('uploadImage', 'upload.Upload/image'); //员工端详情 Route::get('personnel/info', 'apiController.Personnel/info'); @@ -283,6 +283,10 @@ Route::group(function () { Route::get('teachingResearch/info/:id', 'apiController.teachingResearch/info'); //获取能看的教研管理类型 Route::get('teachingResearch/lookType', 'apiController.teachingResearch/lookType'); + //获取试卷 + Route::get('teachingResearch/teachingTestPaper', 'apiController.teachingResearch/teachingTestPaper'); + //提交试卷 + Route::get('teachingResearch/submitTestPaper', 'apiController.teachingResearch/submitTestPaper'); })->middleware(ApiChannel::class) ->middleware(ApiPersonnelCheckToken::class, true) ->middleware(ApiLog::class); diff --git a/niucloud/app/model/chat_friends/ChatFriends.php b/niucloud/app/model/chat_friends/ChatFriends.php index 33d14738..37c74acc 100644 --- a/niucloud/app/model/chat_friends/ChatFriends.php +++ b/niucloud/app/model/chat_friends/ChatFriends.php @@ -80,8 +80,8 @@ class ChatFriends extends BaseModel } - public function campus(){ - return $this->hasOne(CustomerResources::class, 'id', 'customer_resources_id')->joinType('left')->withField('name,id')->bind(['customer_resources_id'=>'name']); + public function customer(){ + return $this->hasOne(CustomerResources::class, 'id', 'customer_resources_id')->joinType('left')->withField('name,id')->bind(['customer_resources_id_name'=>'name']); } public function personnel(){ diff --git a/niucloud/app/service/api/apiService/ChatService.php b/niucloud/app/service/api/apiService/ChatService.php index fb568558..c8ffa763 100644 --- a/niucloud/app/service/api/apiService/ChatService.php +++ b/niucloud/app/service/api/apiService/ChatService.php @@ -48,7 +48,12 @@ class ChatService extends BaseApiService $model = $model->where('customer_resources_id', $where['customer_resources_id']); } - $data = $model->paginate([ + $data = $model + ->with([ + 'personnel', + 'customer', + ]) + ->paginate([ 'list_rows' => $limit, 'page' => $page, ])->toArray(); diff --git a/niucloud/app/service/api/apiService/CustomerResourcesService.php b/niucloud/app/service/api/apiService/CustomerResourcesService.php index 90e32d42..d8e99818 100644 --- a/niucloud/app/service/api/apiService/CustomerResourcesService.php +++ b/niucloud/app/service/api/apiService/CustomerResourcesService.php @@ -15,6 +15,7 @@ use app\model\campus_person_role\CampusPersonRole; use app\model\customer_resource_changes\CustomerResourceChanges; use app\model\customer_resources\CustomerResources; use app\model\dict\Dict; +use app\model\member\Member; use app\model\personnel\Personnel; use app\model\resource_sharing\ResourceSharing; use app\model\six_speed\SixSpeed; @@ -122,10 +123,47 @@ class CustomerResourcesService extends BaseApiService //开启事物 Db::startTrans(); try { - $customer_resources = CustomerResources::where('id', $where['id'])->find(); + $six_speed = SixSpeed::where('resource_id', $where['id'])->find(); if ($customer_resources) { $customer_resources = $customer_resources->toArray(); + + if(!$customer_resources['member_id'] && $six_speed){ + //新数据存在一访问 或者旧数据存在一访的情况 && 这用户没注册过member账号的情况下才给他创建member账号 + if(!empty($six_speed_data['first_visit_status']) || $six_speed['first_visit_status']){ + $sex = 0; + switch ($customer_resources_data['gender']) { + case 'male'://男 + $sex = 1; + break; + case 'female'://女 + $sex = 2; + break; + default://其他 + $sex = 0; + break; + } + $password = create_password($customer_resources_data['phone_number']);//创建密码 + //给用户创建member账号 + $member_id = Member::insertGetId([ + 'username'=>$customer_resources_data['phone_number'],//会员用户名 + 'mobile'=>$customer_resources_data['phone_number'],//手机号 + 'password'=>$password,//会员密码 + 'nickname'=>$customer_resources_data['name'],//会员昵称 + 'sex'=>$sex,//性别 0保密 1男 2女 + 'member_time'=>time(),//成为会员时间 + ]); + if($member_id){ + $customer_resources_data['member_id'] = $member_id; + }else{ + Db::rollback(); + $res['msg'] = '创建用户账号失败'; + return $res; + } + } + + } + } $update_1 = CustomerResources::where('id', $where['id'])->update($customer_resources_data);//客户资源表 if (!$update_1) { @@ -157,7 +195,6 @@ class CustomerResourcesService extends BaseApiService $six_speed_data['resource_id'] = $where['id']; //查六要素是否存在 - $six_speed = SixSpeed::where('resource_id', $where['id'])->find(); if ($six_speed) { $six_speed = $six_speed->toArray(); //更新六要素 diff --git a/niucloud/app/service/api/apiService/ResourceSharingService.php b/niucloud/app/service/api/apiService/ResourceSharingService.php index 3f104fd0..7024ab7f 100644 --- a/niucloud/app/service/api/apiService/ResourceSharingService.php +++ b/niucloud/app/service/api/apiService/ResourceSharingService.php @@ -115,15 +115,19 @@ class ResourceSharingService extends BaseApiService ]); } ])->field($field)->find(); + if($data){ + $data = $data->toArray(); + } if (!empty($data['customerResource'])) { $data['customerResource']['cj_count'] = OrderTable::where('resource_id', $data['customerResource']['id']) ->where('order_status', 'paid') ->count();//成交次数 } +// dd(123123,$data); if ($data) { $res['code'] = 1; $res['msg'] = '操作成功'; - $res['data'] = $data->toArray(); + $res['data'] = $data; } else { $res['code'] = 0; diff --git a/niucloud/app/service/api/upload/UploadService.php b/niucloud/app/service/api/upload/UploadService.php index 30856447..b666bf47 100644 --- a/niucloud/app/service/api/upload/UploadService.php +++ b/niucloud/app/service/api/upload/UploadService.php @@ -34,9 +34,9 @@ class UploadService extends BaseApiService * @return array * @throws Exception */ - public function image($file) + public function image($file,array $extraData = []) { - $dir = $this->root_path . '/' . 'image' . '/' . date('Ym') . '/' . date('d'); + $dir = $this->root_path . '/' . 'image' . '/' . date('Ym') . '/' . date('d');//打印结果 例如=file/image/202505/29 $core_upload_service = new CoreUploadService(); return $core_upload_service->image($file, $dir, $this->cate_id); }