创建表单视图对象
@Getter @Setter public class UserParam { private Integer id; @NotBlank(message = "用户名不可以为空") @Length(min = 1, max = 20, message = "用户名长度需要在20个字以内") private String username; @NotBlank(message = "电话不可以为空") @Length(min = 1, max = 13, message = "电话长度需要在13个字以内") private String telephone; @NotBlank(message = "邮箱不允许为空") @Length(min = 5, max = 50, message = "邮箱长度需要在50个字符以内") private String mail; @NotNull(message = "必须提供用户所在的部门") private Integer deptId; @NotNull(message = "必须指定用户的状态") @Min(value = 0, message = "用户状态不合法") @Max(value = 2, message = "用户状态不合法") private Integer ststus; @Length(min = 0, max = 200, message = "备注长度需要在200个字以内") private String remark = ""; }
新增用户 service
@Service public class SysUserService { @Autowired private SysUserMapper sysUserMapper; public void save(@Valid UserParam param) { if(checkTelephoneExist(param.getTelephone(), param.getId())) { throw new ParamException("电话已经被占用"); } if(checkEmailExist(param.getMail(), param.getId())) { throw new ParamException("邮箱已经被占用"); } String password = "123456"; String encryptedPassword = MD5Util.encrypt(password); SysUser sysUser = SysUser.builder().username(param.getUsername()) .telephone(param.getTelephone()) .mail(param.getMail()) .password(encryptedPassword) .deptId(param.getDeptId()) .stasus(param.getStstus()) .remark(param.getRemark()) .build(); sysUser.setOperator(RequestHolder.getCurrentUser().getUsername()); // 获取当前线程的用户名 sysUser.setOperateIp("127.0.0.1"); // TODO sysUser.setOperateTime(new Date()); // TODO:send email sysUserMapper.insert(sysUser); } }
附:MD5加密工具类
@Slf4j public class MD5Util { public final static String encrypt(String s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; try { byte[] btInput = s.getBytes(); // 获得MD5摘要算法的 MessageDigest 对象 MessageDigest mdInst = MessageDigest.getInstance("MD5"); // 使用指定的字节更新摘要 mdInst.update(btInput); // 获得密文 byte[] md = mdInst.digest(); // 把密文转换成十六进制的字符串形式 int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } catch (Exception e) { log.error("generate md5 error, {}", s, e); return null; } } }
更新用户 service
public void update(@Valid UserParam param) { if(checkTelephoneExist(param.getTelephone(), param.getId())) { throw new ParamException("电话已经被占用"); } if(checkEmailExist(param.getMail(), param.getId())) { throw new ParamException("邮箱已经被占用"); } SysUser before = sysUserMapper.selectByPrimaryKey(param.getId()); Preconditions.checkNotNull(before, "待更新的用户不存在"); SysUser after = SysUser.builder().id(param.getId()) .username(param.getUsername()) .telephone(param.getTelephone()) .mail(param.getMail()) .deptId(param.getDeptId()) .stasus(param.getStstus()) .remark(param.getRemark()) .build(); after.setOperator(RequestHolder.getCurrentUser().getUsername()); // 获取当前线程的用户名 after.setOperateIp("127.0.0.1"); // TODO after.setOperateTime(new Date()); sysUserMapper.updateByPrimaryKeySelective(after); // 字段为空不更新 }
新增用户、更新用户 Controller
@Controller @RequestMapping("/sys/user") public class SysUserController { @Autowired private SysUserService sysUserService; @RequestMapping("/save") @ResponseBody public JsonData saveDept(UserParam param) { sysUserService.save(param); return JsonData.success(); } @RequestMapping("/update") @ResponseBody public JsonData updateDept(UserParam param) { sysUserService.update(param); return JsonData.success(); } }