Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	gateway/src/main/resources/application.yml
dongxin 1 год назад
Родитель
Сommit
e5b014b16e
100 измененных файлов с 3524 добавлено и 109 удалено
  1. 23 0
      authentication/src/main/resources/application-dev.yml
  2. 22 0
      authentication/src/main/resources/application-test.yml
  3. 4 21
      authentication/src/main/resources/application.yml
  4. 10 0
      commons/src/main/java/com/jzg/commons/config/MyBatisPlusConfig.java
  5. 20 0
      commons/src/main/java/com/jzg/commons/constants/InsuranceRisk.java
  6. 17 0
      commons/src/main/java/com/jzg/commons/constants/PtlApiType.java
  7. 25 0
      commons/src/main/java/com/jzg/commons/constants/PtlCrawlerApiType.java
  8. 29 0
      commons/src/main/java/com/jzg/commons/entity/agreement/dto/PtlAttributionTemplateDto.java
  9. 72 0
      commons/src/main/java/com/jzg/commons/entity/agreement/po/PtlCrawlerApi.java
  10. 81 0
      commons/src/main/java/com/jzg/commons/entity/agreement/po/PtlInsAttributionTemplate.java
  11. 23 0
      commons/src/main/java/com/jzg/commons/entity/agreement/vo/PtlCrawlerApiSaveVo.java
  12. 21 0
      commons/src/main/java/com/jzg/commons/entity/agreement/vo/PtlInsAttributionTemplateQueryVo.java
  13. 106 0
      commons/src/main/java/com/jzg/commons/entity/agreement/vo/PtlInsAttributionTemplateSaveVo.java
  14. 149 0
      commons/src/main/java/com/jzg/commons/entity/agreement/vo/PtlInsAttributionTemplateVo.java
  15. 37 0
      commons/src/main/java/com/jzg/commons/entity/dto/PosterAdd.java
  16. 41 0
      commons/src/main/java/com/jzg/commons/entity/dto/PosterEnd.java
  17. 18 0
      commons/src/main/java/com/jzg/commons/entity/dto/PosterParam.java
  18. 50 0
      commons/src/main/java/com/jzg/commons/entity/dto/QrBarcodeConfigAdd.java
  19. 57 0
      commons/src/main/java/com/jzg/commons/entity/dto/QrBarcodeConfigEnd.java
  20. 15 0
      commons/src/main/java/com/jzg/commons/entity/dto/QrBarcodeConfigParam.java
  21. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/SysOrganizationParam.java
  22. 34 0
      commons/src/main/java/com/jzg/commons/entity/po/InsCompanyClause.java
  23. 52 0
      commons/src/main/java/com/jzg/commons/entity/po/QrBarcodeConfig.java
  24. 87 0
      commons/src/main/java/com/jzg/commons/entity/po/SysActivity.java
  25. 70 0
      commons/src/main/java/com/jzg/commons/entity/po/SysActivityAward.java
  26. 33 0
      commons/src/main/java/com/jzg/commons/entity/po/SysPoster.java
  27. 21 0
      commons/src/main/java/com/jzg/commons/entity/po/SysPosterOrg.java
  28. 22 0
      commons/src/main/java/com/jzg/commons/entity/vo/CompanyClauseVo.java
  29. 55 0
      commons/src/main/java/com/jzg/commons/entity/vo/QrBarcodeConfigVo.java
  30. 60 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysActivityAwardVo.java
  31. 69 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysActivityVo.java
  32. 2 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysOrganizationUserLinkQueryVo.java
  33. 2 1
      commons/src/main/java/com/jzg/commons/entity/vo/SysOrganizationUserLinkVo.java
  34. 4 4
      commons/src/main/java/com/jzg/commons/exception/SystemException.java
  35. 6 1
      gateway/pom.xml
  36. 20 0
      gateway/src/main/resources/application-dev.yml
  37. 21 0
      gateway/src/main/resources/application-test.yml
  38. 2 20
      gateway/src/main/resources/application.yml
  39. 20 1
      platform/pom.xml
  40. 0 6
      platform/src/main/java/com/jzg/PlatFormApplication.java
  41. 44 0
      platform/src/main/java/com/jzg/controller/AttributionTemplateController.java
  42. 65 0
      platform/src/main/java/com/jzg/controller/ClauseController.java
  43. 6 1
      platform/src/main/java/com/jzg/controller/FileUploadController.java
  44. 69 0
      platform/src/main/java/com/jzg/controller/QrBarcodeController.java
  45. 0 1
      platform/src/main/java/com/jzg/controller/UserRoleController.java
  46. 25 0
      platform/src/main/java/com/jzg/mapper/InsCompanyClauseMapper.java
  47. 10 0
      platform/src/main/java/com/jzg/mapper/PtlCrawlerApiMapper.java
  48. 9 0
      platform/src/main/java/com/jzg/mapper/PtlInsAttributionTemplateMapper.java
  49. 10 0
      platform/src/main/java/com/jzg/mapper/QrBarcodeMapper.java
  50. 1 0
      platform/src/main/java/com/jzg/service/EsmInsCompanyService.java
  51. 46 0
      platform/src/main/java/com/jzg/service/InsCompanyClauseService.java
  52. 19 0
      platform/src/main/java/com/jzg/service/PtlCrawlerApiService.java
  53. 33 0
      platform/src/main/java/com/jzg/service/PtlInsAttributionTemplateService.java
  54. 14 0
      platform/src/main/java/com/jzg/service/QrBarcodeService.java
  55. 7 0
      platform/src/main/java/com/jzg/service/impl/EsmInsCompanyServiceImpl.java
  56. 71 0
      platform/src/main/java/com/jzg/service/impl/InsCompanyClauseServiceImpl.java
  57. 12 0
      platform/src/main/java/com/jzg/service/impl/PtlCrawlerApiServiceImpl.java
  58. 87 0
      platform/src/main/java/com/jzg/service/impl/PtlInsAttributionTemplateServiceImpl.java
  59. 37 0
      platform/src/main/java/com/jzg/service/impl/QrBarcodeServiceImpl.java
  60. 1 2
      platform/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java
  61. 4 1
      platform/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java
  62. 11 7
      platform/src/main/java/com/jzg/service/impl/UserRoleServiceImpl.java
  63. 34 0
      platform/src/main/resources/application-dev.yml
  64. 30 0
      platform/src/main/resources/application-test.yml
  65. 14 20
      platform/src/main/resources/application.yml
  66. 35 0
      platform/src/main/resources/logback-spring.xml
  67. 32 0
      tenant/insurance/pom.xml
  68. 31 0
      tenant/insurance/yongcheng/pom.xml
  69. 19 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/YongchengApplication.java
  70. 23 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/api/ApiComponents.java
  71. 66 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/aspect/AsyncLoggingAspect.java
  72. 31 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/config/WebClientConfig.java
  73. 40 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/controller/QuoteController.java
  74. 71 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/Accident.java
  75. 37 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AccidentResponse.java
  76. 38 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AccidentalDrivingQueryVo.java
  77. 22 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AuthorityDataXml.java
  78. 78 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/ResponseYwCvrg.java
  79. 77 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/YcConfigureParameters.java
  80. 103 0
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/utils/RequestApiComponents.java
  81. 34 0
      tenant/insurance/yongcheng/src/main/resources/application.yml
  82. 35 0
      tenant/insurance/yongcheng/src/main/resources/logback-spring.xml
  83. 9 1
      tenant/organization/pom.xml
  84. 83 0
      tenant/organization/src/main/java/com/jzg/organization/controller/ActivityController.java
  85. 82 0
      tenant/organization/src/main/java/com/jzg/organization/controller/PosterController.java
  86. 20 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/PosterMapper.java
  87. 9 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/PosterOrgMapper.java
  88. 9 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysActivityAwardMapper.java
  89. 13 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysActivityMapper.java
  90. 14 0
      tenant/organization/src/main/java/com/jzg/organization/service/PosterService.java
  91. 9 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysActivityAwardService.java
  92. 23 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysActivityService.java
  93. 27 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PosterServiceImpl.java
  94. 16 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysActivityAwardServiceImpl.java
  95. 196 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysActivityServiceImpl.java
  96. 61 0
      tenant/organization/src/main/resources/application-dev.yml
  97. 62 0
      tenant/organization/src/main/resources/application-test.yml
  98. 6 21
      tenant/organization/src/main/resources/application.yml
  99. 21 0
      tenant/organization/src/main/resources/mapper/SysActivityMapper.xml
  100. 30 1
      tenant/pom.xml

+ 23 - 0
authentication/src/main/resources/application-dev.yml

@@ -0,0 +1,23 @@
+
+spring:
+  redis:
+    redisson:
+      address: redis://192.168.0.250:6379
+      password: 123456
+      database: 0
+
+  datasource:
+    url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+    username: root
+    password: '@RqGHG#KZ*C9ytkQ'
+    driverClassName: com.mysql.cj.jdbc.Driver
+
+config:
+  sso: 0
+
+
+minio:
+  url: http://192.168.0.250:9000
+  access-key: v7Zb8XhyLcYNcSHlxvyK
+  secret-key: 58YibMwpxGKtXcekPL065OM4GonC1hf2tFMjI9EN
+  bucket-name: jzg

+ 22 - 0
authentication/src/main/resources/application-test.yml

@@ -0,0 +1,22 @@
+
+spring:
+  redis:
+    redisson:
+      address: redis://172.24.144.218:6379
+      password: sxzgkj@2023
+
+  datasource:
+    url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+    username: root
+    password: '@RqGHG#KZ*C9ytkQ'
+    driverClassName: com.mysql.cj.jdbc.Driver
+
+config:
+  sso: 0
+
+
+minio:
+  url: http://test-api.baoxianzhanggui.com
+  access-key: N8hf40VDM3Uf2xJ5vnvE
+  secret-key: CDe1raroqIMo5R2KhHl6ZQbJOhdq0mrtCI78g3vq
+  bucket-name: jzg

+ 4 - 21
authentication/src/main/resources/application.yml

@@ -1,30 +1,13 @@
 server:
   port: 8081
 spring:
+  profiles:
+    active: test
+
   main:
     allow-bean-definition-overriding: true
-  redis:
-    redisson:
-      address: redis://192.168.0.250:6379
-      password: 123456
-      database: 0
-
-  datasource:
-      url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
-      username: root
-      password: '@RqGHG#KZ*C9ytkQ'
-      driverClassName: com.mysql.cj.jdbc.Driver
 
 mybatis-plus:
   mapper-locations: classpath*:/mapper/*Mapper.xml
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-config:
-  sso: 0
-
-
-minio:
-  url: http://192.168.0.250:9000
-  access-key: v7Zb8XhyLcYNcSHlxvyK
-  secret-key: 58YibMwpxGKtXcekPL065OM4GonC1hf2tFMjI9EN
-  bucket-name: jzg
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

+ 10 - 0
commons/src/main/java/com/jzg/commons/config/MyBatisPlusConfig.java

@@ -1,6 +1,10 @@
 package com.jzg.commons.config;
 
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
+import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
@@ -50,4 +54,10 @@ public class MyBatisPlusConfig {
         interceptor.addInnerInterceptor(paginationInnerInterceptor());
         return interceptor;
     }
+
+    @Bean
+    public ConfigurationCustomizer configurationCustomizer() {
+        return configuration -> configuration.getTypeHandlerRegistry()
+                .register(Fastjson2TypeHandler.class);
+    }
 }

+ 20 - 0
commons/src/main/java/com/jzg/commons/constants/InsuranceRisk.java

@@ -0,0 +1,20 @@
+package com.jzg.commons.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum InsuranceRisk {
+    TRAFFIC("0507", "机动车交通事故责任强制保险", "交强"),
+
+    BUSINESS("0510", "机动车商业保险", "商业"),
+
+    ACCIDENT("0513", "意外险", "非车");
+
+    private final String code;
+
+    private final String desc;
+
+    private final String shortName;
+}

+ 17 - 0
commons/src/main/java/com/jzg/commons/constants/PtlApiType.java

@@ -0,0 +1,17 @@
+package com.jzg.commons.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum PtlApiType {
+
+    API("1", "api对接"),
+    PYTHON("2", "python对接");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 25 - 0
commons/src/main/java/com/jzg/commons/constants/PtlCrawlerApiType.java

@@ -0,0 +1,25 @@
+package com.jzg.commons.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum PtlCrawlerApiType {
+
+    API_1(1, "归属配置"),
+    API_2(2, "报价"),
+    API_3(3, "影像上传"),
+    API_4(4, "核保"),
+    API_5(5, "缴费查询"),
+    API_6(6, "保单下载"),
+    API_7(7, "非车险查询"),
+    API_8(8, "人工核保状态刷新"),
+    API_9(9, "撤销订单"),
+    API_10(10, "验车码");
+
+    private final int code;
+
+    private final String desc;
+
+}

+ 29 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/dto/PtlAttributionTemplateDto.java

@@ -0,0 +1,29 @@
+package com.jzg.commons.entity.agreement.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@Schema(description = "归属配置模版")
+public class PtlAttributionTemplateDto implements Serializable {
+
+    private static final long serialVersionUID = 1000183859846970741L;
+
+    @Schema(description = "字段")
+    private String field;
+
+    @Schema(description = "标签")
+    private String label;
+
+    @Schema(description = "类型(text 文本框,select 选择框)")
+    private String type;
+
+    @Schema(description = "是否允许修改(true 可修改,false 不可修改)")
+    private Boolean isEdit;
+
+    @Schema(description = "值")
+    private String value;
+
+}

+ 72 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/po/PtlCrawlerApi.java

@@ -0,0 +1,72 @@
+package com.jzg.commons.entity.agreement.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jzg.commons.constants.PtlCrawlerApiType;
+import com.jzg.commons.entity.agreement.vo.PtlCrawlerApiSaveVo;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * python对接接口
+ *
+ * @TableName ptl_crawler_api
+ */
+@TableName(value = "ptl_crawler_api")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PtlCrawlerApi implements Serializable {
+    /**
+     *
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private String id;
+
+    /**
+     * 模板id
+     */
+    @TableField(value = "template_id")
+    private String templateId;
+
+    /**
+     * 1、归属配置;2、报价;3、影像上传;4、核保;5、缴费查询;6、保单下载;7、非车险查询
+     */
+    @TableField(value = "api_type")
+    private Integer apiType;
+
+    /**
+     * api名称
+     */
+    @TableField(value = "api_name")
+    private String apiName;
+
+    /**
+     * 请求路劲
+     */
+    @TableField(value = "url")
+    private String url;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+
+    public static List<PtlCrawlerApi> toPtlCrawlerApiList(String templateId, List<PtlCrawlerApiSaveVo> ptlCrawlerApiSaveVoList) {
+        return ptlCrawlerApiSaveVoList.stream().map(a -> new PtlCrawlerApi(templateId, a)).collect(Collectors.toList());
+    }
+
+    public PtlCrawlerApi(String templateId, PtlCrawlerApiSaveVo ptlCrawlerApiSaveVo) {
+        this.templateId = templateId;
+        this.apiType = ptlCrawlerApiSaveVo.getApiType();
+        this.apiName = Enum.valueOf(PtlCrawlerApiType.class, "API_" + ptlCrawlerApiSaveVo.getApiType()).getDesc();
+        this.url = ptlCrawlerApiSaveVo.getUrl();
+    }
+
+}

+ 81 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/po/PtlInsAttributionTemplate.java

@@ -0,0 +1,81 @@
+package com.jzg.commons.entity.agreement.po;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateSaveVo;
+import com.jzg.commons.util.idgen.IdGenerate;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import org.apache.ibatis.type.JdbcType;
+
+import java.io.Serializable;
+
+/**
+ * 保险公司归属信息模板配置
+ *
+ * @TableName ptl_ins_attribution_template
+ */
+@Data
+@Schema(description = "保险公司归属信息模板配置")
+@NoArgsConstructor
+@TableName(autoResultMap = true)
+public class PtlInsAttributionTemplate implements Serializable {
+    /**
+     *
+     */
+    @TableId(value = "id")
+    private String id;
+
+    @TableField(value = "title")
+    private String title;
+
+    @TableField(value = "name")
+    private String name;
+
+    /**
+     * api类型(1、api对接,2、python对接)
+     */
+    @TableField(value = "api_type")
+    private String apiType;
+
+    /**
+     * 保险公司ID
+     */
+    @TableField(value = "ins_company_id")
+    private String insCompanyId;
+
+    /**
+     * 保险公司名称
+     */
+    @TableField(value = "ins_company_name")
+    private String insCompanyName;
+
+    /**
+     * 字段集
+     */
+    @TableField(value = "fields", typeHandler = FastjsonTypeHandler.class)
+    private JSONArray fields;
+
+
+
+
+    public PtlInsAttributionTemplate(PtlInsAttributionTemplateSaveVo ptlInsAttributionTemplateSaveVo,String esmInsCompanyName) {
+        if((ptlInsAttributionTemplateSaveVo.getId() == null) || ptlInsAttributionTemplateSaveVo.getId().equals("")) {
+            this.id = IdGenerate.nextId();
+        }else{
+            this.id = ptlInsAttributionTemplateSaveVo.getId();
+        }
+        this.apiType = ptlInsAttributionTemplateSaveVo.getApiType();
+        this.insCompanyId = ptlInsAttributionTemplateSaveVo.getInsCompanyId();
+        this.insCompanyName = esmInsCompanyName;
+        this.fields = JSON.parseArray(JSON.toJSONString(ptlInsAttributionTemplateSaveVo.getFields()));
+        this.title = ptlInsAttributionTemplateSaveVo.getTitle();
+        this.name = ptlInsAttributionTemplateSaveVo.getName();
+    }
+
+}

+ 23 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/vo/PtlCrawlerApiSaveVo.java

@@ -0,0 +1,23 @@
+package com.jzg.commons.entity.agreement.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@Schema(description = "python对接接口保存信息")
+@AllArgsConstructor
+public class PtlCrawlerApiSaveVo implements Serializable {
+
+    private static final long serialVersionUID = -8746020505828059226L;
+
+    @Schema(description = "1、归属配置;2、报价;3、影像上传;4、核保;5、缴费查询;6、保单下载;7、非车险查询;8、人工核保状态刷新;9、撤销订单")
+    private Integer apiType;
+
+    @Schema(description = "url")
+    private String url;
+
+
+}

+ 21 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/vo/PtlInsAttributionTemplateQueryVo.java

@@ -0,0 +1,21 @@
+package com.jzg.commons.entity.agreement.vo;
+
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class PtlInsAttributionTemplateQueryVo extends PageRequest {
+
+    @Schema(description = "保险公司id")
+    private String companyId;
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "类型")
+    private String apiType;
+
+    @Schema(description = "字段信息")
+    private PtlInsAttributionTemplateVo.Field field;
+}

+ 106 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/vo/PtlInsAttributionTemplateSaveVo.java

@@ -0,0 +1,106 @@
+package com.jzg.commons.entity.agreement.vo;
+
+import com.jzg.commons.constants.PtlApiType;
+import com.jzg.commons.core.base.PageRequest;
+import com.jzg.commons.entity.agreement.dto.PtlAttributionTemplateDto;
+import com.jzg.commons.entity.agreement.po.PtlInsAttributionTemplate;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class PtlInsAttributionTemplateSaveVo{
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "标题")
+    private String title;
+
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "api类型")
+    private String apiType;
+
+    @Schema(description = "保险公司ID")
+    private String insCompanyId;
+
+    @Schema(description = "字段集")
+    private List<PtlAttributionTemplateDto> fields;
+
+    @Schema(description = "归属配置")
+    private String attributionConfig;
+
+    @Schema(description = "报价")
+    private String quotation;
+
+    @Schema(description = "影像上传")
+    private String imageUpload;
+
+    @Schema(description = "核保")
+    private String insurance;
+
+    @Schema(description = "缴费查询")
+    private String paymentQuery;
+
+    @Schema(description = "保单下载")
+    private String policyDownload;
+
+    @Schema(description = "非车险查询")
+    private String nonCarInsurance;
+
+    @Schema(description = "人工核保状态刷新")
+    private String manualStatusRefresh;
+
+    @Schema(description = "撤销订单")
+    private String revokeOrder;
+
+    @Schema(description = "api类型为2(python)必传")
+    private List<PtlCrawlerApiSaveVo> api;
+
+    /**
+     * 将python的连接 转换到api内
+     */
+    public void converApi(){
+        if(this.api==null){
+            this.api = new ArrayList<>();
+        }
+        if(this.apiType.equals(PtlApiType.PYTHON.getCode())){
+            if(this.attributionConfig!=null && !"".equals(this.attributionConfig)){
+                this.api.add(new PtlCrawlerApiSaveVo(1,this.attributionConfig));
+            }
+            if(this.quotation!=null &&!"".equals(this.quotation)){
+                this.api.add(new PtlCrawlerApiSaveVo(2,this.quotation));
+            }
+            if(this.imageUpload!=null &&!"".equals(this.imageUpload)){
+                this.api.add(new PtlCrawlerApiSaveVo(3,this.imageUpload));
+            }
+            if(this.insurance!=null &&!"".equals(this.insurance)){
+                this.api.add(new PtlCrawlerApiSaveVo(4,this.insurance));
+            }
+            if(this.paymentQuery!=null &&!"".equals(this.paymentQuery)){
+                this.api.add(new PtlCrawlerApiSaveVo(5,this.paymentQuery));
+            }
+            if(this.policyDownload!=null &&!"".equals(this.policyDownload)){
+                this.api.add(new PtlCrawlerApiSaveVo(6,this.policyDownload));
+            }
+            if(this.nonCarInsurance!=null &&!"".equals(this.nonCarInsurance)){
+                this.api.add(new PtlCrawlerApiSaveVo(7,this.nonCarInsurance));
+            }
+            if(this.manualStatusRefresh!=null &&!"".equals(this.manualStatusRefresh)){
+                this.api.add(new PtlCrawlerApiSaveVo(8,this.manualStatusRefresh));
+            }
+            if(this.revokeOrder!=null &&!"".equals(this.revokeOrder)){
+                this.api.add(new PtlCrawlerApiSaveVo(9,this.revokeOrder));
+            }
+        }
+    }
+
+    public PtlInsAttributionTemplateSaveVo(){
+        this.api = new ArrayList<>();
+        this.fields = new ArrayList<>();
+    }
+}

+ 149 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/vo/PtlInsAttributionTemplateVo.java

@@ -0,0 +1,149 @@
+package com.jzg.commons.entity.agreement.vo;
+
+import com.alibaba.fastjson.JSONObject;
+import com.jzg.commons.core.base.PageRequest;
+import com.jzg.commons.entity.agreement.po.PtlCrawlerApi;
+import com.jzg.commons.entity.agreement.po.PtlInsAttributionTemplate;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class PtlInsAttributionTemplateVo{
+
+    /**
+     *
+     */
+    private String id;
+
+    private String title;
+
+    private String name;
+
+    /**
+     * api类型(1、api对接,2、python对接)
+     */
+    private String apiType;
+
+    /**
+     * 保险公司ID
+     */
+    private String insCompanyId;
+
+    /**
+     * 保险公司名称
+     */
+    private String insCompanyName;
+
+    /**
+     * 字段集
+     */
+    private List<Field> fields;
+
+    private List<PtlCrawlerApi> api;
+
+
+    @Schema(description = "归属配置")
+    private String attributionConfig;
+
+    @Schema(description = "报价")
+    private String quotation;
+
+    @Schema(description = "影像上传")
+    private String imageUpload;
+
+    @Schema(description = "核保")
+    private String insurance;
+
+    @Schema(description = "缴费查询")
+    private String paymentQuery;
+
+    @Schema(description = "保单下载")
+    private String policyDownload;
+
+    @Schema(description = "非车险查询")
+    private String nonCarInsurance;
+
+    @Schema(description = "人工核保状态刷新")
+    private String manualStatusRefresh;
+
+    @Schema(description = "撤销订单")
+    private String revokeOrder;
+
+    @Data
+    public static class Field{
+        @Schema(description = "字段类型")
+        private String type;
+
+        @Schema(description = "字段")
+        private String field;
+
+        @Schema(description = "字段名称")
+        private String label;
+
+        @Schema(description = "默认值")
+        private String value;
+
+        @Schema(description = "是否可编辑")
+        private String isEdit;
+    }
+
+    public static List<PtlInsAttributionTemplateVo> convert(List<PtlInsAttributionTemplate> list){
+        List<PtlInsAttributionTemplateVo> vos = new ArrayList<>();
+        list.forEach(ptlInsAttributionTemplate -> {
+            PtlInsAttributionTemplateVo vo = new PtlInsAttributionTemplateVo();
+            vo.setId(ptlInsAttributionTemplate.getId());
+            vo.setApiType(ptlInsAttributionTemplate.getApiType());
+            vo.setInsCompanyId(ptlInsAttributionTemplate.getInsCompanyId());
+            vo.setInsCompanyName(ptlInsAttributionTemplate.getInsCompanyName());
+            vo.setTitle(ptlInsAttributionTemplate.getTitle());
+            vo.setName(ptlInsAttributionTemplate.getName());
+            List<Field> fields = new ArrayList<>();
+            if(ptlInsAttributionTemplate.getFields() != null) {
+                ptlInsAttributionTemplate.getFields().forEach(field -> {
+                    fields.add(JSONObject.parseObject(field.toString(), Field.class));
+                });
+                vo.setFields(fields);
+                vos.add(vo);
+            }
+        });
+        return vos;
+    }
+
+    public void setApi(List<PtlCrawlerApi> ptlCrawlerApiList){
+        ptlCrawlerApiList.forEach(ptlCrawlerApi -> {
+            switch(ptlCrawlerApi.getApiType()){
+                case 1:
+                    this.attributionConfig = ptlCrawlerApi.getUrl();
+                    break;
+                case 2:
+                    this.quotation = ptlCrawlerApi.getUrl();
+                    break;
+                case 3:
+                    this.imageUpload = ptlCrawlerApi.getUrl();
+                    break;
+                case 4:
+                    this.insurance = ptlCrawlerApi.getUrl();
+                    break;
+                case 5:
+                    this.paymentQuery = ptlCrawlerApi.getUrl();
+                    break;
+                case 6:
+                    this.policyDownload = ptlCrawlerApi.getUrl();
+                    break;
+                case 7:
+                    this.nonCarInsurance = ptlCrawlerApi.getUrl();
+                    break;
+                case 8:
+                    this.manualStatusRefresh = ptlCrawlerApi.getUrl();
+                    break;
+                case 9:
+                    this.revokeOrder = ptlCrawlerApi.getUrl();
+                    break;
+            }
+        });
+    }
+
+}

+ 37 - 0
commons/src/main/java/com/jzg/commons/entity/dto/PosterAdd.java

@@ -0,0 +1,37 @@
+package com.jzg.commons.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+@Schema(description = "广告位新增")
+public class PosterAdd {
+
+    @Schema(description = "标题")
+    @NotBlank(message = "标题不能为空")
+    private String title;
+
+    @Schema(description = "所属机构id")
+    @NotNull(message = "所属机构id不能为空")
+    private Long orgId;
+
+    @Schema(description = "广告图设输入URL后,支持点击,点击广告图前往URL页面")
+    private String url;
+
+    @Schema(description = "是否子机构发布 默认为否(0),选择是(1),取当前发布机构包含的子机构,发布后子机构即可读取该广告位")
+    @NotNull(message = "请选择是否子机构发布")
+    private int isLevel;
+
+    @Schema(description = "图片")
+    @NotBlank(message = "图片不能为空")
+    private String image;
+
+    @Schema(description = "子级机构ID")
+    private List<String> levelOrgIds;
+
+}

+ 41 - 0
commons/src/main/java/com/jzg/commons/entity/dto/PosterEnd.java

@@ -0,0 +1,41 @@
+package com.jzg.commons.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+@Schema(description = "广告位新增")
+public class PosterEnd {
+
+    @Schema(description = "id")
+    @NotNull(message = "id不能为空")
+    private Long id;
+
+    @Schema(description = "标题")
+    @NotBlank(message = "标题不能为空")
+    private String title;
+
+    @Schema(description = "所属机构id")
+    @NotNull(message = "所属机构id不能为空")
+    private Long orgId;
+
+    @Schema(description = "广告图设输入URL后,支持点击,点击广告图前往URL页面")
+    private String url;
+
+    @Schema(description = "是否子机构发布 默认为否(0),选择是(1),取当前发布机构包含的子机构,发布后子机构即可读取该广告位")
+    @NotNull(message = "请选择是否子机构发布")
+    private int isLevel;
+
+    @Schema(description = "图片")
+    @NotBlank(message = "图片不能为空")
+    private String image;
+
+    @Schema(description = "子级机构ID")
+    private List<String> levelOrgIds;
+
+}

+ 18 - 0
commons/src/main/java/com/jzg/commons/entity/dto/PosterParam.java

@@ -0,0 +1,18 @@
+package com.jzg.commons.entity.dto;
+
+
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "广告位查询")
+public class PosterParam extends PageRequest {
+
+    @Schema(description = "查询参数 标题")
+    private String title;
+
+    @Schema(description = "查询参数 机构")
+    private String orgName;
+
+}

+ 50 - 0
commons/src/main/java/com/jzg/commons/entity/dto/QrBarcodeConfigAdd.java

@@ -0,0 +1,50 @@
+package com.jzg.commons.entity.dto;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Data
+@Schema(description = "二维码配置新增")
+public class QrBarcodeConfigAdd {
+
+    /**
+     * 保险公司id
+     */
+    @Schema(description = "保险公司id")
+    @NotBlank(message = "保险公司id不能为空")
+    private String companyId;
+
+
+    /**
+     * 保险公司代码
+     */
+    @Schema(description = "保险公司代码")
+    @NotBlank(message = "保险公司代码不能为空")
+    private String companyCode;
+
+    /**
+     * 保险公司名称简称
+     */
+    @Schema(description = "保险公司名称简称")
+    @NotBlank(message = "保险公司名称简称不能为空")
+    private String companyName;
+
+    /**
+     * 类型   0:url   1:base码   2:h5
+     */
+    @Schema(description = "类型 0:url   1:base码   2:h5")
+    @NotBlank(message = "类型不能为空")
+    private String type;
+
+    /**
+     * 请求类型 1:api 2:python
+     */
+    @Schema(description = "请求类型 1:api 2:python")
+    @NotBlank(message = "请求类型不能为空")
+    private String apiType;
+
+
+}

+ 57 - 0
commons/src/main/java/com/jzg/commons/entity/dto/QrBarcodeConfigEnd.java

@@ -0,0 +1,57 @@
+package com.jzg.commons.entity.dto;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Data
+@Schema(description = "二维码配置修改")
+public class QrBarcodeConfigEnd {
+
+
+    /**
+     * 主键/自增
+     */
+    @Schema(description = "主键")
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /**
+     * 保险公司id
+     */
+    @Schema(description = "保险公司id")
+    @NotBlank(message = "保险公司id不能为空")
+    private String companyId;
+
+    /**
+     * 保险公司代码
+     */
+    @Schema(description = "保险公司代码")
+    @NotBlank(message = "保险公司代码不能为空")
+    private String companyCode;
+
+    /**
+     * 保险公司名称简称
+     */
+    @Schema(description = "保险公司名称简称")
+    @NotBlank(message = "保险公司名称简称不能为空")
+    private String companyName;
+
+    /**
+     * 类型   0:url   1:base码   2:h5
+     */
+    @Schema(description = "类型 0:url   1:base码   2:h5")
+    @NotBlank(message = "类型不能为空")
+    private String type;
+
+    /**
+     * 请求类型 1:api 2:python
+     */
+    @Schema(description = "请求类型 1:api 2:python")
+    @NotBlank(message = "请求类型不能为空")
+    private String apiType;
+
+
+}

+ 15 - 0
commons/src/main/java/com/jzg/commons/entity/dto/QrBarcodeConfigParam.java

@@ -0,0 +1,15 @@
+package com.jzg.commons.entity.dto;
+
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+@Schema(description = "二维码配置查询参数")
+@Data
+public class QrBarcodeConfigParam extends PageRequest {
+
+
+    @Schema(description = "保险公司")
+    private String companyName;
+}

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/dto/SysOrganizationParam.java

@@ -16,6 +16,9 @@ public class SysOrganizationParam extends PageRequest {
     @Schema(description = "搜索参数 输入姓名,手机号,工号查找")
     private String param;
 
+    @Schema(description = "队伍类型")
+    private String attribute;
+
 
 
 

+ 34 - 0
commons/src/main/java/com/jzg/commons/entity/po/InsCompanyClause.java

@@ -0,0 +1,34 @@
+package com.jzg.commons.entity.po;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.core.base.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "特约条款")
+public class InsCompanyClause extends BaseModel {
+
+    @TableId(value = "id")
+    @Schema(description = "主键")
+    private String id;
+
+    @Schema(description = "险种code")
+    private String riskCode;
+
+    @Schema(description = "保险公司id")
+    private String companyId;
+
+    @Schema(description = "条款名称")
+    private String clauseName;
+
+    @Schema(description = "条款code")
+    private String clauseCode;
+
+    @Schema(description = "条款内容")
+    private String clauseContent;
+
+
+}

+ 52 - 0
commons/src/main/java/com/jzg/commons/entity/po/QrBarcodeConfig.java

@@ -0,0 +1,52 @@
+package com.jzg.commons.entity.po;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jzg.commons.core.base.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "二维码配置")
+@TableName("qr_barcode_config")
+public class QrBarcodeConfig extends BaseModel {
+
+    /**
+     * 主键/自增
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 保险公司id
+     */
+    private Long companyId;
+
+    /**
+     * 保险公司id
+     */
+    private String companyCode;
+
+    /**
+     * 保险公司名称简称
+     */
+    private String companyName;
+
+    /**
+     * 类型   0:url   1:base码   2:h5
+     */
+    private Integer type;
+
+    /**
+     * 请求类型 1:api 2:python
+     */
+    private Integer apiType;
+
+    /**
+     * 系统编码
+     */
+    private String systemCode;
+
+}

+ 87 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysActivity.java

@@ -0,0 +1,87 @@
+package com.jzg.commons.entity.po;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.util.idgen.IdGenerate;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2025/2/5 14:17
+ */
+
+@TableName("sys_activity")
+@Schema(description = "抽奖活动表")
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class SysActivity implements Serializable {
+    @TableId(value = "id")
+    @Schema(description = "主键")
+    private String id;
+    @TableField(value = "act_name")
+    @Schema(description = "活动名称")
+    private String actName;
+
+    @TableField(value = "act_method")
+    @Schema(description = "活动方式 1 九宫格 2 大转盘")
+    private String actMethod;
+
+    @TableField(value = "act_start_time")
+    @Schema(description = "活动开始时间")
+    private String actStartTime;
+
+    @TableField(value = "act_end_time")
+    @Schema(description = "活动结束时间")
+    private String actEndTime;
+
+    @Schema(description = "活动创建时间")
+    @TableField(value = "create_time")
+    private String createTime;
+
+    @TableField(value = "create_by")
+    @Schema(description = "活动创建人")
+    private String createBy;
+
+    @TableField(value = "act_dept")
+    @Schema(description = "活动所属机构")
+    private String actDept;
+
+    @TableField(value = "act_status")
+    @Schema(description = "活动状态 1 未开始 2 进行中 3已结束")
+    private String actStatus;
+
+    @TableField(value = "is_delete")
+    @Schema(description = "是否删除 1 是 0 否")
+    private String isDelete;
+
+    @TableField(value = "is_end")
+    @Schema(description = "是否结束 1 是 0 否")
+    private String isEnd;
+
+    @TableField(exist = false)
+    @Schema(description = "奖项列表")
+    private List<SysActivityAward> awardList;
+
+
+    public SysActivity(String userId) {
+        this.id = IdGenerate.nextId();
+        this.createBy = userId;
+        this.createTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        this.isDelete = "0";
+        this.isEnd = "0";
+    }
+
+}

+ 70 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysActivityAward.java

@@ -0,0 +1,70 @@
+package com.jzg.commons.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jzg.commons.util.idgen.IdGenerate;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author quchen
+ * @date 2025/2/5 16:33
+ */
+
+@Data
+@TableName("sys_activity_award")
+@Schema(description = "抽奖活动奖品表")
+public class SysActivityAward implements Serializable {
+    @TableId(value = "id")
+    @Schema(description = "主键")
+    private String id;
+
+    @TableField(value = "award_name")
+    @Schema(description = "奖品名称")
+    private String awardName;
+
+    @TableField(value = "award_type")
+    @Schema(description = "奖品类型 1 现金 2 增值服务")
+    private String awardType;
+
+    @TableField(value = "award_desc")
+    @Schema(description = "奖品描述")
+    private String awardDesc;
+
+    @TableField(value = "award_img")
+    @Schema(description = "奖品图片id")
+    private String awardImg;
+
+    @TableField(value = "award_num")
+    @Schema(description = "奖品序号")
+    private String awardNum;
+
+    @TableField(value = "activity_id")
+    @Schema(description = "活动id")
+    private String activityId;
+
+    @TableField(value = "award_cash_type")
+    private String awardCashType;
+
+    @TableField(value = "award_fixed_amount")
+    private BigDecimal awardFixedAmount;
+
+    @TableField(value = "award_min_amount")
+    private BigDecimal awardMinAmount;
+
+    @TableField(value = "award_max_amount")
+    private BigDecimal awardMaxAmount;
+
+    @TableField(exist = false)
+    private String imageUrl;
+
+
+
+    public SysActivityAward(){
+        this.id = IdGenerate.nextId();
+    }
+}

+ 33 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysPoster.java

@@ -0,0 +1,33 @@
+package com.jzg.commons.entity.po;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jzg.commons.core.base.BaseModel;
+import lombok.Data;
+
+@Data
+@TableName("sys_poster")
+public class SysPoster extends BaseModel {
+
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    private String title;
+
+    private Long orgId;
+
+    private String url;
+
+    private int isLevel;
+
+    private String image;
+
+    private String systemCode;
+
+    @TableField(exist = false)
+    private String orgName;
+
+}

+ 21 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysPosterOrg.java

@@ -0,0 +1,21 @@
+package com.jzg.commons.entity.po;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("sys_poster_org")
+public class SysPosterOrg {
+
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    private Long posterId;
+
+    private Long orgId;
+
+
+}

+ 22 - 0
commons/src/main/java/com/jzg/commons/entity/vo/CompanyClauseVo.java

@@ -0,0 +1,22 @@
+package com.jzg.commons.entity.vo;
+
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class CompanyClauseVo extends PageRequest {
+
+    @Schema(description = "保险公司id")
+    private String companyId;
+
+    @Schema(description = "险种信息")
+    private String riskCode;
+
+    @Schema(description = "条款名称")
+    private String clauseName;
+
+    @Schema(description = "条款内容")
+    private String clauseContent;
+
+}

+ 55 - 0
commons/src/main/java/com/jzg/commons/entity/vo/QrBarcodeConfigVo.java

@@ -0,0 +1,55 @@
+package com.jzg.commons.entity.vo;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.core.base.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "二维码配置VO")
+public class QrBarcodeConfigVo extends BaseModel {
+
+    /**
+     * 主键/自增
+     */
+    private String id;
+
+    /**
+     * 保险公司id
+     */
+    @Schema(description = "保险公司id")
+    private String companyId;
+
+    /**
+     * 保险公司代码
+     */
+    @Schema(description = "保险公司代码")
+    private String companyCode;
+
+    /**
+     * 保险公司名称简称
+     */
+    @Schema(description = "保险公司名称简称")
+    private String companyName;
+
+    /**
+     * 类型   0:url   1:base码   2:h5
+     */
+    @Schema(description = "类型 0:url   1:base码   2:h5")
+    private String type;
+
+    /**
+     * 请求类型 1:api 2:python
+     */
+    @Schema(description = "请求类型 1:api 2:python")
+    private String apiType;
+
+    /**
+     * 系统编码
+     */
+    @Schema(description = "系统编码")
+    private String systemCode;
+
+}

+ 60 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysActivityAwardVo.java

@@ -0,0 +1,60 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2025/2/6 11:04
+ */
+
+@Data
+public class SysActivityAwardVo {
+
+    @Schema(description = "奖品列表")
+    private List<AwardList> awardList;
+
+    @Schema(description = "活动id")
+    private String activityId;
+
+    @Data
+    @NoArgsConstructor
+    public static class AwardList implements Serializable {
+        @Schema(description = "奖品id")
+        private String awardId;
+
+        @Schema(description = "奖品名称")
+        private String awardName;
+
+        @Schema(description = "奖品类型 1 现金 2 增值服务")
+        private String awardType;
+
+        @Schema(description = "奖品描述")
+        private String awardDesc;
+
+        @Schema(description = "奖品图片id")
+        private String awardImg;
+
+        @Schema(description = "奖品序号")
+        private String awardNum;
+
+        @Schema(description = "现金类型 1 固定金额 2 区间金额")
+        private String awardCashType;
+
+        @Schema(description = "固定现金额")
+        private BigDecimal awardFixedAmount;
+
+        @Schema(description = "最小现金额")
+        private BigDecimal awardMinAmount;
+
+        @Schema(description = "最大现金额")
+        private BigDecimal awardMaxAmount;
+
+    }
+
+}

+ 69 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysActivityVo.java

@@ -0,0 +1,69 @@
+package com.jzg.commons.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2025/2/5 14:47
+ */
+
+@Data
+public class SysActivityVo extends PageRequest {
+    @Schema(description = "主键")
+    private String id;
+
+    @Schema(description = "活动名称")
+    private String actName;
+
+    @Schema(description = "活动方式 1 九宫格 2 大转盘")
+    private String actMethod;
+
+    @Schema(description = "活动状态")
+    private String actStatus;
+
+    @Schema(description = "活动开始时间")
+    private String actStartTime;
+
+    @Schema(description = "活动结束时间")
+    private String actEndTime;
+
+    @Schema(description = "活动所属机构")
+    private String actDept;
+    @Schema(description = "活动下的部门id")
+    private List<String> deptIds;
+
+    @Schema(description = "奖项id")
+    private String awardId;
+
+    @Schema(description = "奖项名称")
+    private String awardName;
+
+    @Schema(description = "奖项类型 1 现金 2 增值服务")
+    private String awardType;
+
+    @Schema(description = "奖项图片id")
+    private String awardImg;
+
+    @Schema(description = "现金类型 1 固定金额 2 区间金额")
+    private String awardCashType;
+
+    @Schema(description = "固定现金额")
+    private String awardFixedAmount;
+
+    @Schema(description = "最小现金额")
+    private String awardMinAmount;
+
+    @Schema(description = "最大现金额")
+    private String awardMaxAmount;
+
+    @Schema(description = "是否删除 1 是 0 否")
+    private String isDelete;
+
+}

+ 2 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysOrganizationUserLinkQueryVo.java

@@ -6,4 +6,6 @@ import lombok.Data;
 @Data
 public class SysOrganizationUserLinkQueryVo extends PageRequest {
     private String id;
+
+    private String name;
 }

+ 2 - 1
commons/src/main/java/com/jzg/commons/entity/vo/SysOrganizationUserLinkVo.java

@@ -8,10 +8,11 @@ public class SysOrganizationUserLinkVo{
     private String id;
     private String userId;
     private String mobile;
-    private String uname;
     private String type;
     private String deptId;
     private String deptName;
     private String status;
     private String accountStatus;
+    private String isEnable;
+    private String manager;
 }

+ 4 - 4
commons/src/main/java/com/jzg/commons/exception/SystemException.java

@@ -15,10 +15,10 @@ public class SystemException extends RuntimeException {
         this.code = code;
     }
 
-    public SystemException(String code, String message, Throwable cause) {
-        super(message, cause);
-        this.code = code;
-    }
+//    public SystemException(String code, Throwable cause) {
+//        super(message, cause);
+//        this.code = code;
+//    }
 
     public String getCode() {
         return code;

+ 6 - 1
gateway/pom.xml

@@ -25,6 +25,11 @@
         </dependency>
     </dependencies>
     <build>
-        <finalName>gateway</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
     </build>
 </project>

+ 20 - 0
gateway/src/main/resources/application-dev.yml

@@ -0,0 +1,20 @@
+spring:
+  cloud:
+    gateway:
+      routes:
+        - id: auth_route
+          uri: http://localhost:8081/
+          predicates:
+            - Path=/auth/**
+
+        - id: platform_route
+          uri: http://localhost:8083/
+          predicates:
+            - Path=/userRole/**,/system/**,/file/**,/user/**,/esmInsCompany/**,/jyxConfig/**,/qrBarcode/**
+
+        - id: tenant_route
+          uri: http://localhost:8084/
+          predicates:
+            - Path=/tenant/**,/dept/**,/area/**,/dict/**,/userInfo/**,/sysOrganization/**,/activity/**
+
+

+ 21 - 0
gateway/src/main/resources/application-test.yml

@@ -0,0 +1,21 @@
+
+spring:
+  cloud:
+    gateway:
+      routes:
+        - id: auth_route
+          uri: http://172.24.144.223:9081/
+          predicates:
+            - Path=/auth/**
+
+        - id: platform_route
+          uri: http://172.24.144.223:9083/
+          predicates:
+            - Path=/userRole/**,/system/**,/file/**,/user/**,/esmInsCompany/**,/jyxConfig/**,/qrBarcode/**
+
+        - id: tenant_route
+          uri: http://172.24.144.223:9084/
+          predicates:
+            - Path=/tenant/**,/dept/**,/area/**,/dict/**,/userInfo/**,/sysOrganization/**,/activity/**
+
+

+ 2 - 20
gateway/src/main/resources/application.yml

@@ -1,26 +1,8 @@
 server:
   port: 8001
 spring:
+  profiles:
+    active: test
   main:
     web-application-type: reactive
     allow-bean-definition-overriding: true
-  cloud:
-    gateway:
-
-      routes:
-        - id: auth_route
-          uri: http://localhost:8081/
-          predicates:
-            - Path=/auth/**
-
-        - id: platform_route
-          uri: http://localhost:8083/
-          predicates:
-            - Path=/userRole/**,/system/**,/file/**,/user/**,/esmInsCompany/**,/jyxConfig/**,/sysDept/**
-
-        - id: tenant_route
-          uri: http://localhost:8084/
-          predicates:
-            - Path=/tenant/**,/dept/**,/area/**,/dict/**,/userInfo/**,/sysOrganization/**
-
-

+ 20 - 1
platform/pom.xml

@@ -5,12 +5,26 @@
         <groupId>com.jzg</groupId>
         <artifactId>jzg</artifactId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>platform</artifactId>
     <packaging>jar</packaging>
     <name>platform Maven Webapp</name>
     <url>http://maven.apache.org</url>
     <dependencies>
+        <!-- sleuth服务追踪的启动依赖-->
+<!--        <dependency>-->
+<!--            <groupId>org.springframework.cloud</groupId>-->
+<!--            <artifactId>spring-cloud-starter-sleuth</artifactId>-->
+<!--            <version>3.0.0</version>-->
+<!--        </dependency>-->
+
+<!--        &lt;!&ndash; zipkin服务追踪的启动依赖&ndash;&gt;-->
+<!--        <dependency>-->
+<!--            <groupId>org.springframework.cloud</groupId>-->
+<!--            <artifactId>spring-cloud-starter-zipkin</artifactId>-->
+<!--            <version>2.2.8.RELEASE</version>-->
+<!--        </dependency>-->
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -69,6 +83,11 @@
         </dependency>
     </dependencies>
     <build>
-        <finalName>platform</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
     </build>
 </project>

+ 0 - 6
platform/src/main/java/com/jzg/PlatFormApplication.java

@@ -8,12 +8,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 @SpringBootApplication
 public class PlatFormApplication {
     public static void main(String[] args) {
-//        /*
-//         * 指定使用的日志框架,否则将会告警
-//         * RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.InternalThreadLocalMap).
-//         * RocketMQLog:WARN Please initialize the logger system properly.
-//         */
-//        System.setProperty("rocketmq.client.logUseSlf4j", "true");
         SpringApplication.run(PlatFormApplication.class, args);
     }
 

+ 44 - 0
platform/src/main/java/com/jzg/controller/AttributionTemplateController.java

@@ -0,0 +1,44 @@
+package com.jzg.controller;
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.agreement.po.PtlInsAttributionTemplate;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateQueryVo;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateSaveVo;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateVo;
+import com.jzg.service.PtlInsAttributionTemplateService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+
+@RestController
+@RequestMapping("/manager/attributionTemplate")
+@Tag(name="账号归属配置")
+public class AttributionTemplateController {
+
+    @Autowired
+    private PtlInsAttributionTemplateService ptlInsAttributionTemplateService;
+
+    /**
+     * 分页查询
+     * @param ptlInsAttributionTemplateVo
+     * @return
+     */
+    @Operation(summary = "获取账号归属配置",description = "获取账号归属配置")
+    @PostMapping(value = "getList")
+    public HttpResult<List<PtlInsAttributionTemplateVo>> getList(@RequestBody PtlInsAttributionTemplateQueryVo ptlInsAttributionTemplateVo){
+        return HttpResult.ok(ptlInsAttributionTemplateService.getList(ptlInsAttributionTemplateVo));
+    }
+
+    @Operation(summary = "提交模板信息",description = "提交模板信息")
+    @PostMapping(value = "submit")
+    public HttpResult<Object> saveTemplate(@RequestBody List<PtlInsAttributionTemplateSaveVo> ptlInsAttributionTemplateSaveVo) {
+        ptlInsAttributionTemplateSaveVo.forEach(PtlInsAttributionTemplateSaveVo::converApi);
+        return ptlInsAttributionTemplateService.submit(ptlInsAttributionTemplateSaveVo) ? HttpResult.ok("提交模版信息成功") : HttpResult.error("提交模版信息失败");
+    }
+
+}

+ 65 - 0
platform/src/main/java/com/jzg/controller/ClauseController.java

@@ -0,0 +1,65 @@
+package com.jzg.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.InsCompanyClause;
+import com.jzg.commons.entity.vo.CompanyClauseVo;
+import com.jzg.service.InsCompanyClauseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 特别约定管理
+ */
+@RestController
+@RequestMapping("/manager/clause")
+public class ClauseController {
+
+    @Autowired
+    private InsCompanyClauseService insCompanyClauseService;
+
+    /**
+     * 特别约定分页
+     * @param companyClauseVo
+     * @return
+     */
+    @PostMapping(value = "getClausePage")
+    public HttpResult<Page<InsCompanyClause>> getClausePage(@RequestBody CompanyClauseVo companyClauseVo){
+        Page page = companyClauseVo.getPage();
+        return HttpResult.ok(insCompanyClauseService.getClausePage(page,companyClauseVo));
+    }
+
+    /**
+     * 添加特别约定
+     * @param insCompanyClause
+     * @return
+     */
+    @PostMapping(value = "addClause")
+    public HttpResult addClause(@RequestBody InsCompanyClause insCompanyClause){
+        return insCompanyClauseService.addClause(insCompanyClause)? HttpResult.ok("添加特约成功") : HttpResult.error("添加特约失败");
+    }
+
+    /**
+     * 修改特别约定
+     * @param insCompanyClause
+     * @return
+     */
+    @PostMapping(value = "updateClause")
+    public HttpResult updateClause(@RequestBody InsCompanyClause insCompanyClause){
+        return insCompanyClauseService.updateClause(insCompanyClause)? HttpResult.ok("修改特约成功") : HttpResult.error("修改特约失败");
+    }
+
+    /**
+     * 删除特别约定
+     * @param insCompanyClause
+     * @return
+     */
+    @PostMapping(value = "deleteClause")
+    public HttpResult deleteClause(@RequestBody InsCompanyClause insCompanyClause){
+        return insCompanyClauseService.removeById(insCompanyClause.getId())? HttpResult.ok("删除特约成功") : HttpResult.error("删除特约失败");
+    }
+
+}

+ 6 - 1
platform/src/main/java/com/jzg/controller/FileUploadController.java

@@ -44,8 +44,10 @@ public class FileUploadController extends BaseController {
     @PostMapping("/upload")
     @Operation(summary = "文件上传接口", description = "文件上传接口")
     public HttpResult uploadFile(@RequestParam("file") MultipartFile file) {
+        System.out.printf("调用文件上传接口");
         try {
             // 获取文件原始名称和扩展名
+            System.out.printf("1111111111111");
             String originalFileName = file.getOriginalFilename();
             String extension = getFileExtension(originalFileName);
 
@@ -54,17 +56,20 @@ public class FileUploadController extends BaseController {
             String objectName = generateObjectName(originalFileName, fileMD5, extension);
             String fileETag = FileUtils.getFileETag(file);
 
+            System.out.printf("22222222222222222");
             // 查找文件是否已经存在于MinIO
             if (isFileExistsInMinIO(objectName, fileETag)) {
                 return HttpResult.ok(getFileFromDatabase(fileETag,objectName, extension));
             }
 
+            System.out.printf("333333333333333333333");
             //如果文件不存在,执行上传操作
             SysUploadFiles sysUploadFiles = uploadFileToMinIO(file, objectName, fileETag, extension);
-
+            System.out.printf("444444444444444444444444444");
             return HttpResult.ok(sysUploadFiles);
         } catch (Exception e) {
             e.printStackTrace();
+            System.out.printf("eeeeeeeeeeeeeeeeeeeeeeeeee");
             return HttpResult.error("文件上传失败: " + e.getMessage());
         }
     }

+ 69 - 0
platform/src/main/java/com/jzg/controller/QrBarcodeController.java

@@ -0,0 +1,69 @@
+package com.jzg.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.QrBarcodeConfigAdd;
+import com.jzg.commons.entity.dto.QrBarcodeConfigEnd;
+import com.jzg.commons.entity.dto.QrBarcodeConfigParam;
+import com.jzg.commons.entity.po.QrBarcodeConfig;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.service.QrBarcodeService;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Validated
+@Tag(name="二维码配置")
+@RestController
+@RequestMapping("/qrBarcode")
+public class QrBarcodeController {
+
+
+    @Autowired
+    private QrBarcodeService qrBarcodeService;
+
+
+    @PostMapping("/queryPage")
+    @Schema(description = "二维码配置分页查询")
+    public HttpResult queryPage(@RequestBody QrBarcodeConfigParam barcodeConfigParam) {
+        return qrBarcodeService.queryPage(barcodeConfigParam);
+    }
+
+
+    @GetMapping("/queryById/{id}")
+    @Schema(description = "二维码配置查询")
+    public HttpResult queryById(@PathVariable String id) {
+        return qrBarcodeService.queryById(id);
+    }
+
+
+    @PostMapping("/save")
+    @Schema(description = "二维码配置新增")
+    public HttpResult save(@Valid  @RequestBody QrBarcodeConfigAdd barcodeConfigAdd) {
+        LambdaQueryWrapper<QrBarcodeConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(QrBarcodeConfig::getCompanyCode, barcodeConfigAdd.getCompanyCode());
+        AssertionUtils.isFail(qrBarcodeService.count(lambdaQueryWrapper) > 0, "保险公司编码重复");
+        return qrBarcodeService.save(BeanUtil.copyProperties(barcodeConfigAdd, QrBarcodeConfig.class)) ? HttpResult.ok("保存成功") : HttpResult.error("保存失败");
+    }
+
+    @PostMapping("/updateById")
+    @Schema(description = "二维码配置修改")
+    public HttpResult updateById(@Valid @RequestBody QrBarcodeConfigEnd barcodeConfigEnd) {
+        LambdaQueryWrapper<QrBarcodeConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(QrBarcodeConfig::getCompanyCode, barcodeConfigEnd.getCompanyCode());
+        lambdaQueryWrapper.ne(QrBarcodeConfig::getId, barcodeConfigEnd.getId());
+        AssertionUtils.isFail(qrBarcodeService.count(lambdaQueryWrapper) > 0, "保险公司编码重复");
+        return qrBarcodeService.updateById(BeanUtil.copyProperties(barcodeConfigEnd, QrBarcodeConfig.class)) ? HttpResult.ok("修改成功") : HttpResult.error("修改失败");
+    }
+
+    @GetMapping("/delete/{id}")
+    @Schema(description = "二维码配置删除")
+    public HttpResult delete(@PathVariable String id) {
+        return qrBarcodeService.removeById(id) ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
+    }
+
+}

+ 0 - 1
platform/src/main/java/com/jzg/controller/UserRoleController.java

@@ -11,7 +11,6 @@ import com.jzg.commons.util.StringUtils;
 import com.jzg.service.UserRoleService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
-import okhttp3.internal.platform.Platform;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;

+ 25 - 0
platform/src/main/java/com/jzg/mapper/InsCompanyClauseMapper.java

@@ -0,0 +1,25 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.entity.dto.SysUserParam;
+import com.jzg.commons.entity.po.InsCompanyClause;
+import com.jzg.commons.entity.po.SysUser;
+import com.jzg.commons.entity.vo.SysUserVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* @author dongxin
+* @description 针对表【ins_company_clause】的数据库操作Mapper
+* @createDate 2025-01-13 10:53:51
+* @Entity generator.domain.SysUser
+*/
+@Mapper
+public interface InsCompanyClauseMapper extends BaseMapper<InsCompanyClause> {
+
+}
+
+
+
+

+ 10 - 0
platform/src/main/java/com/jzg/mapper/PtlCrawlerApiMapper.java

@@ -0,0 +1,10 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.agreement.po.PtlCrawlerApi;
+import com.jzg.commons.entity.agreement.po.PtlInsAttributionTemplate;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PtlCrawlerApiMapper extends BaseMapper<PtlCrawlerApi> {
+}

+ 9 - 0
platform/src/main/java/com/jzg/mapper/PtlInsAttributionTemplateMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.agreement.po.PtlInsAttributionTemplate;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PtlInsAttributionTemplateMapper extends BaseMapper<PtlInsAttributionTemplate> {
+}

+ 10 - 0
platform/src/main/java/com/jzg/mapper/QrBarcodeMapper.java

@@ -0,0 +1,10 @@
+package com.jzg.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.po.QrBarcodeConfig;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface QrBarcodeMapper extends BaseMapper<QrBarcodeConfig> {
+}

+ 1 - 0
platform/src/main/java/com/jzg/service/EsmInsCompanyService.java

@@ -37,6 +37,7 @@ public interface EsmInsCompanyService extends IService<EsmInsCompany> {
      * @return
      */
     EsmInsCompany isExists(String companyId);
+    EsmInsCompany isExistsByCompanyCode(String companyCode);
 
     EsmInsCompany findInsCompanyByName(String companyName);
 

+ 46 - 0
platform/src/main/java/com/jzg/service/InsCompanyClauseService.java

@@ -0,0 +1,46 @@
+package com.jzg.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.dto.SysUserAddParam;
+import com.jzg.commons.entity.dto.SysUserEditParam;
+import com.jzg.commons.entity.dto.SysUserParam;
+import com.jzg.commons.entity.po.InsCompanyClause;
+import com.jzg.commons.entity.po.SysUser;
+import com.jzg.commons.entity.vo.CompanyClauseVo;
+import com.jzg.commons.entity.vo.SysUserVo;
+import com.jzg.commons.entity.vo.UpAndDownVo;
+
+import java.util.List;
+
+/**
+* @author dongxin
+* @description 针对表【InsCompanyClause】的数据库操作Service
+* @createDate 2025-01-13 10:53:51
+*/
+public interface InsCompanyClauseService extends IService<InsCompanyClause> {
+
+    /**
+     * 特别约定分页
+     * @param page
+     * @param companyClauseVo
+     * @return
+     */
+    public Page<InsCompanyClause> getClausePage(Page page, CompanyClauseVo companyClauseVo);
+
+    /**
+     * 添加特别约定
+     * @param insCompanyClause
+     * @return
+     */
+    public boolean addClause(InsCompanyClause insCompanyClause);
+
+
+    /**
+     * 修改特别约定
+     * @param insCompanyClause
+     * @return
+     */
+    public boolean updateClause(InsCompanyClause insCompanyClause);
+
+}

+ 19 - 0
platform/src/main/java/com/jzg/service/PtlCrawlerApiService.java

@@ -0,0 +1,19 @@
+package com.jzg.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.agreement.po.PtlCrawlerApi;
+import com.jzg.commons.entity.agreement.po.PtlInsAttributionTemplate;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateQueryVo;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateSaveVo;
+
+import java.util.List;
+
+/**
+* @author
+* @description 针对表【PtlInsAttributionTemplateService】的数据库操作Service
+* @createDate 2025-01-13 10:53:51
+*/
+public interface PtlCrawlerApiService extends IService<PtlCrawlerApi> {
+
+}

+ 33 - 0
platform/src/main/java/com/jzg/service/PtlInsAttributionTemplateService.java

@@ -0,0 +1,33 @@
+package com.jzg.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.agreement.po.PtlInsAttributionTemplate;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateQueryVo;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateSaveVo;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateVo;
+
+import java.util.List;
+
+/**
+* @author
+* @description 针对表【PtlInsAttributionTemplateService】的数据库操作Service
+* @createDate 2025-01-13 10:53:51
+*/
+public interface PtlInsAttributionTemplateService extends IService<PtlInsAttributionTemplate> {
+
+    /**
+     * 分页查询
+     * @param page
+     * @param ptlInsAttributionTemplateVo
+     * @return
+     */
+    public List<PtlInsAttributionTemplateVo> getList(PtlInsAttributionTemplateQueryVo ptlInsAttributionTemplateVo);
+
+    /**
+     * 保存 保险公司归属信息模版
+     * @param ptlInsAttributionTemplateSaveVo
+     * @return
+     */
+    public boolean submit(List<PtlInsAttributionTemplateSaveVo> ptlInsAttributionTemplateSaveVo);
+}

+ 14 - 0
platform/src/main/java/com/jzg/service/QrBarcodeService.java

@@ -0,0 +1,14 @@
+package com.jzg.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.QrBarcodeConfigParam;
+import com.jzg.commons.entity.po.QrBarcodeConfig;
+
+public interface QrBarcodeService extends IService<QrBarcodeConfig> {
+
+
+    HttpResult queryPage(QrBarcodeConfigParam barcodeConfigParam);
+
+    HttpResult queryById(String id);
+}

+ 7 - 0
platform/src/main/java/com/jzg/service/impl/EsmInsCompanyServiceImpl.java

@@ -61,6 +61,13 @@ public class EsmInsCompanyServiceImpl extends ServiceImpl<EsmInsCompanyMapper, E
         return esmInsCompany;
     }
 
+    @Override
+    public EsmInsCompany isExistsByCompanyCode(String companyCode) {
+        EsmInsCompany esmInsCompany = baseMapper.selectOne(new LambdaQueryWrapper<EsmInsCompany>().eq(EsmInsCompany::getCompanyCode, companyCode));
+        AssertionUtils.isEmpty(esmInsCompany, "保险公司不存在");
+        return esmInsCompany;
+    }
+
     @Override
     public EsmInsCompany findInsCompanyByName(String companyName) {
         LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();

+ 71 - 0
platform/src/main/java/com/jzg/service/impl/InsCompanyClauseServiceImpl.java

@@ -0,0 +1,71 @@
+package com.jzg.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.po.InsCompanyClause;
+import com.jzg.commons.entity.vo.CompanyClauseVo;
+import com.jzg.commons.exception.ValidateException;
+import com.jzg.mapper.InsCompanyClauseMapper;
+import com.jzg.service.InsCompanyClauseService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class InsCompanyClauseServiceImpl extends ServiceImpl<InsCompanyClauseMapper, InsCompanyClause> implements InsCompanyClauseService {
+
+    @Override
+    public Page<InsCompanyClause> getClausePage(Page page, CompanyClauseVo companyClauseVo) {
+        LambdaQueryWrapper wrapper = new LambdaQueryWrapper<InsCompanyClause>()
+                .eq(!companyClauseVo.getCompanyId().equals(""),InsCompanyClause::getCompanyId,companyClauseVo.getCompanyId())
+                .eq(!companyClauseVo.getRiskCode().equals(""),InsCompanyClause::getRiskCode,companyClauseVo.getRiskCode())
+                .like(!companyClauseVo.getClauseName().equals(""),InsCompanyClause::getClauseName,companyClauseVo.getClauseName())
+                .like(!companyClauseVo.getClauseContent().equals(""),InsCompanyClause::getClauseContent,companyClauseVo.getClauseContent());
+        return baseMapper.selectPage(page, wrapper);
+    }
+
+    @Override
+    public boolean addClause(InsCompanyClause insCompanyClause) {
+        //查询是否有相同的特约名称
+        LambdaQueryWrapper wrapper = new LambdaQueryWrapper<InsCompanyClause>()
+                .eq(InsCompanyClause::getCompanyId,insCompanyClause.getCompanyId())
+                .eq(InsCompanyClause::getClauseName,insCompanyClause.getClauseName());
+        InsCompanyClause queryClause = baseMapper.selectOne(wrapper);
+        if(queryClause != null){
+            throw new ValidateException("已存在特约名称,请重新输入");
+        }
+        //查询是否有相同的特约code
+        LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<InsCompanyClause>()
+               .eq(InsCompanyClause::getCompanyId,insCompanyClause.getCompanyId())
+               .eq(InsCompanyClause::getClauseCode,insCompanyClause.getClauseCode());
+        InsCompanyClause quoeryClauseCode = baseMapper.selectOne(wrapper1);
+        if(quoeryClauseCode!= null){
+            throw new ValidateException("已存在特约code,请重新输入");
+        }
+
+        return save(insCompanyClause);
+    }
+
+    @Override
+    public boolean updateClause(InsCompanyClause insCompanyClause) {
+        //查询是否有相同的特约名称
+        LambdaQueryWrapper wrapper = new LambdaQueryWrapper<InsCompanyClause>()
+                .eq(InsCompanyClause::getCompanyId,insCompanyClause.getCompanyId())
+                .eq(InsCompanyClause::getClauseName,insCompanyClause.getClauseName())
+                .ne(InsCompanyClause::getId,insCompanyClause.getId());
+        InsCompanyClause queryClause = baseMapper.selectOne(wrapper);
+        if(queryClause != null){
+            throw new ValidateException("已存在特约名称,请重新输入");
+        }
+        //查询是否有相同的特约code
+        LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<InsCompanyClause>()
+                .eq(InsCompanyClause::getCompanyId,insCompanyClause.getCompanyId())
+                .eq(InsCompanyClause::getClauseCode,insCompanyClause.getClauseCode())
+                .ne(InsCompanyClause::getId,insCompanyClause.getId());
+        InsCompanyClause quoeryClauseCode = baseMapper.selectOne(wrapper1);
+        if(quoeryClauseCode!= null){
+            throw new ValidateException("已存在特约code,请重新输入");
+        }
+
+        return updateById(insCompanyClause);
+    }
+}

+ 12 - 0
platform/src/main/java/com/jzg/service/impl/PtlCrawlerApiServiceImpl.java

@@ -0,0 +1,12 @@
+package com.jzg.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.agreement.po.PtlCrawlerApi;
+import com.jzg.mapper.PtlCrawlerApiMapper;
+import com.jzg.service.PtlCrawlerApiService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PtlCrawlerApiServiceImpl extends ServiceImpl<PtlCrawlerApiMapper, PtlCrawlerApi> implements PtlCrawlerApiService {
+
+}

+ 87 - 0
platform/src/main/java/com/jzg/service/impl/PtlInsAttributionTemplateServiceImpl.java

@@ -0,0 +1,87 @@
+package com.jzg.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.constants.PtlApiType;
+import com.jzg.commons.entity.agreement.po.PtlCrawlerApi;
+import com.jzg.commons.entity.agreement.po.PtlInsAttributionTemplate;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateQueryVo;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateSaveVo;
+import com.jzg.commons.entity.agreement.vo.PtlInsAttributionTemplateVo;
+import com.jzg.commons.entity.po.EsmInsCompany;
+import com.jzg.commons.exception.ValidateException;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.mapper.PtlInsAttributionTemplateMapper;
+import com.jzg.service.PtlCrawlerApiService;
+import com.jzg.service.EsmInsCompanyService;
+import com.jzg.service.PtlInsAttributionTemplateService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+public class PtlInsAttributionTemplateServiceImpl extends ServiceImpl<PtlInsAttributionTemplateMapper, PtlInsAttributionTemplate> implements PtlInsAttributionTemplateService {
+
+    @Autowired
+    EsmInsCompanyService esmInsCompanyService;
+
+    @Autowired
+    PtlCrawlerApiService ptlCrawlerApiService;
+
+    @Override
+    public List<PtlInsAttributionTemplateVo> getList(PtlInsAttributionTemplateQueryVo ptlInsAttributionTemplateVo) {
+        LambdaQueryWrapper<PtlInsAttributionTemplate> wrapper = new LambdaQueryWrapper<PtlInsAttributionTemplate>()
+                .eq(PtlInsAttributionTemplate::getInsCompanyId,ptlInsAttributionTemplateVo.getCompanyId());
+        List<PtlInsAttributionTemplate> list = baseMapper.selectList(wrapper);
+        List<PtlInsAttributionTemplateVo> ptlInsAttributionTemplateVos = PtlInsAttributionTemplateVo.convert(list);
+        ptlInsAttributionTemplateVos.forEach(vo -> {
+            List<PtlCrawlerApi> apiList = ptlCrawlerApiService.list(new LambdaQueryWrapper<PtlCrawlerApi>()
+                    .eq(PtlCrawlerApi::getTemplateId, vo.getId()));
+            vo.setApi(apiList);
+        });
+        return ptlInsAttributionTemplateVos;
+    }
+
+    @Override
+    @Transactional
+    public boolean submit(List<PtlInsAttributionTemplateSaveVo> ptlInsAttributionTemplateSaveVo) {
+        // 一个保险公司,一种api方式只能配置一种
+        ptlInsAttributionTemplateSaveVo.forEach(this::validate);
+
+        ptlInsAttributionTemplateSaveVo.forEach(saveVo -> {
+            EsmInsCompany esmInsCompany = esmInsCompanyService.isExists(saveVo.getInsCompanyId());
+            PtlInsAttributionTemplate ptlInsAttributionTemplate = new PtlInsAttributionTemplate(saveVo, esmInsCompany.getCnName());
+            baseMapper.insertOrUpdate(ptlInsAttributionTemplate);
+
+            // 保存请求链接
+            if (PtlApiType.PYTHON.getCode().equals(saveVo.getApiType())) {
+                //先删除配置
+                ptlCrawlerApiService.remove(new LambdaQueryWrapper<PtlCrawlerApi>()
+                        .eq(PtlCrawlerApi::getTemplateId, ptlInsAttributionTemplate.getId()));
+                List<PtlCrawlerApi> ptlCrawlerApiList = PtlCrawlerApi.toPtlCrawlerApiList(ptlInsAttributionTemplate.getId(), saveVo.getApi());
+                //增加配置
+                boolean b = ptlCrawlerApiService.saveBatch(ptlCrawlerApiList);
+                AssertionUtils.isSucceed(b, "保险公司api请求插入失败");
+            }
+        });
+
+        return true;
+    }
+
+    private void validate(PtlInsAttributionTemplateSaveVo ptlInsAttributionTemplateSaveVo){
+        LambdaQueryWrapper wrapper = new LambdaQueryWrapper<PtlInsAttributionTemplate>()
+                .eq(PtlInsAttributionTemplate::getInsCompanyId, ptlInsAttributionTemplateSaveVo.getInsCompanyId())
+                .eq(PtlInsAttributionTemplate::getApiType, ptlInsAttributionTemplateSaveVo.getApiType());
+        List<PtlInsAttributionTemplate> ptlInsAttributionTemplates = baseMapper.selectList(wrapper);
+        if(!ptlInsAttributionTemplates.isEmpty()){
+            ptlInsAttributionTemplates.forEach(ptlInsAttributionTemplate -> {
+                if(!ptlInsAttributionTemplate.getId().equals(ptlInsAttributionTemplateSaveVo.getId()))
+                {
+                    throw new ValidateException("一个保险公司,一种api方式只能配置一种");
+                }
+            });
+        }
+    }
+}

+ 37 - 0
platform/src/main/java/com/jzg/service/impl/QrBarcodeServiceImpl.java

@@ -0,0 +1,37 @@
+package com.jzg.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.QrBarcodeConfigParam;
+import com.jzg.commons.entity.po.QrBarcodeConfig;
+import com.jzg.commons.entity.vo.QrBarcodeConfigVo;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.mapper.QrBarcodeMapper;
+import com.jzg.service.QrBarcodeService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+@Service
+public class QrBarcodeServiceImpl extends ServiceImpl<QrBarcodeMapper, QrBarcodeConfig> implements QrBarcodeService {
+
+    @Override
+    public HttpResult queryPage(QrBarcodeConfigParam barcodeConfigParam) {
+        LambdaQueryWrapper<QrBarcodeConfig> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.like(StringUtils.isNotEmpty(barcodeConfigParam.getCompanyName()),QrBarcodeConfig::getCompanyName, barcodeConfigParam.getCompanyName());
+        queryWrapper.orderByDesc(QrBarcodeConfig::getCreateTime);
+        Page page = baseMapper.selectPage(barcodeConfigParam.getPage(), queryWrapper);
+        page.setRecords(BeanUtil.copyToList(page.getRecords(), QrBarcodeConfigVo.class));
+        return HttpResult.ok(page);
+    }
+
+    @Override
+    public HttpResult queryById(String id) {
+        QrBarcodeConfig qrBarcodeConfig = baseMapper.selectById(id);
+        return HttpResult.ok(BeanUtil.copyProperties(qrBarcodeConfig, QrBarcodeConfigVo.class));
+    }
+}

+ 1 - 2
platform/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java

@@ -20,8 +20,8 @@ import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.mapper.*;
-import com.jzg.service.SysAreaBService;
 import com.jzg.service.SysSystemService;
+import com.jzg.service.SysAreaBService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -31,7 +31,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**

+ 4 - 1
platform/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java

@@ -14,7 +14,10 @@ import com.jzg.commons.entity.po.*;
 import com.jzg.commons.entity.vo.SysUserVo;
 import com.jzg.commons.entity.vo.UpAndDownVo;
 import com.jzg.commons.util.StringUtils;
-import com.jzg.mapper.*;
+import com.jzg.mapper.SysUserMapper;
+import com.jzg.mapper.SysUserRoleMapper;
+import com.jzg.mapper.SysRoleMapper;
+import com.jzg.mapper.SysUserPlateInfoMapper;
 import com.jzg.service.SysUserService;
 import com.jzg.commons.util.PasswordUtils;
 import org.springframework.beans.BeanUtils;

+ 11 - 7
platform/src/main/java/com/jzg/service/impl/UserRoleServiceImpl.java

@@ -150,13 +150,17 @@ public class UserRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
             sysRoleDataScopeMapper.insert(sysRoleDataScope);
             if (sysRoleDataScope.getDataMark().equals("2") || sysRoleDataScope.getDataMark().equals("1")) {
                 List<SysRoleDataScopeLink> sysRoleDataScopeLinks = new ArrayList<>();
-                sysRoleVo.getDataScope().getDeptIds().forEach(item -> {
-                    SysRoleDataScopeLink sysRoleDataScopeLink = new SysRoleDataScopeLink();
-                    sysRoleDataScopeLink.setId(IdGenerate.nextId());
-                    sysRoleDataScopeLink.setRoleId(sysRole.getId());
-                    sysRoleDataScopeLink.setDeptId(item);
-                    sysRoleDataScopeLinks.add(sysRoleDataScopeLink);
-                });
+                if(!Objects.isNull(sysRoleVo.getDataScope().getDeptIds())) {
+                    if (!sysRoleVo.getDataScope().getDeptIds().isEmpty()) {
+                        sysRoleVo.getDataScope().getDeptIds().forEach(item -> {
+                            SysRoleDataScopeLink sysRoleDataScopeLink = new SysRoleDataScopeLink();
+                            sysRoleDataScopeLink.setId(IdGenerate.nextId());
+                            sysRoleDataScopeLink.setRoleId(sysRole.getId());
+                            sysRoleDataScopeLink.setDeptId(item);
+                            sysRoleDataScopeLinks.add(sysRoleDataScopeLink);
+                        });
+                    }
+                }
                 sysRoleDataScopeLinkMapper.insert(sysRoleDataScopeLinks);
             }
         }

+ 34 - 0
platform/src/main/resources/application-dev.yml

@@ -0,0 +1,34 @@
+server:
+  port: 8083
+spring:
+
+#  zipkin:
+#    base-url: http://192.168.0.250:9411
+#  sleuth:
+#    sampler:
+#      probability: 1.0
+  redis:
+    redisson:
+      address: redis://192.168.0.250:6379
+      password: 123456
+  servlet:
+    multipart:
+      max-file-size: 5MB
+      max-request-size: 5MB
+
+  datasource:
+      url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+      username: root
+      password: '@RqGHG#KZ*C9ytkQ'
+      driverClassName: com.mysql.cj.jdbc.Driver
+
+config:
+  sso: 1
+
+
+minio:
+  url: http://192.168.0.250:9000
+  access-key: v7Zb8XhyLcYNcSHlxvyK
+  secret-key: 58YibMwpxGKtXcekPL065OM4GonC1hf2tFMjI9EN
+  bucket-name: jzg
+

+ 30 - 0
platform/src/main/resources/application-test.yml

@@ -0,0 +1,30 @@
+server:
+  port: 9083
+spring:
+
+#  zipkin:
+#    base-url: http://192.168.0.250:9411
+#  sleuth:
+#    sampler:
+#      probability: 1.0
+  redis:
+    redisson:
+      address: redis://172.24.144.218:6379
+      password: sxzgkj@2023
+
+  datasource:
+      url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+      username: root
+      password: '@RqGHG#KZ*C9ytkQ'
+      driverClassName: com.mysql.cj.jdbc.Driver
+
+config:
+  sso: 1
+
+
+minio:
+  url: http://test-api.baoxianzhanggui.com
+  access-key: N8hf40VDM3Uf2xJ5vnvE
+  secret-key: CDe1raroqIMo5R2KhHl6ZQbJOhdq0mrtCI78g3vq
+  bucket-name: jzg
+

+ 14 - 20
platform/src/main/resources/application.yml

@@ -1,22 +1,18 @@
 server:
   port: 8083
 spring:
-  redis:
-    redisson:
-      address: redis://192.168.0.250:6379
-      password: 123456
-      database: 0
+#  zipkin:
+#    base-url: http://192.168.0.250:9411
+#  sleuth:
+#    sampler:
+#      probability: 1.0
+  profiles:
+    active: test
   servlet:
     multipart:
       max-file-size: 5MB
       max-request-size: 5MB
 
-  datasource:
-      url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
-      username: root
-      password: '@RqGHG#KZ*C9ytkQ'
-      driverClassName: com.mysql.cj.jdbc.Driver
-
 mybatis-plus:
   mapper-locations: classpath*:/mapper/*Mapper.xml
   global-config:
@@ -27,9 +23,6 @@ mybatis-plus:
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
-config:
-  sso: 1
-
 #多租户配置
 tenant:
   enable: true
@@ -48,15 +41,16 @@ tenant:
     - sys_upload_files
     - sys_role_data_scope
     - sys_role_data_scope_link
+    - sys_area
+    - ptl_ins_attribution_template
+    - esm_ins_company
+    - ptl_crawler_api
 
   ignoreLoginNames:
 
+  ignoreFunction:
+    - /userInfo/getUser
+
 data-scope:
   ignoreTables:
 
-minio:
-  url: http://192.168.0.250:9000
-  access-key: v7Zb8XhyLcYNcSHlxvyK
-  secret-key: 58YibMwpxGKtXcekPL065OM4GonC1hf2tFMjI9EN
-  bucket-name: jzg
-

+ 35 - 0
platform/src/main/resources/logback-spring.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <!-- 定义 Graylog GELF appender -->
+<!--    <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">-->
+<!--        &lt;!&ndash; Graylog server 的主机名或 IP 地址 &ndash;&gt;-->
+<!--        <graylogHost>192.168.0.250</graylogHost>-->
+<!--        &lt;!&ndash; Graylog 服务器端口,通常为 12201(UDP)或 12202(TCP) &ndash;&gt;-->
+<!--        <graylogPort>12201</graylogPort>-->
+<!--        &lt;!&ndash; 可选项:指定协议,默认使用 UDP &ndash;&gt;-->
+<!--        <transport>UDP</transport>-->
+<!--        &lt;!&ndash; 发送日志时是否压缩 &ndash;&gt;-->
+<!--        <compress>true</compress>-->
+<!--        &lt;!&ndash; 是否在 GELF 消息中加入时间戳 &ndash;&gt;-->
+<!--        <includeTimestamp>true</includeTimestamp>-->
+<!--        &lt;!&ndash; 日志内容最大字节数 &ndash;&gt;-->
+<!--        <maxMessageSize>32768</maxMessageSize>-->
+<!--        &lt;!&ndash; 设置自定义字段 &ndash;&gt;-->
+<!--        <additionalFields>-->
+<!--        </additionalFields>-->
+<!--    </appender>-->
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT"/>
+    </root>
+<!--    <root name="com.jzg" level="DEBUG">-->
+<!--        <appender-ref ref="GELF"/>-->
+<!--    </root>-->
+</configuration>

+ 32 - 0
tenant/insurance/pom.xml

@@ -0,0 +1,32 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.jzg</groupId>
+        <artifactId>tenant</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>insurance</artifactId>
+    <packaging>pom</packaging>
+    <name>insurance Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <modules>
+        <module>yongcheng</module>
+    </modules>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-webflux</artifactId>
+            <version>3.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>io.projectreactor.netty</groupId>
+            <artifactId>reactor-netty-core</artifactId>
+        </dependency>
+
+
+    </dependencies>
+    <build>
+        <finalName>insurance</finalName>
+    </build>
+</project>

+ 31 - 0
tenant/insurance/yongcheng/pom.xml

@@ -0,0 +1,31 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.jzg</groupId>
+        <artifactId>insurance</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>yongcheng</artifactId>
+    <packaging>jar</packaging>
+    <name>yongcheng Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.dataformat</groupId>
+            <artifactId>jackson-dataformat-xml</artifactId>
+            <version>2.9.0</version>
+        </dependency>
+
+    </dependencies>
+    <build>
+        <finalName>yongcheng</finalName>
+    </build>
+</project>

+ 19 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/YongchengApplication.java

@@ -0,0 +1,19 @@
+package com.jzg.yongcheng;
+
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+
+
+@SpringBootApplication
+@ComponentScan(basePackages = {"com.jzg.commons","com.jzg.yongcheng"})
+@MapperScan("com.jzg.commons.mapper")
+public class YongchengApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(YongchengApplication.class, args);
+    }
+
+}

+ 23 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/api/ApiComponents.java

@@ -0,0 +1,23 @@
+package com.jzg.yongcheng.api;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.jzg.yongcheng.utils.RequestApiComponents;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import reactor.core.publisher.Mono;
+
+@Component
+public class ApiComponents {
+
+    @Autowired
+    RequestApiComponents requestApiComponents;
+
+    /**
+     * 报价
+     * @return
+     */
+    public String quote() throws JsonProcessingException {
+        Mono<ApiComponents> post = requestApiComponents.post("", ApiComponents.class);
+        return post.block().toString();
+    }
+}

+ 66 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/aspect/AsyncLoggingAspect.java

@@ -0,0 +1,66 @@
+package com.jzg.yongcheng.aspect;
+
+import com.alibaba.fastjson.JSONObject;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+import reactor.core.publisher.Mono;
+
+import java.util.concurrent.CompletableFuture;
+
+@Aspect
+@Component
+public class AsyncLoggingAspect {
+
+    private static final Logger logger = LoggerFactory.getLogger(AsyncLoggingAspect.class);
+
+    @Pointcut("execution(* com.jzg.*.controller..*(..))")
+    public void controllerMethods() {}
+
+    @Around("controllerMethods()")
+    public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
+        // 记录开始时间
+        long startTime = System.currentTimeMillis();
+
+        // 执行目标方法并获取返回的 Mono
+        Object result = joinPoint.proceed();
+
+        // 检查返回的是否是 Mono 类型
+        if (result instanceof Mono) {
+            // 如果是 Mono,异步记录日志并在操作完成后处理结果
+            logAsync(joinPoint, (Mono<?>) result);
+        } else {
+            // 如果不是 Mono,直接记录同步日志
+            logAsync(joinPoint, Mono.just(result));
+        }
+
+        // 记录响应时间
+        long elapsedTime = System.currentTimeMillis() - startTime;
+        logger.info("Method execution time: {} ms", elapsedTime);
+
+        return result;
+    }
+
+    // 异步执行日志记录
+    @Async
+    public CompletableFuture<Void> logAsync(ProceedingJoinPoint joinPoint, Mono<?> resultMono) {
+        //完成时记录日志
+        Object[] args = joinPoint.getArgs();
+        StringBuilder params = new StringBuilder();
+        for (Object arg : args) {
+            params.append(arg).append(" ");
+        }
+        return resultMono.doOnTerminate(() -> {
+            logger.info("Request to method: {}", joinPoint.getSignature().toShortString());
+            logger.info("Request parameters: {}", params.toString().trim());
+            resultMono.subscribe(result -> {
+                logger.info("Method result: {}", JSONObject.toJSONString(result));
+            });
+        }).then().toFuture();
+    }
+}

+ 31 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/config/WebClientConfig.java

@@ -0,0 +1,31 @@
+package com.jzg.yongcheng.config;
+
+import io.netty.channel.ChannelOption;
+import io.netty.handler.timeout.ReadTimeoutHandler;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.client.reactive.ReactorClientHttpConnector;
+import org.springframework.web.reactive.function.client.WebClient;
+import reactor.netty.http.client.HttpClient;
+import reactor.netty.resources.ConnectionProvider;
+import java.util.concurrent.TimeUnit;
+
+
+public class WebClientConfig {
+    @Bean
+    public WebClient webClient() {
+        // 配置连接池
+        ConnectionProvider connectionProvider = ConnectionProvider.create(
+                "myConnectionPool",
+                50
+        );
+
+        HttpClient httpClient = HttpClient.create(connectionProvider)
+                .tcpConfiguration(tcpClient ->
+                        tcpClient.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)  // 设置连接超时时间
+                                .doOnConnected(conn -> conn.addHandlerLast(new ReadTimeoutHandler(5, TimeUnit.SECONDS)))  // 设置读取超时
+                );
+        return WebClient.builder()
+                .clientConnector(new ReactorClientHttpConnector(httpClient))
+                .build();
+    }
+}

+ 40 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/controller/QuoteController.java

@@ -0,0 +1,40 @@
+package com.jzg.yongcheng.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.yongcheng.entity.Accident;
+import com.jzg.yongcheng.entity.AccidentResponse;
+import com.jzg.yongcheng.entity.AccidentalDrivingQueryVo;
+import com.jzg.yongcheng.entity.YcConfigureParameters;
+import com.jzg.yongcheng.utils.RequestApiComponents;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
+
+import java.net.http.HttpResponse;
+
+@Tag(name="永城保险公司接口")
+@RestController
+@RequestMapping("/yc")
+public class QuoteController {
+
+    @Autowired
+    RequestApiComponents requestApiComponents;
+
+
+
+    //demo  测试
+    @PostMapping("/jyx")
+    public Mono<HttpResult<AccidentResponse>> quote(@RequestBody AccidentalDrivingQueryVo accidentalDrivingVo) throws JsonProcessingException {
+        String configStr = "{\"agentCode\":\"14B700P00020\",\"agentNme\":\"太原天勤保险代理有限公司\",\"agentType\":\"191010\",\"cBsnsTyp\":\"19002\",\"cChaType\":\"191010\",\"cCntrNme\":\"天勤\",\"cOprcde\":\"21489962X\",\"conferCode\":\"14B700P0002001\",\"custNature\":\"192099\",\"dptCde\":\"14B7\",\"operatorCode\":\"21489962X\",\"password\":\"tianqin2023@\",\"qlftNo\":\"202930000000800\",\"salesmanNo\":\"114000213\",\"userName\":\"tianqin\"}";
+        YcConfigureParameters ycConfigureParameters = JSONObject.parseObject(configStr, YcConfigureParameters.class);
+        Accident accident = Accident.buildPayParam(accidentalDrivingVo, ycConfigureParameters, null);
+        return Mono.fromCallable(() -> HttpResult.ok(requestApiComponents.post(accident, AccidentResponse.class)
+                .subscribeOn(Schedulers.boundedElastic()).block()));
+    }
+
+
+}

+ 71 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/Accident.java

@@ -0,0 +1,71 @@
+package com.jzg.yongcheng.entity;
+
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import jakarta.validation.Valid;
+import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
+
+@Data
+@JacksonXmlRootElement(localName = "tns:newQueryYwCvrg")
+public class Accident {
+
+    @JacksonXmlProperty(isAttribute = false, localName = "request")
+    private RequestLabel requestLabel;
+
+
+    @Data
+    public static class RequestLabel {
+        /**
+         * authorityData
+         */
+        @Valid
+        @JacksonXmlProperty(isAttribute = false, localName = "authorityData")
+        private AuthorityDataXml authorityData;
+
+
+        /**
+         * 机构号
+         * 两位,二级机构
+         */
+        @JacksonXmlProperty(localName = "deptcde")
+        private String deptcde;
+
+        /**
+         * 方案号
+         * 非必填
+         */
+        @JacksonXmlProperty(localName = "schemeNo")
+        private String schemeNo;
+
+        /**
+         * 座位数
+         */
+        @JacksonXmlProperty(localName = "seatsNum")
+        private String seatsNum;
+
+
+    }
+
+    /**
+     * 构造 请求参数
+     *
+     * @author: lig
+     * @date: 2023-02-15
+     */
+    public static Accident buildPayParam(AccidentalDrivingQueryVo accidentalDrivingVo, YcConfigureParameters ycConfigureParameters, String schemeNo) {
+        Accident m = new Accident();
+        RequestLabel r = new RequestLabel();
+        r.setAuthorityData(ycConfigureParameters.gainAuthorityDataXml());
+//        r.setDeptcde(ycConfigureParameters.getDptCde().substring(0, 2));
+        r.setDeptcde("14");
+        r.setSeatsNum("5");
+        if (StringUtils.isNotEmpty(schemeNo)) {
+            r.setSchemeNo(schemeNo);
+        }
+        m.setRequestLabel(r);
+        return m;
+    }
+
+
+}

+ 37 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AccidentResponse.java

@@ -0,0 +1,37 @@
+package com.jzg.yongcheng.entity;
+
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import lombok.Data;
+
+@Data
+@JacksonXmlRootElement(localName = "packet")
+public class AccidentResponse {
+
+
+    @JacksonXmlProperty(localName = "head")
+    private Head head;
+    /**
+     *
+     */
+    @JacksonXmlProperty(localName = "responseYwCvrg")
+    private ResponseYwCvrg responseYwCvrg;
+
+
+    @Data
+    public static class Head {
+        @JacksonXmlProperty(localName = "responseCompleteMessageStatus")
+        private ResponseCompleteMessageStatus responseCompleteMessageStatus;
+    }
+
+    @Data
+    public static class ResponseCompleteMessageStatus {
+        @JacksonXmlProperty(localName = "messageStatusCode")
+        private String messageStatusCode;
+        @JacksonXmlProperty(localName = "messageStatusDescription")
+        private String messageStatusDescription;
+
+    }
+
+
+}

+ 38 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AccidentalDrivingQueryVo.java

@@ -0,0 +1,38 @@
+package com.jzg.yongcheng.entity;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class AccidentalDrivingQueryVo implements Serializable {
+
+
+    private static final long serialVersionUID = 6098565535096545432L;
+
+    @NotNull(message = "保险公司编号必填")
+    @NotEmpty(message = "保险公司编号不能为空")
+    @Schema(description = "保险公司编号")
+    private String companyCode;
+
+    @Schema(description = "座位数")
+    private int seatNum;
+
+    @NotNull(message = "协议ID必填")
+    @Schema(description = "协议ID")
+    private String agreementId;
+
+    @Schema(description = "方案号")
+    private String code;
+
+    @Schema(description = "使用性质")
+    private String cUsageCde;
+
+    @Schema(description = "投保类型")
+    private String cProdNo;
+
+
+}

+ 22 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AuthorityDataXml.java

@@ -0,0 +1,22 @@
+package com.jzg.yongcheng.entity;
+
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+
+@Data
+public class AuthorityDataXml {
+
+
+    //用户名   永诚所提供的接口权限账号
+    @JacksonXmlProperty(localName = "userName")
+    @Value("${yc.api.userName}")
+    private String userName;
+
+    //密码    永诚所提供的接口权限密码
+    @Value("${yc.api.password}")
+    @JacksonXmlProperty(localName = "password")
+    private String password;
+
+
+}

+ 78 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/ResponseYwCvrg.java

@@ -0,0 +1,78 @@
+package com.jzg.yongcheng.entity;
+
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ResponseYwCvrg {
+
+
+    @JacksonXmlElementWrapper(useWrapping = false)
+    @JacksonXmlProperty(localName = "cvrgList")
+    private List<CvrgList> cvrgList;
+
+
+    @Data
+    public static class CvrgList {
+
+        /**
+         * 座位数
+         */
+        @JacksonXmlProperty(localName = "cauthorizedSeat")
+        private String cauthorizedSeat;
+
+        /**
+         * 险别代码
+         */
+        @JacksonXmlProperty(localName = "cInsuranceCode")
+        private String cInsuranceCode;
+
+        /**
+         * 险别名称
+         */
+        @JacksonXmlProperty(localName = "cInsuranceLiability")
+        private String cInsuranceLiability;
+
+        /**
+         * 方案名称
+         */
+        @JacksonXmlProperty(localName = "cInsuranceType")
+        private String cInsuranceType;
+
+        /**
+         * 方案号
+         */
+        @JacksonXmlProperty(localName = "cInsuranceTypeCode")
+        private String cInsuranceTypeCode;
+
+        /**
+         * 每车保额
+         */
+        @JacksonXmlProperty(localName = "nInsuranceAmountCar")
+        private String nInsuranceAmountCar;
+
+        /**
+         * 每座保额
+         */
+        @JacksonXmlProperty(localName = "nInsuranceAmountSeat")
+        private String nInsuranceAmountSeat;
+
+        /**
+         * 责任保费
+         */
+        @JacksonXmlProperty(localName = "nLiabilityPremium")
+        private String nLiabilityPremium;
+
+        /**
+         * 限购份数
+         */
+        @JacksonXmlProperty(localName = "nPurchaseLimitsNum")
+        private String nPurchaseLimitsNum;
+
+    }
+
+
+}

+ 77 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/YcConfigureParameters.java

@@ -0,0 +1,77 @@
+package com.jzg.yongcheng.entity;
+
+
+import lombok.Data;
+
+@Data
+public class YcConfigureParameters {
+
+    //机构代码(dptCde)
+    private String dptCde;
+    //渠道编码(agentCode)
+    private String agentCode;
+    //协议编码(conferCode)
+    private String conferCode;
+    //渠道分类(agentType)
+    private String agentType;
+    //代理人名称(agentNme)
+    private String agentNme;
+    //代理人资格证号(qlftNo)
+    private String qlftNo;
+    //录入人(operatorCode)
+    private String operatorCode;
+    //业务员代码(salesmanNo)
+    private String salesmanNo;
+    //新业务来源(CChaType)
+    private String CChaType;
+    //客户性质(custNature)
+    private String custNature;
+    //操作人员代码(cOprcde)
+    private String cOprcde;
+    //业务来源(cBsnsTyp)
+    private String cBsnsTyp;
+    //用户名
+    private String userName;
+    //密码
+    private String password;
+    //投保联系人  ≤5个字
+    private String cCntrNme;
+
+
+
+    /**
+     * 获取渠道
+     */
+//    public Agent gainAgent() {
+//        Agent agent = new Agent();
+//        agent.setAgentCode(agentCode);
+//        agent.setConferCode(conferCode);
+//        agent.setAgentType(agentType);
+//        agent.setAgentNme(agentNme);
+//        agent.setQlftNo(qlftNo);
+//        agent.setCustNature(custNature);
+//        agent.setAgentProfId(qlftNo);
+//        agent.setSubCoNo(conferCode);
+//        return agent;
+//    }
+
+    /**
+     * @description: 获取验证数据
+     * @author: lig
+     * @date: 2023年02月07日 0007
+     */
+    public AuthorityDataXml gainAuthorityDataXml() {
+        AuthorityDataXml authorityDataXml = new AuthorityDataXml();
+        authorityDataXml.setUserName(getUserName());
+        authorityDataXml.setPassword(getPassword());
+        return authorityDataXml;
+    }
+    public AuthorityDataXml gainAuthorityDataXml(YcConfigureParameters ycConfigureParamete) {
+        AuthorityDataXml authorityDataXml = new AuthorityDataXml();
+        authorityDataXml.setUserName(ycConfigureParamete.getUserName());
+        authorityDataXml.setPassword(ycConfigureParamete.getPassword());
+        return authorityDataXml;
+    }
+
+
+}

+ 103 - 0
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/utils/RequestApiComponents.java

@@ -0,0 +1,103 @@
+package com.jzg.yongcheng.utils;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+import com.jzg.commons.exception.SystemException;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Component;
+import org.springframework.web.reactive.function.client.WebClient;
+import reactor.core.publisher.Mono;
+
+@Component
+public class RequestApiComponents {
+
+    private WebClient webClient;
+
+    @Autowired
+    private WebClient.Builder webClientBuilder;
+
+    private ObjectMapper gainXmlMapper() {
+        ObjectMapper xmlMapper = new XmlMapper();
+        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        xmlMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
+        xmlMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+        xmlMapper.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE);
+        xmlMapper.enable(MapperFeature.USE_STD_BEAN_NAMING);
+        xmlMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
+        return xmlMapper;
+    }
+
+    public <Q, S> Mono<S> post(Q q, Class<S> tClass) throws JsonProcessingException {
+        String url = "http://39.98.214.159/yongcheng/NewQueryYwCvrgWebService";
+        // 设置请求头
+        HttpHeaders httpHeaders = new HttpHeaders();
+        httpHeaders.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36");
+        httpHeaders.setContentType(MediaType.parseMediaType("text/xml;charset=UTF-8"));
+        webClient = webClientBuilder.baseUrl(url)
+                .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_XML_VALUE)
+                .defaultHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36")
+                .build();
+
+        // 构造 SOAP XML 请求体
+        String xmlString = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tns=\"http://newWS.front" +
+                ".app.echannel.ebiz.alltrust.com/\">";
+        xmlString += "<soapenv:Body>";
+        xmlString += gainXmlMapper().writeValueAsString(q); // 将请求对象转换为 XML 字符串
+        xmlString += "</soapenv:Body>\n" +
+                "</soapenv:Envelope>";
+
+        // 使用 WebClient 发起请求
+        return webClient
+                .post()
+                .bodyValue(xmlString)  // 设置请求体
+                .retrieve()  // 发起请求
+                .bodyToMono(String.class)  // 将响应转换为 Mono<String>
+                .map(responseBody -> {
+                    // 处理响应
+                    String responseStringMsg = StringEscapeUtils.unescapeXml(responseBody);
+                    String cleanStr = cleanResponseStr(responseStringMsg);
+
+                    if (!cleanStr.contains("<")) {
+                        return (S) cleanStr;
+                    }
+
+                    // 将响应的 XML 字符串反序列化成目标对象
+                    try {
+                        S bean = gainXmlMapper().readValue(cleanStr, tClass);
+                        if (bean == null) {
+                            throw new SystemException("请求失败");
+                        }
+                        return bean;
+                    } catch (JsonProcessingException e) {
+                        throw new SystemException("解析响应失败", e.getMessage());
+                    }
+                });
+    }
+
+
+    public static String cleanResponseStr(String responseData) {
+        String rStr = "";
+        String str = "";
+        if (responseData.indexOf("<response>") > 0) {
+            rStr = responseData.substring(responseData.indexOf("<response>") + 10, responseData.indexOf("</response>"));
+        } else if (responseData.indexOf("<return>") > 0) {
+            rStr = responseData.substring(responseData.indexOf("<return>") + 8, responseData.indexOf("</return>"));
+        }
+        if (StringUtils.isEmpty(rStr)) {
+            rStr = responseData.substring(responseData.indexOf("<response>") + 10, responseData.indexOf("</response>"));
+        }
+        String lRStr = rStr.replaceAll("&lt;", "<");
+        str = lRStr.replaceAll("&gt;", ">");
+
+        return str.trim();
+    }
+
+
+
+}

+ 34 - 0
tenant/insurance/yongcheng/src/main/resources/application.yml

@@ -0,0 +1,34 @@
+server:
+  port: 9100
+spring:
+  main:
+    allow-bean-definition-overriding: true
+  redis:
+    redisson:
+      address: redis://192.168.0.250:6379
+      password: 123456
+      database: 0
+
+  datasource:
+      url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+      username: root
+      password: '@RqGHG#KZ*C9ytkQ'
+      driverClassName: com.mysql.cj.jdbc.Driver
+
+mybatis-plus:
+  mapper-locations: classpath*:/mapper/*Mapper.xml
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+config:
+  sso: 0
+
+
+minio:
+  url: http://test-api.baoxianzhanggui.com
+  access-key: N8hf40VDM3Uf2xJ5vnvE
+  secret-key: CDe1raroqIMo5R2KhHl6ZQbJOhdq0mrtCI78g3vq
+  bucket-name: jzg
+
+logging:
+  config: classpath:logback-spring.xml
+

+ 35 - 0
tenant/insurance/yongcheng/src/main/resources/logback-spring.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <!-- 定义 Graylog GELF appender -->
+<!--    <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">-->
+<!--        &lt;!&ndash; Graylog server 的主机名或 IP 地址 &ndash;&gt;-->
+<!--        <graylogHost>192.168.0.250</graylogHost>-->
+<!--        &lt;!&ndash; Graylog 服务器端口,通常为 12201(UDP)或 12202(TCP) &ndash;&gt;-->
+<!--        <graylogPort>12201</graylogPort>-->
+<!--        &lt;!&ndash; 可选项:指定协议,默认使用 UDP &ndash;&gt;-->
+<!--        <transport>UDP</transport>-->
+<!--        &lt;!&ndash; 发送日志时是否压缩 &ndash;&gt;-->
+<!--        <compress>true</compress>-->
+<!--        &lt;!&ndash; 是否在 GELF 消息中加入时间戳 &ndash;&gt;-->
+<!--        <includeTimestamp>true</includeTimestamp>-->
+<!--        &lt;!&ndash; 日志内容最大字节数 &ndash;&gt;-->
+<!--        <maxMessageSize>32768</maxMessageSize>-->
+<!--        &lt;!&ndash; 设置自定义字段 &ndash;&gt;-->
+<!--        <additionalFields>-->
+<!--        </additionalFields>-->
+<!--    </appender>-->
+
+    <!-- 控制台输出日志,非必须,可以根据需要选择性启用 -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <layout class="ch.qos.logback.classic.layout.TTLLLayout">
+            <Pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</Pattern>
+        </layout>
+    </appender>
+
+    <!-- 输出到控制台 -->
+    <root level="INFO">
+<!--        <appender-ref ref="GELF"/>-->
+        <appender-ref ref="STDOUT"/>
+    </root>
+
+</configuration>

+ 9 - 1
tenant/organization/pom.xml

@@ -36,6 +36,14 @@
 
     </dependencies>
     <build>
-        <finalName>organization</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <mainClass>com.jzg.organization.OrganizationApplication</mainClass>
+                </configuration>
+            </plugin>
+        </plugins>
     </build>
 </project>

+ 83 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/ActivityController.java

@@ -0,0 +1,83 @@
+package com.jzg.organization.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysActivity;
+import com.jzg.commons.entity.vo.SysActivityAwardVo;
+import com.jzg.commons.entity.vo.SysActivityVo;
+import com.jzg.commons.request.RequestSingleParam;
+import com.jzg.organization.service.SysActivityService;
+import io.swagger.v3.oas.annotations.Operation;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.*;
+
+
+import java.util.Objects;
+
+/**
+ * @author quchen
+ * @date 2025/2/6 8:45
+ */
+
+@RestController
+@RequestMapping("/activity")
+public class ActivityController {
+    @Resource
+    private SysActivityService sysActivityService;
+
+    @Operation(summary = "新增抽奖活动接口", description = "新增抽奖活动接口")
+    @PostMapping(value = "/addActivity")
+    public HttpResult addActivity(@RequestBody SysActivityVo sysActivityVo) {
+        return sysActivityService.addActivity(sysActivityVo);
+    }
+
+    @Operation(summary = "修改抽奖活动接口", description = "修改抽奖活动接口")
+    @PostMapping(value = "/updateActivity")
+    public HttpResult updateActivity(@RequestBody SysActivityVo sysActivityVo) {
+        return sysActivityService.updateActivity(sysActivityVo);
+    }
+
+    @Operation(summary = "新增抽奖活动奖项接口", description = "新增抽奖活动奖项接口")
+    @PostMapping(value = "/addActivityAward")
+    public HttpResult addActivityAward(@RequestBody SysActivityAwardVo sysActivityAwardVo) {
+        return sysActivityService.addActivityAward(sysActivityAwardVo);
+    }
+
+    @Operation(summary = "查询活动列表接口", description = "查询活动列表接口")
+    @PostMapping(value = "/getActivityList")
+    public HttpResult getActivityList(@RequestBody SysActivityVo sysActivityVo) {
+        Page page = sysActivityVo.getPage();
+        return HttpResult.ok(sysActivityService.getActivityList(page,sysActivityVo));
+    }
+
+    @Operation(summary = "查询活动详情接口", description = "查询活动详情接口")
+    @PostMapping(value = "/getActivity")
+    public HttpResult getActivity(@RequestBody SysActivityVo sysActivityVo) {
+        return sysActivityService.getActivity(sysActivityVo);
+    }
+
+    @Operation(summary = "删除活动接口", description = "删除活动接口")
+    @PostMapping(value = "/deleteActivity")
+    public HttpResult deleteActivity(@RequestSingleParam(value = "id") String id) {
+        return sysActivityService.deleteActivity(id);
+    }
+
+    @Operation(summary = "结束活动接口", description = "结束活动接口")
+    @PostMapping(value = "/endActivity")
+    public HttpResult endActivity(@RequestSingleParam(value = "id") String id) {
+        SysActivity sysActivity = sysActivityService.getById(id);
+        if (Objects.isNull(sysActivity)) {
+            return HttpResult.error("活动不存在");
+        }
+        if (!sysActivity.getActStatus().equals("2")) {
+            return HttpResult.error("当前活动状态不可手动结束");
+        }
+        sysActivity.setActStatus("3");
+        sysActivity.setIsEnd("1");
+        sysActivityService.updateById(sysActivity);
+        return HttpResult.ok("活动结束成功");
+    }
+
+
+}

+ 82 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/PosterController.java

@@ -0,0 +1,82 @@
+package com.jzg.organization.controller;
+
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.PosterAdd;
+import com.jzg.commons.entity.dto.PosterEnd;
+import com.jzg.commons.entity.dto.PosterParam;
+import com.jzg.commons.entity.po.SysPoster;
+import com.jzg.commons.entity.po.SysPosterOrg;
+import com.jzg.organization.mapper.PosterOrgMapper;
+import com.jzg.organization.service.PosterService;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Validated
+@Tag(name="广告位管理")
+@RestController
+@RequestMapping("/poster")
+public class PosterController {
+
+    @Autowired
+    private PosterService posterService;
+
+    @Autowired
+    private PosterOrgMapper posterOrgMapper;
+
+    @Schema(description = "查询广告位分页")
+    @PostMapping("/queryPage")
+    public HttpResult queryPage(@RequestBody PosterParam posterParam) {
+        return posterService.queryPage(posterParam);
+    }
+
+
+    @PostMapping("/save")
+    public HttpResult save(@RequestBody PosterAdd  posterAdd) {
+        SysPoster sysPoster = BeanUtil.copyProperties(posterAdd, SysPoster.class);
+        boolean save = posterService.save(sysPoster);
+        if (save && !CollectionUtils.isEmpty(posterAdd.getLevelOrgIds())){
+            saveOrUpdate(posterAdd.getLevelOrgIds(), sysPoster.getId());
+        }
+        return save ? HttpResult.ok("保存成功") : HttpResult.error("保存失败");
+    }
+
+
+    @PostMapping("/updateById")
+    public HttpResult updateById(@RequestBody PosterEnd posterEnd) {
+        boolean updated = posterService.updateById(BeanUtil.copyProperties(posterEnd, SysPoster.class));
+        if (updated && !CollectionUtils.isEmpty(posterEnd.getLevelOrgIds())){
+            saveOrUpdate(posterEnd.getLevelOrgIds(), posterEnd.getId());
+        }
+        return updated ? HttpResult.ok("修改成功") : HttpResult.error("修改失败");
+    }
+
+    public void saveOrUpdate(List<String> orgIds,Long id) {
+        List<SysPosterOrg> list = new ArrayList<>();
+        orgIds.forEach(orgId -> {
+            SysPosterOrg posterOrg = new SysPosterOrg();
+            posterOrg.setPosterId(id);
+            posterOrg.setOrgId(Long.valueOf(orgId));
+            list.add(posterOrg);
+        });
+        LambdaQueryWrapper<SysPosterOrg> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(SysPosterOrg::getPosterId, id);
+        posterOrgMapper.delete(lambdaQueryWrapper);
+        posterOrgMapper.insertOrUpdate(list);
+    }
+
+    @PostMapping("/delete/{id}")
+    public HttpResult delete(@PathVariable String id) {
+        return posterService.removeById(id) ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
+    }
+
+}

+ 20 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/PosterMapper.java

@@ -0,0 +1,20 @@
+package com.jzg.organization.mapper;
+
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.entity.po.SysPoster;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface PosterMapper extends BaseMapper<SysPoster> {
+
+
+
+    @Select("select  * from  sys_poster ${ew.customSqlSegment}")
+    Page<SysPoster> queryPage(Page page, @Param(Constants.WRAPPER) Wrapper<SysPoster> queryWrapper);
+}

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/PosterOrgMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.po.SysPosterOrg;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PosterOrgMapper extends BaseMapper<SysPosterOrg> {
+}

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysActivityAwardMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.po.SysActivityAward;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysActivityAwardMapper extends BaseMapper<SysActivityAward> {
+}

+ 13 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysActivityMapper.java

@@ -0,0 +1,13 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.entity.po.SysActivity;
+import com.jzg.commons.entity.vo.SysActivityVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface SysActivityMapper extends BaseMapper<SysActivity> {
+    Page<SysActivity> getSysActivityList(Page page, @Param("sysActivityVo") SysActivityVo sysActivityVo);
+}

+ 14 - 0
tenant/organization/src/main/java/com/jzg/organization/service/PosterService.java

@@ -0,0 +1,14 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.PosterParam;
+import com.jzg.commons.entity.po.SysPoster;
+
+public interface PosterService extends IService<SysPoster> {
+
+
+
+    HttpResult queryPage(PosterParam posterParam);
+
+}

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysActivityAwardService.java

@@ -0,0 +1,9 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.po.SysActivityAward;
+
+
+
+public interface SysActivityAwardService extends IService<SysActivityAward> {
+}

+ 23 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysActivityService.java

@@ -0,0 +1,23 @@
+package com.jzg.organization.service;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysActivity;
+import com.jzg.commons.entity.vo.SysActivityAwardVo;
+import com.jzg.commons.entity.vo.SysActivityVo;
+
+public interface SysActivityService extends IService<SysActivity> {
+    HttpResult addActivity(SysActivityVo sysActivityVo);
+
+    HttpResult updateActivity(SysActivityVo sysActivityVo);
+
+    HttpResult addActivityAward(SysActivityAwardVo sysActivityAwardVo);
+
+    HttpResult deleteActivity(String id);
+
+    HttpResult getActivity(SysActivityVo sysActivityVo);
+
+    Page<SysActivity> getActivityList(Page page,SysActivityVo sysActivityVo);
+}

+ 27 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/PosterServiceImpl.java

@@ -0,0 +1,27 @@
+package com.jzg.organization.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.PosterParam;
+import com.jzg.commons.entity.po.SysPoster;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.organization.mapper.PosterMapper;
+import com.jzg.organization.service.PosterService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PosterServiceImpl extends ServiceImpl<PosterMapper, SysPoster> implements PosterService {
+
+
+    @Override
+    public HttpResult queryPage(PosterParam posterParam) {
+
+        LambdaQueryWrapper<SysPoster> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.like(StringUtils.isNotEmpty(posterParam.getTitle()), SysPoster::getTitle, posterParam.getTitle());
+        lambdaQueryWrapper.like(StringUtils.isNotEmpty(posterParam.getOrgName()), SysPoster::getOrgName, posterParam.getOrgName());
+        Page page = baseMapper.queryPage(posterParam.getPage(), lambdaQueryWrapper);
+        return HttpResult.ok(page);
+    }
+}

+ 16 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysActivityAwardServiceImpl.java

@@ -0,0 +1,16 @@
+package com.jzg.organization.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.po.SysActivityAward;
+import com.jzg.organization.mapper.SysActivityAwardMapper;
+import com.jzg.organization.service.SysActivityAwardService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author quchen
+ * @date 2025/2/6 16:29
+ */
+
+@Service
+public class SysActivityAwardServiceImpl extends ServiceImpl<SysActivityAwardMapper, SysActivityAward> implements SysActivityAwardService {
+}

+ 196 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysActivityServiceImpl.java

@@ -0,0 +1,196 @@
+package com.jzg.organization.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.*;
+import com.jzg.commons.entity.vo.SysActivityAwardVo;
+import com.jzg.commons.entity.vo.SysActivityVo;
+import com.jzg.commons.util.MinioUtils;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.organization.mapper.SysActivityAwardMapper;
+import com.jzg.organization.mapper.SysActivityMapper;
+import com.jzg.organization.mapper.SysUploadFilesMapper;
+import com.jzg.organization.service.SysActivityAwardService;
+import com.jzg.organization.service.SysActivityService;
+import com.jzg.organization.service.SysDeptService;
+import jakarta.annotation.Resource;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author quchen
+ * @date 2025/2/6 9:01
+ */
+
+@Service
+public class SysActivityServiceImpl extends ServiceImpl<SysActivityMapper, SysActivity> implements SysActivityService {
+    @Resource
+    private SysDeptService sysDeptService;
+
+    @Resource
+    private SysActivityService sysActivityService;
+
+    @Resource
+    private SysActivityAwardService sysActivityAwardService;
+
+    @Resource
+    private SysActivityAwardMapper sysActivityAwardMapper;
+
+    @Resource
+    private SysUploadFilesMapper sysUploadFilesMapper;
+    @Qualifier("baseController")
+    @Autowired
+    private BaseController controller;
+
+    @Override
+    public HttpResult addActivity(SysActivityVo sysActivityVo) {
+        SysDept sysDept = sysDeptService.getById(sysActivityVo.getActDept());
+        if (Objects.isNull(sysDept) || sysDept.getIsDelete().equals(1)) {
+            throw new RuntimeException("机构不存在");
+        }
+        String userId = controller.getUserName();
+        SysActivity sysActivity = new SysActivity(userId);
+        BeanUtils.copyProperties(sysActivityVo, sysActivity);
+        LocalDate now = LocalDate.now();
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+
+        LocalDate startTime = LocalDate.parse(sysActivityVo.getActStartTime(), formatter);
+        LocalDate endTime = LocalDate.parse(sysActivityVo.getActEndTime(), formatter);
+        // 检查当前时间是否早于生效日期
+        if (now.isBefore(startTime)) {
+            sysActivity.setActStatus("1");
+        }
+        else if (now.isAfter(startTime) && now.isBefore(endTime)) {
+            sysActivity.setActStatus("2");
+        }
+        else if (now.isEqual(startTime)) {
+            sysActivity.setActStatus("2");
+        }
+        else if (now.isAfter(endTime)) {
+            sysActivity.setActStatus("3");
+        }
+        else if (now.isEqual(endTime)) {
+            sysActivity.setActStatus("3");
+        }
+        sysActivityService.save(sysActivity);
+        return HttpResult.ok("添加活动成功", sysActivity.getId());
+    }
+
+    @Transactional
+    @Override
+    public HttpResult updateActivity(SysActivityVo sysActivityVo) {
+        SysActivity sysActivity = sysActivityService.getById(sysActivityVo.getId());
+        if (Objects.isNull(sysActivity)) {
+            throw new RuntimeException("活动不存在");
+        }
+        if (sysActivity.getActStatus().equals("3")) {
+            throw new RuntimeException("活动已结束");
+        }
+        SysDept sysDept = sysDeptService.getById(sysActivityVo.getActDept());
+        if (Objects.isNull(sysDept) || sysDept.getIsDelete().equals(1)) {
+            throw new RuntimeException("机构不存在");
+        }
+        BeanUtils.copyProperties(sysActivityVo, sysActivity);
+        LocalDate now = LocalDate.now();
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+
+        LocalDate startTime = LocalDate.parse(sysActivityVo.getActStartTime(), formatter);
+        LocalDate endTime = LocalDate.parse(sysActivityVo.getActEndTime(), formatter);
+        // 检查当前时间是否早于生效日期
+        if (now.isBefore(startTime)) {
+            sysActivity.setActStatus("1");
+        }
+        else if (now.isAfter(startTime) && now.isBefore(endTime)) {
+            sysActivity.setActStatus("2");
+        }
+        else if (now.isEqual(startTime)) {
+            sysActivity.setActStatus("2");
+        }
+        else if (now.isAfter(endTime)) {
+            sysActivity.setActStatus("3");
+        }
+        else if (now.isEqual(endTime)) {
+            sysActivity.setActStatus("3");
+        }
+        sysActivityService.updateById(sysActivity);
+        return HttpResult.ok("修改活动成功");
+    }
+
+    @Override
+    public HttpResult addActivityAward(SysActivityAwardVo sysActivityAwardVo) {
+        List<SysActivityAward> sysActivityAwardList = new ArrayList<>();
+        for (SysActivityAwardVo.AwardList awardList : sysActivityAwardVo.getAwardList()) {
+            SysActivity sysActivity = sysActivityService.getById(sysActivityAwardVo.getActivityId());
+            if (Objects.isNull(sysActivity)) {
+                throw new RuntimeException("活动不存在");
+            }
+            if (sysActivity.getActStatus().equals("3")) {
+                throw new RuntimeException("活动已结束");
+            }
+            if (!StringUtils.isEmpty(awardList.getAwardId())) {
+                SysActivityAward sysActivityAward = sysActivityAwardService.getById(awardList.getAwardId());
+                if (Objects.isNull(sysActivityAward)) {
+                    throw new RuntimeException("奖品不存在");
+                }
+                BeanUtils.copyProperties(awardList, sysActivityAward);
+                sysActivityAwardService.updateById(sysActivityAward);
+            } else{
+                SysActivityAward sysActivityAward = new SysActivityAward();
+                BeanUtils.copyProperties(awardList, sysActivityAward);
+                sysActivityAward.setActivityId(sysActivityAwardVo.getActivityId());
+                sysActivityAwardList.add(sysActivityAward);
+            }
+        }
+        sysActivityAwardService.saveBatch(sysActivityAwardList);
+        return HttpResult.ok("添加奖品成功");
+    }
+
+    @Override
+    public HttpResult deleteActivity(String id) {
+        SysActivity sysActivity = sysActivityService.getById(id);
+        if (Objects.isNull(sysActivity)) {
+            throw new RuntimeException("活动不存在");
+        }
+        sysActivity.setIsDelete("1");
+        sysActivityService.updateById(sysActivity);
+        return HttpResult.ok("删除活动成功");
+    }
+
+    @Override
+    public HttpResult getActivity(SysActivityVo sysActivityVo) {
+        SysActivity sysActivity = sysActivityService.getById(sysActivityVo.getId());
+        if (Objects.isNull(sysActivity)) {
+            throw new RuntimeException("活动不存在");
+        }
+        List<SysActivityAward> awardList = sysActivityAwardMapper.selectList
+                (new LambdaQueryWrapper<SysActivityAward>().eq(SysActivityAward::getActivityId, sysActivityVo.getId()));
+        for (SysActivityAward award : awardList) { // 奖品图片
+            SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectById(award.getAwardImg());
+            if (!Objects.isNull(sysUploadFiles)) {
+                award.setImageUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUploadFiles.getFileName()));
+            }
+        }
+        sysActivity.setAwardList(awardList);
+
+        return HttpResult.ok(sysActivity);
+    }
+
+    @Override
+    public Page<SysActivity> getActivityList(Page page,SysActivityVo sysActivityVo) {
+        return baseMapper.getSysActivityList(page,sysActivityVo);
+    }
+}

+ 61 - 0
tenant/organization/src/main/resources/application-dev.yml

@@ -0,0 +1,61 @@
+server:
+  port: 8084
+spring:
+  redis:
+    redisson:
+      address: redis://192.168.0.250:6379
+      password: 123456
+
+  datasource:
+      url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+      username: root
+      password: '@RqGHG#KZ*C9ytkQ'
+      driverClassName: com.mysql.cj.jdbc.Driver
+
+mybatis-plus:
+  mapper-locations: classpath*:/mapper/*Mapper.xml
+  global-config:
+    db-config:
+      logic-delete-field: is_delete
+      logic-delete-value: 1
+      logic-not-delete-value: 0
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+config:
+  sso: 1
+
+#多租户配置
+tenant:
+  enable: true
+  column: system_code
+  filterTables:
+  ignoreTables:
+    - sys_system
+    - sys_role_perms
+    - sys_area
+    - sys_dict
+    - sys_dict_type
+    - sys_user
+    - sys_user_jzg_info_bank_card
+    - sys_user_role
+    - sys_user_jzg_info_file
+    - sys_organization
+    - sys_organization_user_link
+    - sys_upload_files
+    - sys_config
+    - sys_activity
+    - sys_activity_award
+    - sys_poster_org
+  ignoreLoginNames:
+
+data-scope:
+  tables:
+    - sys_user_jzg_info
+    - sys_dept
+
+minio:
+  url: http://192.168.0.250:9000
+  access-key: v7Zb8XhyLcYNcSHlxvyK
+  secret-key: 58YibMwpxGKtXcekPL065OM4GonC1hf2tFMjI9EN
+  bucket-name: jzg

+ 62 - 0
tenant/organization/src/main/resources/application-test.yml

@@ -0,0 +1,62 @@
+server:
+  port: 9084
+spring:
+  redis:
+    redisson:
+      address: redis://172.24.144.218:6379
+      password: sxzgkj@2023
+  main:
+    allow-circular-references: true
+  datasource:
+      url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+      username: root
+      password: '@RqGHG#KZ*C9ytkQ'
+      driverClassName: com.mysql.cj.jdbc.Driver
+
+mybatis-plus:
+  mapper-locations: classpath*:/mapper/*Mapper.xml
+  global-config:
+    db-config:
+      logic-delete-field: is_delete
+      logic-delete-value: 1
+      logic-not-delete-value: 0
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+config:
+  sso: 1
+
+#多租户配置
+tenant:
+  enable: true
+  column: system_code
+  filterTables:
+  ignoreTables:
+    - sys_system
+    - sys_role_perms
+    - sys_area
+    - sys_dict
+    - sys_dict_type
+    - sys_user
+    - sys_user_jzg_info_bank_card
+    - sys_user_role
+    - sys_user_jzg_info_file
+    - sys_organization
+    - sys_organization_user_link
+    - sys_upload_files
+    - sys_config
+    - sys_activity
+    - sys_activity_award
+    - sys_poster_org
+  ignoreLoginNames:
+
+data-scope:
+  tables:
+    - sys_user_jzg_info
+    - sys_dept
+
+minio:
+  url: http://test-api.baoxianzhanggui.com
+  access-key: N8hf40VDM3Uf2xJ5vnvE
+  secret-key: CDe1raroqIMo5R2KhHl6ZQbJOhdq0mrtCI78g3vq
+  bucket-name: jzg

+ 6 - 21
tenant/organization/src/main/resources/application.yml

@@ -1,18 +1,8 @@
-server:
-  port: 8084
 spring:
-  redis:
-    redisson:
-      address: redis://192.168.0.250:6379
-      password: 123456
-      database: 0
   main:
     allow-circular-references: true
-  datasource:
-      url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
-      username: root
-      password: '@RqGHG#KZ*C9ytkQ'
-      driverClassName: com.mysql.cj.jdbc.Driver
+  profiles:
+    active: test
 
 mybatis-plus:
   mapper-locations: classpath*:/mapper/*Mapper.xml
@@ -24,9 +14,6 @@ mybatis-plus:
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
-config:
-  sso: 1
-
 #多租户配置
 tenant:
   enable: true
@@ -37,6 +24,7 @@ tenant:
     - sys_role_perms
     - sys_area
     - sys_dict
+    - sys_dict_type
     - sys_user
     - sys_user_jzg_info_bank_card
     - sys_user_role
@@ -45,15 +33,12 @@ tenant:
     - sys_organization_user_link
     - sys_upload_files
     - sys_config
+    - sys_activity
+    - sys_activity_award
+    - sys_poster_org
   ignoreLoginNames:
 
 data-scope:
   tables:
     - sys_user_jzg_info
     - sys_dept
-
-minio:
-  url: http://192.168.0.250:9000
-  access-key: v7Zb8XhyLcYNcSHlxvyK
-  secret-key: 58YibMwpxGKtXcekPL065OM4GonC1hf2tFMjI9EN
-  bucket-name: jzg

+ 21 - 0
tenant/organization/src/main/resources/mapper/SysActivityMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jzg.organization.mapper.SysActivityMapper">
+    <select id="getSysActivityList" resultType="com.jzg.commons.entity.po.SysActivity">
+        select
+            *,
+            sd.name as actDept
+        from
+            sys_activity sa
+        left join sys_dept sd on sa.act_dept = sd.id
+        where
+            1=1
+          and sa.is_delete = '0'
+        <if test="sysActivityVo.actName != null and sysActivityVo.actName != ''">
+            and sa.act_name like concat('%',#{sysActivityVo.actName},'%')
+        </if>
+        <if test="sysActivityVo.actStatus != null and sysActivityVo.actStatus != ''">
+            and sa.act_status = #{sysActivityVo.actStatus}
+        </if>
+    </select>
+</mapper>

+ 30 - 1
tenant/pom.xml

@@ -13,6 +13,7 @@
     <modules>
         <module>organization</module>
         <module>openfeign</module>
+        <module>insurance</module>
     </modules>
     <dependencies>
         <dependency>
@@ -62,6 +63,34 @@
 
     </dependencyManagement>
     <build>
-        <finalName>tenant</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>3.2.4</version>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+
+                            <transformers>
+                                <!--                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">-->
+                                <!--                  <mainClass>com.example.MainClass</mainClass>-->
+                                <!--                </transformer>-->
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                                    <resource>META-INF/spring.handlers</resource>
+                                </transformer>
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                                    <resource>META-INF/spring.schemas</resource>
+                                </transformer>
+                            </transformers>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
     </build>
 </project>