From 6a076c95886f20d378691094be2e227b7c43a1bd Mon Sep 17 00:00:00 2001 From: zj Date: Wed, 5 Aug 2026 16:26:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9F=BA=E7=A1=80=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9C=8D=E5=8A=A1=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- consumers/data_service.php | 50 ++ src/DataService/AgreementInterface.php | 30 + src/DataService/AppVersionInterface.php | 34 ++ src/DataService/CampusRelationInterface.php | 185 ++++++ src/DataService/CityInterface.php | 42 ++ src/DataService/ConfigInterface.php | 62 ++ .../Course/CourseServiceInterface.php | 18 + src/DataService/DataService.php | 29 + src/DataService/DataServiceInterface.php | 65 +++ src/DataService/DictionaryInterface.php | 13 + src/DataService/Exam/ExamServiceInterface.php | 546 ++++++++++++++++++ src/DataService/Exam/GufenPaperInterface.php | 9 + src/DataService/ExamTypeSubjectInterface.php | 53 ++ .../ExcelHeaderFieldsInterface.php | 13 + src/DataService/GuideNavInterface.php | 24 + src/DataService/MajorsInterface.php | 34 ++ src/DataService/RecruitUnitInterface.php | 81 +++ src/DataService/RegionExamTypeInterface.php | 50 ++ src/DataService/RegionInterface.php | 30 + src/DataService/StudentScoreInterface.php | 69 +++ src/DataService/SubjectCategoryInterface.php | 52 ++ 21 files changed, 1489 insertions(+) create mode 100644 consumers/data_service.php create mode 100644 src/DataService/AgreementInterface.php create mode 100644 src/DataService/AppVersionInterface.php create mode 100644 src/DataService/CampusRelationInterface.php create mode 100644 src/DataService/CityInterface.php create mode 100644 src/DataService/ConfigInterface.php create mode 100644 src/DataService/Course/CourseServiceInterface.php create mode 100644 src/DataService/DataService.php create mode 100644 src/DataService/DataServiceInterface.php create mode 100644 src/DataService/DictionaryInterface.php create mode 100644 src/DataService/Exam/ExamServiceInterface.php create mode 100644 src/DataService/Exam/GufenPaperInterface.php create mode 100644 src/DataService/ExamTypeSubjectInterface.php create mode 100644 src/DataService/ExcelHeaderFieldsInterface.php create mode 100644 src/DataService/GuideNavInterface.php create mode 100644 src/DataService/MajorsInterface.php create mode 100644 src/DataService/RecruitUnitInterface.php create mode 100644 src/DataService/RegionExamTypeInterface.php create mode 100644 src/DataService/RegionInterface.php create mode 100644 src/DataService/StudentScoreInterface.php create mode 100644 src/DataService/SubjectCategoryInterface.php diff --git a/consumers/data_service.php b/consumers/data_service.php new file mode 100644 index 0000000..eaf11b6 --- /dev/null +++ b/consumers/data_service.php @@ -0,0 +1,50 @@ + 'DataService', + // 服务接口名,可选,默认值等于 name 配置的值,如果 name 直接定义为接口类则可忽略此行配置,如 name 为字符串则需要配置 service 对应到接口类 + 'service' => Dhd\Micro\Interface\DataService\DataService::class, + // 服务提供者的服务协议,可选,默认值为 jsonrpc-http + // 可选 jsonrpc-http jsonrpc jsonrpc-tcp-length-check + 'protocol' => 'jsonrpc-http', + // 负载均衡算法,可选,默认值为 random + 'load_balancer' => 'random', + // 这个消费者要从哪个服务中心获取节点信息,如不配置则不会从服务中心获取节点信息 + 'registry' => [ + 'protocol' => env("CONSUMERS_PROTOCOL", "consul"), + 'address' => env("CONSUMERS_ADDRESS", "http://127.0.0.1:8500"), + ], + // 'nodes' => [ + // ['host' => '172.18.0.4', 'port' => 9502], + // ], + // 配置项,会影响到 Packer 和 Transporter + 'options' => [ + 'connect_timeout' => 5.0, + 'recv_timeout' => 5.0, + 'settings' => [ + // 根据协议不同,区分配置 + 'open_eof_split' => true, + 'package_eof' => "\r\n", + // 'open_length_check' => true, + // 'package_length_type' => 'N', + // 'package_length_offset' => 0, + // 'package_body_offset' => 4, + ], + // 重试次数,默认值为 2,收包超时不进行重试。暂只支持 JsonRpcPoolTransporter + 'retry_count' => 2, + // 重试间隔,毫秒 + 'retry_interval' => 100, + // 使用多路复用 RPC 时的心跳间隔,null 为不触发心跳 + 'heartbeat' => 30, + // 当使用 JsonRpcPoolTransporter 时会用到以下配置 + 'pool' => [ + 'min_connections' => 1, + 'max_connections' => 32, + 'connect_timeout' => 10.0, + 'wait_timeout' => 3.0, + 'heartbeat' => -1, + 'max_idle_time' => 60.0, + ], + ], +]; diff --git a/src/DataService/AgreementInterface.php b/src/DataService/AgreementInterface.php new file mode 100644 index 0000000..3ad8094 --- /dev/null +++ b/src/DataService/AgreementInterface.php @@ -0,0 +1,30 @@ + int, 'subject_id' => int, 'region_ids' => int[], 'is_smart_paper' => ?int, 'sort' => ?int, 'status' => ?int] + * @return int[] 本次批量涉及的关联记录 id + */ + public function batchCreateExamTypeSubject(array $data): array; + + public function updateExamTypeSubject(int $id, array $data): bool; + + public function deleteExamTypeSubject(int $id): bool; + + public function batchUpdateExamTypeSubjectSort(array $sorts): bool; + + public function batchUpdateExamTypeSubjectStatus(array $ids, int $status): bool; + + public function batchUpdateExamTypeSubjectSmartPaper(array $ids, int $isSmartPaper): bool; + + /** + * 获取指定地区+招考类型下的科目列表(通用科目 region_id=0) + * @param int $regionId 招考地区ID(0=不限地区,返回全部) + * @param int $examTypeId 招考类型ID + * @return array + */ + public function getSubjectsByRegionExamType(int $regionId, int $examTypeId): array; + + /** + * 获取多个适用地区共同可用的科目,避免调用方分别查询后自行求交集。 + * @param int[] $regionIds + */ + public function getCommonSubjectsByRegions(array $regionIds, int $examTypeId): array; + + /** + * 覆盖设置科目在指定招考类型下的适用地区 + * @param int $examTypeId + * @param int $subjectId + * @param array $regionIds 地区ID列表([0]=全国通用,[]=清空) + */ + public function setSubjectRegions(int $examTypeId, int $subjectId, array $regionIds): bool; +} diff --git a/src/DataService/ExcelHeaderFieldsInterface.php b/src/DataService/ExcelHeaderFieldsInterface.php new file mode 100644 index 0000000..786cb36 --- /dev/null +++ b/src/DataService/ExcelHeaderFieldsInterface.php @@ -0,0 +1,13 @@ + int, 'region_ids' => int[], 'alias' => ?string, 'sort' => ?int, 'status' => ?int] + * @return int[] 本次批量涉及的关联记录 id + */ + public function batchCreateRegionExamType(array $data): array; + + public function updateRegionExamType(int $id, array $data): bool; + + public function deleteRegionExamType(int $id): bool; + + public function batchUpdateRegionExamTypeSort(array $sorts): bool; + + public function batchUpdateRegionExamTypeStatus(array $ids, int $status): bool; + + /** + * 获取指定地区可用的招考类型列表 + * @param int $regionId 招考地区ID + * @return array 招考类型列表,region_specific 类型含 display_name 字段 + */ + public function getExamTypesByRegion(int $regionId): array; + + /** + * 覆盖设置招考类型的适用地区(多选地区一次性写入) + * @param int $examTypeId 招考类型ID + * @param array $regionIds 地区ID列表(传 [0] 表示全国通用,传 [] 表示清空) + */ + public function setExamTypeRegions(int $examTypeId, array $regionIds): bool; + + /** + * 获取已关联指定招考类型的考区列表 + * - is_national=1 的类型返回全部启用地区 + * - 其他类型返回 da_region_exam_type 中关联的地区 + */ + public function getRegionsByExamType(int $examTypeId): array; +} diff --git a/src/DataService/RegionInterface.php b/src/DataService/RegionInterface.php new file mode 100644 index 0000000..dafefab --- /dev/null +++ b/src/DataService/RegionInterface.php @@ -0,0 +1,30 @@ + int, 'subject_id' => int, 'category_id' => int, 'region_ids' => int[], 'is_smart_paper' => ?int, 'sort' => ?int, 'status' => ?int] + * @return int[] 本次批量涉及的关联记录 id + */ + public function batchCreateSubjectCategory(array $data): array; + + public function updateSubjectCategory(int $id, array $data): bool; + + public function deleteSubjectCategory(int $id): bool; + + public function batchUpdateSubjectCategorySort(array $sorts): bool; + + public function batchUpdateSubjectCategoryStatus(array $ids, int $status): bool; + + public function batchUpdateSubjectCategorySmartPaper(array $ids, int $isSmartPaper): bool; + + /** + * 获取指定地区+招考类型+科目下的分类ID列表(含通用分类 region_id=0) + * @param int $regionId 招考地区ID(0=不限) + * @param int $examTypeId + * @param int $subjectId + * @return array int[] + */ + public function getCategoryIdsByRegionExamTypeSubject(int $regionId, int $examTypeId, int $subjectId): array; + + /** @param int[] $regionIds */ + public function getCommonCategoryIdsByRegions(array $regionIds, int $examTypeId, int $subjectId): array; + + /** + * 覆盖设置分类在指定招考类型+科目下的适用地区 + * @param int $examTypeId + * @param int $subjectId + * @param int $categoryId + * @param array $regionIds 地区ID列表([0]=全国通用,[]=清空) + */ + public function setCategoryRegions(int $examTypeId, int $subjectId, int $categoryId, array $regionIds): bool; +}