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<String> 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<QueryResultVo<List<BaUser>>> some(@RequestBody QueryVo vo) { 
 | 
        QueryResultVo<List<BaUser>> 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<BaUser> 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<Boolean> save(@RequestBody @Valid BaUser po) throws Exception{ 
 | 
        po.id = null; 
 | 
        Long id; 
 | 
        po.supperAdmin = Constant.no.byteValue() ; 
 | 
//            po.disabled = false ;//默认不禁用 
 | 
        po.deleted = false;//默认不删除 
 | 
        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<Boolean> 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<BaRole> 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<Boolean> 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<Boolean> 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<Boolean> 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("重置密码成功"); 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |