refactor(user):重构用户管理接口返回结构- 将 pageList 接口的返回类型从 Map 改为 Response<PageModel<XxlJobUser>>

- 更新分页参数名称 start/length为 offset/pagesize
- 使用 PageModel 封装分页数据和总记录数
- 统一接口返回类型为 Response<T> 替代 ReturnT<T>
- 前端 JS 适配新的分页数据结构
-优化空集合判断逻辑 isEmpty() 替代 size()>0
-保持原有业务逻辑和权限校验不变
3.3.0-release
xuxueli 1 month ago
parent 57c328c729
commit 2e4242e37a

@ -6,12 +6,12 @@ import com.xxl.job.admin.mapper.XxlJobUserMapper;
import com.xxl.job.admin.model.XxlJobGroup; import com.xxl.job.admin.model.XxlJobGroup;
import com.xxl.job.admin.model.XxlJobUser; import com.xxl.job.admin.model.XxlJobUser;
import com.xxl.job.admin.util.I18nUtil; import com.xxl.job.admin.util.I18nUtil;
import com.xxl.job.core.openapi.model.ReturnT;
import com.xxl.sso.core.annotation.XxlSso; import com.xxl.sso.core.annotation.XxlSso;
import com.xxl.sso.core.helper.XxlSsoHelper; import com.xxl.sso.core.helper.XxlSsoHelper;
import com.xxl.sso.core.model.LoginInfo; import com.xxl.sso.core.model.LoginInfo;
import com.xxl.tool.core.StringTool; import com.xxl.tool.core.StringTool;
import com.xxl.tool.encrypt.SHA256Tool; import com.xxl.tool.encrypt.SHA256Tool;
import com.xxl.tool.response.PageModel;
import com.xxl.tool.response.Response; import com.xxl.tool.response.Response;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@ -51,50 +51,50 @@ public class JobUserController {
@RequestMapping("/pageList") @RequestMapping("/pageList")
@ResponseBody @ResponseBody
@XxlSso(role = Consts.ADMIN_ROLE) @XxlSso(role = Consts.ADMIN_ROLE)
public Map<String, Object> pageList(@RequestParam(value = "start", required = false, defaultValue = "0") int start, public Response<PageModel<XxlJobUser>> pageList(@RequestParam(required = false, defaultValue = "0") int offset,
@RequestParam(value = "length", required = false, defaultValue = "10") int length, @RequestParam(required = false, defaultValue = "10") int pagesize,
@RequestParam("username") String username, @RequestParam String username,
@RequestParam("role") int role) { @RequestParam int role) {
// page list // page list
List<XxlJobUser> list = xxlJobUserMapper.pageList(start, length, username, role); List<XxlJobUser> list = xxlJobUserMapper.pageList(offset, pagesize, username, role);
int list_count = xxlJobUserMapper.pageListCount(start, length, username, role); int list_count = xxlJobUserMapper.pageListCount(offset, pagesize, username, role);
// filter // filter
if (list!=null && list.size()>0) { if (list!=null && !list.isEmpty()) {
for (XxlJobUser item: list) { for (XxlJobUser item: list) {
item.setPassword(null); item.setPassword(null);
} }
} }
// package result // package result
Map<String, Object> maps = new HashMap<String, Object>(); PageModel<XxlJobUser> pageModel = new PageModel<>();
maps.put("recordsTotal", list_count); // 总记录数 pageModel.setPageData(list);
maps.put("recordsFiltered", list_count); // 过滤后的总记录数 pageModel.setTotalCount(list_count);
maps.put("data", list); // 分页列表
return maps; return Response.ofSuccess(pageModel);
} }
@RequestMapping("/add") @RequestMapping("/add")
@ResponseBody @ResponseBody
@XxlSso(role = Consts.ADMIN_ROLE) @XxlSso(role = Consts.ADMIN_ROLE)
public ReturnT<String> add(XxlJobUser xxlJobUser) { public Response<String> add(XxlJobUser xxlJobUser) {
// valid username // valid username
if (StringTool.isBlank(xxlJobUser.getUsername())) { if (StringTool.isBlank(xxlJobUser.getUsername())) {
return ReturnT.ofFail(I18nUtil.getString("system_please_input")+I18nUtil.getString("user_username") ); return Response.ofFail(I18nUtil.getString("system_please_input")+I18nUtil.getString("user_username") );
} }
xxlJobUser.setUsername(xxlJobUser.getUsername().trim()); xxlJobUser.setUsername(xxlJobUser.getUsername().trim());
if (!(xxlJobUser.getUsername().length()>=4 && xxlJobUser.getUsername().length()<=20)) { if (!(xxlJobUser.getUsername().length()>=4 && xxlJobUser.getUsername().length()<=20)) {
return ReturnT.ofFail(I18nUtil.getString("system_lengh_limit")+"[4-20]" ); return Response.ofFail(I18nUtil.getString("system_lengh_limit")+"[4-20]" );
} }
// valid password // valid password
if (StringTool.isBlank(xxlJobUser.getPassword())) { if (StringTool.isBlank(xxlJobUser.getPassword())) {
return ReturnT.ofFail(I18nUtil.getString("system_please_input")+I18nUtil.getString("user_password") ); return Response.ofFail(I18nUtil.getString("system_please_input")+I18nUtil.getString("user_password") );
} }
xxlJobUser.setPassword(xxlJobUser.getPassword().trim()); xxlJobUser.setPassword(xxlJobUser.getPassword().trim());
if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) { if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) {
return ReturnT.ofFail(I18nUtil.getString("system_lengh_limit")+"[4-20]" ); return Response.ofFail(I18nUtil.getString("system_lengh_limit")+"[4-20]" );
} }
// md5 password // md5 password
String passwordHash = SHA256Tool.sha256(xxlJobUser.getPassword()); String passwordHash = SHA256Tool.sha256(xxlJobUser.getPassword());
@ -103,30 +103,30 @@ public class JobUserController {
// check repeat // check repeat
XxlJobUser existUser = xxlJobUserMapper.loadByUserName(xxlJobUser.getUsername()); XxlJobUser existUser = xxlJobUserMapper.loadByUserName(xxlJobUser.getUsername());
if (existUser != null) { if (existUser != null) {
return ReturnT.ofFail( I18nUtil.getString("user_username_repeat") ); return Response.ofFail( I18nUtil.getString("user_username_repeat") );
} }
// write // write
xxlJobUserMapper.save(xxlJobUser); xxlJobUserMapper.save(xxlJobUser);
return ReturnT.ofSuccess(); return Response.ofSuccess();
} }
@RequestMapping("/update") @RequestMapping("/update")
@ResponseBody @ResponseBody
@XxlSso(role = Consts.ADMIN_ROLE) @XxlSso(role = Consts.ADMIN_ROLE)
public ReturnT<String> update(HttpServletRequest request, XxlJobUser xxlJobUser) { public Response<String> update(HttpServletRequest request, XxlJobUser xxlJobUser) {
// avoid opt login seft // avoid opt login seft
Response<LoginInfo> loginInfoResponse = XxlSsoHelper.loginCheckWithAttr(request); Response<LoginInfo> loginInfoResponse = XxlSsoHelper.loginCheckWithAttr(request);
if (loginInfoResponse.getData().getUserName().equals(xxlJobUser.getUsername())) { if (loginInfoResponse.getData().getUserName().equals(xxlJobUser.getUsername())) {
return ReturnT.ofFail(I18nUtil.getString("user_update_loginuser_limit")); return Response.ofFail(I18nUtil.getString("user_update_loginuser_limit"));
} }
// valid password // valid password
if (StringTool.isNotBlank(xxlJobUser.getPassword())) { if (StringTool.isNotBlank(xxlJobUser.getPassword())) {
xxlJobUser.setPassword(xxlJobUser.getPassword().trim()); xxlJobUser.setPassword(xxlJobUser.getPassword().trim());
if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) { if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) {
return ReturnT.ofFail(I18nUtil.getString("system_lengh_limit")+"[4-20]" ); return Response.ofFail(I18nUtil.getString("system_lengh_limit")+"[4-20]" );
} }
// md5 password // md5 password
String passwordHash = SHA256Tool.sha256(xxlJobUser.getPassword()); String passwordHash = SHA256Tool.sha256(xxlJobUser.getPassword());
@ -137,40 +137,40 @@ public class JobUserController {
// write // write
xxlJobUserMapper.update(xxlJobUser); xxlJobUserMapper.update(xxlJobUser);
return ReturnT.ofSuccess(); return Response.ofSuccess();
} }
@RequestMapping("/remove") @RequestMapping("/remove")
@ResponseBody @ResponseBody
@XxlSso(role = Consts.ADMIN_ROLE) @XxlSso(role = Consts.ADMIN_ROLE)
public ReturnT<String> remove(HttpServletRequest request, @RequestParam("id") int id) { public Response<String> remove(HttpServletRequest request, @RequestParam("id") int id) {
// avoid opt login seft // avoid opt login seft
Response<LoginInfo> loginInfoResponse = XxlSsoHelper.loginCheckWithAttr(request); Response<LoginInfo> loginInfoResponse = XxlSsoHelper.loginCheckWithAttr(request);
if (Integer.parseInt(loginInfoResponse.getData().getUserId()) == id) { if (Integer.parseInt(loginInfoResponse.getData().getUserId()) == id) {
return ReturnT.ofFail(I18nUtil.getString("user_update_loginuser_limit")); return Response.ofFail(I18nUtil.getString("user_update_loginuser_limit"));
} }
xxlJobUserMapper.delete(id); xxlJobUserMapper.delete(id);
return ReturnT.ofSuccess(); return Response.ofSuccess();
} }
@RequestMapping("/updatePwd") @RequestMapping("/updatePwd")
@ResponseBody @ResponseBody
public ReturnT<String> updatePwd(HttpServletRequest request, public Response<String> updatePwd(HttpServletRequest request,
@RequestParam("password") String password, @RequestParam("password") String password,
@RequestParam("oldPassword") String oldPassword){ @RequestParam("oldPassword") String oldPassword){
// valid // valid
if (oldPassword==null || oldPassword.trim().isEmpty()){ if (oldPassword==null || oldPassword.trim().isEmpty()){
return ReturnT.ofFail(I18nUtil.getString("system_please_input") + I18nUtil.getString("change_pwd_field_oldpwd")); return Response.ofFail(I18nUtil.getString("system_please_input") + I18nUtil.getString("change_pwd_field_oldpwd"));
} }
if (password==null || password.trim().isEmpty()){ if (password==null || password.trim().isEmpty()){
return ReturnT.ofFail(I18nUtil.getString("system_please_input") + I18nUtil.getString("change_pwd_field_oldpwd")); return Response.ofFail(I18nUtil.getString("system_please_input") + I18nUtil.getString("change_pwd_field_oldpwd"));
} }
password = password.trim(); password = password.trim();
if (!(password.length()>=4 && password.length()<=20)) { if (!(password.length()>=4 && password.length()<=20)) {
return ReturnT.ofFail(I18nUtil.getString("system_lengh_limit")+"[4-20]" ); return Response.ofFail(I18nUtil.getString("system_lengh_limit")+"[4-20]" );
} }
// md5 password // md5 password
@ -181,14 +181,14 @@ public class JobUserController {
Response<LoginInfo> loginInfoResponse = XxlSsoHelper.loginCheckWithAttr(request); Response<LoginInfo> loginInfoResponse = XxlSsoHelper.loginCheckWithAttr(request);
XxlJobUser existUser = xxlJobUserMapper.loadByUserName(loginInfoResponse.getData().getUserName()); XxlJobUser existUser = xxlJobUserMapper.loadByUserName(loginInfoResponse.getData().getUserName());
if (!oldPasswordHash.equals(existUser.getPassword())) { if (!oldPasswordHash.equals(existUser.getPassword())) {
return ReturnT.ofFail(I18nUtil.getString("change_pwd_field_oldpwd") + I18nUtil.getString("system_unvalid")); return Response.ofFail(I18nUtil.getString("change_pwd_field_oldpwd") + I18nUtil.getString("system_unvalid"));
} }
// write new // write new
existUser.setPassword(passwordHash); existUser.setPassword(passwordHash);
xxlJobUserMapper.update(existUser); xxlJobUserMapper.update(existUser);
return ReturnT.ofSuccess(); return Response.ofSuccess();
} }
} }

@ -10,12 +10,20 @@ $(function() {
type:"post", type:"post",
data : function ( d ) { data : function ( d ) {
var obj = {}; var obj = {};
obj.offset = d.start;
obj.pagesize = d.length;
obj.username = $('#username').val(); obj.username = $('#username').val();
obj.role = $('#role').val(); obj.role = $('#role').val();
obj.start = d.start;
obj.length = d.length;
return obj; return obj;
} },
dataFilter: function (json ) {
var result = JSON.parse(json);
return JSON.stringify({
"recordsTotal": result.data.totalCount,
"recordsFiltered": result.data.totalCount,
"data": result.data.pageData
});
}
}, },
"searching": false, "searching": false,
"ordering": false, "ordering": false,

Loading…
Cancel
Save