diff --git a/policeSecurityServer/src/main/java/com/changhu/common/db/enums/CheckStatus.java b/policeSecurityServer/src/main/java/com/changhu/common/db/enums/CheckStatus.java index 0331752..fae69b1 100644 --- a/policeSecurityServer/src/main/java/com/changhu/common/db/enums/CheckStatus.java +++ b/policeSecurityServer/src/main/java/com/changhu/common/db/enums/CheckStatus.java @@ -1,5 +1,6 @@ package com.changhu.common.db.enums; +import com.baomidou.mybatisplus.annotation.IEnum; import com.changhu.common.db.BaseEnum; import lombok.AllArgsConstructor; import lombok.Getter; @@ -11,7 +12,7 @@ import lombok.Getter; */ @Getter @AllArgsConstructor -public enum CheckStatus implements BaseEnum { +public enum CheckStatus implements BaseEnum, IEnum { checked(0, "已审核"), unChecked(1, "未审核"), diff --git a/policeSecurityServer/src/main/java/com/changhu/controller/CommonController.java b/policeSecurityServer/src/main/java/com/changhu/controller/CommonController.java new file mode 100644 index 0000000..045a868 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/controller/CommonController.java @@ -0,0 +1,131 @@ +package com.changhu.controller; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.ClassUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.ReflectUtil; +import com.changhu.common.annotation.IsExtData; +import com.changhu.common.annotation.JsonBody; +import com.changhu.common.db.BaseEnum; +import com.changhu.common.pojo.model.JsonResult; +import com.changhu.common.pojo.vo.SelectNodeVo; +import com.changhu.common.pojo.vo.TreeNodeVo; +import com.changhu.pojo.params.PoliceUnitRegisterParams; +import com.changhu.pojo.params.SecurityUnitRegisterParams; +import com.changhu.service.AdministrativeDivisionService; +import com.changhu.service.CommonService; +import com.changhu.support.minio.service.MinioService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @author 20252 + * @createTime 2024/8/30 下午2:16 + * @desc CommonController... + */ +@Tag(name = "公共接口") +@RequestMapping("/common") +@JsonBody +public class CommonController { + + @Autowired + private CommonService commonService; + + @Autowired + private MinioService minioService; + + @Autowired + private AdministrativeDivisionService administrativeDivisionService; + + private static final Map>> enumsResult = new HashMap<>(); + + + @Operation(summary = "行政区划树") + @GetMapping("/administrativeDivisionTree") + public List> AdministrativeDivisionTree(@Schema(description = "等级") @RequestParam(defaultValue = "4") Integer level) { + return administrativeDivisionService.tree(level); + } + + @Operation(summary = "保安单位注册") + @PostMapping("/securityUnitRegister") + public JsonResult securityUnitRegister(@RequestBody @Valid SecurityUnitRegisterParams params) { + return commonService.securityUnitRegister(params); + } + + @Operation(summary = "公安单位注册") + @PostMapping("/policeUnitRegister") + public JsonResult policeUnitRegister(@RequestBody @Valid PoliceUnitRegisterParams params) { + return commonService.policeUnitRegister(params); + } + + @Operation(summary = "获取临时上传地址") + @GetMapping("/getResignedObjectUrl") + public String getResignedObjectUrl(@RequestParam @Schema(description = "bucketName") String bucketName, + @RequestParam @Schema(description = "对象地址") String objectName) { + return minioService.getResignedObjectUrl(bucketName, objectName); + } + + @GetMapping("/enums") + public Map>> enums() { + return enumsResult; + } + + @SuppressWarnings("unchecked") + @PostConstruct + public void initEnums() { + Set> classes = ClassUtil.scanPackageBySuper("com.changhu.common.db.enums", BaseEnum.class); + for (Class aClass : classes) { + if (BaseEnum.class.isAssignableFrom(aClass)) { + enumsResult.put(aClass.getSimpleName(), listSelectNodes((Class>) aClass)); + } + } + } + + public static > List> listSelectNodes(Class enumType) { + if (enumType == null) { + return null; + } + Field[] fields = ReflectUtil.getFields(enumType); + + List extras = new ArrayList<>(); + + for (Field field : fields) { + IsExtData annotation = field.getAnnotation(IsExtData.class); + if (ObjectUtil.isNotNull(annotation)) { + extras.add(field.getName()); + } + } + + T[] enumConstants = enumType.getEnumConstants(); + if (enumConstants == null) { + return null; + } + + return Stream.of(enumConstants).map(v -> { + SelectNodeVo vo = new SelectNodeVo<>(); + vo.setValue(v.getValue()); + vo.setLabel(v.getLabel()); + if (CollUtil.isNotEmpty(extras)) { + Dict map = Dict.create(); + for (String extra : extras) { + map.put(extra, ReflectUtil.getFieldValue(v, extra)); + } + vo.setExtData(map); + } + return vo; + }).collect(Collectors.toList()); + + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/mapper/AdministrativeDivisionMapper.java b/policeSecurityServer/src/main/java/com/changhu/mapper/AdministrativeDivisionMapper.java new file mode 100644 index 0000000..eb31e58 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/mapper/AdministrativeDivisionMapper.java @@ -0,0 +1,26 @@ +package com.changhu.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.changhu.common.pojo.vo.TreeNodeVo; +import com.changhu.pojo.entity.AdministrativeDivision; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * administrative_division (全国行政区划表(2023/12/04)) 固化类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Mapper +public interface AdministrativeDivisionMapper extends BaseMapper { + + /** + * 树列表 + * + * @param level 等级 + * @return 结果 + */ + List> treeList(@Param("level") Integer level); +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/controller/PoliceUnitController.java b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/PoliceUnitController.java new file mode 100644 index 0000000..ef662ee --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/PoliceUnitController.java @@ -0,0 +1,39 @@ +package com.changhu.module.management.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.changhu.common.annotation.JsonBody; +import com.changhu.common.utils.JavaClassToTsUtil; +import com.changhu.module.management.pojo.queryParams.PoliceUnitPagerQueryParams; +import com.changhu.module.management.pojo.vo.PoliceUnitPagerVo; +import com.changhu.module.management.service.PoliceUnitService; +import com.changhu.support.mybatisplus.pojo.params.PageParams; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +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; + +/** + * @author 20252 + * @createTime 2024/8/30 下午3:45 + * @desc PoliceUnitController... + */ +@Tag(name = "单位-公安") +@JsonBody +@RequestMapping("/policeUnit") +public class PoliceUnitController { + + @Autowired + private PoliceUnitService policeUnitService; + + @Operation(summary = "分页查询") + @PostMapping("/pager") + public Page pager(@RequestBody PageParams queryParams) { + return policeUnitService.pager(queryParams); + } + + public static void main(String[] args) { + System.out.println(JavaClassToTsUtil.parse(PoliceUnitPagerVo.class)); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/controller/SecurityUnitController.java b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/SecurityUnitController.java new file mode 100644 index 0000000..877ee07 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/SecurityUnitController.java @@ -0,0 +1,42 @@ +package com.changhu.module.management.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.changhu.common.annotation.JsonBody; +import com.changhu.module.management.pojo.params.SecurityUnitSaveOrUpdateParams; +import com.changhu.module.management.pojo.queryParams.SecurityUnitPagerQueryParams; +import com.changhu.module.management.pojo.vo.SecurityUnitPagerVo; +import com.changhu.module.management.service.SecurityUnitService; +import com.changhu.support.mybatisplus.pojo.params.PageParams; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +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; + +/** + * @author 20252 + * @createTime 2024/8/30 上午10:46 + * @desc SecurityUnitController... + */ +@Tag(name = "单位-保安") +@JsonBody +@RequestMapping("/securityUnit") +public class SecurityUnitController { + + @Autowired + private SecurityUnitService securityUnitService; + + @Operation(summary = "分页查询") + @PostMapping("/pager") + public Page pager(@RequestBody PageParams queryParams) { + return securityUnitService.pager(queryParams); + } + + @Operation(summary = "新增或修改") + @PostMapping("/saveOrUpdate") + public void saveOrUpdate(@RequestBody @Valid SecurityUnitSaveOrUpdateParams params) { + securityUnitService.saveOrUpdate(params); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/controller/TestController.java b/policeSecurityServer/src/main/java/com/changhu/module/management/controller/TestController.java deleted file mode 100644 index fc51daf..0000000 --- a/policeSecurityServer/src/main/java/com/changhu/module/management/controller/TestController.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.changhu.module.management.controller; - -import com.changhu.common.db.enums.IsOrNot; -import com.changhu.common.db.enums.DeleteFlag; - -import java.time.LocalDateTime; - -import com.changhu.common.db.enums.IsEnable; -import com.changhu.common.db.enums.Sex; - -import com.changhu.common.annotation.JsonBody; -import com.changhu.module.management.pojo.entity.ManagementPoliceUnitUser; -import lombok.Data; -import org.springframework.web.bind.annotation.*; - -/** - * @author 20252 - * @createTime 2024/8/28 下午4:02 - * @desc TestController... - */ -@JsonBody -@RequestMapping("/test") -public class TestController { - - @GetMapping("/get") - public ManagementPoliceUnitUser get() { - ManagementPoliceUnitUser managementPoliceUnitUser = new ManagementPoliceUnitUser(); - managementPoliceUnitUser.setPoliceUnitId(0L); - managementPoliceUnitUser.setName(""); - managementPoliceUnitUser.setSex(Sex.MAN); - managementPoliceUnitUser.setTelephone(""); - managementPoliceUnitUser.setSalt(""); - managementPoliceUnitUser.setPassword(""); - managementPoliceUnitUser.setIsEnable(IsEnable.TRUE); - managementPoliceUnitUser.setIsAdmin(IsOrNot.IS); - managementPoliceUnitUser.setSnowFlakeId(0L); - managementPoliceUnitUser.setCreateBy(0L); - managementPoliceUnitUser.setCreateTime(LocalDateTime.now()); - managementPoliceUnitUser.setUpdateBy(0L); - managementPoliceUnitUser.setUpdateTime(LocalDateTime.now()); - managementPoliceUnitUser.setDeleteFlag(0); - return managementPoliceUnitUser; - } - - @PostMapping("/de") - public void test(@RequestBody P p) { - System.out.println(p); - } - - - @Data - class P { - private String name; - private DeleteFlag deleteFlag; - - } -} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/PoliceUnitMapper.java b/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/PoliceUnitMapper.java new file mode 100644 index 0000000..7626c2c --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/PoliceUnitMapper.java @@ -0,0 +1,28 @@ +package com.changhu.module.management.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.changhu.module.management.pojo.entity.PoliceUnit; +import com.changhu.module.management.pojo.queryParams.PoliceUnitPagerQueryParams; +import com.changhu.module.management.pojo.vo.PoliceUnitPagerVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * police_unit (公安单位) 固化类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Mapper +public interface PoliceUnitMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页参数 + * @param params 查询参数 + * @return 结果 + */ + Page pager(@Param("page") Page page, + @Param("params") PoliceUnitPagerQueryParams params); +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/SecurityUnitMapper.java b/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/SecurityUnitMapper.java new file mode 100644 index 0000000..0d1a407 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/mapper/SecurityUnitMapper.java @@ -0,0 +1,31 @@ +package com.changhu.module.management.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.changhu.module.management.pojo.entity.SecurityUnit; +import com.changhu.module.management.pojo.queryParams.SecurityUnitPagerQueryParams; +import com.changhu.module.management.pojo.vo.SecurityUnitPagerVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * security_unit (保安单位) 固化类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Mapper +public interface SecurityUnitMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param params 查询参数 + * @return 结果 + */ + Page pager(@Param("page") Page page, + @Param("params") SecurityUnitPagerQueryParams params); +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/entity/PoliceUnit.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/entity/PoliceUnit.java new file mode 100644 index 0000000..4e766c9 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/entity/PoliceUnit.java @@ -0,0 +1,88 @@ +package com.changhu.module.management.pojo.entity; + +import java.io.Serial; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler; +import com.changhu.common.db.enums.CheckStatus; +import com.changhu.common.db.enums.IsEnable; +import com.changhu.module.management.pojo.model.ContactPersonInfo; +import com.changhu.support.mybatisplus.pojo.entity.BaseEntity; +import lombok.Data; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import lombok.EqualsAndHashCode; +import com.baomidou.mybatisplus.annotation.TableName; + + +/** + * 公安单位 实体类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@TableName(autoResultMap = true) +public class PoliceUnit extends BaseEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 名称 + */ + private String name; + + /** + * 代码 + */ + private String code; + + /** + * 省 + */ + private String province; + + /** + * 市 + */ + private String city; + + /** + * 区/县 + */ + private String districts; + + /** + * 街道 + */ + private String street; + + /** + * 详细地址 + */ + private String address; + + /** + * 联系人 + */ + @TableField(typeHandler = Fastjson2TypeHandler.class) + private ContactPersonInfo contactPersonInfo; + + /** + * 是否启用 + */ + private IsEnable isEnable; + + /** + * 审核状态 + */ + private CheckStatus checkStatus; + + +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/entity/SecurityUnit.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/entity/SecurityUnit.java new file mode 100644 index 0000000..357aad6 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/entity/SecurityUnit.java @@ -0,0 +1,98 @@ +package com.changhu.module.management.pojo.entity; + +import java.io.Serial; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler; +import com.changhu.common.db.enums.CheckStatus; +import com.changhu.common.db.enums.IsEnable; +import com.changhu.module.management.pojo.model.LegalPersonInfo; +import com.changhu.support.mybatisplus.pojo.entity.BaseEntity; +import lombok.Data; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import lombok.EqualsAndHashCode; +import com.baomidou.mybatisplus.annotation.TableName; + + +/** + * 保安单位 实体类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@TableName(autoResultMap = true) +public class SecurityUnit extends BaseEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 名称 + */ + private String name; + + /** + * 统一社会编码 + */ + private String socialCode; + + /** + * 营业执照 + */ + private String businessLicense; + + /** + * 法人信息 + */ + @TableField(typeHandler = Fastjson2TypeHandler.class) + private LegalPersonInfo legalPersonInfo; + + /** + * 省 + */ + private String province; + + /** + * 市 + */ + private String city; + + /** + * 区/县 + */ + private String districts; + + /** + * 街道 + */ + private String street; + + /** + * 详细地址 + */ + private String address; + + /** + * 公司性质 + */ + private String nature; + + /** + * 是否启用 + */ + private IsEnable isEnable; + + /** + * 审核状态 + */ + private CheckStatus checkStatus; + + +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/model/ContactPersonInfo.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/model/ContactPersonInfo.java new file mode 100644 index 0000000..28ef868 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/model/ContactPersonInfo.java @@ -0,0 +1,22 @@ +package com.changhu.module.management.pojo.model; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +/** + * @author 20252 + * @createTime 2024/8/30 下午3:43 + * @desc ContactPersonInfo... + */ +@Data +public class ContactPersonInfo { + + @NotBlank(message = "名字不能为空") + @Schema(description = "名字") + private String name; + + @NotBlank(message = "手机号不能为空") + @Schema(description = "手机号") + private String telephone; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/model/LegalPersonInfo.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/model/LegalPersonInfo.java new file mode 100644 index 0000000..df816c3 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/model/LegalPersonInfo.java @@ -0,0 +1,20 @@ +package com.changhu.module.management.pojo.model; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @author 20252 + * @createTime 2024/8/30 上午11:01 + * @desc 法人信息 + */ +@Data +public class LegalPersonInfo { + + @Schema(description = "名字") + private String name; + + @Schema(description = "电话") + private String telephone; + +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/SecurityUnitSaveOrUpdateParams.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/SecurityUnitSaveOrUpdateParams.java new file mode 100644 index 0000000..2b45ee3 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/params/SecurityUnitSaveOrUpdateParams.java @@ -0,0 +1,56 @@ +package com.changhu.module.management.pojo.params; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler; +import com.changhu.common.db.enums.CheckStatus; +import com.changhu.common.db.enums.IsEnable; +import com.changhu.common.validator.annotation.IsMobile; +import com.changhu.module.management.pojo.model.LegalPersonInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/8/30 下午3:07 + * @desc SecurityUnitSaveOrUpdateParams... + */ +@Data +public class SecurityUnitSaveOrUpdateParams { + @Schema(description = "id") + private Long snowFlakeId; + + @NotBlank(message = "名字不能为空") + @Schema(description = "名称") + private String name; + + @NotBlank(message = "社会编码不能为空") + @Schema(description = "社会编码") + private String socialCode; + + @NotBlank(message = "营业执照不能为空") + @Schema(description = "营业执照") + private String businessLicense; + + @NotBlank(message = "法人信息不能为空") + @Schema(description = "法人信息") + private LegalPersonInfo legalPersonInfo; + + @NotBlank(message = "公司性质不能为空") + @Schema(description = "性质") + private String nature; + + @NotEmpty(message = "行政区划不能为空") + @Schema(description = "行政区划编码") + private List administrativeDivisionCodes; + + @NotBlank(message = "详细地址不能为空") + @Schema(description = "详细地址") + private String address; + + @Schema(description = "是否启用") + private IsEnable isEnable; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/queryParams/PoliceUnitPagerQueryParams.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/queryParams/PoliceUnitPagerQueryParams.java new file mode 100644 index 0000000..178e81f --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/queryParams/PoliceUnitPagerQueryParams.java @@ -0,0 +1,32 @@ +package com.changhu.module.management.pojo.queryParams; + +import com.changhu.common.db.enums.CheckStatus; +import com.changhu.common.db.enums.IsEnable; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/8/30 下午3:55 + * @desc PoliceUnitPagerQueryParams... + */ +@Data +public class PoliceUnitPagerQueryParams { + + @Schema(description = "名称") + private String name; + + @Schema(description = "代码") + private String code; + + @Schema(description = "行政区划") + private List administrativeDivisionCodes; + + @Schema(description = "是否启用") + private IsEnable isEnable; + + @Schema(description = "审核状态") + private CheckStatus checkStatus; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/queryParams/SecurityUnitPagerQueryParams.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/queryParams/SecurityUnitPagerQueryParams.java new file mode 100644 index 0000000..253c23b --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/queryParams/SecurityUnitPagerQueryParams.java @@ -0,0 +1,27 @@ +package com.changhu.module.management.pojo.queryParams; + +import com.changhu.common.db.enums.CheckStatus; +import com.changhu.common.db.enums.IsEnable; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/8/30 上午11:03 + * @desc SecurityUnitPagerQueryParams... + */ +@Data +public class SecurityUnitPagerQueryParams { + @Schema(description = "名称") + private String name; + @Schema(description = "社会编码") + private String socialCode; + @Schema(description = "行政区划编码") + private List administrativeDivisionCodes; + @Schema(description = "是否启用") + private IsEnable isEnable; + @Schema(description = "审核状态") + private CheckStatus checkStatus; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/vo/PoliceUnitPagerVo.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/vo/PoliceUnitPagerVo.java new file mode 100644 index 0000000..f47a20b --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/vo/PoliceUnitPagerVo.java @@ -0,0 +1,60 @@ +package com.changhu.module.management.pojo.vo; + +import com.changhu.common.db.enums.CheckStatus; +import com.changhu.common.db.enums.IsEnable; +import com.changhu.module.management.pojo.model.ContactPersonInfo; +import io.swagger.v3.oas.annotations.media.Schema; + +import java.time.LocalDateTime; + +/** + * @author 20252 + * @createTime 2024/8/30 下午3:55 + * @desc PoliceUnitPagerVo... + */ +public class PoliceUnitPagerVo { + + @Schema(description = "id") + private Long snowFlakeId; + + @Schema(description = "名称") + private String name; + + @Schema(description = "代码") + private String code; + + @Schema(description = "省编码") + private String province; + @Schema(description = "省名字") + private String provinceName; + + @Schema(description = "市编码") + private String city; + @Schema(description = "市名字") + private String cityName; + + @Schema(description = "区/县编码") + private String districts; + @Schema(description = "区/县名字") + private String districtsName; + + @Schema(description = "街道编码") + private String street; + @Schema(description = "街道编码") + private String streetName; + + @Schema(description = "详细地址") + private String address; + + @Schema(description = "联系人") + private ContactPersonInfo contactPersonInfo; + + @Schema(description = "是否启用") + private IsEnable isEnable; + + @Schema(description = "审核状态") + private CheckStatus checkStatus; + + @Schema(description = "创建时间") + private LocalDateTime createTime; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/vo/SecurityUnitPagerVo.java b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/vo/SecurityUnitPagerVo.java new file mode 100644 index 0000000..57a09f3 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/pojo/vo/SecurityUnitPagerVo.java @@ -0,0 +1,67 @@ +package com.changhu.module.management.pojo.vo; + +import com.changhu.common.db.enums.CheckStatus; +import com.changhu.common.db.enums.IsEnable; +import com.changhu.module.management.pojo.model.LegalPersonInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author 20252 + * @createTime 2024/8/30 上午10:50 + * @desc SecurityUnitPagerVo... + */ +@Data +public class SecurityUnitPagerVo { + @Schema(description = "雪花id") + private Long snowFlakeId; + + @Schema(description = "名称") + private String name; + + @Schema(description = "社会编码") + private String socialCode; + + @Schema(description = "营业执照") + private String businessLicense; + + @Schema(description = "法人信息") + private LegalPersonInfo legalPersonInfo; + + @Schema(description = "省编码") + private String province; + @Schema(description = "省名字") + private String provinceName; + + @Schema(description = "市编码") + private String city; + @Schema(description = "市名字") + private String cityName; + + @Schema(description = "区/县编码") + private String districts; + @Schema(description = "区/县名字") + private String districtsName; + + @Schema(description = "街道编码") + private String street; + @Schema(description = "街道编码") + private String streetName; + + @Schema(description = "详细地址") + private String address; + + @Schema(description = "公司性质") + private String nature; + + @Schema(description = "是否启用") + private IsEnable isEnable; + + @Schema(description = "审核状态") + private CheckStatus checkStatus; + + @Schema(description = "创建时间") + private LocalDateTime createTime; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/PoliceUnitService.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/PoliceUnitService.java new file mode 100644 index 0000000..adb0358 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/PoliceUnitService.java @@ -0,0 +1,24 @@ +package com.changhu.module.management.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.changhu.module.management.pojo.entity.PoliceUnit; +import com.changhu.module.management.pojo.queryParams.PoliceUnitPagerQueryParams; +import com.changhu.module.management.pojo.vo.PoliceUnitPagerVo; +import com.changhu.support.mybatisplus.pojo.params.PageParams; + +/** + * police_unit (公安单位) 服务类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +public interface PoliceUnitService extends IService { + + /** + * 分页查询 + * + * @param queryParams 查询参数 + * @return 结果 + */ + Page pager(PageParams queryParams); +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/SecurityUnitService.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/SecurityUnitService.java new file mode 100644 index 0000000..373384f --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/SecurityUnitService.java @@ -0,0 +1,32 @@ +package com.changhu.module.management.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.changhu.module.management.pojo.entity.SecurityUnit; +import com.changhu.module.management.pojo.params.SecurityUnitSaveOrUpdateParams; +import com.changhu.module.management.pojo.queryParams.SecurityUnitPagerQueryParams; +import com.changhu.module.management.pojo.vo.SecurityUnitPagerVo; +import com.changhu.support.mybatisplus.pojo.params.PageParams; + +/** + * security_unit (保安单位) 服务类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +public interface SecurityUnitService extends IService { + + /** + * 分页查询 + * + * @param queryParams 查询参数 + * @return 结果 + */ + Page pager(PageParams queryParams); + + /** + * 新增或修改保安单位 + * + * @param params 参数 + */ + void saveOrUpdate(SecurityUnitSaveOrUpdateParams params); +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/PoliceUnitServiceImpl.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/PoliceUnitServiceImpl.java new file mode 100644 index 0000000..0c87772 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/PoliceUnitServiceImpl.java @@ -0,0 +1,25 @@ +package com.changhu.module.management.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.changhu.module.management.mapper.PoliceUnitMapper; +import com.changhu.module.management.pojo.entity.PoliceUnit; +import com.changhu.module.management.pojo.queryParams.PoliceUnitPagerQueryParams; +import com.changhu.module.management.pojo.vo.PoliceUnitPagerVo; +import com.changhu.module.management.service.PoliceUnitService; +import com.changhu.support.mybatisplus.pojo.params.PageParams; +import org.springframework.stereotype.Service; + +/** + * police_unit (公安单位) 服务实现类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Service +public class PoliceUnitServiceImpl extends ServiceImpl implements PoliceUnitService { + + @Override + public Page pager(PageParams queryParams) { + return baseMapper.pager(queryParams.getPage(), queryParams.getParams()); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/SecurityUnitServiceImpl.java b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/SecurityUnitServiceImpl.java new file mode 100644 index 0000000..595380d --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/module/management/service/impl/SecurityUnitServiceImpl.java @@ -0,0 +1,87 @@ +package com.changhu.module.management.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.changhu.common.utils.JavaClassToTsUtil; +import com.changhu.module.management.pojo.model.LegalPersonInfo; +import com.changhu.module.management.pojo.params.SecurityUnitSaveOrUpdateParams; +import com.google.common.collect.Lists; +import com.changhu.common.db.enums.IsEnable; +import com.changhu.common.db.enums.CheckStatus; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.changhu.module.management.mapper.SecurityUnitMapper; +import com.changhu.module.management.pojo.entity.SecurityUnit; +import com.changhu.module.management.pojo.queryParams.SecurityUnitPagerQueryParams; +import com.changhu.module.management.pojo.vo.SecurityUnitPagerVo; +import com.changhu.module.management.service.SecurityUnitService; +import com.changhu.support.mybatisplus.pojo.params.PageParams; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +/** + * security_unit (保安单位) 服务实现类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Service +public class SecurityUnitServiceImpl extends ServiceImpl implements SecurityUnitService { + + @Override + public Page pager(PageParams queryParams) { + Page page = queryParams.getPage(); + SecurityUnitPagerQueryParams params = queryParams.getParams(); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .like(StrUtil.isNotEmpty(params.getName()), SecurityUnit::getName, params.getName()) + .like(StrUtil.isNotEmpty(params.getSocialCode()), SecurityUnit::getSocialCode, params.getSocialCode()); + + if (params.getCheckStatus() != null) { + wrapper.eq(SecurityUnit::getCheckStatus, params.getCheckStatus().getValue()); + } + if (params.getIsEnable() != null) { + wrapper.eq(SecurityUnit::getIsEnable, params.getIsEnable().getValue()); + } + + List administrativeDivisionCodes = params.getAdministrativeDivisionCodes(); + if (administrativeDivisionCodes != null) { + wrapper.eq(!administrativeDivisionCodes.isEmpty(), SecurityUnit::getProvince, administrativeDivisionCodes.get(0)); + wrapper.eq(administrativeDivisionCodes.size() >= 2, SecurityUnit::getCity, administrativeDivisionCodes.get(1)); + wrapper.eq(administrativeDivisionCodes.size() >= 3, SecurityUnit::getDistricts, administrativeDivisionCodes.get(2)); + wrapper.eq(administrativeDivisionCodes.size() >= 4, SecurityUnit::getStreet, administrativeDivisionCodes.get(3)); + } + return baseMapper.pager(page, params); + } + + @Override + public void saveOrUpdate(SecurityUnitSaveOrUpdateParams params) { + SecurityUnit securityUnit = BeanUtil.copyProperties(params, SecurityUnit.class); + Optional.ofNullable(params.getAdministrativeDivisionCodes()) + .ifPresent(codes -> { + if (!codes.isEmpty()) { + securityUnit.setProvince(codes.get(0)); + } + if (codes.size() >= 2) { + securityUnit.setCity(codes.get(1)); + } + if (codes.size() >= 3) { + securityUnit.setCity(codes.get(2)); + } + if (codes.size() >= 4) { + securityUnit.setCity(codes.get(3)); + } + }); + this.saveOrUpdate(securityUnit); + } + + public static void main(String[] args) { + String parse = JavaClassToTsUtil.parse(SecurityUnitPagerQueryParams.class); + System.out.println(parse); + } + +} diff --git a/policeSecurityServer/src/main/java/com/changhu/pojo/entity/AdministrativeDivision.java b/policeSecurityServer/src/main/java/com/changhu/pojo/entity/AdministrativeDivision.java new file mode 100644 index 0000000..bc139d1 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/pojo/entity/AdministrativeDivision.java @@ -0,0 +1,57 @@ +package com.changhu.pojo.entity; + +import java.io.Serial; +import java.io.Serializable; + +import com.changhu.support.mybatisplus.pojo.entity.BaseEntity; +import lombok.Data; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import lombok.EqualsAndHashCode; +import com.baomidou.mybatisplus.annotation.TableName; + + +/** + * 全国行政区划表(2023/12/04) 实体类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@TableName(autoResultMap = true) +public class AdministrativeDivision extends BaseEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 区划名称 + */ + private String name; + + /** + * 区划编码 + */ + private String code; + + /** + * 上级行政区划编码 + */ + private String parentCode; + + /** + * 区划级别: 1:省/自治区/直辖市 2:市级 3:区/县级 4:街道级 + */ + private Integer level; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/policeSecurityServer/src/main/java/com/changhu/pojo/params/PoliceUnitRegisterParams.java b/policeSecurityServer/src/main/java/com/changhu/pojo/params/PoliceUnitRegisterParams.java new file mode 100644 index 0000000..a0ca769 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/pojo/params/PoliceUnitRegisterParams.java @@ -0,0 +1,35 @@ +package com.changhu.pojo.params; + +import com.changhu.module.management.pojo.model.ContactPersonInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/8/30 下午4:47 + * @desc PoliceUnitRegisterParams... + */ +@Data +public class PoliceUnitRegisterParams { + @NotBlank(message = "单位名称不能为空") + @Schema(description = "单位名称") + private String name; + + @NotBlank(message = "单位代码不能为空") + @Schema(description = "单位代码") + private String code; + + @NotEmpty(message = "行政区划不能为空") + @Schema(description = "行政区划") + private List administrativeDivisionCodes; + + @Schema(description = "详细地址") + private String address; + + @Schema(description = "联系人") + private ContactPersonInfo contactPersonInfo; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/pojo/params/SecurityUnitRegisterParams.java b/policeSecurityServer/src/main/java/com/changhu/pojo/params/SecurityUnitRegisterParams.java new file mode 100644 index 0000000..91f2b8f --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/pojo/params/SecurityUnitRegisterParams.java @@ -0,0 +1,49 @@ +package com.changhu.pojo.params; + +import com.changhu.module.management.pojo.model.LegalPersonInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * @author 20252 + * @createTime 2024/8/30 下午3:16 + * @desc SecurityUnitRegisterParams... + */ +@Data +public class SecurityUnitRegisterParams { + @Schema(description = "id") + private Long snowFlakeId; + + @NotBlank(message = "名字不能为空") + @Schema(description = "名称") + private String name; + + @NotBlank(message = "社会编码不能为空") + @Schema(description = "社会编码") + private String socialCode; + + @NotBlank(message = "营业执照不能为空") + @Schema(description = "营业执照") + private String businessLicense; + + @Schema(description = "法人信息") + private LegalPersonInfo legalPersonInfo; + + @NotBlank(message = "公司性质不能为空") + @Schema(description = "性质") + private String nature; + + @NotEmpty(message = "行政区划不能为空") + @Schema(description = "行政区划编码") + private List administrativeDivisionCodes; + + @NotBlank(message = "详细地址不能为空") + @Schema(description = "详细地址") + private String address; +} diff --git a/policeSecurityServer/src/main/java/com/changhu/service/AdministrativeDivisionService.java b/policeSecurityServer/src/main/java/com/changhu/service/AdministrativeDivisionService.java new file mode 100644 index 0000000..48b910c --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/service/AdministrativeDivisionService.java @@ -0,0 +1,23 @@ +package com.changhu.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.changhu.common.pojo.vo.TreeNodeVo; +import com.changhu.pojo.entity.AdministrativeDivision; + +import java.util.List; + +/** + * administrative_division (全国行政区划表(2023/12/04)) 服务类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +public interface AdministrativeDivisionService extends IService { + + /** + * 全国行政区划树 + * + * @param level 需要几级数据 + * @return 全国行政区划树 + */ + List> tree(Integer level); +} diff --git a/policeSecurityServer/src/main/java/com/changhu/service/CommonService.java b/policeSecurityServer/src/main/java/com/changhu/service/CommonService.java new file mode 100644 index 0000000..1b4a2b0 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/service/CommonService.java @@ -0,0 +1,27 @@ +package com.changhu.service; + +import com.changhu.common.pojo.model.JsonResult; +import com.changhu.pojo.params.PoliceUnitRegisterParams; +import com.changhu.pojo.params.SecurityUnitRegisterParams; + +/** + * @author 20252 + * @createTime 2024/8/30 下午3:18 + * @desc CommonService... + */ +public interface CommonService { + + /** + * 保安单位注册 + * + * @param params 注册参数 + */ + JsonResult securityUnitRegister(SecurityUnitRegisterParams params); + + /** + * 公安单位注册 + * + * @param params 注册参数 + */ + JsonResult policeUnitRegister(PoliceUnitRegisterParams params); +} diff --git a/policeSecurityServer/src/main/java/com/changhu/service/impl/AdministrativeDivisionServiceImpl.java b/policeSecurityServer/src/main/java/com/changhu/service/impl/AdministrativeDivisionServiceImpl.java new file mode 100644 index 0000000..cb51542 --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/service/impl/AdministrativeDivisionServiceImpl.java @@ -0,0 +1,25 @@ +package com.changhu.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.changhu.common.pojo.vo.TreeNodeVo; +import com.changhu.mapper.AdministrativeDivisionMapper; +import com.changhu.pojo.entity.AdministrativeDivision; +import com.changhu.service.AdministrativeDivisionService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * administrative_division (全国行政区划表(2023/12/04)) 服务实现类 + * author: luozhun + * desc 由groovy脚本自动生成 + */ +@Service +public class AdministrativeDivisionServiceImpl extends ServiceImpl implements AdministrativeDivisionService { + + @Override + public List> tree(Integer level) { + List> treeNodeVos = baseMapper.treeList(level); + return TreeNodeVo.buildTree(treeNodeVos, "0"); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/service/impl/CommonServiceImpl.java b/policeSecurityServer/src/main/java/com/changhu/service/impl/CommonServiceImpl.java new file mode 100644 index 0000000..c62966f --- /dev/null +++ b/policeSecurityServer/src/main/java/com/changhu/service/impl/CommonServiceImpl.java @@ -0,0 +1,97 @@ +package com.changhu.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.toolkit.Db; +import com.changhu.common.enums.ResultCode; +import com.changhu.common.exception.MessageException; +import com.changhu.common.pojo.model.JsonResult; +import com.changhu.module.management.mapper.PoliceUnitMapper; +import com.changhu.module.management.mapper.SecurityUnitMapper; +import com.changhu.module.management.pojo.entity.PoliceUnit; +import com.changhu.module.management.pojo.entity.SecurityUnit; +import com.changhu.pojo.params.PoliceUnitRegisterParams; +import com.changhu.pojo.params.SecurityUnitRegisterParams; +import com.changhu.service.CommonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +/** + * @author 20252 + * @createTime 2024/8/30 下午3:18 + * @desc CommonServiceImpl... + */ +@Service +public class CommonServiceImpl implements CommonService { + + @Autowired + private SecurityUnitMapper securityUnitMapper; + + @Autowired + private PoliceUnitMapper policeUnitMapper; + + + @Override + public JsonResult securityUnitRegister(SecurityUnitRegisterParams params) { + //先查看该社会编码是否存在 + boolean exists = securityUnitMapper.exists(Wrappers.lambdaQuery().eq(SecurityUnit::getSocialCode, params.getSocialCode())); + if (exists) { + throw new MessageException("该单位已存在或已提交申请!"); + } + SecurityUnit securityUnit = BeanUtil.copyProperties(params, SecurityUnit.class); + Optional.ofNullable(params.getAdministrativeDivisionCodes()) + .ifPresent(codes -> { + if (!codes.isEmpty()) { + securityUnit.setProvince(codes.get(0)); + } + if (codes.size() >= 2) { + securityUnit.setCity(codes.get(1)); + } + if (codes.size() >= 3) { + securityUnit.setDistricts(codes.get(2)); + } + if (codes.size() >= 4) { + securityUnit.setStreet(codes.get(3)); + } + }); + int i = securityUnitMapper.insert(securityUnit); + if (i <= 0) { + throw new MessageException(ResultCode.ERROR); + } + + return JsonResult.successMsg("申请已提交,请等待审核"); + } + + @Override + public JsonResult policeUnitRegister(PoliceUnitRegisterParams params) { + //先查看该公安单位是否存在 + boolean exists = policeUnitMapper.exists(Wrappers.lambdaQuery().eq(PoliceUnit::getCode, params.getCode())); + if (exists) { + throw new MessageException("该单位已存在或已提交申请!"); + } + PoliceUnit policeUnit = BeanUtil.copyProperties(params, PoliceUnit.class); + Optional.ofNullable(params.getAdministrativeDivisionCodes()) + .ifPresent(codes -> { + if (!codes.isEmpty()) { + policeUnit.setProvince(codes.get(0)); + } + if (codes.size() >= 2) { + policeUnit.setCity(codes.get(1)); + } + if (codes.size() >= 3) { + policeUnit.setDistricts(codes.get(2)); + } + if (codes.size() >= 4) { + policeUnit.setStreet(codes.get(3)); + } + }); + int i = policeUnitMapper.insert(policeUnit); + if (i <= 0) { + throw new MessageException(ResultCode.ERROR); + } + + return JsonResult.successMsg("申请已提交,请等待审核"); + } +} diff --git a/policeSecurityServer/src/main/java/com/changhu/support/knife4j/Knefe4jConfig.java b/policeSecurityServer/src/main/java/com/changhu/support/knife4j/Knefe4jConfig.java index bf181e8..4475426 100644 --- a/policeSecurityServer/src/main/java/com/changhu/support/knife4j/Knefe4jConfig.java +++ b/policeSecurityServer/src/main/java/com/changhu/support/knife4j/Knefe4jConfig.java @@ -17,7 +17,7 @@ import org.springframework.context.annotation.Configuration; public class Knefe4jConfig { - @Value("spring.application.name") + @Value("${spring.application.name}") private String applicationName; @Bean diff --git a/policeSecurityServer/src/main/resources/env/dev/application.yml b/policeSecurityServer/src/main/resources/env/dev/application.yml index 253af3c..b6b5cb7 100644 --- a/policeSecurityServer/src/main/resources/env/dev/application.yml +++ b/policeSecurityServer/src/main/resources/env/dev/application.yml @@ -116,10 +116,10 @@ logging: config: classpath:conf/log4j2.xml minio: - url: http://172.10.10.238:9000 + url: http://118.253.177.137:9000 accessKey: admin secretKey: lonsung301 - bucketName: management-dev + bucketName: police-security-dev sa-token: # token 名称(同时也是 cookie 名称) diff --git a/policeSecurityServer/src/main/resources/mapper/AdministrativeDivisionMapper.xml b/policeSecurityServer/src/main/resources/mapper/AdministrativeDivisionMapper.xml new file mode 100644 index 0000000..d54484e --- /dev/null +++ b/policeSecurityServer/src/main/resources/mapper/AdministrativeDivisionMapper.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/policeSecurityServer/src/main/resources/mapper/PoliceUnitMapper.xml b/policeSecurityServer/src/main/resources/mapper/PoliceUnitMapper.xml new file mode 100644 index 0000000..7ca25df --- /dev/null +++ b/policeSecurityServer/src/main/resources/mapper/PoliceUnitMapper.xml @@ -0,0 +1,28 @@ + + + + + \ No newline at end of file diff --git a/policeSecurityServer/src/main/resources/mapper/SecurityUnitMapper.xml b/policeSecurityServer/src/main/resources/mapper/SecurityUnitMapper.xml new file mode 100644 index 0000000..63367c5 --- /dev/null +++ b/policeSecurityServer/src/main/resources/mapper/SecurityUnitMapper.xml @@ -0,0 +1,34 @@ + + + + + \ No newline at end of file diff --git a/superManagement/.env.development b/superManagement/.env.development index 522a69f..892c40f 100644 --- a/superManagement/.env.development +++ b/superManagement/.env.development @@ -9,3 +9,7 @@ VITE_APP_PROXY_URL=http://localhost:8765 # rsa 公钥 VITE_APP_RSA_PUBLIC_KEY=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJps/EXxxSpEM1Ix4R0NWIOBciHCr7P7coDT8tNKfelgR7txcJOqHCO/MIWe7T04aHQTcpQxqx9hMca7dbqz8TZpz9jvLzE/6ZonVKxHsoFnNlHMp1/CPAJ9f6D9wYicum2KltJkmQ0g//D9W2zPCYoGOmSRFcZx/KEBa4EM53jQIDAQAB + +# minio +VITE_APP_MINIO_URL=http://118.253.177.137:9000 +VITE_APP_MINIO_BUCKET=police-security-dev diff --git a/superManagement/.env.production b/superManagement/.env.production index 99d9241..fe80255 100644 --- a/superManagement/.env.production +++ b/superManagement/.env.production @@ -6,3 +6,7 @@ VITE_DROP_CONSOLE=true # axios VITE_APP_BASE_API=/api VITE_APP_PROXY_URL=https://172.10.10.238:8765 + +# minio +VITE_APP_MINIO_URL=http://118.253.177.137:9000 +VITE_APP_MINIO_BUCKET=police-security-dev diff --git a/superManagement/.gitignore b/superManagement/.gitignore index eca7316..247cdaf 100644 --- a/superManagement/.gitignore +++ b/superManagement/.gitignore @@ -23,3 +23,7 @@ dist-ssr *.njsproj *.sln *.sw? + +components.d.ts +package-lock.json +yarn.lock diff --git a/superManagement/package.json b/superManagement/package.json index abb937f..08d6e02 100644 --- a/superManagement/package.json +++ b/superManagement/package.json @@ -13,13 +13,17 @@ "ant-design-vue": "^4.2.3", "axios": "^1.7.5", "jsencrypt": "^3.3.2", + "lodash-es": "^4.17.21", "pinia": "^2.2.2", "pinia-plugin-persistedstate": "^3.2.0", "sass": "^1.77.8", "vue": "^3.4.37", - "vue-router": "4" + "vue-component-type-helpers": "^2.1.2", + "vue-router": "4", + "vue-uuid": "^3.0.0" }, "devDependencies": { + "@types/lodash-es": "^4.17.8", "@types/node": "^22.5.1", "@vitejs/plugin-vue": "^5.1.2", "@vitejs/plugin-vue-jsx": "^4.0.1", diff --git a/superManagement/src/components/form/FormProMax.vue b/superManagement/src/components/form/FormProMax.vue new file mode 100644 index 0000000..8fd21b6 --- /dev/null +++ b/superManagement/src/components/form/FormProMax.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/superManagement/src/components/iconfont/IconFont.vue b/superManagement/src/components/iconfont/IconFont.vue new file mode 100644 index 0000000..fc208f1 --- /dev/null +++ b/superManagement/src/components/iconfont/IconFont.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/superManagement/src/components/layout/layout.vue b/superManagement/src/components/layout/Layout.vue similarity index 95% rename from superManagement/src/components/layout/layout.vue rename to superManagement/src/components/layout/Layout.vue index f69b7c5..09ce243 100644 --- a/superManagement/src/components/layout/layout.vue +++ b/superManagement/src/components/layout/Layout.vue @@ -12,6 +12,7 @@ + import {ref} from "vue"; import LayoutHeader from "@/components/layout/header/LayoutHeader.vue"; +import SystemMenus from "@/components/layout/SystemMenus.vue"; const collapsed = ref(false); diff --git a/superManagement/src/components/layout/MenuItem.vue b/superManagement/src/components/layout/MenuItem.vue new file mode 100644 index 0000000..6323222 --- /dev/null +++ b/superManagement/src/components/layout/MenuItem.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/superManagement/src/components/layout/SystemMenus.vue b/superManagement/src/components/layout/SystemMenus.vue new file mode 100644 index 0000000..8429600 --- /dev/null +++ b/superManagement/src/components/layout/SystemMenus.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/superManagement/src/components/table/TableProMax.vue b/superManagement/src/components/table/TableProMax.vue new file mode 100644 index 0000000..05da1db --- /dev/null +++ b/superManagement/src/components/table/TableProMax.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/superManagement/src/components/upload/SingleImageFileUpload.vue b/superManagement/src/components/upload/SingleImageFileUpload.vue new file mode 100644 index 0000000..10c0261 --- /dev/null +++ b/superManagement/src/components/upload/SingleImageFileUpload.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/superManagement/src/config/dict.ts b/superManagement/src/config/dict.ts new file mode 100644 index 0000000..86dc984 --- /dev/null +++ b/superManagement/src/config/dict.ts @@ -0,0 +1,17 @@ +import api from "@/axios"; + +type DictType = + 'CheckStatus' + | 'DeleteFlag' + | 'IsEnable' + | 'IsOrNot' + | 'Sex' + +export const initEnums = () => { + api.get[]>>('/common/enums').then(resp => { + sessionStorage.setItem('dictMap', JSON.stringify(resp.data)) + }) +} + +export const enumSelectNodes = (enumType: DictType): SelectNodeVo[] => JSON.parse(sessionStorage.getItem('dictMap') as string)?.[enumType] || [] + diff --git a/superManagement/src/config/index.ts b/superManagement/src/config/index.ts index be6b2cf..e2aa714 100644 --- a/superManagement/src/config/index.ts +++ b/superManagement/src/config/index.ts @@ -1,2 +1,34 @@ +import {SystemMenu} from "@/types/config"; + export const CLIENT_TYPE = "MANAGEMENT_SUPER"; export const ROUTER_WHITE_LIST: string[] = ['/login', '/test']; + +export const SYSTEM_MENUS: SystemMenu[] = [ + { + title: '首页', + name: 'index', + path: '/index', + type: "menu", + component: () => import('@/views/index.vue') + }, { + title: '单位管理', + name: 'unitManage', + path: '/unitManage', + type: 'dir', + children: [ + { + title: '公安单位', + name: 'policeUnit', + path: '/policeUnit', + type: 'menu', + component: () => import('@/views/unitManage/policeUnit/index.vue') + }, { + title: '保安单位', + name: 'securityUnit', + path: '/securityUnit', + type: 'menu', + component: () => import('@/views/unitManage/securityUnit/index.vue') + } + ] + } +] diff --git a/superManagement/src/global.d.ts b/superManagement/src/global.d.ts index d977a79..f74eeff 100644 --- a/superManagement/src/global.d.ts +++ b/superManagement/src/global.d.ts @@ -8,3 +8,56 @@ interface JsonResult { message: string; data?: T; } + +/** + * 选择 + */ +class SelectNodeVo> { + value: T; + label: string; + options?: SelectNodeVo[] + orderIndex?: number; + disabled?: boolean; + extData?: E +} + +/** + * 树 + */ +class TreeNodeVo> { + value: T; + parentValue: T; + label: string; + orderIndex?: number; + children?: TreeNodeVo[] + extData?: E; +} + +/** + * 栅格布局 + */ +declare interface Grid { + //栅格占据的列数 + span?: number; + //栅格左侧的间隔格数 + offset?: number; + //栅格向右移动格数 + push?: number; + //栅格向左移动格数 + pull?: number; + //<768px 响应式栅格数或者栅格属性对象 + xs?: number; + //≥768px 响应式栅格数或者栅格属性对象 + sm?: number; + //≥992px 响应式栅格数或者栅格属性对象 + md?: number; + //≥1200px 响应式栅格数或者栅格属性对象 + lg?: number; + //≥1920px 响应式栅格数或者栅格属性对象 + xl?: number; +} + +interface BaseEnum { + value: T; + label: string +} diff --git a/superManagement/src/hooks/useTableProMax.ts b/superManagement/src/hooks/useTableProMax.ts new file mode 100644 index 0000000..360f18e --- /dev/null +++ b/superManagement/src/hooks/useTableProMax.ts @@ -0,0 +1,134 @@ +import {ref, Ref} from "vue"; +import {Page, PageParams, PageResult} from "@/types/hooks/useTableProMax.ts"; +import {FormInstance} from "ant-design-vue"; +import {BaseTableRowRecord, RequestApiType} from "@/types/components/table"; + +/** + * + * @param api 查询方法 + * @param searchFormRef 表单校验 + * @param searchParams 查询的参数 + * @param isPageTable 是否分页 + * @param dataCallBack 查询到数据后的回调 + * @param requestError 查询出错回调 + */ +export default | PageParams

>(api: RequestApiType, + searchFormRef: Ref, + searchParams: Ref

, + isPageTable: boolean = true, + dataCallBack?: (data: T[]) => T[], + requestError?: (errorMsg: any) => void) => { + + const dataSource = ref([]) as Ref; + const loading = ref(false); + const pageParams = ref({ + current: 1, + size: 10, + total: 0 + }) + + /** + * 获取表格数据 + */ + const requestGetTableData = async (isInit: boolean = false) => { + try { + //校验表单 + !isInit && await searchFormRef.value?.validate(); + //组装参数 + let totalSearchParams; + if (isPageTable) { + totalSearchParams = { + params: searchParams.value, + page: { + current: pageParams.value.current, + size: pageParams.value.size + } + } as PageParams

; + } else { + totalSearchParams = searchParams.value + } + + loading.value = true; + + const resp = await api(totalSearchParams as P); + let tableData: T[]; + + if (isPageTable) { + const {current, records, size, total} = resp.data as PageResult; + isPageTable && updatePageParams({ + current: parseInt(current), + size: parseInt(size), + total: parseInt(total) + }); + tableData = records; + } else { + tableData = resp.data as T[] + } + dataCallBack && (tableData = dataCallBack(tableData)); + dataSource.value = tableData; + } catch (error) { + requestError && requestError(error); + } finally { + loading.value = false; + } + } + + /** + * 更新分页信息 + */ + const updatePageParams = (ps: Page) => Object.assign(pageParams.value, ps) + + /** + * 重置表格状态 包括 dataSource loading pageParams + */ + const resetState = () => { + dataSource.value = []; + loading.value = false; + pageParams.value = { + current: 1, + size: 10, + total: 0 + } + } + + /** + * 表格数据查询 与 requestGetTableData 区别是会将页面重置为1 + * 如果只做刷新数据请用 requestGetTableData + */ + const search = async () => { + pageParams.value.current = 1; + await requestGetTableData(); + }; + + /** + * @description 每页条数改变 + * @param _ + * @param {Number} size 页显示数量 + */ + const handleSizeChange = async (_: number, size: number) => { + pageParams.value.current = 1; + pageParams.value.size = size; + await requestGetTableData(); + }; + + /** + * @description 当前页改变 + * @param current 当前页 + */ + const handleCurrentChange = async (current: number) => { + pageParams.value.current = current; + await requestGetTableData(); + }; + + return { + dataSource, + loading, + pageParams, + requestGetTableData, + search, + handleSizeChange, + handleCurrentChange, + resetState + }; + +} diff --git a/superManagement/src/main.ts b/superManagement/src/main.ts index bbf79e7..826df26 100644 --- a/superManagement/src/main.ts +++ b/superManagement/src/main.ts @@ -10,6 +10,9 @@ import "@/assets/iconfont/iconfont.css"; import router from "@/router"; // pinia stores import pinia from "@/stores"; +import {initEnums} from "@/config/dict.ts"; + +initEnums(); const vueApp = createApp(App); diff --git a/superManagement/src/router/staticRouters.ts b/superManagement/src/router/staticRouters.ts index ef81c78..70c4ab1 100644 --- a/superManagement/src/router/staticRouters.ts +++ b/superManagement/src/router/staticRouters.ts @@ -1,4 +1,33 @@ import {RouteRecordRaw} from "vue-router"; +import {SYSTEM_MENUS} from "@/config"; +import {SystemMenu} from "@/types/config"; + +/** + * 提取菜单路由 + */ +const extractMenuToRouter = (): RouteRecordRaw[] => { + const result: RouteRecordRaw[] = [] + const traverse = (data: SystemMenu[]) => { + data.forEach(item => { + if (item.type === 'dir' && item.children && item.children.length > 0) { + traverse(item.children) + } else { + result.push({ + path: item.path, + name: item.name, + meta: { + title: item.title + }, + component: item.component + } as RouteRecordRaw) + } + }) + } + + traverse(SYSTEM_MENUS) + + return result; +} export const staticRouter: RouteRecordRaw[] = [ { @@ -15,19 +44,11 @@ export const staticRouter: RouteRecordRaw[] = [ path: '/layout', name: 'layout', redirect: '/index', - component: () => import("@/components/layout/layout.vue"), - children: [ - { - path: '/index', - name: 'index', - meta: { - title: '首页', - icon: 'icon-shouye', - fixed: true, - isKeepAlive: false - }, - component: () => import('@/views/index.vue') - } - ] - } + component: () => import("@/components/layout/Layout.vue"), + children: extractMenuToRouter() + }, { + path: '/test', + name: 'test', + component: () => import("@/views/test.vue"), + }, ] diff --git a/superManagement/src/types/components/form/index.ts b/superManagement/src/types/components/form/index.ts new file mode 100644 index 0000000..0477415 --- /dev/null +++ b/superManagement/src/types/components/form/index.ts @@ -0,0 +1,73 @@ +import { + FormProps, + RangePicker, + Input, + InputNumber, + Textarea, + InputPassword, + RadioGroup, + Select, + TreeSelect, + Cascader, + CheckboxGroup, + DatePicker, + FormItem, TimeRangePicker, TimePicker, +} from "ant-design-vue"; +import {Ref, UnwrapRef, VNode} from "vue"; +import {ComponentProps} from "vue-component-type-helpers"; + +type FormProMaxItemType = + | 'custom' + | 'input' + | 'inputPassword' + | 'inputNumber' + | 'inputTextArea' + | 'radioGroup' + | 'select' + | 'selectIcon' + | 'selectUser' + | 'treeSelect' + | 'cascader' + | 'checkboxGroup' + | 'datePicker' + | 'rangePicker' + | 'timeRangePicker' + | 'timePicker'; + +interface FormProMaxItemCommonProps extends ComponentProps { + label?: string, + grid?: Grid, + placeholder?: string, + remarkRender?: () => VNode | string, + customRender?: () => VNode; + options?: (SelectNodeVo | TreeNodeVo) [] | Ref<(SelectNodeVo | TreeNodeVo)[]> +} + +export interface FormProMaxItemProps extends FormProMaxItemCommonProps { + type: T + componentsProps?: C +} + +export type FormProMaxItemOptions = { + [key in keyof T | string]: + FormProMaxItemProps<'custom', ComponentProps>> + | FormProMaxItemProps<'input', ComponentProps> + | FormProMaxItemProps<'inputPassword', ComponentProps> + | FormProMaxItemProps<'inputNumber', ComponentProps> + | FormProMaxItemProps<'inputTextArea', ComponentProps> + | FormProMaxItemProps<'radioGroup', ComponentProps> + | FormProMaxItemProps<'select', ComponentProps> + | FormProMaxItemProps<'treeSelect', ComponentProps> + | FormProMaxItemProps<'cascader', ComponentProps> + | FormProMaxItemProps<'checkboxGroup', ComponentProps> + | FormProMaxItemProps<'datePicker', ComponentProps> + | FormProMaxItemProps<'rangePicker', ComponentProps> + | FormProMaxItemProps<'timeRangePicker', ComponentProps> + | FormProMaxItemProps<'timePicker', ComponentProps> +} + +export interface FormProMaxProps extends FormProps { + grid?: Grid + gutter?: number; + formItemOptions?: FormProMaxItemOptions | Ref> | UnwrapRef> +} diff --git a/superManagement/src/types/components/iconfont/IconFont.ts b/superManagement/src/types/components/iconfont/IconFont.ts new file mode 100644 index 0000000..9b3dd6e --- /dev/null +++ b/superManagement/src/types/components/iconfont/IconFont.ts @@ -0,0 +1,5 @@ +export interface IconFontProps { + fontClass?: string, + size?: number, + type?: 'class' | 'svg' +} \ No newline at end of file diff --git a/superManagement/src/types/components/table/index.ts b/superManagement/src/types/components/table/index.ts new file mode 100644 index 0000000..20c3793 --- /dev/null +++ b/superManagement/src/types/components/table/index.ts @@ -0,0 +1,55 @@ +import {PaginationProps, Table, TableProps} from "ant-design-vue"; +import {TableRowSelection} from "ant-design-vue/lib/table/interface"; +import {Ref, UnwrapRef} from "vue"; +import {ColumnType} from "ant-design-vue/es/table/interface"; +import {ComponentSlots} from "vue-component-type-helpers"; +import {FormProMaxItemOptions, FormProMaxProps} from "@/types/components/form"; +import {PageParams, PageResult} from "@/types/hooks/useTableProMax.ts"; + + +export type TableProMaxColumnType = Omit, 'dataIndex'> & { + dataIndex: keyof T | string | string[] | number | number[]; +} + + +export type TableProMaxProps< + T extends BaseTableRowRecord = {}, + P extends { [key: string]: any } = {} +> = Partial, "dataSource" | 'pagination' | 'loading' | 'rowKey' | 'columns'>> & { + rowKey?: keyof T, + columns?: TableProMaxColumnType[], + searchFormProps?: Omit, 'formItems'> + searchFormOptions?: FormProMaxItemOptions

| Ref> | UnwrapRef>, + defaultSearchParams?: { [key in keyof P | string]: any }; + requestAuto?: boolean, + requestApi: RequestApiType, + requestError?: (errorMsg: any) => void, + dataCallback?: (data: T[]) => T[], + isPagination?: boolean, + paginationProps?: TableProMaxPaginationProps, + isSelection?: boolean, + selectionProps?: TableProMaxRowSelect, + isPrinter?: boolean, + needIndex?: boolean +} + +export type TableProMaxSlots = ComponentSlots & { + tableHeader: (scope: { selectKeys: string[], selectRows: T[] }) => any, + tableHeaderRight: (scope: { selectKeys: string[], selectRows: T[] }) => any, +} + +export type RequestApiType = (params: P | PageParams

) => Promise>>; + +export type TableProMaxPaginationProps = Partial>; + +export type TableProMaxRowSelect = TableRowSelection; + +export interface BaseTableRowRecord { + snowFlakeId?: string; + createUserName?: string; + createTime?: Date | string; + updateUserName?: string; + updateTime?: Date | string +} diff --git a/superManagement/src/types/config/index.ts b/superManagement/src/types/config/index.ts new file mode 100644 index 0000000..f81e2db --- /dev/null +++ b/superManagement/src/types/config/index.ts @@ -0,0 +1,12 @@ +import {RouteComponent} from "vue-router"; + +export interface SystemMenu { + type: 'dir' | 'menu'; + title: string; + path: string; + name: string; + icon?: string; + + component?: RouteComponent; + children?: SystemMenu[]; +} diff --git a/superManagement/src/types/hooks/useTableProMax.ts b/superManagement/src/types/hooks/useTableProMax.ts new file mode 100644 index 0000000..3989828 --- /dev/null +++ b/superManagement/src/types/hooks/useTableProMax.ts @@ -0,0 +1,26 @@ +/** + * 分页对象 + */ +export interface Page { + current: number, + size: number, + total: number +} + +/** + * 分页参数 + */ +export interface PageParams = {}> { + params: T & { [key: string]: any }, + page: Omit +} + +/** + * 分页结果 + */ +export interface PageResult { + current: string, + records: T[], + size: string, + total: string +} \ No newline at end of file diff --git a/superManagement/src/types/views/unitManage/policeUnit.ts b/superManagement/src/types/views/unitManage/policeUnit.ts new file mode 100644 index 0000000..e992fe8 --- /dev/null +++ b/superManagement/src/types/views/unitManage/policeUnit.ts @@ -0,0 +1,48 @@ +import {BaseTableRowRecord} from "@/types/components/table"; + +export interface PoliceUnitPagerQueryParams { + /** 名称 **/ + name?: string; + /** 代码 **/ + code?: string; + /** 行政区划 **/ + administrativeDivisionCodes?: string[]; + /** 是否启用 **/ + isEnable?: BaseEnum; + /** 审核状态 **/ + checkStatus?: BaseEnum; +} + +export interface PoliceUnitPagerVo extends BaseTableRowRecord { + /** 名称 **/ + name?: string; + /** 代码 **/ + code?: string; + /** 省编码 **/ + province?: string; + /** 省名字 **/ + provinceName?: string; + /** 市编码 **/ + city?: string; + /** 市名字 **/ + cityName?: string; + /** 区/县编码 **/ + districts?: string; + /** 区/县名字 **/ + districtsName?: string; + /** 街道编码 **/ + street?: string; + /** 街道编码 **/ + streetName?: string; + /** 详细地址 **/ + address?: string; + /** 联系人 **/ + contactPersonInfo?: { + name: string; + telephone: string; + }; + /** 是否启用 **/ + isEnable?: BaseEnum; + /** 审核状态 **/ + checkStatus?: BaseEnum; +} diff --git a/superManagement/src/types/views/unitManage/securityUnit.ts b/superManagement/src/types/views/unitManage/securityUnit.ts new file mode 100644 index 0000000..b6a0a26 --- /dev/null +++ b/superManagement/src/types/views/unitManage/securityUnit.ts @@ -0,0 +1,52 @@ +import {BaseTableRowRecord} from "@/types/components/table"; + +export interface SecurityUnitPagerQueryParams { + /** 名称 **/ + name?: string; + /** 社会编码 **/ + socialCode?: string; + /** 行政区划编码 **/ + administrativeDivisionCodes?: string[]; + /** 是否启用 **/ + isEnable?: number; + /** 审核状态 **/ + checkStatus?: number; +} + +export interface SecurityUnitPagerVo extends BaseTableRowRecord { + /** 名称 **/ + name?: string; + /** 社会编码 **/ + socialCode?: string; + /** 营业执照 **/ + businessLicense?: string; + /** 法人信息 **/ + legalPersonInfo?: { + name: string; + telephone: string; + }; + /** 省编码 **/ + province?: string; + /** 省名字 **/ + provinceName?: string; + /** 市编码 **/ + city?: string; + /** 市名字 **/ + cityName?: string; + /** 区/县编码 **/ + districts?: string; + /** 区/县名字 **/ + districtsName?: string; + /** 街道编码 **/ + street?: string; + /** 街道编码 **/ + streetName?: string; + /** 详细地址 **/ + address?: string; + /** 公司性质 **/ + nature?: string; + /** 是否启用 **/ + isEnable?: BaseEnum; + /** 审核状态 **/ + checkStatus?: BaseEnum; +} diff --git a/superManagement/src/utils/index.ts b/superManagement/src/utils/index.ts new file mode 100644 index 0000000..257081a --- /dev/null +++ b/superManagement/src/utils/index.ts @@ -0,0 +1,17 @@ +import {ceil, divide} from "lodash-es"; + +/** + * 将文件大小转为字符串格式 + * @param fileSizeInBytes + */ +export const convertFileSizeToStr = (fileSizeInBytes: number): string => { + if (fileSizeInBytes < 1024) { + return fileSizeInBytes + "B"; + } else if (fileSizeInBytes < 1024 * 1024) { + return (ceil(divide(fileSizeInBytes, 1024), 2)) + "KB"; + } else if (fileSizeInBytes < 1024 * 1024 * 1024) { + return (ceil(divide(fileSizeInBytes, (1024 * 1024)), 2)) + "MB"; + } else { + return (ceil(divide(fileSizeInBytes, (1024 * 1024 * 1024)), 2)) + "GB"; + } +} diff --git a/superManagement/src/utils/minioUtil.ts b/superManagement/src/utils/minioUtil.ts new file mode 100644 index 0000000..6b4e91f --- /dev/null +++ b/superManagement/src/utils/minioUtil.ts @@ -0,0 +1,26 @@ +import api from "@/axios"; +import dayjs from "dayjs"; +import {uuid} from "vue-uuid"; + +/** + * 生成一个简单的对象文件地址 + * @param fileName 原始文件名 + * @param parentDir 上级目录 + */ +export const generateSimpleObjectName = (fileName: string, parentDir?: String): string => { + let objectName = parentDir + dayjs().format('/YYYY/MM/DD/') + uuid.v4().replace(/-/g, ''); + if (fileName && fileName.length > 0) { + objectName += fileName.substring(fileName.lastIndexOf('.')) + } + return objectName; +} + +/** + * 获取生成预签名的 URL + */ +export const getResignedObjectUrl = async (bucketName: string, objectName: string): Promise => { + return (await api.get('/common/getResignedObjectUrl', { + bucketName, + objectName + })).data as string; +} diff --git a/superManagement/src/views/index.vue b/superManagement/src/views/index.vue index 86ff46a..9c1e237 100644 --- a/superManagement/src/views/index.vue +++ b/superManagement/src/views/index.vue @@ -1,5 +1,7 @@ + + diff --git a/superManagement/src/views/unitManage/policeUnit/index.vue b/superManagement/src/views/unitManage/policeUnit/index.vue new file mode 100644 index 0000000..793dc6b --- /dev/null +++ b/superManagement/src/views/unitManage/policeUnit/index.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/superManagement/src/views/unitManage/securityUnit/index.vue b/superManagement/src/views/unitManage/securityUnit/index.vue new file mode 100644 index 0000000..9f018d6 --- /dev/null +++ b/superManagement/src/views/unitManage/securityUnit/index.vue @@ -0,0 +1,89 @@ + + + + + + diff --git a/superManagement/src/views/unitManage/test.vue b/superManagement/src/views/unitManage/test.vue new file mode 100644 index 0000000..5871ec4 --- /dev/null +++ b/superManagement/src/views/unitManage/test.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/superManagement/src/vite-env.d.ts b/superManagement/src/vite-env.d.ts index adbe17c..eb53e48 100644 --- a/superManagement/src/vite-env.d.ts +++ b/superManagement/src/vite-env.d.ts @@ -11,6 +11,10 @@ interface ImportMetaEnv { readonly VITE_APP_BASE_API: string; readonly VITE_APP_PROXY_URL: string; + // minio + readonly VITE_APP_MINIO_URL: string + readonly VITE_APP_MINIO_BUCKET: string + // RSA公钥 readonly VITE_APP_RSA_PUBLIC_KEY: string; } diff --git a/superManagement/tsconfig.app.json b/superManagement/tsconfig.app.json index ac06e22..239e8eb 100644 --- a/superManagement/tsconfig.app.json +++ b/superManagement/tsconfig.app.json @@ -18,7 +18,7 @@ "jsx": "preserve", "jsxImportSource": "vue", /* Linting */ - "strict": true, + "strict": false, "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, diff --git a/superManagement/tsconfig.node.json b/superManagement/tsconfig.node.json index 9dbaccb..8aeefc6 100644 --- a/superManagement/tsconfig.node.json +++ b/superManagement/tsconfig.node.json @@ -13,7 +13,7 @@ "moduleDetection": "force", "noEmit": true, /* Linting */ - "strict": true, + "strict": false, "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true