package com.dy.pmsBase.user; import com.dy.common.aop.SsoAop; import com.dy.common.aop.SsoPowerAop; import com.dy.common.util.MD5; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.pmsGlobal.aop.Log; import com.dy.pmsGlobal.pojoBa.BaRole; import com.dy.pmsGlobal.pojoBa.BaUser; import com.dy.pmsGlobal.util.Constant; import com.mysql.cj.util.StringUtils; 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.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; /** * 用户管理 */ @Slf4j @RestController @RequestMapping(path = "user") @SuppressWarnings("unchecked")//java版本越高,对泛型约束越严,所以配置SuppressWarnings("unchecked") public class UserCtrl { @Autowired private UserSv sv; @Value("${user.defaultTrueRandomFalsePassword:true}") private Boolean defaultTrueRandomFalsePassword; @Value("${user.defaultPassword:ABC123}") private String defaultPassword; /** * 客户端请求得到默认密码 * @return 默认密码 */ @GetMapping(path = "defaultPassword") public BaseResponse defaultPassword(){ if(defaultTrueRandomFalsePassword){ return BaseResponseUtils.buildSuccess(defaultPassword) ; }else{ String password = this.sv.getStringRandom(6) ; return BaseResponseUtils.buildSuccess(password) ; } } /** * 客户端请求得到所有用户数据 * @return 所有用户数据 */ @PostMapping(path = "some", consumes = MediaType.APPLICATION_JSON_VALUE) //@SsoAop() //只有登录验证,没有权限验证 @SsoPowerAop(power = "10100000") //登录与权限同时验证 @Log("查询用户") public BaseResponse>> some(@RequestBody QueryVo vo) { QueryResultVo> res = this.sv.selectSome(vo); return BaseResponseUtils.buildSuccess(res); } /** * 得到一个用户数据 * @return 一个用户数据 */ //@GetMapping(path = "one", consumes = MediaType.TEXT_PLAIN_VALUE)//指前端向后传的参数类型 @GetMapping(path = "one") //@SsoAop() //只有登录验证,没有权限验证 @SsoPowerAop(power = "10100000") //登录与权限同时验证 @Log("查询单个用户") public BaseResponse one(String id) { return BaseResponseUtils.buildSuccess(this.sv.selectById(Long.parseLong(id))); } /** * 保存用户信息 * @param po * @return */ @PostMapping(path = "save", consumes = MediaType.APPLICATION_JSON_VALUE) //@SsoAop() //只有登录验证,没有权限验证 @SsoPowerAop(power = "10100001") //登录与权限同时验证 @Log("保存用户信息") public BaseResponse save(@RequestBody @Valid BaUser po) throws Exception{ po.id = null; Long id; po.supperAdmin = Constant.no.byteValue() ; // po.disabled = false ;//默认不禁用 po.deleted = false;//默认不删除 po.supperAdmin = 0;//默认不是管理员 if (!StringUtils.isNullOrEmpty(po.password)) { /* 如果前端进行了base64加密 po.password = new String(Base64.getDecoder().decode(po.password)) ; */ po.password = MD5.encrypt(po.password);//进行加密码 } else { po.password = MD5.encrypt(defaultPassword); } id = this.sv.save(po); if (id <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 更新用户信息 * @param po * @return */ @PostMapping(path = "update", consumes = MediaType.APPLICATION_JSON_VALUE) //@SsoAop() //只有登录验证,没有权限验证 @SsoPowerAop(power = "10100001") //登录与权限同时验证 @Log("更新用户信息") public BaseResponse update(@RequestBody @Validated BaUser po) { po.password = null;//设置为null,不做更新 po.supperAdmin = null;//设置为null,不做更新 po.deleted = null;//设置为null,不做更新 int count = this.sv.update(po); if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 禁用或启用用户信息 * @param po * @return */ @PostMapping(path="disabled") @SsoPowerAop(power = "10100001") @Log("禁用或启用用户信息") public BaseResponse disabled(@RequestBody BaUser po){ int count = sv.disabled(po.id,po.disabled); if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 删除用户信息 * @param id * @return */ @GetMapping(path = "delete") @SsoPowerAop(power = "10100001") //登录与权限同时验证 @Log("删除用户") public BaseResponse delete(Long id) { BaUser po = new BaUser(); po.id = id; po.deleted = true; int count = this.sv.update(po); if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 修改密码 * @param id 用户ID * @return 是否成功 */ //@GetMapping(path = "changePassword", consumes = MediaType.TEXT_PLAIN_VALUE) @GetMapping(path = "changePassword") @SsoAop() @Log("修改密码") public BaseResponse changePassword(String id, String oldPassword, String newPassword) throws Exception{ int count; if (id == null) { return BaseResponseUtils.buildFail("id不能为空"); } if (StringUtils.isNullOrEmpty(oldPassword)) { 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);//进行加密码 Long idLg = Long.parseLong(id) ; 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 (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess(true); } } /** * 重置密码 * @param vo form表单对象 * @return 是否成功 */ @PostMapping(path = "resetPassword", consumes = MediaType.APPLICATION_JSON_VALUE) //@SsoAop() //只有登录验证,没有权限验证 @SsoPowerAop(power = "10100001") //登录与权限同时验证 @Log("重置密码") public BaseResponse resetPassword(@RequestBody @Validated ResetPasswordVo vo) throws Exception { int count; String password = MD5.encrypt(vo.password);//进行加密码 Long idLg = Long.parseLong(vo.id); BaUser po = this.sv.selectById(idLg); if (Objects.isNull(po)) { return BaseResponseUtils.buildFail("未得到用户,请求失败"); } else { count = this.sv.changePassword(idLg, password); } if (count <= 0) { return BaseResponseUtils.buildFail("数据库存储失败"); } else { return BaseResponseUtils.buildSuccess("重置密码成功"); } } }