diff --git a/core/pom.xml b/core/pom.xml index 08bc1a5..5c9a597 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -15,7 +15,12 @@ org.springframework.boot spring-boot-starter-web - + + + cn.dev33 + sa-token-spring-boot-starter + 1.43.0 + org.springframework.boot spring-boot-devtools diff --git a/core/src/main/java/com/dite/znpt/config/WebMvcConfig.java b/core/src/main/java/com/dite/znpt/config/WebMvcConfig.java index ce50e9b..f93ae4d 100644 --- a/core/src/main/java/com/dite/znpt/config/WebMvcConfig.java +++ b/core/src/main/java/com/dite/znpt/config/WebMvcConfig.java @@ -1,25 +1,33 @@ package com.dite.znpt.config; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; @Configuration public class WebMvcConfig extends WebMvcConfigurationSupport { + + @Value(value = "${upload.temp-path.image}") + private String uploadTempPath; + + @Value(value = "${upload.perm-path.image}") + private String uploadPermPath; + /** * MVC 加载Swagger静态资源 * @param registry */ @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/**") - .addResourceLocations("classpath:/static/"); - registry.addResourceHandler("doc.html") - .addResourceLocations("classpath:/META-INF/resources/"); - registry.addResourceHandler("/webjars/**") - .addResourceLocations("classpath:/META-INF/resources/webjars/"); - registry.addResourceHandler("/swagger-ui/**") - .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/"); + + registry.addResourceHandler("/image/temp/**").addResourceLocations("file:" + uploadTempPath); + registry.addResourceHandler("/image/**").addResourceLocations("file:" + uploadPermPath); + + registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); + registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); + registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/"); super.addResourceHandlers(registry); } } \ No newline at end of file diff --git a/core/src/main/java/com/dite/znpt/domain/Constants.java b/core/src/main/java/com/dite/znpt/constant/Constants.java similarity index 68% rename from core/src/main/java/com/dite/znpt/domain/Constants.java rename to core/src/main/java/com/dite/znpt/constant/Constants.java index 9e505ae..0cbe777 100644 --- a/core/src/main/java/com/dite/znpt/domain/Constants.java +++ b/core/src/main/java/com/dite/znpt/constant/Constants.java @@ -1,4 +1,4 @@ -package com.dite.znpt.domain; +package com.dite.znpt.constant; /** * @description: 常量 @@ -21,4 +21,14 @@ public class Constants { * 参数异常 */ public static final String PARAMETER_EXCEPTION = "000003"; + + /** + * 0:代表存在 + */ + public static final String DEL_FLAG_0 = "0"; + + /** + * 1:代表删除 + */ + public static final String DEL_FLAG_1 = "1"; } diff --git a/core/src/main/java/com/dite/znpt/constant/Message.java b/core/src/main/java/com/dite/znpt/constant/Message.java index a14d111..c627199 100644 --- a/core/src/main/java/com/dite/znpt/constant/Message.java +++ b/core/src/main/java/com/dite/znpt/constant/Message.java @@ -20,5 +20,5 @@ public class Message implements Serializable { public static final String TURBINE_ID_IS_NOT_EXIST = "机组id不存在"; public static final String PART_ID_IS_NOT_EXIST = "部件id不存在"; public static final String IMAGE_SOURCE_ID_NOT_EXIST_OR_ILLEGAL = "部件id不存在"; - public static final String USER_ID_NOT_EXIST = "部件id不存在"; + public static final String USER_ID_NOT_EXIST = "用户id不存在"; } diff --git a/core/src/main/java/com/dite/znpt/domain/Result.java b/core/src/main/java/com/dite/znpt/domain/Result.java index 84e188a..f893e22 100644 --- a/core/src/main/java/com/dite/znpt/domain/Result.java +++ b/core/src/main/java/com/dite/znpt/domain/Result.java @@ -1,5 +1,6 @@ package com.dite.znpt.domain; +import com.dite.znpt.constant.Constants; import lombok.Data; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; diff --git a/core/src/main/java/com/dite/znpt/domain/entity/UserEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/UserEntity.java index 95c6f86..4681578 100644 --- a/core/src/main/java/com/dite/znpt/domain/entity/UserEntity.java +++ b/core/src/main/java/com/dite/znpt/domain/entity/UserEntity.java @@ -45,6 +45,11 @@ public class UserEntity extends AuditableEntity implements Serializable { @TableField("password") private String password; + @ExcelProperty("是否默认密码") + @ApiModelProperty("是否默认密码") + @TableField("is_default_password") + private Boolean isDefaultPassword; + @ExcelProperty("加密盐") @ApiModelProperty("加密盐") @TableField("salt") diff --git a/core/src/main/java/com/dite/znpt/domain/vo/PartReq.java b/core/src/main/java/com/dite/znpt/domain/vo/PartReq.java index 7357675..e916e96 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/PartReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/PartReq.java @@ -1,9 +1,12 @@ package com.dite.znpt.domain.vo; +import com.dite.znpt.util.ValidationGroup; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; import java.io.Serial; import java.io.Serializable; @@ -19,24 +22,31 @@ public class PartReq implements Serializable { @Serial private static final long serialVersionUID = -585044340118904985L; + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "机组id不能为空") @ApiModelProperty("机组id") private String turbineId; - @ApiModelProperty("名称") + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "部件名称不能为空") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "部件名称长度不能超过50字符") + @ApiModelProperty("部件名称") private String partName; - @ApiModelProperty("编号") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "部件编号长度不能超过20字符") + @ApiModelProperty("部件编号") private String partCode; - @ApiModelProperty("类型,枚举PartTypeEnum") + @ApiModelProperty("部件类型,枚举PartTypeEnum") private String partType; - @ApiModelProperty("描述") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 200, message = "部件描述长度不能超过200字符") + @ApiModelProperty("部件描述") private String partDesc; - @ApiModelProperty("厂商") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "部件厂商长度不能超过20字符") + @ApiModelProperty("部件厂商") private String PartManufacturer; - @ApiModelProperty("型号") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "部件型号长度不能超过20字符") + @ApiModelProperty("部件型号") private String PartModel; } diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ProjectListResp.java b/core/src/main/java/com/dite/znpt/domain/vo/ProjectListResp.java index c7545d4..d311d2d 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/ProjectListResp.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/ProjectListResp.java @@ -34,7 +34,7 @@ public class ProjectListResp implements Serializable { private String farmName; @ApiModelProperty("项目状态,枚举:ProjectStatusEnum") - private String status; + private int status; @ApiModelProperty("项目状态,枚举:ProjectStatusEnum") private String statusLabel; diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ProjectReq.java b/core/src/main/java/com/dite/znpt/domain/vo/ProjectReq.java index 08f9b63..401ab2b 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/ProjectReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/ProjectReq.java @@ -1,10 +1,12 @@ package com.dite.znpt.domain.vo; -import com.alibaba.excel.annotation.ExcelProperty; +import com.dite.znpt.util.ValidationGroup; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; import java.io.Serial; import java.io.Serializable; @@ -20,48 +22,57 @@ public class ProjectReq implements Serializable { @Serial private static final long serialVersionUID = 740685592879189406L; - @ExcelProperty("项目名称") + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "项目名称不能为空") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "项目名称长度不能超过50字符") @ApiModelProperty("项目名称") private String projectName; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "项目封面述长度不能超过100字符") @ApiModelProperty("项目封面") private String coverUrl; - @ExcelProperty("风场名称") + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "风场名称不能为空") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "风场名称长度不能超过50字符") @ApiModelProperty("风场名称") private String farmName; - @ExcelProperty("风场地址") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "风场名称长度不能超过100字符") @ApiModelProperty("风场地址") private String farmAddress; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "委托单位长度不能超过50字符") @ApiModelProperty("委托单位") private String client; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "委托单位联系人长度不能超过20字符") @ApiModelProperty("委托单位联系人") private String clientContact; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "委托单位联系电话长度不能超过20字符") @ApiModelProperty("委托单位联系电话") private String clientPhone; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "检查单位联系电话长度不能超过20字符") @ApiModelProperty("检查单位") private String inspectionUnit; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "检查单位联系人长度不能超过20字符") @ApiModelProperty("检查单位联系人") private String inspectionContact; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "检查单位联系电话长度不能超过20字符") @ApiModelProperty("检查单位联系电话") private String inspectionPhone; - @ExcelProperty("项目规模") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "项目规模长度不能超过20字符") @ApiModelProperty("项目规模") private String scale; - @ExcelProperty("风机型号") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "风机型号不能超过20字符") @ApiModelProperty("风机型号") private String turbineModel; - @ApiModelProperty("施工人员id") + @ApiModelProperty(value = "施工人员id", notes = "多个用英文逗号隔开") private String constructorIds; @ApiModelProperty("安全员id") @@ -70,19 +81,20 @@ public class ProjectReq implements Serializable { @ApiModelProperty("质量员id") private String qualityOfficerId; + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "项目经理id不能为空") @ApiModelProperty("项目经理id") private String projectManagerId; @ApiModelProperty("施工组长id") private String constructionTeamLeaderId; - @ApiModelProperty("技术方案图片,多个用逗号隔开") + @ApiModelProperty(value = "技术方案图片", notes = "多项英文逗号隔开") private String technicalImage; @ApiModelProperty("技术方案内容") private String technicalContent; - @ApiModelProperty("安全措施图片,多个用逗号隔开") + @ApiModelProperty(value = "安全措施图片", notes = "多项英文逗号隔开") private String safetyImage; @ApiModelProperty("安全措施内容") @@ -92,14 +104,14 @@ public class ProjectReq implements Serializable { private String discloseContent; @ApiModelProperty("状态:0待施工,1施工中,2已完工,3已审核,4已验收") - private String status; + private int status; - @ApiModelProperty("项目工作类型 可能有多项,逗号分隔") + @ApiModelProperty(value = "项目工作类型", notes = "多项英文逗号隔开") private String workType; - @ApiModelProperty("项目工作岗位 可能有多项,json对象保存") + @ApiModelProperty(value = "项目工作岗位", notes = "多项英文逗号隔开,json对象保存") private String job; - @ApiModelProperty(value = "项目安全风险点", example = "1", notes = "项目安全风险点 可能有多项,逗号分隔") + @ApiModelProperty(value = "项目安全风险点", notes = "多项英文逗号隔开") private String safetyRiskPoint; } diff --git a/core/src/main/java/com/dite/znpt/domain/vo/TurbineReq.java b/core/src/main/java/com/dite/znpt/domain/vo/TurbineReq.java index 6d3e107..9f3bd7b 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/TurbineReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/TurbineReq.java @@ -2,10 +2,13 @@ package com.dite.znpt.domain.vo; import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableField; +import com.dite.znpt.util.ValidationGroup; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; import java.io.Serial; import java.io.Serializable; @@ -21,25 +24,33 @@ public class TurbineReq implements Serializable { @Serial private static final long serialVersionUID = 115092978850852080L; + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "项目id不能为空") @ApiModelProperty("项目id") private String projectId; + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "机组名称不能为空") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "机组名称长度不能超过50字符") @ApiModelProperty("机组名称") private String turbineName; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "机组编码长度不能超过20字符") @ApiModelProperty("机组编码") private String turbineCode; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 200, message = "机组描述长度不能超过200字符") @ApiModelProperty("机组描述") private String turbineDesc; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "机组厂商长度不能超过20字符") @ApiModelProperty("机组厂商") private String turbineManufacturer; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "机组型号长度不能超过20字符") @ApiModelProperty("机组型号") private String turbineModel; - @ApiModelProperty("封面图") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "机组封面图长度不能超过100字符") + @ApiModelProperty("机组封面图") private String turbineCoverUrl; } diff --git a/core/src/main/java/com/dite/znpt/domain/vo/UserReq.java b/core/src/main/java/com/dite/znpt/domain/vo/UserReq.java index 676b341..a8ac046 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/UserReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/UserReq.java @@ -1,10 +1,12 @@ package com.dite.znpt.domain.vo; +import com.dite.znpt.util.ValidationGroup; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.*; import java.io.Serial; import java.io.Serializable; import java.time.LocalDate; @@ -21,31 +23,43 @@ public class UserReq implements Serializable { @Serial private static final long serialVersionUID = -5491849652107338027L; + @Pattern(groups = {ValidationGroup.Insert.class},regexp = "^[a-zA-Z0-9_]{4,20}$", message = "只能包含字母、数字或下划线,长度4-20") + @ApiModelProperty("账号") + private String account; + + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "头像地址长度不能超过100字符") @ApiModelProperty("头像地址") private String avatar; @ApiModelProperty("1正常0禁用") private Integer status; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "姓名长度不能超过20字符") @ApiModelProperty("姓名") private String name; + @Pattern(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, regexp = "^$|\\d(?:\\d{15}|\\d{17})$", message = "身份证号码格式不正确") @ApiModelProperty("身份证") private String identityCard; @ApiModelProperty("性别") private String gender; + @Pattern(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, regexp ="^$|1\\d{10}$", message = "手机号码格式不正确") @ApiModelProperty("手机号码") private String mobile; + @Email(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}) + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "邮箱长度不能超过50字符") @ApiModelProperty("邮箱") private String email; + @Past(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "入职日期必须是过去的日期") @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty("入职日期") private LocalDate hiredate; + @Past(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "出生日期必须是过去的日期") @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty("出生日期") private LocalDate birthdate; @@ -53,9 +67,11 @@ public class UserReq implements Serializable { @ApiModelProperty("学历") private String education; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "专业长度不能超过20字符") @ApiModelProperty("专业") private String majorField; + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "工作方向长度不能超过20字符") @ApiModelProperty("工作方向") private String workField; } diff --git a/core/src/main/java/com/dite/znpt/enums/EducationEnum.java b/core/src/main/java/com/dite/znpt/enums/EducationEnum.java index 16d2684..7e4880a 100644 --- a/core/src/main/java/com/dite/znpt/enums/EducationEnum.java +++ b/core/src/main/java/com/dite/znpt/enums/EducationEnum.java @@ -13,6 +13,7 @@ import java.util.List; */ @Getter public enum EducationEnum { + UNKNOWN("unknown","小学"), PRIMARY_SCHOOL("primary_school","小学"), MIDDLE_SCHOOL("middle_school","初中"), HIGH_SCHOOL(" high_school","高中"), diff --git a/core/src/main/java/com/dite/znpt/enums/ProjectStatusEnum.java b/core/src/main/java/com/dite/znpt/enums/ProjectStatusEnum.java index af7fc89..7836468 100644 --- a/core/src/main/java/com/dite/znpt/enums/ProjectStatusEnum.java +++ b/core/src/main/java/com/dite/znpt/enums/ProjectStatusEnum.java @@ -15,25 +15,25 @@ import java.util.List; @Getter @AllArgsConstructor public enum ProjectStatusEnum { - PENDING("PENDING","待施工", 0), - IN_PROGRESS("IN_PROGRESS","施工中", 1), - COMPLETED("COMPLETED","已完工", 2), - AUDITED("AUDITED","已审核", 3), - ACCEPTED("ACCEPTED","已验收", 4); - private final String code; - private final String desc; - private final int intValue; + PENDING(0, "待施工"), + IN_PROGRESS(1, "施工中"), + COMPLETED(2, "已完工"), + AUDITED(3, "已审核"), + ACCEPTED(4, "已验收"); - public static ProjectStatusEnum getByCode(String code){ + private final int code; + private final String desc; + + public static ProjectStatusEnum getByCode(int code){ for (ProjectStatusEnum e : ProjectStatusEnum.values() ) { - if(e.code.equals(code)){ + if(e.code == code){ return e; } } return null; } - public static String getDescByCode(String code){ + public static String getDescByCode(int code){ ProjectStatusEnum e = getByCode(code); return null == e ? null : e.desc; } @@ -42,7 +42,7 @@ public enum ProjectStatusEnum { List list = new ArrayList<>(ProjectStatusEnum.values().length); for (ProjectStatusEnum e : ProjectStatusEnum.values() ) { JSONObject jsonObject = new JSONObject(); - jsonObject.set(e.code, e.desc); + jsonObject.set(String.valueOf(e.code), e.desc); list.add(jsonObject); } return list; diff --git a/core/src/main/java/com/dite/znpt/exception/RestResponseEntityExceptionHandler.java b/core/src/main/java/com/dite/znpt/exception/RestResponseEntityExceptionHandler.java index c67a97c..80d5dfa 100644 --- a/core/src/main/java/com/dite/znpt/exception/RestResponseEntityExceptionHandler.java +++ b/core/src/main/java/com/dite/znpt/exception/RestResponseEntityExceptionHandler.java @@ -1,6 +1,6 @@ package com.dite.znpt.exception; -import com.dite.znpt.domain.Constants; +import com.dite.znpt.constant.Constants; import com.dite.znpt.domain.Result; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core/src/main/java/com/dite/znpt/service/UserService.java b/core/src/main/java/com/dite/znpt/service/UserService.java index eb0861b..85f83dc 100644 --- a/core/src/main/java/com/dite/znpt/service/UserService.java +++ b/core/src/main/java/com/dite/znpt/service/UserService.java @@ -51,7 +51,7 @@ public interface UserService extends IService { * @author huise23 * @date 2025/04/11 23:17 **/ - void save(UserReq req); + String save(UserReq req); /** * 功能描述:更新用户信息 diff --git a/core/src/main/java/com/dite/znpt/service/impl/ImageCollectServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/ImageCollectServiceImpl.java index 9f8f85c..1c0fe42 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/ImageCollectServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/ImageCollectServiceImpl.java @@ -31,7 +31,7 @@ import java.util.List; @Service public class ImageCollectServiceImpl extends ServiceImpl implements ImageCollectService { - @Value("${upload.perm-path}") + @Value("${upload.perm-path.image}") private String permPath; @Resource @@ -52,7 +52,7 @@ public class ImageCollectServiceImpl extends ServiceImpl imageList = Converts.INSTANCE.toImageEntity(req.getImageList()); - String path_prefix = permPath.concat(StrUtil.BACKSLASH).concat(ImageSourceEnum.COLLECT.getCode()).concat(StrUtil.BACKSLASH).concat(partId).concat(StrUtil.BACKSLASH); + String path_prefix = permPath.concat(FileUtil.FILE_SEPARATOR).concat(ImageSourceEnum.COLLECT.getCode()).concat(FileUtil.FILE_SEPARATOR).concat(partId).concat(FileUtil.FILE_SEPARATOR); imageList.stream().forEach(image -> { image.setPartId(partId); image.setCollectId(imageCollect.getCollectId()); diff --git a/core/src/main/java/com/dite/znpt/service/impl/ImageServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/ImageServiceImpl.java index c3ad777..bf6ca6f 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/ImageServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/ImageServiceImpl.java @@ -10,7 +10,10 @@ import com.dite.znpt.constant.Message; import com.dite.znpt.domain.entity.ImageEntity; import com.dite.znpt.domain.entity.PartEntity; import com.dite.znpt.domain.vo.*; -import com.dite.znpt.enums.*; +import com.dite.znpt.enums.ImageSourceEnum; +import com.dite.znpt.enums.ImageTypeEnum; +import com.dite.znpt.enums.ShootingMethodEnum; +import com.dite.znpt.enums.WeatherEnum; import com.dite.znpt.exception.ServiceException; import com.dite.znpt.mapper.ImageMapper; import com.dite.znpt.service.ImageCollectService; @@ -54,10 +57,10 @@ public class ImageServiceImpl extends ServiceImpl impl @Resource private PartService partService; - @Value("${upload.temp-path}") + @Value("${upload.temp-path.image}") private String tempPath; - @Value("${upload.perm-path}") + @Value("${upload.perm-path.image}") private String permPath; @Override public List list(ImageListReq req) { @@ -83,8 +86,8 @@ public class ImageServiceImpl extends ServiceImpl impl Map partIdMap= partService.listByIds(partIds).stream().collect(Collectors.toMap(PartEntity::getPartId, Function.identity())); list.stream().forEach(req -> { if(partIdMap.containsKey(req.getPartId())){ - String path_prefix = permPath.concat(FileUtil.FILE_SEPARATOR).concat(req.getImageSource()).concat(FileUtil.FILE_SEPARATOR).concat(req.getPartId()).concat(FileUtil.FILE_SEPARATOR); - String temp_path_prefix = tempPath.concat(FileUtil.FILE_SEPARATOR).concat(req.getImageSource()).concat(FileUtil.FILE_SEPARATOR).concat(req.getPartId()).concat(FileUtil.FILE_SEPARATOR); + String path_prefix = permPath.concat(StrUtil.BACKSLASH).concat(req.getImageSource()).concat(StrUtil.BACKSLASH).concat(req.getPartId()).concat(StrUtil.BACKSLASH); + String temp_path_prefix = tempPath.concat(StrUtil.BACKSLASH).concat(req.getImageSource()).concat(StrUtil.BACKSLASH).concat(req.getPartId()).concat(StrUtil.BACKSLASH); File file = new File(req.getImagePath()); if(file.exists() && req.getImagePath().contains(temp_path_prefix)){ ImageEntity entity = new ImageEntity(); @@ -123,7 +126,12 @@ public class ImageServiceImpl extends ServiceImpl impl throw new ServiceException(Message.IMAGE_IS_EMPTY); } List list = new ArrayList<>(files.length); - String path_prefix = tempPath.concat(FileUtil.FILE_SEPARATOR).concat(imageSource).concat(FileUtil.FILE_SEPARATOR).concat(partId).concat(FileUtil.FILE_SEPARATOR); + File temCategory = new File(tempPath); + if (!temCategory.exists()) { + // 创建完整的目录 + temCategory.mkdirs(); + } + String path_prefix = tempPath.concat(StrUtil.BACKSLASH).concat(imageSource).concat(StrUtil.BACKSLASH).concat(partId).concat(StrUtil.BACKSLASH); for (MultipartFile file : files) { if (!file.isEmpty()) { try { @@ -189,7 +197,7 @@ public class ImageServiceImpl extends ServiceImpl impl req.setCameraManufacturer(obj.getStr("Make")); req.setCameraModel(obj.getStr("Model")); req.setImageName(obj.getStr("File Name")); - req.setImagePath(path); + req.setImagePath(StrUtil.removePrefix(path, tempPath)); BigDecimal imageSize = new BigDecimal(extractDigit(obj.getStr("File Size"))).divide(new BigDecimal(1024*1024), 4, RoundingMode.HALF_UP); req.setImageSize(imageSize.toString().concat("M")); req.setImageWidth(extractDigit(obj.getStr("Image Width"))); @@ -200,15 +208,19 @@ public class ImageServiceImpl extends ServiceImpl impl req.setYResolution(extractDigit(obj.getStr("Y Resolution"))); req.setResolutionUnits(obj.getStr("Resolution Units")); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy:MM:dd HH:mm:ss"); - req.setShootingTime(LocalDateTime.parse( obj.getStr("Date/Time Original"),formatter)); + if(StrUtil.isNotBlank(obj.getStr("Date/Time Original"))){ + req.setShootingTime(LocalDateTime.parse(obj.getStr("Date/Time Original"), formatter)); + } req.setFocalDistance(extractDigit(obj.getStr("Focal Length"))); req.setLatitude(obj.getStr("GPS Latitude")); req.setLongitude(obj.getStr("GPS Longitude")); req.setAltitude(extractDigit(obj.getStr("GPS Altitude"))); - String gps = req.getLatitude().concat("°").concat(directionTranslator(obj.getStr("GPS Latitude Ref"))).concat(StrUtil.COMMA) - .concat(req.getLongitude()).concat("°").concat(directionTranslator(obj.getStr("GPS Longitude Ref"))).concat(StrUtil.COMMA) - .concat("海拔").concat(req.getAltitude()).concat("m"); - req.setGPS(gps); + if(StrUtil.isNotBlank(req.getLatitude()) && StrUtil.isNotBlank(req.getLongitude()) && StrUtil.isNotBlank(req.getAltitude())){ + String gps = req.getLatitude().concat("°").concat(directionTranslator(obj.getStr("GPS Latitude Ref"))).concat(StrUtil.COMMA) + .concat(req.getLongitude()).concat("°").concat(directionTranslator(obj.getStr("GPS Longitude Ref"))).concat(StrUtil.COMMA) + .concat("海拔").concat(req.getAltitude()).concat("m"); + req.setGPS(gps); + } return req; } @@ -227,6 +239,9 @@ public class ImageServiceImpl extends ServiceImpl impl } private static String extractDigit(String str) { + if(StrUtil.isEmpty(str)){ + return null; + } Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?"); Matcher matcher = pattern.matcher(str); if (matcher.find()) { diff --git a/core/src/main/java/com/dite/znpt/service/impl/TurbineServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/TurbineServiceImpl.java index 1703b13..d5647af 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/TurbineServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/TurbineServiceImpl.java @@ -201,7 +201,7 @@ public class TurbineServiceImpl extends ServiceImpl turbineStatusList = jobService.calCrewStatus(ListUtil.of(turbineId)); @@ -223,19 +223,19 @@ public class TurbineServiceImpl extends ServiceImpl statusList = this.lambdaQuery().eq(TurbineEntity::getProjectId, projectId).list() .stream().map(TurbineEntity::getStatus).toList(); // 有施工中,则是施工中 - if (statusList.contains(ProjectStatusEnum.IN_PROGRESS.getIntValue())) { - status = ProjectStatusEnum.IN_PROGRESS.getIntValue(); + if (statusList.contains(ProjectStatusEnum.IN_PROGRESS.getCode())) { + status = ProjectStatusEnum.IN_PROGRESS.getCode(); } // 如果机组列表没有状态为 待施工、施工中 的则项目 完工 - if (!statusList.contains(ProjectStatusEnum.PENDING.getIntValue()) && - !statusList.contains(ProjectStatusEnum.IN_PROGRESS.getIntValue())) { - status = ProjectStatusEnum.COMPLETED.getIntValue(); + if (!statusList.contains(ProjectStatusEnum.PENDING.getCode()) && + !statusList.contains(ProjectStatusEnum.IN_PROGRESS.getCode())) { + status = ProjectStatusEnum.COMPLETED.getCode(); // 如果机组列表没有状态为 待施工、施工中、已完工 的则项目 已审核 - if (!statusList.contains(ProjectStatusEnum.COMPLETED.getIntValue())) { - status = ProjectStatusEnum.AUDITED.getIntValue(); + if (!statusList.contains(ProjectStatusEnum.COMPLETED.getCode())) { + status = ProjectStatusEnum.AUDITED.getCode(); // 如果机组列表没有状态为 待施工、施工中、已完工、已审核 的则项目 已验收 - if (!statusList.contains(ProjectStatusEnum.AUDITED.getIntValue())) { - status = ProjectStatusEnum.ACCEPTED.getIntValue(); + if (!statusList.contains(ProjectStatusEnum.AUDITED.getCode())) { + status = ProjectStatusEnum.ACCEPTED.getCode(); } } } diff --git a/core/src/main/java/com/dite/znpt/service/impl/UserServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/UserServiceImpl.java index b86fa7f..09f39e5 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/UserServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/UserServiceImpl.java @@ -1,6 +1,11 @@ package com.dite.znpt.service.impl; +import cn.dev33.satoken.secure.SaBase64Util; +import cn.dev33.satoken.secure.SaSecureUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dite.znpt.constant.Constants; import com.dite.znpt.constant.Message; import com.dite.znpt.converts.Converts; import com.dite.znpt.domain.entity.UserEntity; @@ -11,6 +16,8 @@ import com.dite.znpt.enums.EducationEnum; import com.dite.znpt.exception.ServiceException; import com.dite.znpt.service.UserService; import com.dite.znpt.mapper.UserMapper; +import com.dite.znpt.util.PasswordUtil; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; import com.dite.znpt.util.PageUtil; @@ -27,6 +34,12 @@ import java.util.List; @RequiredArgsConstructor public class UserServiceImpl extends ServiceImpl implements UserService { + @Value("${password.default-value:Ai3m@123}") + private String defaultPassword; + + @Value("${password.enable-default:true}") + private Boolean enableDefaultPassword; + /** * 功能描述:分页查询用户信息列表 * @@ -82,9 +95,14 @@ public class UserServiceImpl extends ServiceImpl impleme **/ @Transactional(rollbackFor = Exception.class) @Override - public void save(UserReq req) { + public String save(UserReq req) { UserEntity entity = Converts.INSTANCE.toUserEntity(req); + String salt = RandomUtil.randomString(req.getAccount(), 4); + entity.setSalt(salt); + String password = enableDefaultPassword ? defaultPassword : PasswordUtil.generatePassword(); + entity.setPassword(SaSecureUtil.md5(req.getAccount().concat(password).concat(salt))); this.save(entity); + return SaBase64Util.encode(password); } /** @@ -103,6 +121,7 @@ public class UserServiceImpl extends ServiceImpl impleme } UserEntity entity = Converts.INSTANCE.toUserEntity(req); entity.setUserId(userId); + entity.setAccount(null); this.updateById(entity); } @@ -116,10 +135,12 @@ public class UserServiceImpl extends ServiceImpl impleme @Transactional(rollbackFor = Exception.class) @Override public void deleteById(String userId) { - if(null == this.getById(userId)){ + UserEntity entity = this.getById(userId); + if(null == entity){ throw new ServiceException(Message.USER_ID_NOT_EXIST); } - this.removeById(userId); + entity.setDelFlag(Constants.DEL_FLAG_1); + this.updateById(entity); } diff --git a/core/src/main/java/com/dite/znpt/util/PasswordUtil.java b/core/src/main/java/com/dite/znpt/util/PasswordUtil.java index 85d9dfe..349ab84 100644 --- a/core/src/main/java/com/dite/znpt/util/PasswordUtil.java +++ b/core/src/main/java/com/dite/znpt/util/PasswordUtil.java @@ -3,6 +3,12 @@ package com.dite.znpt.util; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; + public class PasswordUtil { private static final PasswordEncoder encoder = new BCryptPasswordEncoder(); @@ -13,4 +19,48 @@ public class PasswordUtil { public static boolean matches(String rawPassword, String encodedPassword) { return encoder.matches(rawPassword, encodedPassword); } + + // 字符集定义 + private static final String UPPER_CASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + private static final String LOWER_CASE = "abcdefghijklmnopqrstuvwxyz"; + private static final String SPECIAL_CHARACTERS = "!@#$%^&*()-_=+[]{}|;:'\",.<>/?"; + private static final String DIGITS = "0123456789"; + + // 安全随机数生成器 + private static final Random RANDOM = new SecureRandom(); + + /** + * 生成随机密码 + * @return 符合要求的随机密码 + */ + public static String generatePassword() { + // 确保密码包含至少一个大写字母、一个小写字母和一个特殊字符 + List passwordChars = new ArrayList<>(); + + // 1. 添加至少一个大写字母 + passwordChars.add(UPPER_CASE.charAt(RANDOM.nextInt(UPPER_CASE.length()))); + + // 2. 添加至少一个小写字母 + passwordChars.add(LOWER_CASE.charAt(RANDOM.nextInt(LOWER_CASE.length()))); + + // 3. 添加至少一个特殊字符 + passwordChars.add(SPECIAL_CHARACTERS.charAt(RANDOM.nextInt(SPECIAL_CHARACTERS.length()))); + + // 4. 生成剩余字符(8位密码已添加3位,还需5位) + String allChars = UPPER_CASE + LOWER_CASE + SPECIAL_CHARACTERS + DIGITS; + for (int i = 0; i < 5; i++) { + passwordChars.add(allChars.charAt(RANDOM.nextInt(allChars.length()))); + } + + // 5. 打乱字符顺序 + Collections.shuffle(passwordChars, RANDOM); + + // 6. 转换为字符串 + StringBuilder password = new StringBuilder(); + for (Character c : passwordChars) { + password.append(c); + } + + return password.toString(); + } } diff --git a/core/src/main/java/com/dite/znpt/util/ValidationGroup.java b/core/src/main/java/com/dite/znpt/util/ValidationGroup.java new file mode 100644 index 0000000..a099028 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/util/ValidationGroup.java @@ -0,0 +1,14 @@ +package com.dite.znpt.util; + +import lombok.Data; + +/** + * @author Bear.G + * @date 2025/5/19/周一 15:09 + * @description + */ + +public interface ValidationGroup { + interface Insert {} // 增 + interface Update {} // 改 +} diff --git a/web/src/main/java/com/dite/znpt/web/controller/CombinedDictController.java b/web/src/main/java/com/dite/znpt/web/controller/CombinedDictController.java index ce423da..cccf827 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/CombinedDictController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/CombinedDictController.java @@ -1,7 +1,7 @@ package com.dite.znpt.web.controller; -import com.dite.znpt.domain.Constants; +import com.dite.znpt.constant.Constants; import com.dite.znpt.domain.vo.CombinedDictListReq; import com.dite.znpt.domain.vo.CombinedDictResp; import com.dite.znpt.domain.entity.CombinedDictEntity; diff --git a/web/src/main/java/com/dite/znpt/web/controller/DefectController.java b/web/src/main/java/com/dite/znpt/web/controller/DefectController.java index 67e5c19..8dfc7de 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/DefectController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/DefectController.java @@ -1,7 +1,7 @@ package com.dite.znpt.web.controller; -import com.dite.znpt.domain.Constants; +import com.dite.znpt.constant.Constants; import com.dite.znpt.domain.vo.DefectListReq; import com.dite.znpt.domain.vo.DefectReq; import com.dite.znpt.domain.vo.DefectResp; diff --git a/web/src/main/java/com/dite/znpt/web/controller/FileInfoController.java b/web/src/main/java/com/dite/znpt/web/controller/FileInfoController.java index fa40594..68666a5 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/FileInfoController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/FileInfoController.java @@ -1,7 +1,7 @@ package com.dite.znpt.web.controller; -import com.dite.znpt.domain.Constants; +import com.dite.znpt.constant.Constants; import com.dite.znpt.domain.vo.FileInfoListReq; import com.dite.znpt.domain.vo.FileInfoResp; import com.dite.znpt.domain.entity.FileInfoEntity; diff --git a/web/src/main/java/com/dite/znpt/web/controller/ImageController.java b/web/src/main/java/com/dite/znpt/web/controller/ImageController.java index baf14af..e6eda67 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/ImageController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/ImageController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.util.Arrays; import java.util.List; /** diff --git a/web/src/main/java/com/dite/znpt/web/controller/LoginController.java b/web/src/main/java/com/dite/znpt/web/controller/LoginController.java new file mode 100644 index 0000000..b0c9d7e --- /dev/null +++ b/web/src/main/java/com/dite/znpt/web/controller/LoginController.java @@ -0,0 +1,15 @@ +package com.dite.znpt.web.controller; + +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author Bear.G + * @date 2025/5/19/周一 14:32 + * @description + */ +@Api(tags = "登录") +@RestController +public class LoginController { +} diff --git a/web/src/main/java/com/dite/znpt/web/controller/PartController.java b/web/src/main/java/com/dite/znpt/web/controller/PartController.java index f9586f6..d1ff22a 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/PartController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/PartController.java @@ -1,7 +1,7 @@ package com.dite.znpt.web.controller; -import com.dite.znpt.domain.Constants; +import com.dite.znpt.constant.Constants; import com.dite.znpt.domain.vo.PartListReq; import com.dite.znpt.domain.vo.PartListResp; import com.dite.znpt.domain.vo.PartReq; @@ -10,12 +10,14 @@ import com.dite.znpt.domain.entity.PartEntity; import com.dite.znpt.service.PartService; import com.dite.znpt.domain.Result; import com.dite.znpt.domain.PageResult; +import com.dite.znpt.util.ValidationGroup; import com.pig4cloud.plugin.excel.annotation.RequestExcel; import com.pig4cloud.plugin.excel.annotation.ResponseExcel; import com.pig4cloud.plugin.excel.vo.ErrorMessage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -32,39 +34,39 @@ public class PartController { @Resource private PartService partService; - @ApiOperation(value = "分页获取部件列表", httpMethod = "GET") + @ApiOperation(value = "分页查询部件信息列表", httpMethod = "GET") @GetMapping("/page") public PageResult page(PartListReq partReq) { return PageResult.ok(partService.page(partReq)); } - @ApiOperation(value = "获取部件列表", httpMethod = "GET") + @ApiOperation(value = "查询部件信息列表", httpMethod = "GET") @GetMapping("/list") public Result> list(PartListReq partReq) { return Result.ok(partService.list(partReq)); } - @ApiOperation(value = "根据Id获取详细信息", httpMethod = "GET") + @ApiOperation(value = "查询部件信息详情", httpMethod = "GET") @GetMapping("/detail/{partId}") public Result detail(@PathVariable String partId) { return Result.ok(partService.detail(partId)); } - @ApiOperation(value = "新增", httpMethod = "POST") + @ApiOperation(value = "新增部件信息", httpMethod = "POST") @PostMapping - public Result add(@RequestBody PartReq req) { + public Result add(@Validated(ValidationGroup.Insert.class) @RequestBody PartReq req) { partService.save(req); return Result.ok(); } - @ApiOperation(value = "修改", httpMethod = "PUT") + @ApiOperation(value = "修改部件信息", httpMethod = "PUT") @PutMapping("/{partId}") - public Result edit(@PathVariable String partId, @RequestBody PartReq req) { + public Result edit(@Validated(ValidationGroup.Update.class) @PathVariable String partId, @RequestBody PartReq req) { partService.update(partId, req); return Result.ok(); } - @ApiOperation(value = "删除", httpMethod = "DELETE") + @ApiOperation(value = "删除部件信息", httpMethod = "DELETE") @DeleteMapping("/{partId}") public Result remove(@PathVariable String partId) { partService.deleteById(partId); diff --git a/web/src/main/java/com/dite/znpt/web/controller/ProjectController.java b/web/src/main/java/com/dite/znpt/web/controller/ProjectController.java index 182e0b1..5c7e11c 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/ProjectController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/ProjectController.java @@ -1,7 +1,7 @@ package com.dite.znpt.web.controller; -import com.dite.znpt.domain.Constants; +import com.dite.znpt.constant.Constants; import com.dite.znpt.domain.vo.ProjectListReq; import com.dite.znpt.domain.vo.ProjectListResp; import com.dite.znpt.domain.vo.ProjectReq; @@ -10,12 +10,14 @@ import com.dite.znpt.domain.entity.ProjectEntity; import com.dite.znpt.service.ProjectService; import com.dite.znpt.domain.Result; import com.dite.znpt.domain.PageResult; +import com.dite.znpt.util.ValidationGroup; import com.pig4cloud.plugin.excel.annotation.RequestExcel; import com.pig4cloud.plugin.excel.annotation.ResponseExcel; import com.pig4cloud.plugin.excel.vo.ErrorMessage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -52,14 +54,14 @@ public class ProjectController { @ApiOperation(value = "新增项目信息", httpMethod = "POST") @PostMapping - public Result add(@RequestBody ProjectReq req) { + public Result add(@Validated(ValidationGroup.Insert.class) @RequestBody ProjectReq req) { projectService.save(req); return Result.ok(); } @ApiOperation(value = "修改项目信息", httpMethod = "PUT") @PutMapping("/{projectId}") - public Result edit(@PathVariable String projectId, @RequestBody ProjectReq req) { + public Result edit(@PathVariable String projectId, @Validated(ValidationGroup.Update.class) @RequestBody ProjectReq req) { projectService.update(projectId, req); return Result.ok(); } diff --git a/web/src/main/java/com/dite/znpt/web/controller/TConstructionController.java b/web/src/main/java/com/dite/znpt/web/controller/TConstructionController.java index 75b240d..521eb8f 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/TConstructionController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/TConstructionController.java @@ -1,7 +1,7 @@ package com.dite.znpt.web.controller; -import com.dite.znpt.domain.Constants; +import com.dite.znpt.constant.Constants; import com.dite.znpt.domain.vo.TConstructionListReq; import com.dite.znpt.domain.vo.TConstructionResp; import com.dite.znpt.domain.entity.TConstructionEntity; diff --git a/web/src/main/java/com/dite/znpt/web/controller/TurbineController.java b/web/src/main/java/com/dite/znpt/web/controller/TurbineController.java index 5929d14..9113e0c 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/TurbineController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/TurbineController.java @@ -1,18 +1,20 @@ package com.dite.znpt.web.controller; -import com.dite.znpt.domain.Constants; +import com.dite.znpt.constant.Constants; import com.dite.znpt.domain.vo.*; import com.dite.znpt.domain.entity.TurbineEntity; import com.dite.znpt.service.TurbineService; import com.dite.znpt.domain.Result; import com.dite.znpt.domain.PageResult; +import com.dite.znpt.util.ValidationGroup; import com.pig4cloud.plugin.excel.annotation.RequestExcel; import com.pig4cloud.plugin.excel.annotation.ResponseExcel; import com.pig4cloud.plugin.excel.vo.ErrorMessage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -61,14 +63,14 @@ public class TurbineController { @ApiOperation(value = "新增机组", httpMethod = "POST") @PostMapping - public Result add(@RequestBody TurbineReq req) { + public Result add(@Validated(ValidationGroup.Insert.class) @RequestBody TurbineReq req) { turbineService.save(req); return Result.ok(); } @ApiOperation(value = "修改机组", httpMethod = "PUT") @PutMapping("/{turbineId}") - public Result edit(@PathVariable String turbineId, @RequestBody TurbineReq req) { + public Result edit(@PathVariable String turbineId, @Validated(ValidationGroup.Insert.class) @RequestBody TurbineReq req) { turbineService.update(turbineId, req); return Result.ok(); } diff --git a/web/src/main/java/com/dite/znpt/web/controller/UserController.java b/web/src/main/java/com/dite/znpt/web/controller/UserController.java index d29e6d9..13b5e87 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/UserController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/UserController.java @@ -8,15 +8,18 @@ import com.dite.znpt.domain.entity.UserEntity; import com.dite.znpt.service.UserService; import com.dite.znpt.domain.Result; import com.dite.znpt.domain.PageResult; +import com.dite.znpt.util.ValidationGroup; import com.pig4cloud.plugin.excel.annotation.RequestExcel; import com.pig4cloud.plugin.excel.annotation.ResponseExcel; import com.pig4cloud.plugin.excel.vo.ErrorMessage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.validation.Valid; import java.util.List; /** @@ -50,14 +53,13 @@ public class UserController { @ApiOperation(value = "新增用户信息", httpMethod = "POST") @PostMapping - public Result add(@RequestBody UserReq req) { - userService.save(req); - return Result.ok(); + public Result add(@Validated(ValidationGroup.Insert.class) @RequestBody UserReq req) { + return Result.ok(userService.save(req)); } @ApiOperation(value = "修改用户信息", httpMethod = "PUT") @PutMapping("/{userId}") - public Result edit(@PathVariable String userId, @RequestBody UserReq req) { + public Result edit(@PathVariable String userId, @Validated(ValidationGroup.Update.class) @RequestBody UserReq req) { userService.update(userId, req); return Result.ok(); } diff --git a/web/src/main/java/com/dite/znpt/web/controller/WeatherTypeController.java b/web/src/main/java/com/dite/znpt/web/controller/WeatherTypeController.java index 448b17d..2d13873 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/WeatherTypeController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/WeatherTypeController.java @@ -1,7 +1,7 @@ package com.dite.znpt.web.controller; -import com.dite.znpt.domain.Constants; +import com.dite.znpt.constant.Constants; import com.dite.znpt.domain.vo.WeatherTypeListReq; import com.dite.znpt.domain.vo.WeatherTypeResp; import com.dite.znpt.domain.entity.WeatherTypeEntity;