From 001b6cc7dedea66cfcfa6430b49bad8c3ec3592f Mon Sep 17 00:00:00 2001 From: luozhun <2025254074@qq.com> Date: Fri, 18 Oct 2024 17:25:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AD=A6=E4=BF=9D=E8=81=94=E5=8A=A8=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/projectManager/index/index.vue | 4 +- .../common/annotation/CheckOpenApi.java | 17 +++ .../com/changhu/common/enums/OpenApiType.java | 21 ++++ .../common/utils/JavaClassToTsUtil.java | 15 ++- .../java/com/changhu/config/WebConfig.java | 17 +++ .../changhu/controller/OpenController.java | 47 ++++++++ .../mapper/ServiceProjectMapper.java | 10 ++ .../service/ServiceProjectService.java | 12 ++ .../impl/ServiceProjectServiceImpl.java | 9 ++ .../miniProgram/pojo/entity/SecurityUser.java | 3 +- .../pojo/dto/EnterprisesUnitDetailDTO.java | 43 +++++++ .../changhu/pojo/dto/ServiceProjectDTO.java | 110 ++++++++++++++++++ .../com/changhu/service/OpenApiService.java | 30 +++++ .../service/impl/OpenApiServiceImpl.java | 60 ++++++++++ .../serializer/MinioPrefixSerializer.java | 27 +++++ .../interceptor/OpenApiInterceptor.java | 38 ++++++ .../main/resources/env/dev/application.yml | 4 +- .../main/resources/env/prod/application.yml | 36 +++--- .../resources/mapper/ServiceProjectMapper.xml | 52 +++++++++ 19 files changed, 528 insertions(+), 27 deletions(-) create mode 100644 policeSecurityServer/src/main/java/com/changhu/common/annotation/CheckOpenApi.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/common/enums/OpenApiType.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/controller/OpenController.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/pojo/dto/EnterprisesUnitDetailDTO.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/pojo/dto/ServiceProjectDTO.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/service/OpenApiService.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/service/impl/OpenApiServiceImpl.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/support/fastjson2/serializer/MinioPrefixSerializer.java create mode 100644 policeSecurityServer/src/main/java/com/changhu/support/interceptor/OpenApiInterceptor.java diff --git a/collect_information/src/pages/projectManager/index/index.vue b/collect_information/src/pages/projectManager/index/index.vue index 7455202..d44d09a 100644 --- a/collect_information/src/pages/projectManager/index/index.vue +++ b/collect_information/src/pages/projectManager/index/index.vue @@ -3,7 +3,7 @@ - + @@ -30,7 +30,7 @@ import Taro from "@tarojs/taro"; import icon from '@/assets/images/project.png' import './index.scss' -const list = ref(['https://storage.360buyimg.com/jdc-article/NutUItaro34.jpg',]) +const list = ref(['/assets/images/01.png',]) const swiperRef = ref() //轮播图 const subModuleList = ref([ { diff --git a/policeSecurityServer/src/main/java/com/changhu/common/annotation/CheckOpenApi.java b/policeSecurityServer/src/main/java/com/changhu/common/annotation/CheckOpenApi.java new file mode 100644 index 0000000..18f25e1 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/common/annotation/CheckOpenApi.java @@ -0,0 +1,17 @@ +package com.changhu.common.annotation; + +import com.changhu.common.enums.OpenApiType; + +import java.lang.annotation.*; + +/** + * @author 20252 + * @createTime 2024/10/9 下午5:14 + * @desc 检查openApi + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface CheckOpenApi { + OpenApiType value(); +} diff --git a/policeSecurityServer/src/main/java/com/changhu/common/enums/OpenApiType.java b/policeSecurityServer/src/main/java/com/changhu/common/enums/OpenApiType.java new file mode 100644 index 0000000..370b5a2 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/common/enums/OpenApiType.java @@ -0,0 +1,21 @@ +package com.changhu.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/10/9 下午5:10 + * @desc OpenApiType... + */ +@Getter +@AllArgsConstructor +public enum OpenApiType { + Information_on_enterprises_and_institutions("获取企事业单位信息", Arrays.asList("1fe0aaf3-45a4-4be3-a989-75e914a3f36e", "1fe0aaf3-45a4-a989-75e914a3f36e")); + + private final String desc; + private final List openApiKeys; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/common/utils/JavaClassToTsUtil.java b/policeSecurityServer/src/main/java/com/changhu/common/utils/JavaClassToTsUtil.java index c4ded54..059ce7a 100644 --- a/policeSecurityServer/src/main/java/com/changhu/common/utils/JavaClassToTsUtil.java +++ b/policeSecurityServer/src/main/java/com/changhu/common/utils/JavaClassToTsUtil.java @@ -52,8 +52,16 @@ public class JavaClassToTsUtil { * @return ts类型 */ private static String convertJavaTypeToTS(Class type) { - Set> stringList = Set.of(String.class); - Set> boolList = Set.of(Boolean.class, boolean.class); + Set> stringList = Set.of( + String.class, + LocalDateTime.class, + LocalDate.class, + LocalTime.class + ); + Set> boolList = Set.of( + Boolean.class, + boolean.class + ); Set> numberList = Set.of( Integer.class, int.class, Double.class, double.class, @@ -63,15 +71,12 @@ public class JavaClassToTsUtil { BigDecimal.class, Byte.class, byte.class ); - Set> dateList = Set.of(LocalDateTime.class, LocalDate.class, LocalTime.class); if (stringList.contains(type)) { return "string"; } else if (boolList.contains(type)) { return "boolean"; } else if (numberList.contains(type)) { return "number"; - } else if (dateList.contains(type)) { - return "Dayjs"; } else { return "unsupported"; } diff --git a/policeSecurityServer/src/main/java/com/changhu/config/WebConfig.java b/policeSecurityServer/src/main/java/com/changhu/config/WebConfig.java index 8e7b4cb..35c4e95 100644 --- a/policeSecurityServer/src/main/java/com/changhu/config/WebConfig.java +++ b/policeSecurityServer/src/main/java/com/changhu/config/WebConfig.java @@ -3,9 +3,11 @@ package com.changhu.config; import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.stp.StpUtil; import com.changhu.support.interceptor.JsonBodyInterceptor; +import com.changhu.support.interceptor.OpenApiInterceptor; import com.changhu.support.interceptor.UserTypeInterceptor; import org.jetbrains.annotations.NotNull; import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -25,6 +27,7 @@ public class WebConfig implements WebMvcConfigurer { public WebConfig() { whiteList.add("/common/**"); + whiteList.add("/open/**"); whiteList.add("/test/**"); whiteList.add("/login"); whiteList.add("/logout"); @@ -55,6 +58,20 @@ public class WebConfig implements WebMvcConfigurer { registry.addInterceptor(new JsonBodyInterceptor()); // 注册clientType 拦截器 用于校验当前用户是否匹配操作客户端 registry.addInterceptor(new UserTypeInterceptor()); + // 注册开放接口 拦截器 用于校验第三方是否携带指定apiKey + registry.addInterceptor(new OpenApiInterceptor()) + .addPathPatterns("/open/**"); + } + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOriginPatterns("*") + .allowedMethods("GET", "POST", "OPTION", "PUT", "DELETE") + .allowedHeaders("Content-Type", "X-Requested-With", "accept", "Origin", "Access-Control-Request-Method", + "Access-Control-Request-Headers", "Authorization","Token","*") + .allowCredentials(true) + .maxAge(3600); } @Override diff --git a/policeSecurityServer/src/main/java/com/changhu/controller/OpenController.java b/policeSecurityServer/src/main/java/com/changhu/controller/OpenController.java new file mode 100644 index 0000000..8ec4b5a --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/controller/OpenController.java @@ -0,0 +1,47 @@ +package com.changhu.controller; + +import cn.hutool.core.util.IdUtil; +import com.changhu.common.annotation.CheckOpenApi; +import com.changhu.common.annotation.JsonBody; +import com.changhu.common.enums.OpenApiType; +import com.changhu.common.pojo.vo.SelectNodeVo; +import com.changhu.pojo.dto.EnterprisesUnitDetailDTO; +import com.changhu.service.OpenApiService; +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.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/10/9 下午5:02 + * @desc 可以给第三方对接的controller + */ +@Tag(name = "开放接口") +@JsonBody +@RequestMapping("/open") +public class OpenController { + + @Autowired + private OpenApiService openApiService; + + @Operation(summary = "获取企事业单位列表") + @CheckOpenApi(value = OpenApiType.Information_on_enterprises_and_institutions) + @GetMapping("/getEnterprisesUnit") + public List> getEnterprisesUnit(@Schema(description = "行政区划代码") @RequestParam String code, + @Schema(description = "行政区划等级") @RequestParam Integer level) { + return openApiService.getEnterprisesUnit(code, level); + } + + @Operation(summary = "企事业单位详情") + @CheckOpenApi(value = OpenApiType.Information_on_enterprises_and_institutions) + @GetMapping("/enterprisesUnitDetailById") + public EnterprisesUnitDetailDTO enterprisesUnitDetailById(@Schema(description = "企事业单位id") @RequestParam Long enterprisesUnitId) { + return openApiService.enterprisesUnitDetailById(enterprisesUnitId); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/ServiceProjectMapper.java b/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/ServiceProjectMapper.java index f1af734..a9a22a8 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/ServiceProjectMapper.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/ServiceProjectMapper.java @@ -6,6 +6,8 @@ import com.changhu.module.management.pojo.entity.ServiceProject; import com.changhu.module.management.pojo.queryParams.ServiceProjectPagerQueryParams; import com.changhu.module.management.pojo.vo.ServiceProjectPagerVo; import com.changhu.module.miniProgram.pojo.vo.IndexServiceProjectListVo; +import com.changhu.pojo.dto.EnterprisesUnitDetailDTO; +import com.changhu.pojo.dto.ServiceProjectDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -36,4 +38,12 @@ public interface ServiceProjectMapper extends BaseMapper { */ List getServiceProjectList(@Param("policeUnitId") Long policeUnitId, @Param("projectManagerMiniProgramUserId") Long projectManagerMiniProgramUserId); + + /** + * 获取企事业单位下的服务项目 + * + * @param enterprisesUnitId 企事业单位id + * @return 服务项目列表 + */ + List getServiceProjectByEnterprisesUnitId(@Param("enterprisesUnitId") Long enterprisesUnitId); } diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/ServiceProjectService.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/ServiceProjectService.java index 75ce667..8c9db18 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/service/ServiceProjectService.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/ServiceProjectService.java @@ -6,8 +6,12 @@ import com.changhu.module.management.pojo.entity.ServiceProject; import com.changhu.module.management.pojo.params.ServiceProjectSaveOrUpdateParams; import com.changhu.module.management.pojo.queryParams.ServiceProjectPagerQueryParams; import com.changhu.module.management.pojo.vo.ServiceProjectPagerVo; +import com.changhu.pojo.dto.EnterprisesUnitDetailDTO; +import com.changhu.pojo.dto.ServiceProjectDTO; import com.changhu.support.mybatisplus.pojo.params.PageParams; +import java.util.List; + /** * service_project (服务项目) 服务类 * author: luozhun @@ -29,4 +33,12 @@ public interface ServiceProjectService extends IService { * @param params 参数 */ void saveOrUpdate(ServiceProjectSaveOrUpdateParams params); + + /** + * 获取企事业单位下的服务项目 + * + * @param enterprisesUnitId 企事业单位id + * @return 服务项目列表 + */ + List getServiceProjectByEnterprisesUnitId(Long enterprisesUnitId); } diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/ServiceProjectServiceImpl.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/ServiceProjectServiceImpl.java index 150b684..d4e6e80 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/ServiceProjectServiceImpl.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/ServiceProjectServiceImpl.java @@ -11,9 +11,13 @@ import com.changhu.module.management.pojo.params.ServiceProjectSaveOrUpdateParam import com.changhu.module.management.pojo.queryParams.ServiceProjectPagerQueryParams; import com.changhu.module.management.pojo.vo.ServiceProjectPagerVo; import com.changhu.module.management.service.ServiceProjectService; +import com.changhu.pojo.dto.EnterprisesUnitDetailDTO; +import com.changhu.pojo.dto.ServiceProjectDTO; import com.changhu.support.mybatisplus.pojo.params.PageParams; import org.springframework.stereotype.Service; +import java.util.List; + /** * service_project (服务项目) 服务实现类 * author: luozhun @@ -36,4 +40,9 @@ public class ServiceProjectServiceImpl extends ServiceImpl getServiceProjectByEnterprisesUnitId(Long enterprisesUnitId) { + return baseMapper.getServiceProjectByEnterprisesUnitId(enterprisesUnitId); + } } diff --git a/policeSecurityServer/src/main/java/com/changhu/module/miniProgram/pojo/entity/SecurityUser.java b/policeSecurityServer/src/main/java/com/changhu/module/miniProgram/pojo/entity/SecurityUser.java index 76e5d91..d0b0a8c 100644 --- a/policeSecurityServer/src/main/java/com/changhu/module/miniProgram/pojo/entity/SecurityUser.java +++ b/policeSecurityServer/src/main/java/com/changhu/module/miniProgram/pojo/entity/SecurityUser.java @@ -3,6 +3,7 @@ package com.changhu.module.miniProgram.pojo.entity; import java.io.Serial; import java.io.Serializable; +import com.changhu.common.db.enums.Sex; import com.changhu.support.mybatisplus.pojo.entity.BaseEntity; import lombok.Data; import lombok.AllArgsConstructor; @@ -56,7 +57,7 @@ public class SecurityUser extends BaseEntity implements Serializable { /** * 性别 */ - private Integer sex; + private Sex sex; /** * 籍贯 diff --git a/policeSecurityServer/src/main/java/com/changhu/pojo/dto/EnterprisesUnitDetailDTO.java b/policeSecurityServer/src/main/java/com/changhu/pojo/dto/EnterprisesUnitDetailDTO.java new file mode 100644 index 0000000..096f36b --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/pojo/dto/EnterprisesUnitDetailDTO.java @@ -0,0 +1,43 @@ +package com.changhu.pojo.dto; + +import cn.hutool.core.util.DesensitizedUtil; +import com.changhu.common.annotation.Desensitized; +import com.changhu.common.db.enums.IsOrNot; +import com.changhu.common.db.enums.ServiceProjectType; +import com.changhu.common.db.enums.Sex; +import com.changhu.module.management.pojo.model.ContactPersonInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/10/10 上午9:13 + * @desc EnterprisesUnitDetailDTO... + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class EnterprisesUnitDetailDTO { + @Schema(description = "企事业单位id") + private Long snowFlakeId; + @Schema(description = "名字") + private String name; + @Schema(description = "地址") + private String address; + @Schema(description = "联系人") + private ContactPersonInfo contactPersonInfo; + @Schema(description = "备注") + private String remark; + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "服务项目列表") + private List serviceProjectList; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/pojo/dto/ServiceProjectDTO.java b/policeSecurityServer/src/main/java/com/changhu/pojo/dto/ServiceProjectDTO.java new file mode 100644 index 0000000..7a10a63 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/pojo/dto/ServiceProjectDTO.java @@ -0,0 +1,110 @@ +package com.changhu.pojo.dto; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.changhu.common.db.enums.IsOrNot; +import com.changhu.common.db.enums.ServiceProjectType; +import com.changhu.common.db.enums.Sex; +import com.changhu.module.management.pojo.model.LegalPersonInfo; +import com.changhu.support.fastjson2.serializer.MinioPrefixSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/10/10 上午9:35 + * @desc ServiceProjectDTO... + */ +@Data +public class ServiceProjectDTO { + @Schema(description = "服务项目id") + private Long snowFlakeId; + @Schema(description = "项目经理信息") + private ProjectManagerInfo projectManagerInfo; + @Schema(description = "保安单位信息") + private SecurityUnitInfo securityUnitInfo; + @Schema(description = "名字") + private String name; + @Schema(description = "类型") + private ServiceProjectType type; + @Schema(description = "是否自招保安") + private IsOrNot isRecruitSecurity; + @Schema(description = "保安证号") + private String idNumber; + @Schema(description = "服务面积") + private Double serviceArea; + @Schema(description = "楼栋数量") + private Integer buildingTotal; + @Schema(description = "户数") + private Integer houseTotal; + @Schema(description = "工作人员数量") + private Integer staffTotal; + @Schema(description = "保安人员数量") + private Integer securityUserTotal; + @Schema(description = "备注") + private String remark; + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "保安人员列表") + private List securityUserList; + + @Data + static class SecurityUnitInfo { + @Schema(description = "保安单位名称") + private String name; + @Schema(description = "统一社会编码") + private String socialCode; + @JSONField(serializeUsing = MinioPrefixSerializer.class) + @Schema(description = "营业执照") + private String businessLicense; + @Schema(description = "法人信息") + private LegalPersonInfo legalPersonInfo; + @Schema(description = "详细地址") + private String address; + @Schema(description = "公司性质") + private String nature; + } + + @Data + static class ProjectManagerInfo { + @Schema(description = "名称") + private String name; + @Schema(description = "性别") + private Sex sex; + @Schema(description = "手机号") + private String telephone; + @Schema(description = "身份证") + private String idCard; + } + + @Data + static class SecurityUserInfo { + @Schema(description = "id") + private Long snowFlakeId; + @Schema(description = "名字") + private String name; + @Schema(description = "手机号") + private String telephone; + @Schema(description = "工作岗位") + private String workPost; + @Schema(description = "性别") + private Sex sex; + @Schema(description = "户籍地") + private String nativePlace; + @Schema(description = "身份证") + private String idCard; + @Schema(description = "出身日期") + private java.time.LocalDate dateOfBirth; + @Schema(description = "保安证号") + private String securityNumber; + @Schema(description = "家庭住址") + private String homeAddress; + @Schema(description = "备注") + private String remark; + @Schema(description = "创建时间") + private String createTime; + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/service/OpenApiService.java b/policeSecurityServer/src/main/java/com/changhu/service/OpenApiService.java new file mode 100644 index 0000000..cb97c56 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/service/OpenApiService.java @@ -0,0 +1,30 @@ +package com.changhu.service; + +import com.changhu.common.pojo.vo.SelectNodeVo; +import com.changhu.pojo.dto.EnterprisesUnitDetailDTO; + +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/10/9 下午5:28 + * @desc 开放接口 + */ +public interface OpenApiService { + /** + * 获取企事业单位列表 + * + * @param code 行政区划代码 + * @param level 行政区划等级 + * @return 企事业单位列表 + */ + List> getEnterprisesUnit(String code, Integer level); + + /** + * 企事业单位详情 + * + * @param enterprisesUnitId 单位id + * @return 企事业单位详情 + */ + EnterprisesUnitDetailDTO enterprisesUnitDetailById(Long enterprisesUnitId); +} diff --git a/policeSecurityServer/src/main/java/com/changhu/service/impl/OpenApiServiceImpl.java b/policeSecurityServer/src/main/java/com/changhu/service/impl/OpenApiServiceImpl.java new file mode 100644 index 0000000..88a3bf4 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/service/impl/OpenApiServiceImpl.java @@ -0,0 +1,60 @@ +package com.changhu.service.impl; + +import com.baomidou.mybatisplus.extension.toolkit.Db; +import com.changhu.common.exception.MessageException; +import com.changhu.common.pojo.vo.SelectNodeVo; +import com.changhu.module.management.pojo.entity.EnterprisesUnit; +import com.changhu.module.management.service.ServiceProjectService; +import com.changhu.pojo.dto.EnterprisesUnitDetailDTO; +import com.changhu.pojo.dto.ServiceProjectDTO; +import com.changhu.service.OpenApiService; +import com.changhu.support.mybatisplus.pojo.entity.BaseEntity; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/10/9 下午5:29 + * @desc OpenApiServiceImpl... + */ +@Service +public class OpenApiServiceImpl implements OpenApiService { + + @Autowired + private ServiceProjectService serviceProjectService; + + @Override + public List> getEnterprisesUnit(String code, Integer level) { + return Db.lambdaQuery(EnterprisesUnit.class) + .eq(level == 1, EnterprisesUnit::getProvince, code) + .eq(level == 2, EnterprisesUnit::getCity, code) + .eq(level == 3, EnterprisesUnit::getDistricts, code) + .eq(level == 4, EnterprisesUnit::getStreet, code) + .list() + .stream() + .map(item -> SelectNodeVo.builder() + .value(item.getSnowFlakeId()) + .label(item.getName()) + .build()) + .toList(); + } + + @Override + public EnterprisesUnitDetailDTO enterprisesUnitDetailById(Long enterprisesUnitId) { + return Db.lambdaQuery(EnterprisesUnit.class) + .eq(BaseEntity::getSnowFlakeId, enterprisesUnitId) + .oneOpt() + .map(item -> EnterprisesUnitDetailDTO.builder() + .snowFlakeId(item.getSnowFlakeId()) + .name(item.getName()) + .address(item.getAddress()) + .contactPersonInfo(item.getContactPersonInfo()) + .remark(item.getRemark()) + .serviceProjectList(serviceProjectService.getServiceProjectByEnterprisesUnitId(item.getSnowFlakeId())) + .createTime(item.getCreateTime()) + .build()) + .orElseThrow(() -> new MessageException("企事业单位不存在")); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/support/fastjson2/serializer/MinioPrefixSerializer.java b/policeSecurityServer/src/main/java/com/changhu/support/fastjson2/serializer/MinioPrefixSerializer.java new file mode 100644 index 0000000..5142540 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/support/fastjson2/serializer/MinioPrefixSerializer.java @@ -0,0 +1,27 @@ +package com.changhu.support.fastjson2.serializer; + +import cn.hutool.extra.spring.SpringUtil; +import com.alibaba.fastjson2.JSONWriter; +import com.alibaba.fastjson2.writer.ObjectWriter; + +import java.lang.reflect.Type; + +/** + * @author 20252 + * @createTime 2024/10/10 下午3:19 + * @desc MinioPrefixSerializer... + */ +public class MinioPrefixSerializer implements ObjectWriter { + + private final String minioPrefix = SpringUtil.getProperty("minio.url"); + + public static final MinioPrefixSerializer instance = new MinioPrefixSerializer(); + + private MinioPrefixSerializer() { + } + + @Override + public void write(JSONWriter jsonWriter, Object object, Object fieldName, Type fieldType, long features) { + jsonWriter.writeString(minioPrefix + object); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/support/interceptor/OpenApiInterceptor.java b/policeSecurityServer/src/main/java/com/changhu/support/interceptor/OpenApiInterceptor.java new file mode 100644 index 0000000..e0cc567 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/support/interceptor/OpenApiInterceptor.java @@ -0,0 +1,38 @@ +package com.changhu.support.interceptor; + +import com.changhu.common.annotation.CheckOpenApi; +import com.changhu.common.exception.MessageException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.HandlerInterceptor; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/10/9 下午5:05 + * @desc OpenApiInterceptor... + */ +@Slf4j +public class OpenApiInterceptor implements HandlerInterceptor { + + @Override + public boolean preHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Object handler) { + String header = request.getHeader("X-API-KEY"); + log.info("apiKey:{} {} 请求:{}", header, LocalDateTime.now(), request.getRequestURI()); + if (handler instanceof HandlerMethod handlerMethod) { + CheckOpenApi methodAnnotation = handlerMethod.getMethodAnnotation(CheckOpenApi.class); + if (methodAnnotation != null) { + List openApiKeys = methodAnnotation.value().getOpenApiKeys(); + if (!openApiKeys.contains(header)) { + throw new MessageException("openApiKey error!"); + } + } + } + return true; + } +} diff --git a/policeSecurityServer/src/main/resources/env/dev/application.yml b/policeSecurityServer/src/main/resources/env/dev/application.yml index b52c328..ac28684 100644 --- a/policeSecurityServer/src/main/resources/env/dev/application.yml +++ b/policeSecurityServer/src/main/resources/env/dev/application.yml @@ -23,7 +23,7 @@ knife4j: spring: application: # 服务名称 - name: managementDevServer + name: policeSecurityDevServer servlet: multipart: # 设置单个文件最大大小为500MB @@ -116,7 +116,7 @@ logging: config: classpath:conf/log4j2.xml minio: - url: http://118.253.177.137:9000 + url: https://www.hnjinglian.cn:9000 accessKey: admin secretKey: lonsung301 bucketName: police-security-dev diff --git a/policeSecurityServer/src/main/resources/env/prod/application.yml b/policeSecurityServer/src/main/resources/env/prod/application.yml index 6130758..8a3d696 100644 --- a/policeSecurityServer/src/main/resources/env/prod/application.yml +++ b/policeSecurityServer/src/main/resources/env/prod/application.yml @@ -1,5 +1,5 @@ server: - port: 8090 + port: 8765 springdoc: swagger-ui: @@ -23,10 +23,7 @@ knife4j: spring: application: # 服务名称 - name: managementProdServer - mvc: - # 如果找不到对应的handler 就抛出404异常 - throw-exception-if-no-handler-found: true + name: policeSecurityProdServer servlet: multipart: # 设置单个文件最大大小为500MB @@ -42,9 +39,9 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://172.10.10.238:3306/management_prod?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false - username: management_prod - password: lonsung301 + url: jdbc:mysql://118.253.177.137:3306/police_security_dev?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false + username: police_security_dev + password: GejDeCNj3ZBSNxSP # druid 连接池管理 druid: # 初始化时建立物理连接的个数 @@ -91,17 +88,12 @@ spring: cache: type: redis cache-names: common - mail: - host: smtp.qq.com - port: 587 - username: 2025254074@qq.com - password: vgkvmhlwfogucbfd data: redis: database: 0 - password: lonsung301 + password: redis_csPDNr port: 6380 - host: 172.10.10.238 + host: 118.253.177.137 timeout: 10s lettuce: pool: @@ -124,10 +116,10 @@ logging: config: classpath:conf/log4j2.xml minio: - url: http://172.10.10.238:9000 + url: https://www.hnjinglian.cn:9000 accessKey: admin secretKey: lonsung301 - bucketName: management-prod + bucketName: police-security-dev sa-token: # token 名称(同时也是 cookie 名称) @@ -146,6 +138,16 @@ sa-token: is-log: true # 是否尝试从 cookie 里读取 token is-read-cookie: false + # jwt秘钥 + jwt-secret-key: a29216f8-cd60-4e96-89c5-ab6012159052 + +wx: + miniapp: + #微信小程序的appid + appid: wx0acd1c4fcf94bdd3 + #微信小程序的Secret + secret: 4b700dbacb42ef258537ddc61d964a17 + msgDataFormat: JSON project: env: prod diff --git a/policeSecurityServer/src/main/resources/mapper/ServiceProjectMapper.xml b/policeSecurityServer/src/main/resources/mapper/ServiceProjectMapper.xml index c770498..dbe90f9 100644 --- a/policeSecurityServer/src/main/resources/mapper/ServiceProjectMapper.xml +++ b/policeSecurityServer/src/main/resources/mapper/ServiceProjectMapper.xml @@ -82,4 +82,56 @@ group by eu.snow_flake_id order by any_value(sp.create_time) desc; + + + + + +