From 0912cf737afc7061b821c22500825be5dc95e1fa Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Wed, 1 Jul 2026 15:08:36 +0800 Subject: [PATCH] development test --- safety-eval-domain/pom.xml | 5 + .../start/SafetyEvalApplication.java | 52 +--- .../src/main/resources/application.yml | 293 ++++++++++++------ .../src/main/resources/bootstrap.yml | 89 +++++- 4 files changed, 285 insertions(+), 154 deletions(-) diff --git a/safety-eval-domain/pom.xml b/safety-eval-domain/pom.xml index 7bcdf31..b982dbf 100644 --- a/safety-eval-domain/pom.xml +++ b/safety-eval-domain/pom.xml @@ -23,6 +23,11 @@ spring-context + + com.jjb.saas + jjb-saas-base-starter + + org.projectlombok diff --git a/safety-eval-start/src/main/java/org/qinan/safetyeval/start/SafetyEvalApplication.java b/safety-eval-start/src/main/java/org/qinan/safetyeval/start/SafetyEvalApplication.java index 477e613..868aabe 100644 --- a/safety-eval-start/src/main/java/org/qinan/safetyeval/start/SafetyEvalApplication.java +++ b/safety-eval-start/src/main/java/org/qinan/safetyeval/start/SafetyEvalApplication.java @@ -1,18 +1,15 @@ package org.qinan.safetyeval.start; +import com.jjb.saas.base.starter.bootstart.JJBSpringbootApplication; +import com.jjb.saas.gateway.starter.annotation.EnableGatewayServer; +import com.jjb.saas.secure.annotation.EnableSecureServer; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; -import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; -import org.springframework.context.annotation.Bean; -import org.springframework.util.ReflectionUtils; -import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping; -import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider; - -import java.lang.reflect.Field; -import java.util.List; +import org.springframework.scheduling.annotation.EnableAsync; /** * 安全评价业务服务启动类 @@ -22,42 +19,23 @@ import java.util.List; * * @author safety-eval */ + + +@Slf4j +@JJBSpringbootApplication +@EnableSecureServer(basePackage = "com.jjb.saas.certificate.adapter") +@EnableGatewayServer +@EnableAsync +@EnableDiscoveryClient + @SpringBootApplication(scanBasePackages = {"org.qinan.safetyeval", "com.jjb.saas"}) @EnableDubbo @EnableFeignClients(basePackages = {"org.qinan.safetyeval", "com.jjb.saas"}) -@Slf4j public class SafetyEvalApplication { public static void main(String[] args) { long startTimeMillis = System.currentTimeMillis(); SpringApplication.run(SafetyEvalApplication.class, args); - log.info("SafetyEvalApplication-启动成功-耗时:{} min", (((float)(System.currentTimeMillis() - startTimeMillis))/60000L)); - } - - @Bean - public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { - return new BeanPostProcessor() { - @Override - public Object postProcessAfterInitialization(Object bean, String beanName) { - if (bean instanceof WebMvcRequestHandlerProvider) { - removePathPatternHandlerMappings(bean); - } - return bean; - } - }; - } - - @SuppressWarnings("unchecked") - private static void removePathPatternHandlerMappings(Object bean) { - Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings"); - if (field == null) { - return; - } - field.setAccessible(true); - List mappings = - (List) ReflectionUtils.getField(field, bean); - if (mappings != null) { - mappings.removeIf(mapping -> mapping.getPatternParser() != null); - } + log.info("SafetyEvalApplication-启动成功-耗时:{} min", (((float) (System.currentTimeMillis() - startTimeMillis)) / 60000L)); } } diff --git a/safety-eval-start/src/main/resources/application.yml b/safety-eval-start/src/main/resources/application.yml index 8a4c1bd..7aa2380 100644 --- a/safety-eval-start/src/main/resources/application.yml +++ b/safety-eval-start/src/main/resources/application.yml @@ -1,107 +1,196 @@ -# ============================================= -# 安全评价业务服务 - 公共配置(所有环境共享) -# ============================================= -application: - name: jjb-saas-cq-anquan - version: - gateway: cqanquan - cn-name: 重庆安全评价 - - -server: - port: 8095 - servlet: - context-path: /safety-eval - -spring: - application: - name: safety-eval-service - mvc: - pathmatch: - matching-strategy: ant_path_matcher - profiles: - active: local - config: - import: - - classpath:sdk-prod2.yml - servlet: - multipart: - enabled: true - max-file-size: 100MB - max-request-size: 500MB - - -# ---------- MyBatis Plus ---------- +atta: + server: + path: http://jjb-saas-attachment + #path: http://10.96.190.83 +sdk: + content-path: /safety-eval + server: + app-key: 0bb989ecada5472c89635018ece9f336 + client: + gateway: + url: ${common.gateway.network.http.intranet} + route: + - client: + system-code: jjb-saas-safety-eval + name: 资质评估 + group-code: public_api + service: + system-code: jjb-saas-safety-eval + name: 资质评估 + group-code: public_api + strip-prefix: 0 + uri: ${common.uris.jjb-saas-safety-eval} + path: ${sdk.content-path}/** + order: 0 + - client: + system-code: business-safety-eval-container + name: 资质评估 + group-code: public_api + service: + system-code: test-business-safety-eval-container + name: 资质评估 + group-code: public_api + strip-prefix: 0 + uri: ${common.uris.jjb-saas-base} + path: ${sdk.content-path}/container/** + order: -1 +swagger: + enabled: ${common.swagger.enabled} + title: 接口中心 + description: 接口中心,一切皆有可能 + version: 1.0.0 + group-name: 接口中心 +springfox: + documentation: + swagger-ui: + base-url: safety-eval + swagger: + v2: + path: ${sdk.content-path}/v2/api-docs mybatis-plus: - mapper-locations: classpath*:mapper/**/*.xml - global-config: - db-config: - id-type: assign_id - logic-delete-field: deleteEnum - logic-delete-value: "true" - logic-not-delete-value: "false" configuration: - map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl -# ---------- 文件存储(阿里云 OSS) ---------- -dromara: - x-file-storage: - default-platform: aliyun-oss-1 - thumbnail-suffix: "" # 不使用缩略图 - aliyun-oss: - - platform: aliyun-oss-1 - enable-storage: true - access-key: LTAI5tFerUgBCLEbXtinDD6d - secret-key: XyGVNV2RvW8U3ceoJDiy9A9oLvCGYp - end-point: oss-cn-hangzhou.aliyuncs.com - bucket-name: test-dragon-yf-pub - domain: https://test-dragon-yf-pub.oss-cn-hangzhou.aliyuncs.com/ - base-path: jjb/ +scriptTypeId: 1720337514125246464 +tenantId: 1733372006240944128 + +template: + workTemplate: https://test-dragon-yf-pub.oss-cn-hangzhou.aliyuncs.com/jjb/2026/5/13/a27e808162ea4fa4a00bd3f6093c671f.docx + +approve: + saas: + callBack: ${common.gateway.network.http.external}${sdk.content-path}/api/flow/callback + +exam: + # 考试成绩回调地址 + scoreUrl: http://10.43.82.219/safety-eval/api/exam/plan/callback/batch/score + + +pay: + #底座支付 + appId: yjzfd0001 + merchantNum: merchant000002 + saasUrl: + #支付回调地址 + notify: ${common.gateway.network.http.external}/${sdk.content-path}/api/pay/order/callback + #退款回调地址 + refundNotify: ${common.gateway.network.http.external}/${sdk.content-path}/api/pay/refund/callback + # 特种理论 + # itemCodeTheory: "04000018" + itemCodeTheory: "01000065" + # 特种实操 + # itemCodeOperate: "04000018" + itemCodeOperate: "01000066" +opens: + sdk: + - name: isv + protocol: ${common.open.sdk.protocol} + url: ${common.open.sdk.url} + appKey: ${common.apps.jjb-saas-safety-eval} + appSecret: c09f8118-d939-4cfc-a919-9360f910aea4 + openPublicKey: 3059301306072a8648ce3d020106082a811ccf5501822d0342000464007d7291f02a41c09bb67a141988ead4ad8a66259600e7f3f131c6930199df3fd6e52188fcfde444456b849ec81f88eae2f9637cc4c73a6352ce4f7de6b315 + appPublicKey: ${common.open.sdk.appPublicKey} + appPrivateKey: ${common.open.sdk.appPrivateKey} + + +services: + pay: + #底座支付 + appId: yjzfd0001 + merchantNum: merchant000002 + #支付回调地址 + notify: ${common.uris.jjb-saas-safety-eval}${sdk.content-path}/api/callback/order/callback + #退款回调地址 + refundNotify: ${common.uris.jjb-saas-safety-eval}${sdk.content-path}/callback/pay/refund/callback + sign: + notify: ${common.uris.jjb-saas-safety-eval}${sdk.content-path}/api/callback/sign/callback + applyCert: ${common.uris.jjb-saas-safety-eval}${sdk.content-path}/api/callback/apply/cert/sign + applyCertStamp: ${common.uris.jjb-saas-safety-eval}${sdk.content-path}/api/callback/apply/cert/sign/stamp + applyCertStampSceneCode: affairs_apply_cert_sign + exam: + score: ${common.uris.jjb-saas-safety-eval}${sdk.content-path}/api/callback/exam/score + cert: + send: ${common.uris.jjb-saas-safety-eval}${sdk.content-path}/api/callback/cert/send +enrollment: + expire: + months: 36 + +selfBuilt: + code: 01FM06,02FM06,01FM05,02FM05,01FM04,02FM04 + name: 主要负责人:采掘施工,安全生产管理人员:采掘施工,主要负责人:地质勘探,安全生产管理人员:地质勘探,主要负责人:尾矿库,安全生产管理人员:尾矿库 + +ticket: + detailInfo: + url: ${common.gateway.network.http.external}/safety-eval/container/certificateView?id= + qrCode: + url: ${common.gateway.network.http.external}/official-website-h5/container/examTicket?type=mp&id= + meituan: + url: https://i.meituan.com/awp/h5/hotel/search/search.html + +department: + open: true + +todo: + payUrl: /cqyj/exam/myExam + myExamUrl: /cqyj/exam/myExam + theoryFeeUrl: /cqyj/exam/myExam + theoryEnrollUrl: /cqyj/exam/myExam + theoryExamUrl: /cqyj/exam/myExam + theoryRetakeEnrollUrl: /cqyj/exam/myExam + theoryRetakeExamUrl: /cqyj/exam/myExam + operateFeeUrl: /cqyj/exam/myExam + operateEnrollUrl: /cqyj/exam/myExam + operateExamUrl: /cqyj/exam/myExam + operateRetakeEnrollUrl: /cqyj/exam/myExam + operateRetakeExamUrl: /cqyj/exam/myExam + sendTicket: /cqyj/exam/examTicket?id= + +baidu: + appId: 26756657 + apiKey: IzqhAuOF90cGRlHMFAI92xAM + secretKey: kPFNPgLoPj68sytuBlIFAouFH9DijMMm + imageType: URL + groupId: + matchScore: 70 + registerFaceDatabase: TRUE +user: + rate: + limit: + enabled: true + face: + groupId: jjb_user_face_group_test + + +guest: + rate: + limit: + start: '00:00' + end: '02:59' + enabled: true + + + + + +compare: + url: ${common.gateway.network.http.external}/safety-eval/container/certificateView?compareId= + +order: + timeout: + mius: 30 + + +expire: + special: + # 特征有效期截+12个月内可以报名 + after: 12 + nonspecial: + # 特征有效期截内可以报名 + after: 0 + +special: + review: + municipal: + percentage: 2 -# ---------- Dubbo(环境无关的公共部分,各profile覆盖地址/端口) ---------- -dubbo: - application: - name: safety-eval-service - service-discovery: - migration: FORCE_INTERFACE - registry: - timeout: 20000 - check: false - filter: providerContextFilter - scan: - base-packages: org.qinan.safetyeval - protocol: - name: dubbo - consumer: - timeout: 20000 - check: false - filter: consumerContextFilter -safety-eval: - gbs-user-sync: - fail-fast: true - user-facade-url: ${GBS_USER_FACADE_URL:} - security: - # Exact paths that can be accessed without authentication. - permit-all-paths: - - /v2/api-docs - - /v3/api-docs - # A prefix automatically matches itself and all child paths. - permit-all-prefixes: - - /swagger-ui - - /swagger-resources - - /webjars - - /public - - /test - - /tmp - - /mock - # These rules take priority over permit-all rules when paths overlap. - authenticated-paths: [] - authenticated-prefixes: [] - public-api: - system-user-id: ${PUBLIC_API_SYSTEM_USER_ID:0} - system-user-name: ${PUBLIC_API_SYSTEM_USER_NAME:system} - tenant-id: ${PUBLIC_API_TENANT_ID:0} - org-id: ${PUBLIC_API_ORG_ID:0} - attachment: - default-url: https://s1.aigei.com/prevfiles/6f2754563be2491bad7c957904cd7d2a.jpg?e=2051020800&token=P7S2Xpzfz11vAkASLTkfHN7Fw-oOZBecqeJaxypL:CR60zg7VKDp-jUWyYls_rdvyQMM= diff --git a/safety-eval-start/src/main/resources/bootstrap.yml b/safety-eval-start/src/main/resources/bootstrap.yml index 1bfb64c..4f42816 100644 --- a/safety-eval-start/src/main/resources/bootstrap.yml +++ b/safety-eval-start/src/main/resources/bootstrap.yml @@ -1,15 +1,74 @@ -# ============================================= -# [已废弃] 此文件不再生效 -# ============================================= -# 原因: 项目未引入 spring-cloud-starter-bootstrap 依赖, -# Spring Cloud 2021.x 默认不加载 bootstrap 上下文。 -# -# 已迁移至: -# - application-{profile}.yml → Nacos 连接信息与 spring.config.import -# -# 如需恢复 bootstrap 机制,请在 safety-eval-start/pom.xml 中添加: -# -# org.springframework.cloud -# spring-cloud-starter-bootstrap -# -# ============================================= +application: + name: jjb-saas-safety-eval + version: + gateway: safety-eval +nacos: + # 开发nacos环境 + # url: 10.43.105.171:80 + # namespace: jjb-saas-dev + # dev nacos环境 + # url: 10.43.139.74:8848 + # namespace: jjb-dragon + # uat 环境 + url: 192.168.20.100:30290 + namespace: jjb-dragon +spring: + application: + name: ${application.name} + profiles: + # 环境配置 + active: test + cloud: + nacos: + config: + namespace: ${nacos.namespace} + server-addr: ${nacos.url} + file-extension: yml + shared-configs: + - config-port.yml + - config-common.yml + - config-mq.yml + - config-log.yml + - config-job.yml + - config-actuator.yml + - config-mysql.yml + - config-redis.yml + - config-cache.yml + - config-spring.yml + - config-mybatis.yml + - config-sdk.yml + - config-common.yml + discovery: + # ip: 192.168.3.126 + # port: 80 + server-addr: ${spring.cloud.nacos.config.server-addr} + namespace: ${spring.cloud.nacos.config.namespace} +openapi: + appId: 1852172886036910080 + appKey: 2ea51819fc354088bf02d11effd1bd08 + appSecret: d5c266c0-3440-480c-8390-65b772238aac + appPublicKey: 0490713158a22073896b9f3e79726eaac5e5a432cfc9c5512e86f856e307989625e29c6760462ed61c9328045e6d72223dfdc3dede5ae8ac44af3707c3d48ccb15 + appPrivateKey: 308193020100301306072a8648ce3d020106082a811ccf5501822d047930770201010420079dce3b32004ec5694f096b431e1e41f17af8ec412ca81990169db195e9bb1ba00a06082a811ccf5501822da1440342000490713158a22073896b9f3e79726eaac5e5a432cfc9c5512e86f856e307989625e29c6760462ed61c9328045e6d72223dfdc3dede5ae8ac44af3707c3d48ccb15 + encryptType: SM2 + platform: + - name: default + openPublicKey: 3059301306072a8648ce3d020106082a811ccf5501822d03420004639a7ca9a33cafb69c65ed36f1edc0a092c79c33df84accc10b19067553a2684856e59b6835c96801433069a8092cfb1c5ebe8d4df09a0ea3fb29b9c436b9358 + url: ${common.openapi.url} + protocol: HTTP + defaultPlatform: true + # type: plaintext + type: ciphertext + +limit: + limiter: + - appKey: 1 + apiCode: 2 + limitNum: 10 + seconds: 1 + init: true + limitNum: 10 + seconds: 1 + message: 操作频繁,请稍后再试! + +# 租户类型id 创建子机构及管理员账号使用 +tenantTypeId: 1729391725501349889 \ No newline at end of file