From eb358d49f0a3bad1cacb3eafde3546fd219ed4a5 Mon Sep 17 00:00:00 2001 From: "1213317725@qq.com" <1213317725@qq.com> Date: Thu, 3 Jul 2025 21:13:23 +0800 Subject: [PATCH] 1 --- .../contract/components/contract-edit.vue | 10 +++- .../customer_resources/customer_resources.vue | 2 +- .../adminapi/controller/contract/Contract.php | 2 + niucloud/app/api/controller/member/Member.php | 18 ++++-- niucloud/app/api/route/file.php | 2 +- niucloud/app/api/route/member.php | 6 +- niucloud/app/listener/personnel/Student.php | 21 ++++++- .../admin/contract/ContractService.php | 4 +- .../service/admin/course/CourseService.php | 2 +- .../CustomerResourcesService.php | 2 +- .../app/service/api/member/MemberService.php | 47 ++++++++++++--- .../core/contract_sign/ContractSign.php | 57 +++++++++++++++++++ niucloud/composer.json | 3 +- 13 files changed, 152 insertions(+), 24 deletions(-) create mode 100644 niucloud/app/service/core/contract_sign/ContractSign.php diff --git a/admin/src/app/views/contract/components/contract-edit.vue b/admin/src/app/views/contract/components/contract-edit.vue index b50d741a..d90a4780 100644 --- a/admin/src/app/views/contract/components/contract-edit.vue +++ b/admin/src/app/views/contract/components/contract-edit.vue @@ -8,6 +8,10 @@ + + + + @@ -36,6 +40,9 @@ + + + @@ -69,7 +76,8 @@ const initialFormData = { contract_template: '', contract_status: '', contract_type: '', - remarks: '', + remarks: '', + placeholder:'' } const formData: Record = reactive({ ...initialFormData }) diff --git a/admin/src/app/views/customer_resources/customer_resources.vue b/admin/src/app/views/customer_resources/customer_resources.vue index 148fb0b1..42eb5e56 100644 --- a/admin/src/app/views/customer_resources/customer_resources.vue +++ b/admin/src/app/views/customer_resources/customer_resources.vue @@ -265,7 +265,7 @@ if (pageName == '业绩分配') { customerResourcesTable.searchParam.type = 'yjfp'; - } else if (pageName == '客户资源列表') { + } else if (pageName == '客户资源') { customerResourcesTable.searchParam.type = 'khzy'; } else if (pageName == '资源列表') { customerResourcesTable.searchParam.type = 'zylb'; diff --git a/niucloud/app/adminapi/controller/contract/Contract.php b/niucloud/app/adminapi/controller/contract/Contract.php index fe87980c..05747d07 100644 --- a/niucloud/app/adminapi/controller/contract/Contract.php +++ b/niucloud/app/adminapi/controller/contract/Contract.php @@ -55,6 +55,7 @@ class Contract extends BaseAdminController ["contract_status",""], ["contract_type",""], ["remarks",""], + ["placeholder",""] ]); $this->validate($data, 'app\validate\contract\Contract.add'); @@ -74,6 +75,7 @@ class Contract extends BaseAdminController ["contract_status",""], ["contract_type",""], ["remarks",""], + ["placeholder",""] ]); $this->validate($data, 'app\validate\contract\Contract.edit'); diff --git a/niucloud/app/api/controller/member/Member.php b/niucloud/app/api/controller/member/Member.php index e5173756..36d69585 100644 --- a/niucloud/app/api/controller/member/Member.php +++ b/niucloud/app/api/controller/member/Member.php @@ -131,15 +131,15 @@ class Member extends BaseApiController ['resource_id', ''], ['sales_id', ''], // 保留旧参数名称以保持兼容性 ]); - + // 优先使用resource_id,如果不存在则使用sales_id $resource_id = !empty($data['resource_id']) ? $data['resource_id'] : $data['sales_id']; - + // 记录日志 Log::debug("Member/list_call_up - 请求参数: resource_id={$resource_id}"); - + $result = (new MemberService())->list_call_up($resource_id); - + return success($result); } @@ -194,4 +194,14 @@ class Member extends BaseApiController } + public function contract_sign(){ + $data = $this->request->params([ + [ 'contract_sign_id', '' ], + ['pic_file',''] + ]); + + return success(( new MemberService() )->contract_sign($data)); + } + + } diff --git a/niucloud/app/api/route/file.php b/niucloud/app/api/route/file.php index bb39fd6a..0b382cd8 100644 --- a/niucloud/app/api/route/file.php +++ b/niucloud/app/api/route/file.php @@ -29,7 +29,7 @@ Route::group('file', function() { Route::post('image/fetch', 'upload.Upload/imageFetch'); })->middleware(ApiChannel::class) - ->middleware(ApiCheckToken::class, true) +// ->middleware(ApiCheckToken::class, true) ->middleware(ApiLog::class); /** diff --git a/niucloud/app/api/route/member.php b/niucloud/app/api/route/member.php index 04cfd875..3b1cc958 100644 --- a/niucloud/app/api/route/member.php +++ b/niucloud/app/api/route/member.php @@ -120,7 +120,7 @@ Route::group('member', function () { Route::get('student_list', 'member.Member/student_list'); Route::get('sktj', 'member.Member/sktj'); - + Route::post('contract_sign', 'member.Member/contract_sign'); })->middleware(ApiChannel::class) ->middleware(ApiPersonnelCheckToken::class, true) @@ -129,6 +129,8 @@ Route::group('member', function () { Route::group('member', function () { + + /***************************************************** 会员管理 ****************************************************/ //会员日志 Route::post('log', 'member.Member/log'); @@ -139,5 +141,5 @@ Route::group('member', function () { /***************************************************** 会员等级 **************************************************/ Route::get('level', 'member.Level/lists'); })->middleware(ApiChannel::class) - ->middleware(ApiCheckToken::class) +// ->middleware(ApiCheckToken::class) ->middleware(ApiLog::class); diff --git a/niucloud/app/listener/personnel/Student.php b/niucloud/app/listener/personnel/Student.php index 129592c5..4e405473 100644 --- a/niucloud/app/listener/personnel/Student.php +++ b/niucloud/app/listener/personnel/Student.php @@ -14,6 +14,8 @@ namespace app\listener\personnel; use app\model\class_resources_rel\ClassResourcesRel; +use app\model\contract\Contract; +use app\model\contract_sign\ContractSign; use app\model\course\Course; use app\model\course_schedule\CourseSchedule; use app\model\customer_resources\CustomerResources; @@ -115,9 +117,22 @@ class Student ]); } - - - + $contract = new Contract(); + $contract_info = $contract + ->alias("a") + ->join(['school_course' => 'b'],'a.id = b.contract_id','left') + ->where(['b.id' => $order_info['course_id']]) + ->field("a.id,a.contract_template") + ->find(); + + + $contract_sign = new ContractSign(); + $contract_sign->insert([ + 'contract_id' => $contract_info['id'], + 'personnel_id' => $order_info['resource_id'], + 'sign_file' => $contract_info['contract_template'], + 'type' => 2 + ]); } diff --git a/niucloud/app/service/admin/contract/ContractService.php b/niucloud/app/service/admin/contract/ContractService.php index c0e157d0..c587502c 100644 --- a/niucloud/app/service/admin/contract/ContractService.php +++ b/niucloud/app/service/admin/contract/ContractService.php @@ -37,7 +37,7 @@ class ContractService extends BaseAdminService */ public function getPage(array $where = []) { - $field = 'id,contract_name,contract_template,contract_status,contract_type,remarks,created_at,updated_at,deleted_at'; + $field = 'id,contract_name,placeholder,contract_template,contract_status,contract_type,remarks,created_at,updated_at,deleted_at'; $order = 'id desc'; $search_model = $this->model->withSearch(["contract_status","contract_type","created_at"], $where)->field($field)->order($order); @@ -52,7 +52,7 @@ class ContractService extends BaseAdminService */ public function getInfo(int $id) { - $field = 'id,contract_name,contract_template,contract_status,contract_type,remarks,created_at,updated_at,deleted_at'; + $field = 'id,contract_name,placeholder,contract_template,contract_status,contract_type,remarks,created_at,updated_at,deleted_at'; $info = $this->model->field($field)->where([['id', "=", $id]])->findOrEmpty()->toArray(); return $info; diff --git a/niucloud/app/service/admin/course/CourseService.php b/niucloud/app/service/admin/course/CourseService.php index 46860183..8ef0cd58 100644 --- a/niucloud/app/service/admin/course/CourseService.php +++ b/niucloud/app/service/admin/course/CourseService.php @@ -47,7 +47,7 @@ class CourseService extends BaseAdminService public function contract_all(){ $contract = new Contract(); - $list = $contract->select()->toArray(); + $list = $contract->where(['contract_type' => '外部','contract_status' => '可用'])->select()->toArray(); return $list; } diff --git a/niucloud/app/service/admin/customer_resources/CustomerResourcesService.php b/niucloud/app/service/admin/customer_resources/CustomerResourcesService.php index 41280e1d..e994bb18 100644 --- a/niucloud/app/service/admin/customer_resources/CustomerResourcesService.php +++ b/niucloud/app/service/admin/customer_resources/CustomerResourcesService.php @@ -156,7 +156,7 @@ class CustomerResourcesService extends BaseAdminService $resourceSharing = new ResourceSharing(); $personnel = new Personnel(); $data['consultant'] = $personnel->where(['sys_user_id' => $this->uid])->value("id"); - +// $data['consultant'] = 3; if (!$data['consultant']) { return fail("超级管理员不允许添加资源"); } diff --git a/niucloud/app/service/api/member/MemberService.php b/niucloud/app/service/api/member/MemberService.php index f3a06feb..54d0d284 100644 --- a/niucloud/app/service/api/member/MemberService.php +++ b/niucloud/app/service/api/member/MemberService.php @@ -16,6 +16,7 @@ use app\model\attendance\Attendance; use app\model\campus\Campus; use app\model\class_resources_rel\ClassResourcesRel; use app\model\communication_records\CommunicationRecords; +use app\model\contract_sign\ContractSign; use app\model\course_schedule\CourseSchedule; use app\model\member\Member; use app\model\person_course_schedule\PersonCourseSchedule; @@ -191,43 +192,43 @@ class MemberService extends BaseApiService private function log($level, $message) { Log::$level('MemberService: ' . $message); } - + public function list_call_up($resource_id) { $communication = new CommunicationRecords(); // 添加日志记录以便调试 $this->log('debug', "list_call_up请求参数: resource_id={$resource_id}"); - + try { // 检查resource_id是否有效 if (empty($resource_id)) { $this->log('warning', "list_call_up: resource_id为空"); return []; } - + // 查询前打印SQL查询条件 $sqlDebug = "SELECT * FROM school_communication_records WHERE resource_id = '{$resource_id}' ORDER BY communication_time DESC"; $this->log('debug', "list_call_up对应SQL: {$sqlDebug}"); - + // 执行查询 $result = $communication->where('resource_id', $resource_id) ->order('communication_time DESC') ->select()->toArray(); - + // 如果没有结果,尝试使用原生 SQL 查询检查记录存在性 if (empty($result)) { $this->log('debug', "list_call_up: 主要查询没有结果,尝试直接查询表"); $rawResult = $communication->query("SELECT COUNT(*) as count FROM school_communication_records WHERE resource_id = '{$resource_id}'"); $count = $rawResult[0]['count'] ?? 0; $this->log('debug', "list_call_up: 原生SQL查询结果数量: {$count}"); - + // 如果原生查询有结果但模型查询没结果,尝试直接使用原生查询 if ($count > 0) { $this->log('debug', "list_call_up: 检测到数据存在,使用原生查询获取"); $result = $communication->query("SELECT * FROM school_communication_records WHERE resource_id = '{$resource_id}' ORDER BY communication_time DESC"); } } - + $this->log('debug', "list_call_up查询结果数量: " . count($result)); return $result; } catch (\Exception $e) { @@ -446,4 +447,36 @@ class MemberService extends BaseApiService return $results; } + + public function contract_sign(array $data){ + $contract_sign = new ContractSign(); + $signService = (new \app\service\core\contract_sign\ContractSign()); + + $info = $contract_sign + ->alias("a") + ->join(['school_contract' => 'b'],'a.contract_id = b.id',"left") + ->where(['a.id' => $data['contract_sign_id']]) + ->field("a.*,b.placeholder") + ->find(); + + + $file_name = 'upload/'.date("YmdHis").time().'.docx'; + $outputPath = root_path() . '/public/'.$file_name; + + $signService->setSign( + root_path().'/public/'.$info['sign_file'], + $outputPath, + $data['pic_file'], + $info['placeholder'] + ); + + $contract_sign->where(['id' => $data['contract_sign_id']])->update([ + 'sign_file' => $file_name, + 'status' => 2, + 'sign_time' => date('Y-m-d H:i:s') + ]); + + return true; + } + } diff --git a/niucloud/app/service/core/contract_sign/ContractSign.php b/niucloud/app/service/core/contract_sign/ContractSign.php new file mode 100644 index 00000000..dc6bc152 --- /dev/null +++ b/niucloud/app/service/core/contract_sign/ContractSign.php @@ -0,0 +1,57 @@ +setImageValue($placeholder, [ + 'path' => $tempImagePath, + 'width' => 120, + 'height' => 50, + 'ratio' => false, + ]); + + $templateProcessor->saveAs($outputPath); + + return true; + } + +} diff --git a/niucloud/composer.json b/niucloud/composer.json index 36505d92..adb31280 100644 --- a/niucloud/composer.json +++ b/niucloud/composer.json @@ -59,7 +59,8 @@ "workerman/crontab": "v1.0.6", "hyperf/pimple": "~2.2.0", "365taofang/huaweicloud-sdk-php-obs": "^3.23", - "ext-openssl": "*" + "ext-openssl": "*", + "phpoffice/phpword": "^1.3" }, "require-dev": { "symfony/var-dumper": "v6.0.19",