package com.xxl.job.admin.controller; import com.xxl.job.admin.controller.annotation.PermissionLimit; import com.xxl.job.admin.core.model.XxlJobGroup; import com.xxl.job.admin.core.model.XxlJobUser; import com.xxl.job.admin.core.util.I18nUtil; import com.xxl.job.admin.dao.XxlJobGroupDao; import com.xxl.job.admin.dao.XxlJobUserDao; import com.xxl.job.admin.service.LoginService; import com.xxl.job.core.biz.model.ReturnT; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.DigestUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author xuxueli 2019-05-04 16:39:50 */ @Controller @RequestMapping("/user") public class UserController { @Resource private XxlJobUserDao xxlJobUserDao; @Resource private XxlJobGroupDao xxlJobGroupDao; @RequestMapping @PermissionLimit(adminuser = true) public String index(Model model) { // 执行器列表 List groupList = xxlJobGroupDao.findAll(); model.addAttribute("groupList", groupList); return "user/user.index"; } @RequestMapping("/pageList") @ResponseBody @PermissionLimit(adminuser = true) public Map pageList(@RequestParam(required = false, defaultValue = "0") int start, @RequestParam(required = false, defaultValue = "10") int length, String username, int role) { // page list List list = xxlJobUserDao.pageList(start, length, username, role); int list_count = xxlJobUserDao.pageListCount(start, length, username, role); // filter if (list!=null && list.size()>0) { for (XxlJobUser item: list) { item.setPassword(null); } } // package result Map maps = new HashMap(); maps.put("recordsTotal", list_count); // 总记录数 maps.put("recordsFiltered", list_count); // 过滤后的总记录数 maps.put("data", list); // 分页列表 return maps; } @RequestMapping("/add") @ResponseBody @PermissionLimit(adminuser = true) public ReturnT add(XxlJobUser xxlJobUser) { // valid username if (!StringUtils.hasText(xxlJobUser.getUsername())) { return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("system_please_input")+I18nUtil.getString("user_username") ); } xxlJobUser.setUsername(xxlJobUser.getUsername().trim()); if (!(xxlJobUser.getUsername().length()>=4 && xxlJobUser.getUsername().length()<=20)) { return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" ); } // valid password if (!StringUtils.hasText(xxlJobUser.getPassword())) { return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("system_please_input")+I18nUtil.getString("user_password") ); } xxlJobUser.setPassword(xxlJobUser.getPassword().trim()); if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) { return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" ); } // md5 password xxlJobUser.setPassword(DigestUtils.md5DigestAsHex(xxlJobUser.getPassword().getBytes())); // check repeat XxlJobUser existUser = xxlJobUserDao.loadByUserName(xxlJobUser.getUsername()); if (existUser != null) { return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("user_username_repeat") ); } // write xxlJobUserDao.save(xxlJobUser); return ReturnT.SUCCESS; } @RequestMapping("/update") @ResponseBody @PermissionLimit(adminuser = true) public ReturnT update(HttpServletRequest request, XxlJobUser xxlJobUser) { // avoid opt login seft XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY); if (loginUser.getUsername().equals(xxlJobUser.getUsername())) { return new ReturnT(ReturnT.FAIL.getCode(), I18nUtil.getString("user_update_loginuser_limit")); } // valid password if (StringUtils.hasText(xxlJobUser.getPassword())) { xxlJobUser.setPassword(xxlJobUser.getPassword().trim()); if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) { return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" ); } // md5 password xxlJobUser.setPassword(DigestUtils.md5DigestAsHex(xxlJobUser.getPassword().getBytes())); } else { xxlJobUser.setPassword(null); } // write xxlJobUserDao.update(xxlJobUser); return ReturnT.SUCCESS; } @RequestMapping("/remove") @ResponseBody @PermissionLimit(adminuser = true) public ReturnT remove(HttpServletRequest request, int id) { // avoid opt login seft XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY); if (loginUser.getId() == id) { return new ReturnT(ReturnT.FAIL.getCode(), I18nUtil.getString("user_update_loginuser_limit")); } xxlJobUserDao.delete(id); return ReturnT.SUCCESS; } @RequestMapping("/updatePwd") @ResponseBody public ReturnT updatePwd(HttpServletRequest request, String password){ // valid password if (password==null || password.trim().length()==0){ return new ReturnT(ReturnT.FAIL.getCode(), "密码不可为空"); } password = password.trim(); if (!(password.length()>=4 && password.length()<=20)) { return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" ); } // md5 password String md5Password = DigestUtils.md5DigestAsHex(password.getBytes()); // update pwd XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY); // do write XxlJobUser existUser = xxlJobUserDao.loadByUserName(loginUser.getUsername()); existUser.setPassword(md5Password); xxlJobUserDao.update(existUser); return ReturnT.SUCCESS; } }