update 请求响应对象 与 分页对象 结构修改 适配接口文档配置
| | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | |
| | | code = captcha.getCode(); |
| | | } |
| | | redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); |
| | | AjaxResult ajax = AjaxResult.success(); |
| | | Map<String,Object> ajax = new HashMap<>(); |
| | | ajax.put("uuid", uuid); |
| | | ajax.put("img", captcha.getImageBase64()); |
| | | return ajax; |
| | | return AjaxResult.success(ajax); |
| | | } |
| | | |
| | | private String getCodeResult(String capStr) { |
| | |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 通用请求处理 |
| | |
| | | // 上传并返回新文件名称 |
| | | String fileName = FileUploadUtils.upload(filePath, file); |
| | | String url = serverConfig.getUrl() + fileName; |
| | | AjaxResult ajax = AjaxResult.success(); |
| | | Map<String,Object> ajax = new HashMap<>(); |
| | | ajax.put("fileName", fileName); |
| | | ajax.put("url", url); |
| | | return ajax; |
| | | return AjaxResult.success(ajax); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 部门信息 |
| | |
| | | public AjaxResult roleDeptTreeselect(@PathVariable("roleId") Long roleId) |
| | | { |
| | | List<SysDept> depts = deptService.selectDeptList(new SysDept()); |
| | | AjaxResult ajax = AjaxResult.success(); |
| | | Map<String,Object> ajax = new HashMap<>(); |
| | | ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); |
| | | ajax.put("depts", deptService.buildDeptTreeSelect(depts)); |
| | | return ajax; |
| | | return AjaxResult.success(ajax); |
| | | } |
| | | |
| | | /** |
| | |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | |
| | | @PostMapping("/login") |
| | | public AjaxResult login(@RequestBody LoginBody loginBody) |
| | | { |
| | | AjaxResult ajax = AjaxResult.success(); |
| | | Map<String,Object> ajax = new HashMap<>(); |
| | | // 生成令牌 |
| | | String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), |
| | | loginBody.getUuid()); |
| | | ajax.put(Constants.TOKEN, token); |
| | | return ajax; |
| | | return AjaxResult.success(ajax); |
| | | } |
| | | |
| | | /** |
| | |
| | | Set<String> roles = permissionService.getRolePermission(user); |
| | | // 权限集合 |
| | | Set<String> permissions = permissionService.getMenuPermission(user); |
| | | AjaxResult ajax = AjaxResult.success(); |
| | | Map<String,Object> ajax = new HashMap<>(); |
| | | ajax.put("user", user); |
| | | ajax.put("roles", roles); |
| | | ajax.put("permissions", permissions); |
| | | return ajax; |
| | | return AjaxResult.success(ajax); |
| | | } |
| | | |
| | | /** |
| | |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 菜单信息 |
| | |
| | | { |
| | | LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); |
| | | List<SysMenu> menus = menuService.selectMenuList(loginUser.getUser().getUserId()); |
| | | AjaxResult ajax = AjaxResult.success(); |
| | | Map<String,Object> ajax = new HashMap<>(); |
| | | ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); |
| | | ajax.put("menus", menuService.buildMenuTreeSelect(menus)); |
| | | return ajax; |
| | | return AjaxResult.success(ajax); |
| | | } |
| | | |
| | | /** |
| | |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 个人信息 业务处理 |
| | |
| | | { |
| | | LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); |
| | | SysUser user = loginUser.getUser(); |
| | | AjaxResult ajax = AjaxResult.success(user); |
| | | Map<String,Object> ajax = new HashMap<>(); |
| | | ajax.put("user", user); |
| | | ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername())); |
| | | ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername())); |
| | | return ajax; |
| | | return AjaxResult.success(ajax); |
| | | } |
| | | |
| | | /** |
| | |
| | | String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file); |
| | | if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) |
| | | { |
| | | AjaxResult ajax = AjaxResult.success(); |
| | | Map<String,Object> ajax = new HashMap<>(); |
| | | ajax.put("imgUrl", avatar); |
| | | // 更新缓存用户头像 |
| | | loginUser.getUser().setAvatar(avatar); |
| | | tokenService.setLoginUser(loginUser); |
| | | return ajax; |
| | | return AjaxResult.success(ajax); |
| | | } |
| | | } |
| | | return AjaxResult.error("上传图片异常,请联系管理员"); |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @GetMapping(value = { "/", "/{userId}" }) |
| | | public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) |
| | | { |
| | | AjaxResult ajax = AjaxResult.success(); |
| | | Map<String, Object> ajax = new HashMap<>(); |
| | | List<SysRole> roles = roleService.selectRoleAll(); |
| | | ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); |
| | | ajax.put("posts", postService.selectPostAll()); |
| | | if (Validator.isNotNull(userId)) |
| | | { |
| | | ajax.put(AjaxResult.DATA_TAG, userService.selectUserById(userId)); |
| | | ajax.put("user", userService.selectUserById(userId)); |
| | | ajax.put("postIds", postService.selectPostListByUserId(userId)); |
| | | ajax.put("roleIds", roleService.selectRoleListByUserId(userId)); |
| | | } |
| | | return ajax; |
| | | return AjaxResult.success(ajax); |
| | | } |
| | | |
| | | /** |
| | |
| | | package com.ruoyi.common.core.domain; |
| | | |
| | | import cn.hutool.core.lang.Validator; |
| | | import cn.hutool.http.HttpStatus; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | |
| | | import java.util.HashMap; |
| | | import lombok.NoArgsConstructor; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | /** |
| | | * 操作消息提醒 |
| | | * |
| | | * @author ruoyi |
| | | * @author Lion Li |
| | | */ |
| | | public class AjaxResult<T> extends HashMap<String, Object> |
| | | { |
| | | @Data |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @Accessors(chain = true) |
| | | @ApiModel("请求响应对象") |
| | | public class AjaxResult<T> { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** 状态码 */ |
| | | public static final String CODE_TAG = "code"; |
| | | |
| | | /** 返回内容 */ |
| | | public static final String MSG_TAG = "msg"; |
| | | |
| | | /** 数据对象 */ |
| | | public static final String DATA_TAG = "data"; |
| | | |
| | | public Integer getCode(){ |
| | | return (Integer) super.get(CODE_TAG); |
| | | } |
| | | |
| | | public String getMsg(){ |
| | | return (String) super.get(MSG_TAG); |
| | | } |
| | | public T getData(){ |
| | | return (T) super.get(DATA_TAG); |
| | | } |
| | | /** |
| | | * 状态码 |
| | | */ |
| | | @ApiModelProperty("消息状态码") |
| | | private int code; |
| | | |
| | | /** |
| | | * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 |
| | | * 返回内容 |
| | | */ |
| | | public AjaxResult() |
| | | { |
| | | } |
| | | @ApiModelProperty("消息内容") |
| | | private String msg; |
| | | |
| | | /** |
| | | * 数据对象 |
| | | */ |
| | | @ApiModelProperty("数据对象") |
| | | private T data; |
| | | |
| | | /** |
| | | * 初始化一个新创建的 AjaxResult 对象 |
| | |
| | | * @param code 状态码 |
| | | * @param msg 返回内容 |
| | | */ |
| | | public AjaxResult(int code, String msg) |
| | | { |
| | | super.put(CODE_TAG, code); |
| | | super.put(MSG_TAG, msg); |
| | | } |
| | | |
| | | /** |
| | | * 初始化一个新创建的 AjaxResult 对象 |
| | | * |
| | | * @param code 状态码 |
| | | * @param msg 返回内容 |
| | | * @param data 数据对象 |
| | | */ |
| | | public AjaxResult(int code, String msg, T data) |
| | | { |
| | | super.put(CODE_TAG, code); |
| | | super.put(MSG_TAG, msg); |
| | | if (Validator.isNotNull(data)) |
| | | { |
| | | super.put(DATA_TAG, data); |
| | | } |
| | | public AjaxResult(int code, String msg) { |
| | | this.code = code; |
| | | this.msg = msg; |
| | | } |
| | | |
| | | /** |
| | |
| | | * |
| | | * @return 成功消息 |
| | | */ |
| | | public static AjaxResult<Void> success() |
| | | { |
| | | public static AjaxResult<Void> success() { |
| | | return AjaxResult.success("操作成功"); |
| | | } |
| | | |
| | |
| | | * |
| | | * @return 成功消息 |
| | | */ |
| | | public static <T> AjaxResult<T> success(T data) |
| | | { |
| | | public static <T> AjaxResult<T> success(T data) { |
| | | return AjaxResult.success("操作成功", data); |
| | | } |
| | | |
| | |
| | | * @param msg 返回内容 |
| | | * @return 成功消息 |
| | | */ |
| | | public static AjaxResult<Void> success(String msg) |
| | | { |
| | | public static AjaxResult<Void> success(String msg) { |
| | | return AjaxResult.success(msg, null); |
| | | } |
| | | |
| | |
| | | * @param data 数据对象 |
| | | * @return 成功消息 |
| | | */ |
| | | public static <T> AjaxResult<T> success(String msg, T data) |
| | | { |
| | | return new AjaxResult(HttpStatus.HTTP_OK, msg, data); |
| | | public static <T> AjaxResult<T> success(String msg, T data) { |
| | | return new AjaxResult<>(HttpStatus.HTTP_OK, msg, data); |
| | | } |
| | | |
| | | /** |
| | |
| | | * |
| | | * @return |
| | | */ |
| | | public static AjaxResult<Void> error() |
| | | { |
| | | public static AjaxResult<Void> error() { |
| | | return AjaxResult.error("操作失败"); |
| | | } |
| | | |
| | |
| | | * @param msg 返回内容 |
| | | * @return 警告消息 |
| | | */ |
| | | public static AjaxResult<Void> error(String msg) |
| | | { |
| | | public static AjaxResult<Void> error(String msg) { |
| | | return AjaxResult.error(msg, null); |
| | | } |
| | | |
| | |
| | | * @param data 数据对象 |
| | | * @return 警告消息 |
| | | */ |
| | | public static <T> AjaxResult<T> error(String msg, T data) |
| | | { |
| | | return new AjaxResult(HttpStatus.HTTP_INTERNAL_ERROR, msg, data); |
| | | public static <T> AjaxResult<T> error(String msg, T data) { |
| | | return new AjaxResult<>(HttpStatus.HTTP_INTERNAL_ERROR, msg, data); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param msg 返回内容 |
| | | * @return 警告消息 |
| | | */ |
| | | public static AjaxResult<Void> error(int code, String msg) |
| | | { |
| | | return new AjaxResult(code, msg, null); |
| | | public static AjaxResult<Void> error(int code, String msg) { |
| | | return new AjaxResult<>(code, msg, null); |
| | | } |
| | | |
| | | } |
| | |
| | | package com.ruoyi.common.core.page; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | import lombok.experimental.Accessors; |
| | |
| | | /** |
| | | * 表格分页数据对象 |
| | | * |
| | | * @author ruoyi |
| | | * @author Lion Li |
| | | */ |
| | | |
| | | @Data |
| | | @NoArgsConstructor |
| | | @Accessors(chain = true) |
| | | public class TableDataInfo<T> implements Serializable |
| | | { |
| | | @ApiModel("分页响应对象") |
| | | public class TableDataInfo<T> implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** 总记录数 */ |
| | | /** |
| | | * 总记录数 |
| | | */ |
| | | @ApiModelProperty("总记录数") |
| | | private long total; |
| | | |
| | | /** 列表数据 */ |
| | | /** |
| | | * 列表数据 |
| | | */ |
| | | @ApiModelProperty("列表数据") |
| | | private List<T> rows; |
| | | |
| | | /** 消息状态码 */ |
| | | /** |
| | | * 消息状态码 |
| | | */ |
| | | @ApiModelProperty("消息状态码") |
| | | private int code; |
| | | |
| | | /** 消息内容 */ |
| | | /** |
| | | * 消息内容 |
| | | */ |
| | | @ApiModelProperty("消息内容") |
| | | private String msg; |
| | | |
| | | /** |
| | |
| | | * @param list 列表数据 |
| | | * @param total 总记录数 |
| | | */ |
| | | public TableDataInfo(List<T> list, long total) |
| | | { |
| | | public TableDataInfo(List<T> list, long total) { |
| | | this.rows = list; |
| | | this.total = total; |
| | | } |
| | |
| | | // 上传成功回调
|
| | | handleUploadSuccess(res, file) {
|
| | | this.$message.success("上传成功");
|
| | | this.$emit("input", res.url);
|
| | | this.$emit("input", res.data.url); |
| | | },
|
| | | // 删除文件
|
| | | handleDelete(index) {
|
| | |
| | | this.$emit("input", "");
|
| | | },
|
| | | handleUploadSuccess(res) {
|
| | | this.$emit("input", res.url);
|
| | | this.$emit("input", res.data.url); |
| | | this.loading.close();
|
| | | },
|
| | | handleBeforeUpload() {
|
| | |
| | | const uuid = userInfo.uuid |
| | | return new Promise((resolve, reject) => { |
| | | login(username, password, code, uuid).then(res => { |
| | | setToken(res.token) |
| | | commit('SET_TOKEN', res.token) |
| | | setToken(res.data.token) |
| | | commit('SET_TOKEN', res.data.token) |
| | | resolve() |
| | | }).catch(error => { |
| | | reject(error) |
| | |
| | | GetInfo({ commit, state }) { |
| | | return new Promise((resolve, reject) => { |
| | | getInfo().then(res => { |
| | | const user = res.user |
| | | const user = res.data.user |
| | | const avatar = user.avatar == "" ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar; |
| | | if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 |
| | | commit('SET_ROLES', res.roles) |
| | | commit('SET_PERMISSIONS', res.permissions) |
| | | if (res.data.roles && res.data.roles.length > 0) { // 验证返回的roles是否是一个非空数组 |
| | | commit('SET_ROLES', res.data.roles) |
| | | commit('SET_PERMISSIONS', res.data.permissions) |
| | | } else { |
| | | commit('SET_ROLES', ['ROLE_DEFAULT']) |
| | | } |
| | |
| | | methods: { |
| | | getCode() { |
| | | getCodeImg().then(res => { |
| | | this.codeUrl = "data:image/gif;base64," + res.img; |
| | | this.loginForm.uuid = res.uuid; |
| | | this.codeUrl = "data:image/gif;base64," + res.data.img; |
| | | this.loginForm.uuid = res.data.uuid; |
| | | }); |
| | | }, |
| | | getCookie() { |
| | |
| | | /** 根据角色ID查询菜单树结构 */ |
| | | getRoleMenuTreeselect(roleId) { |
| | | return roleMenuTreeselect(roleId).then(response => { |
| | | this.menuOptions = response.menus; |
| | | this.menuOptions = response.data.menus; |
| | | return response; |
| | | }); |
| | | }, |
| | | /** 根据角色ID查询部门树结构 */ |
| | | getRoleDeptTreeselect(roleId) { |
| | | return roleDeptTreeselect(roleId).then(response => { |
| | | this.deptOptions = response.depts; |
| | | this.deptOptions = response.data.depts; |
| | | return response; |
| | | }); |
| | | }, |
| | |
| | | this.open = true; |
| | | this.$nextTick(() => { |
| | | roleMenu.then(res => { |
| | | let checkedKeys = res.checkedKeys |
| | | let checkedKeys = res.data.checkedKeys |
| | | checkedKeys.forEach((v) => { |
| | | this.$nextTick(()=>{ |
| | | this.$refs.menu.setChecked(v, true ,false); |
| | |
| | | this.openDataScope = true; |
| | | this.$nextTick(() => { |
| | | roleDeptTreeselect.then(res => { |
| | | this.$refs.dept.setCheckedKeys(res.checkedKeys); |
| | | this.$refs.dept.setCheckedKeys(res.data.checkedKeys); |
| | | }); |
| | | }); |
| | | this.title = "分配数据权限"; |
| | |
| | | this.reset(); |
| | | this.getTreeselect(); |
| | | getUser().then(response => { |
| | | this.postOptions = response.posts; |
| | | this.roleOptions = response.roles; |
| | | this.postOptions = response.data.posts; |
| | | this.roleOptions = response.data.roles; |
| | | this.open = true; |
| | | this.title = "添加用户"; |
| | | this.form.password = this.initPassword; |
| | |
| | | this.getTreeselect(); |
| | | const userId = row.userId || this.ids; |
| | | getUser(userId).then(response => { |
| | | this.form = response.data; |
| | | this.postOptions = response.posts; |
| | | this.roleOptions = response.roles; |
| | | this.form.postIds = response.postIds; |
| | | this.form.roleIds = response.roleIds; |
| | | this.form = response.data.user; |
| | | this.postOptions = response.data.posts; |
| | | this.roleOptions = response.data.roles; |
| | | this.form.postIds = response.data.postIds; |
| | | this.form.roleIds = response.data.roleIds; |
| | | this.open = true; |
| | | this.title = "修改用户"; |
| | | this.form.password = ""; |
| | |
| | | methods: { |
| | | getUser() { |
| | | getUserProfile().then(response => { |
| | | this.user = response.data; |
| | | this.roleGroup = response.roleGroup; |
| | | this.postGroup = response.postGroup; |
| | | this.user = response.data.user; |
| | | this.roleGroup = response.data.roleGroup; |
| | | this.postGroup = response.data.postGroup; |
| | | }); |
| | | } |
| | | } |
| | |
| | | formData.append("avatarfile", data); |
| | | uploadAvatar(formData).then(response => { |
| | | this.open = false; |
| | | this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl; |
| | | this.options.img = process.env.VUE_APP_BASE_API + response.data.imgUrl; |
| | | store.commit('SET_AVATAR', this.options.img); |
| | | this.msgSuccess("修改成功"); |
| | | this.visible = false; |