pipIrr-platform/pipIrr-global/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaIntake.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRTU.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaUser.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pipIrr-platform/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
pipIrr-platform/pipIrr-global/pom.xml
@@ -118,6 +118,10 @@ <version>1.5.5.Final</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> <build> pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaIntake.java
New file @@ -0,0 +1,122 @@ package com.dy.pipIrrGlobal.pojoBa; import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.writer.ObjectWriterImplToString; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.dy.common.po.BaseEntity; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.*; import org.hibernate.validator.constraints.Length; /** * 取水口实体 */ @TableName(value = "ba_intake", autoResultMap = true) @Data @Builder @ToString @NoArgsConstructor @AllArgsConstructor @Schema(name = "取水口实体") public class BaIntake implements BaseEntity { public static final long serialVersionUID = 202312010953001L; @JSONField(serializeUsing = ObjectWriterImplToString.class) @TableId(type = IdType.INPUT) @Schema(description = "实体id", requiredMode = Schema.RequiredMode.NOT_REQUIRED) public Long id; /** * 取水口名称或编号 */ @Schema(description = "取水口名称或编号", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "取水口名称或编号不能为空") //不能为空也不能为null @Length(message = "取水口名称或编号不大于{max}字,不小于{min}字", min = 1, max = 25) public String name; /** * 外键,指向片区 */ @JSONField(serializeUsing = ObjectWriterImplToString.class) @Schema(description = "所在片区ID", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "所在片区不能为空") //不能为null public Long blockId; /** * 外键,指向分水口 */ @JSONField(serializeUsing = ObjectWriterImplToString.class) @Schema(description = "所在分水口ID", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "所在分水口不能为空") //不能为null public Long divideId; /** * 负责人 */ @Schema(description = "负责人", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Length(message = "负责人不大于{max}字,不小于{min}字", min = 1, max = 25) public String header; /** * 联系电话 */ @Schema(description = "联系电话", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "联系电话不能为空") //不能为空也不能为null @Length(message = "联系电话必须{max}位数据", min = 11, max = 11) public String phone; /** * 外键,指向行政区 */ @JSONField(serializeUsing = ObjectWriterImplToString.class) @Schema(description = "所在县ID", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "所在县不能为空") //不能为空也不能为null public Long countyId; /** * 外键,指向行政区 */ @JSONField(serializeUsing = ObjectWriterImplToString.class) @Schema(description = "所在镇ID", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "所在镇不能为空") //不能为空也不能为null public Long townId; /** * 外键,指向行政区 */ @JSONField(serializeUsing = ObjectWriterImplToString.class) @Schema(description = "所在村ID", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "所在村不能为空") //不能为空也不能为null public Long villageId; /** * 经度 */ @Schema(description = "经度", requiredMode = Schema.RequiredMode.NOT_REQUIRED) public Double lng; /** * 纬度 */ @Schema(description = "纬度", requiredMode = Schema.RequiredMode.NOT_REQUIRED) public Double lat; /** * 备注 */ @Schema(description = "备注", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Length(message = "备注不大于{max}字,不小于{min}字", min = 1, max = 50) public String remark; /** * 删除标志 */ @Schema(description = "删除标识,表单不用填写", requiredMode = Schema.RequiredMode.NOT_REQUIRED) public Byte deleted; } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRTU.java
New file @@ -0,0 +1,109 @@ package com.dy.pipIrrGlobal.pojoBa; import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.writer.ObjectWriterImplToString; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.dy.common.po.BaseEntity; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.*; import org.hibernate.validator.constraints.Length; /** * 控制器实体,RTU阀控一体机 */ @TableName(value = "ba_intake", autoResultMap = true) @Data @Builder @ToString @NoArgsConstructor @AllArgsConstructor @Schema(name = "RTU阀控一体机实体") public class BaRTU implements BaseEntity { public static final long serialVersionUID = 202312011021001L; @JSONField(serializeUsing = ObjectWriterImplToString.class) @TableId(type = IdType.INPUT) @Schema(description = "实体id", requiredMode = Schema.RequiredMode.NOT_REQUIRED) public Long id; /** * 控制器编号 */ @Schema(description = "控制器编号", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "控制器编号不能为空") //不能为空也不能为null @Length(message = "控制器编号不大于{max}字,不小于{min}字", min = 1, max = 25) public String num; /** * 外键,指向取水口 */ @JSONField(serializeUsing = ObjectWriterImplToString.class) @Schema(description = "所在取水口ID", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "所在取水口不能为空") //不能为null public Long intakeId; /** * 外键,指向农户(用水户) */ @JSONField(serializeUsing = ObjectWriterImplToString.class) @Schema(description = "所属农户ID", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "所属农户不能为空") //不能为null public Long clientId; /** * 负责人 */ @Schema(description = "负责人", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Length(message = "负责人不大于{max}字,不小于{min}字", min = 1, max = 25) public String header; /** * 联系电话 */ @Schema(description = "联系电话", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "联系电话不能为空") //不能为空也不能为null @Length(message = "联系电话必须{max}位数据", min = 11, max = 11) public String phone; /** * 开关阀 */ @Schema(description = "开关阀", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "0关阀,1开阀") //不能为空也不能为null @Length(message = "联系电话必须{max}位数据", min = 1, max = 1) public Byte isOpen; /** * 控制器名称 */ @Schema(description = "控制器名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @NotEmpty(message = "控制器名称非必填") //不能为空也不能为null @Length(message = "控制器名称不大于{max}字,不小于{min}字", min = 1, max = 25) public String name; /** * 厂家名称 */ @Schema(description = "厂家名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @NotEmpty(message = "厂家名称非必填") //不能为空也不能为null @Length(message = "厂家名称不大于{max}字,不小于{min}字", min = 1, max = 25) public String manufacturer; /** * 备注 */ @Schema(description = "备注", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Length(message = "备注不大于{max}字,不小于{min}字", min = 1, max = 50) public String remark; /** * 删除标志 */ @Schema(description = "删除标识,表单不用填写", requiredMode = Schema.RequiredMode.NOT_REQUIRED) public Byte deleted; } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaUser.java
@@ -2,13 +2,14 @@ import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.writer.ObjectWriterImplToString; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.dy.common.mybatis.envm.Deleted; import com.dy.common.mybatis.envm.Disabled; import com.dy.common.po.BaseEntity; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotEmpty; import lombok.*; import org.hibernate.validator.constraints.Length; @@ -94,8 +95,6 @@ * 是否禁用 0:否,1:是 */ @Schema(description = "是否禁用", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Max(message = "是否禁用只能0或1", value = 1) @Min(message = "是否禁用只能0或1",value = 0) public Disabled disabled; /** @@ -117,4 +116,10 @@ @TableField(exist = false) public List<Integer> privileges; //public transient List<Integer> privileges;//此种方式变量不存库, 也不参与序列化了 /** * 用户所属角色Id */ @TableField(exist = false) public String[] roleIds ; } pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/pom.xml
@@ -11,25 +11,125 @@ <packaging>jar</packaging> <artifactId>pipIrr-mw-accept</artifactId> <version>1.0.0</version> <name>pipIrr-mw-accept</name> <description>通信中间件</description> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </exclusion> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- 系统监管 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- api在线文档 https://springdoc.org/#modules--> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> </dependency> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-api</artifactId> </dependency> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-security</artifactId> </dependency> <!-- 动态加载新编译的类 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <!--mysql驱动--> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.33</version> </dependency> <!--druid-spring-boot连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.20</version> </dependency> <!--mybatis-plus-spring-boot--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.2</version> </dependency> <!-- bean和map互转换 --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>3.2.7</version> <exclusions> <exclusion> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> </exclusion> <exclusion> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>com.alibaba.spring</groupId> <artifactId>spring-context-support</artifactId> </exclusion> <exclusion> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> </exclusion> <exclusion> <groupId>com.alibaba</groupId> <artifactId>hessian-lite</artifactId> </exclusion> <exclusion> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> </exclusion> </exclusions> </dependency> <!-- apache mina --> <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-filter-compression</artifactId> <version>2.2.1</version> <version>2.2.2</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.7</version> </dependency> <!-- 测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> </project> </project> pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java
@@ -21,6 +21,7 @@ import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; @@ -31,19 +32,23 @@ @Slf4j @Tag(name = "用户管理", description = "用户增删改查等操作") @RestController @RequestMapping(path="user") @RequestMapping(path = "user") @SuppressWarnings("unchecked")//java版本越高,对泛型约束越严,所以配置SuppressWarnings("unchecked") public class UserCtrl { private UserSv sv ; private UserSv sv; @Value("${user.defaultPassword:ABC123}") private String defaultPassword; @Autowired private void setSv(UserSv sv){ this.sv = sv ; private void setSv(UserSv sv) { this.sv = sv; } /** * 客户端请求得到所有用户数据 * * @return 所有用户数据 */ @Operation(summary = "获得一页用户", description = "返回一页用户数据") @@ -57,18 +62,19 @@ }) @PostMapping(path = "some", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop("-1") public BaseResponse<QueryResultVo<List<BaUser>>> some(@RequestBody @Parameter(description = "查询form表单json数据", required = true) @Valid QueryVo vo){ public BaseResponse<QueryResultVo<List<BaUser>>> some(@RequestBody @Parameter(description = "查询form表单json数据", required = true) @Valid QueryVo vo) { try { QueryResultVo<List<BaUser>> res = this.sv.selectSome(vo) ; QueryResultVo<List<BaUser>> res = this.sv.selectSome(vo); return BaseResponseUtils.buildSuccess(res); } catch (Exception e) { log.error("查询用户异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; return BaseResponseUtils.buildException(e.getMessage()); } } /** * 得到一个用户数据 * * @return 一个用户数据 */ @Operation(summary = "一个用户", description = "得到一个用户数据") @@ -82,12 +88,13 @@ }) @GetMapping(path = "one", consumes = MediaType.TEXT_PLAIN_VALUE) @SsoAop("-1") public BaseResponse<BaUser> one(@Parameter(description = "实体id", required = true) String id){ public BaseResponse<BaUser> one(@Parameter(description = "实体id", required = true) String id) { return BaseResponseUtils.buildSuccess(this.sv.selectById(Long.parseLong(id))); } /** * 保存用户 * * @param po 保存用户form表单对象 * @return 是否成功 */ @@ -102,37 +109,42 @@ }) @PostMapping(path = "save", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop("-1")//@SsoAop(power = "-1") public BaseResponse<Boolean> save(@RequestBody @Parameter(description = "form表单json数据", required = true) @Valid BaUser po, @Parameter(hidden = true) BindingResult bindingResult){ if(bindingResult != null && bindingResult.hasErrors()){ public BaseResponse<Boolean> save(@RequestBody @Parameter(description = "form表单json数据", required = true) @Valid BaUser po, @Parameter(hidden = true) BindingResult bindingResult) { if (bindingResult != null && bindingResult.hasErrors()) { return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } po.id = null ; po.id = null; int count; int count1; try { po.disabled = Disabled.NO ;//默认不禁用 po.deleted = Deleted.NO ;//默认不删除 po.orgTag = DataSourceContext.get() ;//机构标签 if(!StringUtils.isNullOrEmpty(po.password)){ po.disabled = Disabled.NO;//默认不禁用 po.deleted = Deleted.NO;//默认不删除 po.orgTag = DataSourceContext.get();//机构标签 if (!StringUtils.isNullOrEmpty(po.password)) { /* 如果前端进行了base64加密 po.password = new String(Base64.getDecoder().decode(po.password)) ; */ po.password = MD5.encrypt(po.password) ;//进行加密码 po.password = MD5.encrypt(po.password);//进行加密码 } else { po.password = MD5.encrypt(defaultPassword); } count = this.sv.save(po); count1 = this.sv.setRoles(String.valueOf(po.id), po.roleIds); } catch (Exception e) { log.error("保存用户异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; return BaseResponseUtils.buildException(e.getMessage()); } if(count <= 0){ return BaseResponseUtils.buildFail("数据库存储失败") ; }else{ return BaseResponseUtils.buildSuccess(true) ; if (count <= 0 || count1 <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 编辑修改用户 * * @param po 保存用户form表单对象 * @return 是否成功 */ @@ -147,32 +159,33 @@ }) @PostMapping(path = "update", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop("-1")//@SsoAop(power = "-1") public BaseResponse<Boolean> update(@RequestBody @Parameter(description = "form表单json数据", required = true) @Valid BaUser po, @Parameter(hidden = true) BindingResult bindingResult){ if(bindingResult != null && bindingResult.hasErrors()){ public BaseResponse<Boolean> update(@RequestBody @Parameter(description = "form表单json数据", required = true) @Valid BaUser po, @Parameter(hidden = true) BindingResult bindingResult) { if (bindingResult != null && bindingResult.hasErrors()) { return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } if(po.id == null){ return BaseResponseUtils.buildFail("无数据实体ID") ; if (po.id == null) { return BaseResponseUtils.buildFail("无数据实体ID"); } int count; try { po.deleted = null ;//设置为null,不做更新 po.orgTag = null ;//设置为null,不做更新 po.deleted = null;//设置为null,不做更新 po.orgTag = null;//设置为null,不做更新 count = this.sv.update(po); } catch (Exception e) { log.error("保存用户异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; return BaseResponseUtils.buildException(e.getMessage()); } if(count <= 0){ return BaseResponseUtils.buildFail("数据库存储失败") ; }else{ return BaseResponseUtils.buildSuccess(true) ; if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 修改密码 * * @param id 用户ID * @return 是否成功 */ @@ -189,51 +202,137 @@ @SsoAop("-1")//@SsoAop(power = "-1") public BaseResponse<Boolean> changePassword(@Parameter(description = "实体id", required = true) String id, @Parameter(description = "旧密码", required = true) String oldPassword, @Parameter(description = "新密码", required = true) String newPassword) throws Exception{ if(id == null){ return BaseResponseUtils.buildFail("id不能为空") ; @Parameter(description = "新密码", required = true) String newPassword) throws Exception { if (id == null) { return BaseResponseUtils.buildFail("id不能为空"); } if(StringUtils.isNullOrEmpty(oldPassword)){ return BaseResponseUtils.buildFail("旧密码不能为空") ; if (StringUtils.isNullOrEmpty(oldPassword)) { return BaseResponseUtils.buildFail("旧密码不能为空"); } if(StringUtils.isNullOrEmpty(newPassword)){ return BaseResponseUtils.buildFail("新密码不能为空") ; if (StringUtils.isNullOrEmpty(newPassword)) { return BaseResponseUtils.buildFail("新密码不能为空"); } /* 如果前端进行了base64加密 oldPassword = new String(Base64.getDecoder().decode(oldPassword)) ; newPassword = new String(Base64.getDecoder().decode(newPassword)) ; */ oldPassword = MD5.encrypt(oldPassword) ;//进行加密码 newPassword = MD5.encrypt(newPassword) ;//进行加密码 oldPassword = MD5.encrypt(oldPassword);//进行加密码 newPassword = MD5.encrypt(newPassword);//进行加密码 Long idLg = Long.parseLong(id) ; int count ; Long idLg = Long.parseLong(id); int count; try { BaUser po = this.sv.selectById(idLg); if(Objects.isNull(po)){ return BaseResponseUtils.buildFail("未得到用户,请求失败") ; }else{ if(!po.password.equalsIgnoreCase(oldPassword)){ return BaseResponseUtils.buildFail("旧密码不正确,请求失败") ; }else{ count = this.sv.changePassword(idLg, newPassword) ; if (Objects.isNull(po)) { return BaseResponseUtils.buildFail("未得到用户,请求失败"); } else { if (!po.password.equalsIgnoreCase(oldPassword)) { return BaseResponseUtils.buildFail("旧密码不正确,请求失败"); } else { count = this.sv.changePassword(idLg, newPassword); } } } catch (Exception e) { log.error("保存用户异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; return BaseResponseUtils.buildException(e.getMessage()); } if(count <= 0){ return BaseResponseUtils.buildFail("数据库存储失败") ; }else{ return BaseResponseUtils.buildSuccess(true) ; if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 重置密码为默认值 * * @param id 用户ID * @return 是否成功 */ @Operation(summary = "重置密码", description = "提交用户ID") @ApiResponses(value = { @ApiResponse( responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, description = "操作结果:true:成功,false:失败(BaseResponse.content)", content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, schema = @Schema(implementation = Boolean.class))} ) }) @GetMapping(path = "resetPassword", consumes = MediaType.TEXT_PLAIN_VALUE) @SsoAop("-1")//@SsoAop(power = "-1") public BaseResponse<Boolean> resetPassword(@Parameter(description = "实体id", required = true) String id) throws Exception { if (id == null) { return BaseResponseUtils.buildFail("id不能为空"); } String password = MD5.encrypt(defaultPassword);//进行加密码 Long idLg = Long.parseLong(id); int count; try { BaUser po = this.sv.selectById(idLg); if (Objects.isNull(po)) { return BaseResponseUtils.buildFail("未得到用户,请求失败"); } else { count = this.sv.changePassword(idLg, password); } } catch (Exception e) { log.error("保存用户异常", e); return BaseResponseUtils.buildException(e.getMessage()); } if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 重置密码为随机数字加字母 * * @param id 用户ID * @return 是否成功 */ @Operation(summary = "重置密码", description = "提交用户ID") @ApiResponses(value = { @ApiResponse( responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, description = "操作结果:true:成功,false:失败(BaseResponse.content)", content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, schema = @Schema(implementation = Boolean.class))} ) }) @GetMapping(path = "resetPassword1", consumes = MediaType.TEXT_PLAIN_VALUE) @SsoAop("-1")//@SsoAop(power = "-1") public BaseResponse<String> resetPassword1(@Parameter(description = "实体id", required = true) String id) throws Exception { if (id == null) { return BaseResponseUtils.buildFail("id不能为空"); } String randomPassword = this.sv.getStringRandom(6); String password = MD5.encrypt(randomPassword);//进行加密码 Long idLg = Long.parseLong(id); int count; try { BaUser po = this.sv.selectById(idLg); if (Objects.isNull(po)) { return BaseResponseUtils.buildFail("未得到用户,请求失败"); } else { count = this.sv.changePassword(idLg, password); } } catch (Exception e) { log.error("保存用户异常", e); return BaseResponseUtils.buildException(e.getMessage()); } if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(randomPassword); } } /** * 设置用户角色 * * @param id 用户ID * @return 是否成功 */ @@ -249,27 +348,28 @@ @GetMapping(path = "setRoles", consumes = MediaType.TEXT_PLAIN_VALUE) @SsoAop("-1")//@SsoAop(power = "-1") public BaseResponse<Boolean> setRoles(@Parameter(description = "实体id", required = true) String id, @Parameter(description = "角色id数组") String[] roleIds){ Long[] roleId_lg = null ; if(roleIds != null && roleIds.length > 0){ roleId_lg = new Long[roleIds.length] ; int index = 0 ; for(String roleId : roleIds){ roleId_lg[index++] = Long.parseLong(roleId) ; @Parameter(description = "角色id数组") String[] roleIds) { Long[] roleId_lg = null; if (roleIds != null && roleIds.length > 0) { roleId_lg = new Long[roleIds.length]; int index = 0; for (String roleId : roleIds) { roleId_lg[index++] = Long.parseLong(roleId); } } try { this.sv.setRoles(Long.parseLong(id), roleId_lg); } catch (Exception e) { log.error("保存用户异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; return BaseResponseUtils.buildException(e.getMessage()); } return BaseResponseUtils.buildSuccess(true) ; return BaseResponseUtils.buildSuccess(true); } /** * 删除用户 * * @param id 用户ID * @return 是否成功 */ @@ -284,21 +384,21 @@ }) @GetMapping(path = "delete", consumes = MediaType.TEXT_PLAIN_VALUE) @SsoAop("-1")//@SsoAop(power = "-1") public BaseResponse<Boolean> delete(@Parameter(description = "实体id", required = true) String id){ if(id == null){ return BaseResponseUtils.buildFail("id不能为空") ; public BaseResponse<Boolean> delete(@Parameter(description = "实体id", required = true) String id) { if (id == null) { return BaseResponseUtils.buildFail("id不能为空"); } int count; try { count = this.sv.delete(Long.parseLong(id)); } catch (Exception e) { log.error("保存用户异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; return BaseResponseUtils.buildException(e.getMessage()); } if(count <= 0){ return BaseResponseUtils.buildFail("数据库存储失败") ; }else{ return BaseResponseUtils.buildSuccess(true) ; if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } } pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
@@ -7,14 +7,14 @@ import com.dy.pipIrrGlobal.pojoBa.BaUser; import com.dy.pipIrrGlobal.pojoBa.BaUserRole; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; import org.apache.dubbo.common.utils.PojoUtils ; import org.springframework.transaction.annotation.Transactional; import java.util.Random; @Slf4j @Service @@ -24,98 +24,146 @@ private BaUserRoleMapper urDao; @Autowired private void setDao(BaUserMapper dao){ private void setDao(BaUserMapper dao) { this.dao = dao; } @Autowired private void setDao(BaUserRoleMapper dao){ private void setDao(BaUserRoleMapper dao) { this.urDao = dao; } /** * 得到一个用户 * * @param id 用户ID * @return 用户实体 */ public BaUser selectById(Long id){ return this.dao.selectById(id) ; public BaUser selectById(Long id) { return this.dao.selectById(id); } /** * 得到一个用户 * * @param vo 查询条件值对象 * @return 用户实体 */ @SuppressWarnings("unchecked") public QueryResultVo<List<BaUser>> selectSome(QueryVo vo){ Map<String, Object> params = (Map<String, Object>)PojoUtils.generalize(vo) ; Long itemTotal = this.dao.selectTotal(params) ; public QueryResultVo<List<BaUser>> selectSome(QueryVo vo) { Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo); Long itemTotal = this.dao.selectTotal(params); QueryResultVo<List<BaUser>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = vo.pageSize ; rsVo.pageCurr = vo.pageCurr ; QueryResultVo<List<BaUser>> rsVo = new QueryResultVo<>(); rsVo.pageSize = vo.pageSize; rsVo.pageCurr = vo.pageCurr; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = this.dao.selectSome(params) ; rsVo.obj = this.dao.selectSome(params); return rsVo ; return rsVo; } /** * 保存实体 * * @param po 实体 * @return 影响记录数量 */ @Transactional public int save(BaUser po){ return this.dao.insert(po) ; public int save(BaUser po) { return this.dao.insert(po); } /** * 保存修改实体 * * @param po 实体 * @return 影响记录数量 */ @Transactional public int update(BaUser po){ return this.dao.updateByPrimaryKeySelective(po) ; public int update(BaUser po) { return this.dao.updateByPrimaryKeySelective(po); } /** * 修改密码 * @param id 用户ID * * @param id 用户ID * @param password 新密码 * @return 影响记录数量 */ public int changePassword(Long id, String password){ return this.dao.changePassword(id, password) ; public int changePassword(Long id, String password) { return this.dao.changePassword(id, password); } /** * 设置用户角色 * @param userId 用户id * * @param userId 用户id * @param roleIds 选择的角色id集合 * @return 插入用户与角色关联记录数量 */ public int setRoles(Long userId, Long[] roleIds){ this.urDao.deleteByUserId(userId) ; int count = 0 ; if(roleIds != null && roleIds.length > 0){ for(Long roleId : roleIds){ count += this.urDao.insertSelective(new BaUserRole(userId,roleId)) ; public int setRoles(Long userId, Long[] roleIds) { this.urDao.deleteByUserId(userId); int count = 0; if (roleIds != null && roleIds.length > 0) { for (Long roleId : roleIds) { count += this.urDao.insertSelective(new BaUserRole(userId, roleId)); } } return count ; return count; } /** * 设置用户角色 * * @param userId 用户id * @param roleIds 选择的角色id集合 * @return 插入用户与角色关联记录数量 */ public int setRoles(String userId, String[] roleIds) { this.urDao.deleteByUserId(Long.parseLong(userId)); int count = 0; if (roleIds != null && roleIds.length > 0) { for (String roleId : roleIds) { count += this.urDao.insertSelective(new BaUserRole(Long.parseLong(userId), Long.parseLong(roleId))); } } return count; } /** * 保存修改实体 * * @param id 实体ID * @return 影响记录数量 */ @Transactional public int delete(Long id){ return this.dao.deleteLogicById(id) ; public int delete(Long id) { return this.dao.deleteLogicById(id); } /** * 生成指定位数随机数字密码 * * @param length 多长随机数 * @return 随机数 */ public String getStringRandom(int length) { String val = ""; Random random = new Random(); for (int i = 0; i < length; i++) { String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; if ("char".equalsIgnoreCase(charOrNum)) { int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; val += (char) (random.nextInt(26) + temp); } else if ("num".equalsIgnoreCase(charOrNum)) { val += String.valueOf(random.nextInt(10)); } } return val; } } pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml
@@ -1,6 +1,8 @@ spring: profiles: include: global, database, database-ym, database-pj user: defaultPassword: "ABC123" #actutor的web端口 management: pipIrr-platform/pom.xml
@@ -44,8 +44,15 @@ <mapstruct.version>1.5.5.Final</mapstruct.version> <hutool-all.version>5.8.22</hutool-all.version> <org-jdom2.version>2.0.6.1</org-jdom2.version> <compiler-plugin.version>3.11.0</compiler-plugin.version> <surefire-plugin.version>3.0.0</surefire-plugin.version> <spring-boot-maven-plugin.version>3.2.0</spring-boot-maven-plugin.version> <maven-jar-plugin-plugin.version>3.3.0</maven-jar-plugin-plugin.version> <maven-dependency-plugin.version>3.5.0</maven-dependency-plugin.version> <maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version> <maven-resources-plugin.version>3.3.1</maven-resources-plugin.version> <maven-surefire-plugin.version>3.0.0</maven-surefire-plugin.version> <maven-bundle-plugin.version>5.1.9</maven-bundle-plugin.version> <encoding>UTF-8</encoding> </properties> @@ -243,14 +250,7 @@ <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.2.1</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-filter-compression</artifactId> <version>2.2.1</version> <version>2.2.2</version> <type>pom</type> <scope>import</scope> </dependency> @@ -297,36 +297,68 @@ <!-- spring boot提供的maven打包插件 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>3.1.3</version> <version>${spring-boot-maven-plugin.version}</version> </plugin> <plugin> <!-- 该插件不会将项目中引入的依赖打进最终的 Jar 文件 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>${maven-jar-plugin-plugin.version}</version> </plugin> <plugin> <!-- 当项目中依赖比较多时,我们可以借助 maven-dependency-plugin 插件自动帮我们下载依赖的 Jar 文件,推荐将该插件绑定到package生命周期上 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>${maven-dependency-plugin.version}</version> <executions> <execution> <!-- 绑定生命周期 --> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <!-- 设置依赖的存放路径 --> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> <plugin> <!-- 设置java编译版本,运行环境版本 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <!-- source: 源代码编译版本;target: 目标平台编译版本;encoding: 字符集编码。 --> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> <source>${java.version}</source> <target>${java.version}</target> <encoding>${encoding}</encoding> </configuration> </plugin> <plugin> <!-- 解决资源文件的编码问题 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>${maven-resources-plugin.version}</version> <configuration> <encoding>${encoding}</encoding> </configuration> </plugin> <plugin> <!-- maven里执行测试用例的插件 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0</version> <configuration> <skipTests>true</skipTests> </configuration> <version>${maven-surefire-plugin.version}</version> </plugin> <plugin> <!-- 强制设定 java编译版本,运行环境版本 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${compiler-plugin.version}</version> <configuration> <source>20</source> <target>20</target> </configuration> <!-- 下面解决:当进行Maven Lifecycle package时报错:Could not find artifact org.apache.mina:mina-core:bundle:2.2.1 in maven (https://repo1.maven.org/maven2/)--> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>${maven-bundle-plugin.version}</version> <extensions>true</extensions> </plugin> </plugins> </pluginManagement> </build> </project> </project>