screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
@@ -41,7 +41,10 @@ DICTTYPE_EXIST(-27,"字典类型已经存在"), DICTDATA_KEY_EXIST(-28,"字典数据Key已经存在"), DICTDATA_KEY_NOT_EXIST(-29,"字典数据Key不存在"), USERNAME_INVALID(-30,"用户名称无效") USERNAME_INVALID(-30,"用户名称无效"), USER_NOT_EXIST(-31,"用户不存在"), USER_EXIST(-32,"用户已经存在"), ORGANIZATION_USER_EXIST(-33,"组织已经存在用户") ; private final Integer code; private final String msg; screen-manage/src/main/java/com/moral/api/controller/MenuController.java
@@ -1,13 +1,13 @@ package com.moral.api.controller; import com.moral.api.entity.Menu; import com.moral.api.pojo.dto.menu.MenuDTO; import com.moral.api.pojo.dto.menu.MenuQueryNamesDTO; import com.moral.api.pojo.dto.menu.MenuQueryDTO; import com.moral.api.pojo.form.menu.MenuDeleteForm; import com.moral.api.pojo.form.menu.MenuInsertForm; import com.moral.api.pojo.vo.menu.MenuDeleteVO; import com.moral.api.pojo.vo.menu.MenuInsertVO; import com.moral.api.pojo.vo.menu.MenuQueryVO; import com.moral.api.pojo.form.menu.MenuQueryNamesForm; import com.moral.api.pojo.form.menu.MenuUpdateForm; import com.moral.api.pojo.vo.menu.*; import com.moral.api.service.MenuService; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; @@ -15,10 +15,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @ClassName MenuController @@ -33,75 +29,9 @@ @RestController @RequestMapping("/menu") public class MenuController { @Autowired MenuService menuService; @GetMapping("queryMock") public ResultMessage queryMock() { MenuQueryDTO dto = new MenuQueryDTO(); Menu menu1 = new Menu(); Menu menu11 = new Menu(); Menu menu111 = new Menu(); Menu menu12 = new Menu(); Menu menu121 = new Menu(); Menu menu13 = new Menu(); Menu menu2 = new Menu(); Menu menu21 = new Menu(); Menu menu211 = new Menu(); Menu menu22 = new Menu(); Menu menu23 = new Menu(); Menu menu24 = new Menu(); Menu menu241 = new Menu(); Menu menu2411 = new Menu(); menu1.setName("menu 1"); menu1.setId(1); menu11.setName("menu 1-1"); menu11.setId(2); menu111.setName("menu 1-1-1"); menu111.setId(3); menu12.setName("menu 1-2"); menu12.setId(4); menu121.setName("menu 1-2-1"); menu121.setId(5); menu13.setName("menu 1-3"); menu13.setId(6); menu2.setName("menu 2"); menu2.setId(7); menu21.setName("menu 2-1"); menu21.setId(8); menu211.setName("menu 2-1-1"); menu211.setId(9); menu22.setName("menu 2-2"); menu22.setId(10); menu23.setName("menu 2-3"); menu23.setId(11); menu24.setName("menu 2-4"); menu24.setId(12); menu241.setName("menu 2-4-1"); menu241.setId(13); menu2411.setName("menu 2-4-1-1"); menu2411.setId(14); menu12.setChildren(Arrays.asList(menu121)); menu11.setChildren(Arrays.asList(menu111)); menu1.setChildren(Arrays.asList(menu11, menu12, menu13)); menu241.setChildren(Arrays.asList(menu2411)); menu24.setChildren(Arrays.asList(menu241)); menu21.setChildren(Arrays.asList(menu211)); menu2.setChildren(Arrays.asList(menu21, menu22, menu23, menu24)); MenuDTO dto1 = new MenuDTO(); MenuDTO dto2 = new MenuDTO(); dto1.setMenu(menu1); dto2.setMenu(menu2); dto.setDtos(Arrays.asList(dto1, dto2)); dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); MenuQueryVO vo = MenuQueryVO.convert(dto); return new ResultMessage(dto.getCode(), dto.getMsg(), vo); } @GetMapping("query") public ResultMessage query() { @@ -110,6 +40,17 @@ //转换为前端所需参数 MenuQueryVO vo = MenuQueryVO.convert(dto); return new ResultMessage(dto.getCode(), dto.getMsg(), vo); } @GetMapping("queryNames") public ResultMessage queryNames(MenuQueryNamesForm form){ //处理查询业务 MenuQueryNamesDTO dto = menuService.queryNames(form); //转换前端所需参数 MenuQueryNamesVO vo = MenuQueryNamesVO.convert(dto); return new ResultMessage(dto.getCode(), dto.getMsg(), vo); } @@ -146,4 +87,20 @@ return new ResultMessage(dto.getCode(), dto.getMsg(), vo); } @PostMapping("update") public ResultMessage update(@RequestBody MenuUpdateForm form){ //判断是否缺少参数 if (!form.valid()) return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); //处理更新业务 MenuDTO dto = menuService.updateMenu(form); //转换前端所需参数 MenuUpdateVO vo = MenuUpdateVO.convert(dto); return new ResultMessage(dto.getCode(), dto.getMsg(), vo); } } screen-manage/src/main/java/com/moral/api/controller/OrganizationController.java
@@ -2,12 +2,10 @@ import com.moral.api.pojo.dto.organization.OrganizationDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryNameDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryNamesDTO; import com.moral.api.pojo.form.organization.*; import com.moral.api.pojo.vo.organization.*; import com.moral.api.service.OrganizationService; import com.moral.api.util.LogUtils; import com.moral.constant.Constants; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import io.swagger.annotations.Api; @@ -112,13 +110,13 @@ } @GetMapping("queryNames") public ResultMessage queryNames(OrganizationQueryNameForm form){ public ResultMessage queryNames(OrganizationQueryNamesForm form){ //处理查询业务 OrganizationQueryNameDTO dto = organizationService.queryOrganizationNames(form); OrganizationQueryNamesDTO dto = organizationService.queryNames(form); //转换前端所需参数 OrganizationQueryNamesVO vo = OrganizationQueryNamesVO.convert(dto); OrganizationQueryAllNamesVO vo = OrganizationQueryAllNamesVO.convert(dto); return new ResultMessage(dto.getCode(),dto.getMsg(),vo); } screen-manage/src/main/java/com/moral/api/controller/UserController.java
@@ -1,11 +1,19 @@ package com.moral.api.controller; import com.moral.api.pojo.dto.user.UserDTO; import com.moral.api.pojo.dto.user.UserQueryDTO; import com.moral.api.pojo.form.user.UserDeleteForm; import com.moral.api.pojo.form.user.UserInsertForm; import com.moral.api.pojo.form.user.UserQueryForm; import com.moral.api.pojo.form.user.UserUpdateForm; import com.moral.api.pojo.vo.user.UserQueryVO; import com.moral.api.service.UserService; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; /** * @ClassName UserController @@ -19,9 +27,76 @@ @RestController @RequestMapping("/user") public class UserController { @Autowired UserService userService; @GetMapping("query") public ResultMessage query(UserQueryForm form) { //判断是否缺少参数 if (!form.valid()) return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); //处理查询业务 UserQueryDTO dto = userService.queryUsers(form); //转换前端所需参数 UserQueryVO vo = UserQueryVO.convert(dto); return new ResultMessage(dto.getCode(), dto.getMsg(), vo); } @PostMapping("update") public ResultMessage update(@RequestBody UserUpdateForm form){ //判断是否缺少参数 if (!form.valid()) return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); //判断参数是否有效 UserDTO conditionDTO = form.paramValid(); if (conditionDTO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) { return new ResultMessage(conditionDTO.getCode(), conditionDTO.getMsg(), null); } //处理更新业务 UserDTO dto = userService.updateUser(form); return new ResultMessage(dto.getCode(), dto.getMsg(), null); } @PostMapping("delete") public ResultMessage delete(@RequestBody UserDeleteForm form){ //判断是否缺少参数 if (!form.valid()) return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); //处理删除业务 UserDTO dto = userService.deleteUser(form); return new ResultMessage(dto.getCode(), dto.getMsg(), null); } @PostMapping("insert") public ResultMessage insert(){ return null; public ResultMessage insert(@RequestBody UserInsertForm form){ //判断是否缺少参数 if (!form.valid()) return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); //判断参数是否有效 UserDTO conditionDTO = form.paramValid(); if (conditionDTO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) { return new ResultMessage(conditionDTO.getCode(), conditionDTO.getMsg(), null); } //处理增加业务 UserDTO dto = userService.insertUser(form); return new ResultMessage(dto.getCode(), dto.getMsg(), null); } } screen-manage/src/main/java/com/moral/api/entity/User.java
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; import lombok.Data; import lombok.EqualsAndHashCode; @@ -71,17 +73,17 @@ /** * 创建时间 */ private LocalDateTime createTime; private Date createTime; /** * 更新时间 */ private LocalDateTime updateTime; private Date updateTime; /** * 过期时间 */ private LocalDateTime expireTime; private Date expireTime; /** * 是否删除 screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryNamesDTO.java
New file @@ -0,0 +1,22 @@ package com.moral.api.pojo.dto.menu; import com.moral.api.entity.Menu; import lombok.Data; import java.util.List; /** * @ClassName MenuQueryByNameDTO * @Description TODO * @Author 陈凯裕 * @Date 2021/4/28 10:49 * @Version TODO **/ @Data public class MenuQueryNamesDTO { private Integer code; private String msg; List<Menu> Menus; } screen-manage/src/main/java/com/moral/api/pojo/dto/organization/OrganizationQueryNamesDTO.java
File was renamed from screen-manage/src/main/java/com/moral/api/pojo/dto/organization/OrganizationQueryNameDTO.java @@ -13,7 +13,7 @@ * @Version TODO **/ @Data public class OrganizationQueryNameDTO { public class OrganizationQueryNamesDTO { private Integer code; screen-manage/src/main/java/com/moral/api/pojo/dto/user/UserDTO.java
New file @@ -0,0 +1,25 @@ package com.moral.api.pojo.dto.user; import com.moral.api.entity.Group; import com.moral.api.entity.Organization; import com.moral.api.entity.User; import lombok.Data; /** * @ClassName UserDTO * @Description TODO * @Author 陈凯裕 * @Date 2021/4/28 14:53 * @Version TODO **/ @Data public class UserDTO { private Integer code; private String msg; private User user; private Organization organization; } screen-manage/src/main/java/com/moral/api/pojo/dto/user/UserQueryDTO.java
New file @@ -0,0 +1,30 @@ package com.moral.api.pojo.dto.user; import lombok.Data; import java.util.List; /** * @ClassName UserQueryDTO * @Description TODO * @Author 陈凯裕 * @Date 2021/4/28 14:53 * @Version TODO **/ @Data public class UserQueryDTO { private Integer code; private String msg; private long pages; private long total; private long current; private long size; private List<UserDTO> userDTOS; } screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuQueryNamesForm.java
New file @@ -0,0 +1,25 @@ package com.moral.api.pojo.form.menu; import lombok.Data; /** * @ClassName MenuQueryNameForm * @Description TODO * @Author 陈凯裕 * @Date 2021/4/28 10:25 * @Version TODO **/ @Data public class MenuQueryNamesForm { private Integer id; private String name; public boolean valid(){ if(id==null||id==0){ return false; } return true; } } screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuUpdateForm.java
New file @@ -0,0 +1,49 @@ package com.moral.api.pojo.form.menu; import com.moral.api.entity.Menu; import lombok.Data; import org.springframework.util.ObjectUtils; /** * @ClassName MenuUpdateForm * @Description TODO * @Author 陈凯裕 * @Date 2021/4/27 11:35 * @Version TODO **/ @Data public class MenuUpdateForm { private Integer id; private String name; private String url; private Integer parentId; private Integer order; public boolean valid(){ if(ObjectUtils.isEmpty(id)) return false; if( ObjectUtils.isEmpty(name)&& ObjectUtils.isEmpty(url)&& ObjectUtils.isEmpty(parentId)&& ObjectUtils.isEmpty(order) ) return false; return true; } public Menu formConvertEntity(){ Menu menu = new Menu(); menu.setId(id); menu.setName(name); menu.setUrl(url); menu.setParentId(parentId); menu.setOrder(order); return menu; } } screen-manage/src/main/java/com/moral/api/pojo/form/organization/OrganizationQueryNameForm.java
File was deleted screen-manage/src/main/java/com/moral/api/pojo/form/organization/OrganizationQueryNamesForm.java
New file @@ -0,0 +1,20 @@ package com.moral.api.pojo.form.organization; import lombok.Data; /** * @ClassName OrganizationQueryNamesForm * @Description TODO * @Author 陈凯裕 * @Date 2021/5/6 13:18 * @Version TODO **/ @Data public class OrganizationQueryNamesForm { private Integer id; private Integer adminUserId; } screen-manage/src/main/java/com/moral/api/pojo/form/user/UserDeleteForm.java
New file @@ -0,0 +1,22 @@ package com.moral.api.pojo.form.user; import lombok.Data; /** * @ClassName UserDeleteForm * @Description TODO * @Author 陈凯裕 * @Date 2021/5/6 9:31 * @Version TODO **/ @Data public class UserDeleteForm { private Integer id; public boolean valid(){ if(id==null||id==0){ return false; } return true; } } screen-manage/src/main/java/com/moral/api/pojo/form/user/UserInsertForm.java
@@ -1,14 +1,112 @@ package com.moral.api.pojo.form.user; import com.fasterxml.jackson.annotation.JsonFormat; import com.moral.api.entity.User; import com.moral.api.pojo.dto.user.UserDTO; import com.moral.constant.ResponseCodeEnum; import com.moral.util.AESUtils; import com.moral.util.MD5Utils; import com.moral.util.RegexUtils; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.util.ObjectUtils; import java.util.Date; /** * @ClassName UserInsertForm * @Description TODO * @Author 陈凯裕 * @Date 2021/3/22 14:05 * @Date 2021/5/6 10:35 * @Version TODO **/ @Data public class UserInsertForm { private String account; private String password; private String userName; private Integer organizationId; private String email; private String mobile; private String wechat; @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private Date expireTime; public boolean valid() { if ( ObjectUtils.isEmpty(account) || ObjectUtils.isEmpty(password) || ObjectUtils.isEmpty(userName) || ObjectUtils.isEmpty(organizationId) || ObjectUtils.isEmpty(expireTime) ) return false; return true; } public UserDTO paramValid() { UserDTO dto = new UserDTO(); //判断账号是否符合条件 if (!RegexUtils.checkAccount(account)) { dto.setCode(ResponseCodeEnum.ACCOUNT_INVALID.getCode()); dto.setMsg(ResponseCodeEnum.ACCOUNT_INVALID.getMsg()); return dto; } //判断用户名是否符合条件 if(!RegexUtils.checkChinese(userName)||userName.contains(" ")){ dto.setCode(ResponseCodeEnum.USERNAME_INVALID.getCode()); dto.setMsg(ResponseCodeEnum.USERNAME_INVALID.getMsg()); return dto; } //判断密码是否符合条件 if (!RegexUtils.checkPassword(AESUtils.decrypt(password))) { dto.setCode(ResponseCodeEnum.PASSWORD_INVALID.getCode()); dto.setMsg(ResponseCodeEnum.PASSWORD_INVALID.getMsg()); return dto; } //判断手机号是否符合条件 if (!ObjectUtils.isEmpty(mobile)) { if (!RegexUtils.checkMobile(mobile)) { dto.setCode(ResponseCodeEnum.MOBILE_INVALID.getCode()); dto.setMsg(ResponseCodeEnum.MOBILE_INVALID.getMsg()); return dto; } } //判断邮箱是否符合条件 if (!ObjectUtils.isEmpty(email)) { if (!RegexUtils.checkEmail(email)) { dto.setCode(ResponseCodeEnum.EMAIL_INVALID.getCode()); dto.setMsg(ResponseCodeEnum.EMAIL_INVALID.getMsg()); return dto; } } dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } public User formConvertEntity() { User user = new User(); user.setAccount(account); user.setPassword(MD5Utils.saltMD5(AESUtils.decrypt(password))); user.setUserName(userName); user.setOrganizationId(organizationId); user.setEmail(email); user.setMobile(mobile); user.setWechat(wechat); user.setExpireTime(expireTime); user.setIsAdmin(true); return user; } } screen-manage/src/main/java/com/moral/api/pojo/form/user/UserQueryForm.java
New file @@ -0,0 +1,63 @@ package com.moral.api.pojo.form.user; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.util.ObjectUtils; import java.util.Date; /** * @ClassName UserQueryForm * @Description TODO * @Author 陈凯裕 * @Date 2021/4/28 10:09 * @Version TODO **/ @Data public class UserQueryForm { private Integer page; private Integer size; private Integer organizationId; private String email; private String mobile; private String wechat; private Integer isDelete; @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private Date createStartTime; @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private Date createEndTime; @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private Date expireStartTime; @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private Date expireEndTime; private String order; private String orderType; public boolean valid(){ if ( ObjectUtils.isEmpty(page)|| ObjectUtils.isEmpty(size) ) return false; return true; } } screen-manage/src/main/java/com/moral/api/pojo/form/user/UserUpdateForm.java
New file @@ -0,0 +1,97 @@ package com.moral.api.pojo.form.user; import com.fasterxml.jackson.annotation.JsonFormat; import com.moral.api.entity.User; import com.moral.api.pojo.dto.user.UserDTO; import com.moral.constant.ResponseCodeEnum; import com.moral.util.AESUtils; import com.moral.util.DateUtils; import com.moral.util.MD5Utils; import com.moral.util.RegexUtils; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.util.ObjectUtils; import java.util.Date; /** * @ClassName UserUpdateForm * @Description TODO * @Author 陈凯裕 * @Date 2021/4/29 13:26 * @Version TODO **/ @Data public class UserUpdateForm { private Integer id; private String password; private String email; private String mobile; private String wechat; @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private Date expireTime; public boolean valid(){ if(ObjectUtils.isEmpty(id)) return false; if( ObjectUtils.isEmpty(password)&& ObjectUtils.isEmpty(email)&& ObjectUtils.isEmpty(mobile)&& ObjectUtils.isEmpty(wechat)&& ObjectUtils.isEmpty(expireTime) ) return false; return true; } public User formConvertEntity(){ User user = new User(); user.setId(id); if (!ObjectUtils.isEmpty(password)) user.setPassword(MD5Utils.saltMD5(AESUtils.decrypt(password))); user.setEmail(email); user.setMobile(mobile); user.setWechat(wechat); user.setExpireTime(DateUtils.getDateOfDay(expireTime,1)); return user; } public UserDTO paramValid() { UserDTO dto = new UserDTO(); //判断手机号是否符合条件 if (!ObjectUtils.isEmpty(mobile)) { if (!RegexUtils.checkMobile(mobile)) { dto.setCode(ResponseCodeEnum.MOBILE_INVALID.getCode()); dto.setMsg(ResponseCodeEnum.MOBILE_INVALID.getMsg()); return dto; } } //判断邮箱是否符合条件 if (!ObjectUtils.isEmpty(email)) { if (!RegexUtils.checkEmail(email)) { dto.setCode(ResponseCodeEnum.EMAIL_INVALID.getCode()); dto.setMsg(ResponseCodeEnum.EMAIL_INVALID.getMsg()); return dto; } } //判断密码是否符合规则 if (!ObjectUtils.isEmpty(password)) { if (!RegexUtils.checkPassword(AESUtils.decrypt(password))) { dto.setCode(ResponseCodeEnum.PASSWORD_INVALID.getCode()); dto.setMsg(ResponseCodeEnum.PASSWORD_INVALID.getMsg()); return dto; } } dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } } screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountUpdateVO.java
@@ -49,4 +49,5 @@ return vo; } } screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryNamesVO.java
New file @@ -0,0 +1,51 @@ package com.moral.api.pojo.vo.menu; import com.fasterxml.jackson.annotation.JsonInclude; import com.moral.api.entity.Menu; import com.moral.api.pojo.dto.menu.MenuQueryNamesDTO; import com.moral.constant.ResponseCodeEnum; import lombok.Data; import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.List; /** * @ClassName MenuQueryAllNamesVO * @Description TODO * @Author 陈凯裕 * @Date 2021/4/28 11:08 * @Version TODO **/ @Data @JsonInclude(JsonInclude.Include.NON_EMPTY) public class MenuQueryNamesVO { List<MenuVO> menuVOs; public static MenuQueryNamesVO convert(MenuQueryNamesDTO dto){ if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) return null; MenuQueryNamesVO vo = new MenuQueryNamesVO(); List<Menu> menus = dto.getMenus(); List<MenuVO> vos = new ArrayList<>(); if(!ObjectUtils.isEmpty(menus)){ for (Menu menu : menus) { MenuVO menuVO = convertToQueryPage(menu); vos.add(menuVO); } } vo.setMenuVOs(vos); return vo; } private static MenuVO convertToQueryPage(Menu menu){ MenuVO vo = new MenuVO(); vo.setId(menu.getId()); vo.setName(menu.getName()); return vo; } } screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuUpdateVO.java
New file @@ -0,0 +1,27 @@ package com.moral.api.pojo.vo.menu; import com.moral.api.entity.Menu; import com.moral.api.pojo.dto.menu.MenuDTO; import com.moral.constant.ResponseCodeEnum; /** * @ClassName MenuUpdateVO * @Description TODO * @Author 陈凯裕 * @Date 2021/4/27 11:59 * @Version TODO **/ public class MenuUpdateVO extends MenuVO { public static MenuUpdateVO convert(MenuDTO dto) { if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) return null; MenuUpdateVO vo = new MenuUpdateVO(); Menu menu = dto.getMenu(); vo.setId(menu.getId()); vo.setParentId(menu.getParentId()); vo.setOrder(menu.getOrder()); vo.setUrl(menu.getUrl()); vo.setName(menu.getName()); return vo; } } screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationQueryAllNamesVO.java
File was renamed from screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationQueryNamesVO.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.moral.api.entity.Organization; import com.moral.api.pojo.dto.organization.OrganizationQueryNameDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryNamesDTO; import com.moral.constant.ResponseCodeEnum; import lombok.Data; import org.springframework.util.ObjectUtils; @@ -19,15 +19,15 @@ **/ @Data @JsonInclude(JsonInclude.Include.NON_EMPTY) public class OrganizationQueryNamesVO { public class OrganizationQueryAllNamesVO { private List<OrganizationVO> organizationVOs; public static OrganizationQueryNamesVO convert(OrganizationQueryNameDTO dto){ public static OrganizationQueryAllNamesVO convert(OrganizationQueryNamesDTO dto){ if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) return null; OrganizationQueryNamesVO vo = new OrganizationQueryNamesVO(); OrganizationQueryAllNamesVO vo = new OrganizationQueryAllNamesVO(); List<OrganizationVO> vos = new ArrayList<>(); List<Organization> organizations = dto.getOrganizations(); screen-manage/src/main/java/com/moral/api/pojo/vo/user/UserQueryVO.java
New file @@ -0,0 +1,74 @@ package com.moral.api.pojo.vo.user; import com.fasterxml.jackson.annotation.JsonInclude; import com.moral.api.entity.Organization; import com.moral.api.entity.User; import com.moral.api.pojo.dto.user.UserDTO; import com.moral.api.pojo.dto.user.UserQueryDTO; import com.moral.constant.ResponseCodeEnum; import com.moral.util.DateUtils; import lombok.Data; import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.List; /** * @ClassName UserQueryVO * @Description TODO * @Author 陈凯裕 * @Date 2021/4/28 14:58 * @Version TODO **/ @Data @JsonInclude(JsonInclude.Include.NON_EMPTY) public class UserQueryVO { private long pages; private long total; private long current; private long size; private List<UserVO> userVOs; public static UserQueryVO convert(UserQueryDTO dto) { if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) return null; UserQueryVO vo = new UserQueryVO(); long pages = dto.getPages(); long total = dto.getTotal(); long current = dto.getCurrent(); long size = dto.getSize(); List<UserDTO> dtos = dto.getUserDTOS(); List<UserVO> userVOs = new ArrayList<>(); if(!ObjectUtils.isEmpty(dtos)){ for (UserDTO userDTO : dtos) { UserVO userVO = convertToQueryPage(userDTO); userVOs.add(userVO); } } vo.setPages(pages); vo.setTotal(total); vo.setCurrent(current); vo.setSize(size); vo.setUserVOs(userVOs); return vo; } private static UserVO convertToQueryPage(UserDTO dto){ UserVO vo = new UserVO(); User user = dto.getUser(); Organization organization = dto.getOrganization(); vo.setAccount(user.getAccount()); vo.setOrganizationName(organization.getName()); vo.setId(user.getId()); vo.setCreateTime(DateUtils.dateToDateString(user.getCreateTime(),"yyyy-MM-dd")); vo.setExpireTime(DateUtils.dateToDateString(user.getExpireTime(),"yyyy-MM-dd")); vo.setEmail(user.getEmail()); vo.setMobile(user.getMobile()); return vo; } } screen-manage/src/main/java/com/moral/api/pojo/vo/user/UserUpdateVO.java
New file @@ -0,0 +1,24 @@ package com.moral.api.pojo.vo.user; import com.moral.api.entity.Organization; import com.moral.api.entity.User; import com.moral.api.pojo.dto.user.UserDTO; import com.moral.constant.ResponseCodeEnum; /** * @ClassName UserUpdateVO * @Description TODO * @Author 陈凯裕 * @Date 2021/4/29 17:15 * @Version TODO **/ public class UserUpdateVO extends UserVO{ public UserUpdateVO convert(UserDTO dto){ if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) return null; UserUpdateVO vo = new UserUpdateVO(); User user = dto.getUser(); return null; } } screen-manage/src/main/java/com/moral/api/pojo/vo/user/UserVO.java
New file @@ -0,0 +1,30 @@ package com.moral.api.pojo.vo.user; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; /** * @ClassName UserVO * @Description TODO * @Author 陈凯裕 * @Date 2021/4/28 14:58 * @Version TODO **/ @Data @JsonInclude(JsonInclude.Include.NON_EMPTY) public class UserVO { private Integer id; private String account; private String organizationName; private String email; private String mobile; private String createTime; private String expireTime; } screen-manage/src/main/java/com/moral/api/service/MenuService.java
@@ -3,9 +3,12 @@ import com.moral.api.entity.Menu; import com.baomidou.mybatisplus.extension.service.IService; import com.moral.api.pojo.dto.menu.MenuDTO; import com.moral.api.pojo.dto.menu.MenuQueryNamesDTO; import com.moral.api.pojo.dto.menu.MenuQueryDTO; import com.moral.api.pojo.form.menu.MenuDeleteForm; import com.moral.api.pojo.form.menu.MenuInsertForm; import com.moral.api.pojo.form.menu.MenuQueryNamesForm; import com.moral.api.pojo.form.menu.MenuUpdateForm; /** * <p> @@ -17,7 +20,7 @@ */ public interface MenuService extends IService<Menu> { /** * @Description: 查询所有菜单 * @Description: 查询父子结构菜单 * @Param: [] * @return: com.moral.api.pojo.dto.menu.MenuQueryDTO * @Author: 陈凯裕 @@ -42,4 +45,23 @@ * @Date: 2021/4/26 */ MenuDTO deleteMenu(MenuDeleteForm form); /** * @Description: 更新菜单 * @Param: [from] * @return: com.moral.api.pojo.dto.menu.MenuDTO * @Author: 陈凯裕 * @Date: 2021/4/27 */ MenuDTO updateMenu(MenuUpdateForm form); /** * @Description: 模糊查询菜单名称和id,不包括传来id,以及其所有子菜单,以及上一级父菜单 * @Param: [MenuQueryNamesForm form] * @return: com.moral.api.pojo.dto.menu.MenuQueryByNameDTO * @Author: 陈凯裕 * @Date: 2021/4/28 */ MenuQueryNamesDTO queryNames(MenuQueryNamesForm form); } screen-manage/src/main/java/com/moral/api/service/OrganizationService.java
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.moral.api.pojo.dto.organization.OrganizationDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryNameDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryNamesDTO; import com.moral.api.pojo.form.organization.*; /** @@ -53,14 +53,15 @@ OrganizationQueryDTO queryOrganization(OrganizationQueryForm organizationQueryForm); /** * @Description: 查询所有组织名称和Id,不分页 * @Param: [organizationQueryNameForm] * @return: com.moral.api.pojo.dto.organization.OrganizationQueryNameDTO * @Description: 根据条件查询组织名称和id * @Param: [form] * @return: com.moral.api.pojo.dto.organization.OrganizationQueryNamesDTO * @Author: 陈凯裕 * @Date: 2021/4/13 * @Date: 2021/5/6 */ OrganizationQueryNameDTO queryOrganizationNames(OrganizationQueryNameForm organizationQueryNameForm); OrganizationQueryNamesDTO queryNames(OrganizationQueryNamesForm form); } screen-manage/src/main/java/com/moral/api/service/UserService.java
@@ -2,7 +2,12 @@ import com.moral.api.entity.User; import com.baomidou.mybatisplus.extension.service.IService; import com.moral.api.pojo.dto.user.UserDTO; import com.moral.api.pojo.dto.user.UserQueryDTO; import com.moral.api.pojo.form.user.UserDeleteForm; import com.moral.api.pojo.form.user.UserInsertForm; import com.moral.api.pojo.form.user.UserQueryForm; import com.moral.api.pojo.form.user.UserUpdateForm; /** * <p> @@ -14,4 +19,12 @@ */ public interface UserService extends IService<User> { UserQueryDTO queryUsers(UserQueryForm form); UserDTO updateUser(UserUpdateForm form); UserDTO deleteUser(UserDeleteForm form); UserDTO insertUser(UserInsertForm form); } screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
@@ -223,7 +223,7 @@ StringBuilder content = new StringBuilder(); content.append("添加了用户:").append(manageAccount.getUserName() + ";") .append("account:" + manageAccount.getAccount() + ";"); logUtils.saveOperationForManage(request, content.toString(),Constants.INSERT_OPERATE_TYPE); logUtils.saveOperationForManage(request, content.toString(), Constants.INSERT_OPERATE_TYPE); return accountDTO; } @@ -240,7 +240,7 @@ AccountQueryDTO accountQueryDTO = new AccountQueryDTO(); //取参 Integer pageCount = accountQueryForm.getPage(); Integer page = accountQueryForm.getPage(); Integer size = accountQueryForm.getSize(); String userName = accountQueryForm.getUserName(); String email = accountQueryForm.getEmail(); @@ -250,10 +250,10 @@ String order = accountQueryForm.getOrder(); String orderType = accountQueryForm.getOrderType(); Date createStartTime = accountQueryForm.getCreateStartTime(); Date createEndTime = DateUtils.getDateOfDay(accountQueryForm.getCreateEndTime(), 1); Date createEndTime = accountQueryForm.getCreateEndTime(); //组装查询条件 Page<ManageAccount> page = new Page<>(pageCount, size); Page<ManageAccount> queryPage = new Page<>(page, size); NullFilterWrapper<ManageAccount> wrapper = new NullFilterWrapper<>(); wrapper.like("user_name", userName); @@ -275,20 +275,19 @@ wrapper.eq("is_delete", Constants.NOT_DELETE); //查询结果 Page resultPage = manageAccountMapper.selectPage(page, wrapper); Page resultPage = manageAccountMapper.selectPage(queryPage, wrapper); //查询用户对应的角色 List<ManageAccount> accounts = resultPage.getRecords(); List<AccountDTO> accountDTOS = new ArrayList<>(); if (!ObjectUtils.isEmpty(accounts)) { for (ManageAccount manageAccount : accounts) { AccountDTO accountDTO = new AccountDTO(); List<ManageRole> roles = manageRoleMapper.getManageRoleByAccountId(manageAccount.getId()); accountDTO.setRoles(roles); accountDTO.setAccount(manageAccount); accountDTOS.add(accountDTO); } for (ManageAccount manageAccount : accounts) { AccountDTO accountDTO = new AccountDTO(); List<ManageRole> roles = manageRoleMapper.getManageRoleByAccountId(manageAccount.getId()); accountDTO.setRoles(roles); accountDTO.setAccount(manageAccount); accountDTOS.add(accountDTO); } //封装返回结果 accountQueryDTO.setAccountDTOS(accountDTOS); @@ -346,7 +345,7 @@ StringBuilder content = new StringBuilder(); content.append("删除了用户:").append(existManageAccount.getUserName() + ";") .append("账号:" + existManageAccount.getAccount() + ";"); logUtils.saveOperationForManage(request, content.toString(),Constants.DELETE_OPERATE_TYPE); logUtils.saveOperationForManage(request, content.toString(), Constants.DELETE_OPERATE_TYPE); return accountDTO; } @@ -366,22 +365,22 @@ ManageAccount manageAccount = accountUpdateForm.formConvertEntity(); List<Integer> roleIds = accountUpdateForm.getRoleIds(); //判断要更新的用户是否存在 QueryWrapper<ManageAccount> exitWrapper = new QueryWrapper<>(); ManageAccount exitManageAccount = new ManageAccount(); exitManageAccount.setId(manageAccount.getId()); exitManageAccount.setIsDelete(Constants.NOT_DELETE); exitWrapper.setEntity(exitManageAccount); exitManageAccount = manageAccountMapper.selectOne(exitWrapper); if (ObjectUtils.isEmpty(exitManageAccount)) { //查找要更新的用户用于插入日志 QueryWrapper<ManageAccount> oldAccountWrapper = new QueryWrapper<>(); ManageAccount oldManageAccount = new ManageAccount(); oldManageAccount.setId(manageAccount.getId()); oldManageAccount.setIsDelete(Constants.NOT_DELETE); oldAccountWrapper.setEntity(oldManageAccount); oldManageAccount = manageAccountMapper.selectOne(oldAccountWrapper); if (ObjectUtils.isEmpty(oldManageAccount)) { accountDTO.setCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode()); accountDTO.setMsg(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg()); return accountDTO; } //更新ManageAccount表 Map manageAccountMap = JSONObject.parseObject(JSON.toJSONString(manageAccount),Map.class);//转换为Map判断属性是否有更新 if (manageAccountMap.size()>1) {//判断如果account表中没有相应字段更新则不更新 Map manageAccountMap = JSONObject.parseObject(JSON.toJSONString(manageAccount), Map.class);//转换为Map判断属性是否有更新 if (manageAccountMap.size() > 1) {//判断如果没有除了id以外的任何属性则不更新 manageAccountMapper.updateById(manageAccount); } //获取更新后的对象 @@ -420,7 +419,7 @@ accountDTO.setAccount(manageAccount); //操作插入日志 insertUpdateLog(accountUpdateForm, exitManageAccount, oldRoles); insertUpdateLog(accountUpdateForm, oldManageAccount, oldRoles); return accountDTO; } @@ -465,7 +464,7 @@ } if (!ObjectUtils.isEmpty(oldRoles)) { oldRolesName.deleteCharAt(oldRolesName.length()-1);//删除 "空" oldRolesName.deleteCharAt(oldRolesName.length() - 1);//删除 "空" oldRolesName.append("["); for (ManageRole role : oldRoles) { oldRolesName.append(role.getName() + ","); @@ -475,7 +474,7 @@ } if (!ObjectUtils.isEmpty(newRoles)) { newRolesName.deleteCharAt(newRolesName.length()-1);//删除 "空" newRolesName.deleteCharAt(newRolesName.length() - 1);//删除 "空" newRolesName.append("["); for (ManageRole role : newRoles) { newRolesName.append(role.getName() + ","); @@ -484,7 +483,7 @@ newRolesName.append("]"); } //拼接完整content content.append(value+":"+oldRolesName + "->" + newRolesName + ";"); content.append(value + ":" + oldRolesName + "->" + newRolesName + ";"); } } else {//其他属性处理 if (newParameters.get(key) != null) { screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
@@ -2,13 +2,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.moral.api.entity.ManageMenu; import com.moral.api.config.mybatis.wrapper.NullFilterWrapper; import com.moral.api.entity.Menu; import com.moral.api.mapper.MenuMapper; import com.moral.api.pojo.dto.menu.MenuDTO; import com.moral.api.pojo.dto.menu.MenuQueryDTO; import com.moral.api.pojo.dto.menu.MenuQueryNamesDTO; import com.moral.api.pojo.form.menu.MenuDeleteForm; import com.moral.api.pojo.form.menu.MenuInsertForm; import com.moral.api.pojo.form.menu.MenuQueryNamesForm; import com.moral.api.pojo.form.menu.MenuUpdateForm; import com.moral.api.service.MenuService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.Constants; @@ -43,7 +46,9 @@ //创建返回对象 MenuQueryDTO dto = new MenuQueryDTO(); //获取所有菜单 List<Menu> menus = menuMapper.selectList(null); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("is_delete", Constants.NOT_DELETE); List<Menu> menus = menuMapper.selectList(wrapper); //组合menu父子结构 Map<Integer, Menu> menuMap = new HashMap<>(); for (Menu menu : menus) { @@ -53,7 +58,7 @@ for (Menu menu : menus) { combinationParentChildrenMenus(menuMap, menu); } //删除非跟菜单 //删除非根菜单 menus.removeIf(new Predicate<Menu>() { @Override public boolean test(Menu menu) { @@ -94,6 +99,7 @@ dto.setMsg(ResponseCodeEnum.MENU_IS_EXIST.getMsg()); return dto; } //执行插入逻辑 menuMapper.insert(menu); //封装返回对象 @@ -116,15 +122,18 @@ dto.setMsg(ResponseCodeEnum.MENU_IS_NULL.getMsg()); return dto; } //执行逻辑删除 existMenu.setIsDelete(Constants.DELETE); menuMapper.updateById(existMenu); //删除所有子菜单 List<Integer> childrenIds = getChildrenIdsByParentId(id); UpdateWrapper wrapper = new UpdateWrapper(); wrapper.in("id",childrenIds); wrapper.set("is_delete",Constants.DELETE); menuMapper.update(null,wrapper); if (!ObjectUtils.isEmpty(childrenIds)) { UpdateWrapper wrapper = new UpdateWrapper(); wrapper.in("id", childrenIds); wrapper.set("is_delete", Constants.DELETE); menuMapper.update(null, wrapper); } //删除根菜单 existMenu.setIsDelete(Constants.DELETE); menuMapper.updateById(existMenu); //封装返回对象 dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); @@ -132,6 +141,83 @@ return dto; } @Override public MenuDTO updateMenu(MenuUpdateForm form) { //创建返回对象 MenuDTO dto = new MenuDTO(); //取参 Menu menu = form.formConvertEntity(); //查找更新前的菜单用于插入日志 QueryWrapper<Menu> oldMenuWrapper = new QueryWrapper<>(); Menu oldMenu = new Menu(); oldMenu.setId(menu.getId()); oldMenu.setIsDelete(Constants.NOT_DELETE); oldMenuWrapper.setEntity(oldMenu); oldMenu = menuMapper.selectOne(oldMenuWrapper); if (ObjectUtils.isEmpty(oldMenu)) { dto.setCode(ResponseCodeEnum.MENU_IS_NULL.getCode()); dto.setMsg(ResponseCodeEnum.MENU_IS_NULL.getMsg()); return dto; } //更新 menuMapper.updateById(menu); //获取更新后的对象 menu = menuMapper.selectById(menu.getId()); //封装返回对象 dto.setMenu(menu); dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } @Override public MenuQueryNamesDTO queryNames(MenuQueryNamesForm form) { //创建返回对象 MenuQueryNamesDTO dto = new MenuQueryNamesDTO(); //取参 Integer id = form.getId(); String name = form.getName(); //查询结果 NullFilterWrapper<Menu> wrapper = new NullFilterWrapper<>(); wrapper.eq("is_delete", Constants.NOT_DELETE); wrapper.like("name",name); List<Menu> menus = menuMapper.selectList(wrapper); //过滤该id对应的所有子菜单 List<Integer> childrenIds = getChildrenIdsByParentId(id);//获取所有子菜单id结合 if (ObjectUtils.isEmpty(childrenIds)) { menus.removeIf(new Predicate<Menu>() { @Override public boolean test(Menu m) { if (m.getId().equals(id)) return true; return false; } }); } else { menus.removeIf(new Predicate<Menu>() { @Override public boolean test(Menu m) { if (childrenIds.contains(m.getId()) || m.getId().equals(id)) return true; return false; } }); } //封装返回对象 dto.setMenus(menus); dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } /** * @Description: 把传来的menu放到menuMap对应的父菜单中 * @Param: [menuMap, menu] * @return: void * @Author: 陈凯裕 * @Date: 2021/5/6 */ private void combinationParentChildrenMenus(Map<Integer, Menu> menuMap, Menu menu) { Integer parentId = menu.getParentId(); Menu parentMenu = menuMap.get(parentId); @@ -141,15 +227,17 @@ } /** * @Description: 根据菜单的id获取封装好children的menu对象 * @Param: [id] * @return: com.moral.api.entity.Menu * @Author: 陈凯裕 * @Date: 2021/4/26 */ private Menu getMenuAndChildrenById(Integer id){ * @Description: 根据菜单的id获取封装好children的menu对象 * @Param: [id] * @return: com.moral.api.entity.Menu * @Author: 陈凯裕 * @Date: 2021/4/26 */ private Menu getMenuAndChildrenById(Integer id) { //获取所有菜单 List<Menu> menus = menuMapper.selectList(null); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("is_delete", Constants.NOT_DELETE); List<Menu> menus = menuMapper.selectList(wrapper); //组合menu父子结构 Map<Integer, Menu> menuMap = new HashMap<>(); for (Menu menu : menus) { @@ -164,39 +252,41 @@ } /** * @Description: 获取该菜单下的所有子菜单id集合 * @Param: [id] * @return: java.util.List<java.lang.Integer> * @Author: 陈凯裕 * @Date: 2021/4/26 */ private List<Integer> getChildrenIdsByParentId(Integer id){ * @Description: 获取该菜单下的所有子菜单id集合 * @Param: [id] * @return: java.util.List<java.lang.Integer> * @Author: 陈凯裕 * @Date: 2021/4/26 */ private List<Integer> getChildrenIdsByParentId(Integer id) { Menu parentMenu = getMenuAndChildrenById(id); List<Menu> children = parentMenu.getChildren(); List<Integer> childrenIds = new ArrayList<>(); for (Menu child : children) { recursiveAccess(child,childrenIds); List<Integer> childrenIds = null; if (!ObjectUtils.isEmpty(parentMenu.getChildren())) { List<Menu> children = parentMenu.getChildren(); childrenIds = new ArrayList<>(); for (Menu child : children) { recursiveAccess(child, childrenIds); } } return childrenIds; } /** * @Description: 递归获取菜单的id放入集合中 * @Param: [menu, ids] * @return: void * @Author: 陈凯裕 * @Date: 2021/4/26 */ private void recursiveAccess(Menu menu,List<Integer> ids){ * @Description: 递归获取菜单的id放入集合中 * @Param: [menu, ids] * @return: void * @Author: 陈凯裕 * @Date: 2021/4/26 */ private void recursiveAccess(Menu menu, List<Integer> ids) { ids.add(menu.getId()); List<Menu> children = menu.getChildren(); if(!ObjectUtils.isEmpty(children)){ if (!ObjectUtils.isEmpty(children)) { for (Menu child : children) { recursiveAccess(child,ids); recursiveAccess(child, ids); } } } } screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -10,7 +10,7 @@ import com.moral.api.mapper.OrganizationMapper; import com.moral.api.pojo.dto.organization.OrganizationDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryNameDTO; import com.moral.api.pojo.dto.organization.OrganizationQueryNamesDTO; import com.moral.api.pojo.form.organization.*; import com.moral.api.service.OrganizationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -19,7 +19,6 @@ import com.moral.constant.ResponseCodeEnum; import com.moral.util.ConvertUtils; import com.moral.util.DateUtils; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Service; @@ -30,7 +29,6 @@ import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.function.Predicate; /** * <p> @@ -128,14 +126,14 @@ //form转entity Organization organization = organizationUpdateForm.formConvertEntity(); //查询组织是否存在 QueryWrapper<Organization> existWrapper = new QueryWrapper<>(); Organization existOrganization = new Organization(); existOrganization.setId(organization.getId()); existOrganization.setIsDelete(Constants.NOT_DELETE); existWrapper.setEntity(existOrganization); existOrganization = organizationMapper.selectOne(existWrapper); if (ObjectUtils.isEmpty(existOrganization)) { //查找要更新的组织用于插入日志 QueryWrapper<Organization> oldWrapper = new QueryWrapper<>(); Organization oldOrganization = new Organization(); oldOrganization.setId(organization.getId()); oldOrganization.setIsDelete(Constants.NOT_DELETE); oldWrapper.setEntity(oldOrganization); oldOrganization = organizationMapper.selectOne(oldWrapper); if (ObjectUtils.isEmpty(oldOrganization)) { organizationDTO.setCode(ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getCode()); organizationDTO.setMsg(ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getMsg()); return organizationDTO; @@ -170,7 +168,7 @@ organizationDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); //操作插入日志 insertUpdateLog(organizationUpdateForm, organization, existOrganization); insertUpdateLog(organizationUpdateForm, organization, oldOrganization); return organizationDTO; } @@ -236,6 +234,8 @@ organizationMapper.update(null, updateWrapper); } } //删除组织对应账号 //封装返回结果 dto.setOrganization(existOrganization); @@ -338,20 +338,17 @@ } /** * @Description: 查询所有组织的名称和Id,不做分页 * @Param: [organizationQueryNameForm] * @Description: 查询所有组织的名称和Id * @Param: [] * @return: com.moral.api.pojo.dto.organization.OrganizationQueryNameDTO * @Author: 陈凯裕 * @Date: 2021/4/13 */ @Override public OrganizationQueryNameDTO queryOrganizationNames(OrganizationQueryNameForm form) { OrganizationQueryNameDTO dto = new OrganizationQueryNameDTO(); //取参 String name = form.getName(); public OrganizationQueryNamesDTO queryNames(OrganizationQueryNamesForm from) { OrganizationQueryNamesDTO dto = new OrganizationQueryNamesDTO(); //构造查询条件 NullFilterWrapper<Organization> queryWrapper = new NullFilterWrapper(); queryWrapper.like("name", name); QueryWrapper<Organization> queryWrapper = new QueryWrapper(); queryWrapper.eq("is_delete", Constants.NOT_DELETE); //查询 List<Organization> organizations = organizationMapper.selectList(queryWrapper); screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -1,10 +1,33 @@ package com.moral.api.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.config.mybatis.wrapper.NullFilterWrapper; import com.moral.api.entity.Organization; import com.moral.api.entity.User; import com.moral.api.mapper.OrganizationMapper; import com.moral.api.mapper.UserMapper; import com.moral.api.pojo.dto.user.UserDTO; import com.moral.api.pojo.dto.user.UserQueryDTO; import com.moral.api.pojo.form.user.UserDeleteForm; import com.moral.api.pojo.form.user.UserInsertForm; import com.moral.api.pojo.form.user.UserQueryForm; import com.moral.api.pojo.form.user.UserUpdateForm; import com.moral.api.service.UserService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.Constants; import com.moral.constant.ResponseCodeEnum; import com.moral.util.ConvertUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * <p> @@ -17,4 +40,186 @@ @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Autowired UserMapper userMapper; @Autowired OrganizationMapper organizationMapper; @Override public UserQueryDTO queryUsers(UserQueryForm form) { //创建返回对象 UserQueryDTO dto = new UserQueryDTO(); //取参 Integer page = form.getPage(); Integer size = form.getSize(); String email = form.getEmail(); String mobile = form.getMobile(); String wechat = form.getWechat(); String order = form.getOrder(); String orderType = form.getOrderType(); Integer organizationId = form.getOrganizationId(); Date exipreStartTime = form.getExpireStartTime(); Date exipreEndTime = form.getExpireEndTime(); Date createStartTime = form.getCreateStartTime(); Date createEndTime = form.getCreateEndTime(); Integer isDelete = form.getIsDelete(); //组装查询条件 Page<User> queryPage = new Page<>(page, size); NullFilterWrapper<User> wrapper = new NullFilterWrapper<>(); wrapper.like("email", email); wrapper.like("wechat", wechat); wrapper.like("mobile", mobile); wrapper.eq("is_admin", 1); wrapper.eq("organization_id", organizationId); wrapper.between("create_time", createStartTime, createEndTime); wrapper.between("expire_time", exipreStartTime, exipreEndTime); //排序顺序条件构造 if (!ObjectUtils.isEmpty(order) && !ObjectUtils.isEmpty(orderType)) { if (orderType.equals(Constants.ORDER_ASC)) wrapper.orderByAsc(ConvertUtils.toLine(order)); else wrapper.orderByDesc(ConvertUtils.toLine(order)); } //逻辑删除条件构造 if (!ObjectUtils.isEmpty(isDelete)) wrapper.eq("is_delete", isDelete); else wrapper.eq("is_delete", Constants.NOT_DELETE); //查询结果 Page<User> resultPage = userMapper.selectPage(queryPage, wrapper); List<User> users = resultPage.getRecords(); //查询用户对应组织 List<UserDTO> userDTOS = new ArrayList<>(); for (User user : users) { UserDTO userDTO = new UserDTO(); Organization organization = new Organization(); organization.setId(user.getOrganizationId()); organization.setIsDelete(Constants.NOT_DELETE); QueryWrapper<Organization> organizationWrapper = new QueryWrapper<>(); organizationWrapper.setEntity(organization); organization = organizationMapper.selectOne(organizationWrapper); userDTO.setUser(user); userDTO.setOrganization(organization); userDTOS.add(userDTO); } //封装返回结果 dto.setUserDTOS(userDTOS); dto.setCurrent(resultPage.getCurrent()); dto.setPages(resultPage.getPages()); dto.setSize(resultPage.getSize()); dto.setTotal(resultPage.getTotal()); dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } @Override @Transactional public UserDTO updateUser(UserUpdateForm form) { //创建返回对象 UserDTO dto = new UserDTO(); //取参 User user = form.formConvertEntity(); //查找要更新的用户 用于插入日志 QueryWrapper<User> oldUserWrapper = new QueryWrapper<>(); User oldUser = new User(); oldUser.setId(user.getId()); oldUser.setIsDelete(Constants.NOT_DELETE); oldUserWrapper.setEntity(oldUser); oldUser = userMapper.selectOne(oldUserWrapper); if (ObjectUtils.isEmpty(oldUser)) { dto.setCode(ResponseCodeEnum.USER_NOT_EXIST.getCode()); dto.setMsg(ResponseCodeEnum.USER_NOT_EXIST.getMsg()); return dto; } //更新 userMapper.updateById(user); //封装返回结果 dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } @Override @Transactional public UserDTO deleteUser(UserDeleteForm form) { //创建返回对象 UserDTO dto = new UserDTO(); //取参 Integer id = form.getId(); //查询要删除的用户 用于插入日志 User oldUser = new User(); oldUser.setIsDelete(Constants.NOT_DELETE); oldUser.setId(id); QueryWrapper<User> oldWrapper = new QueryWrapper<>(); oldWrapper.setEntity(oldUser); oldUser = userMapper.selectOne(oldWrapper); if(ObjectUtils.isEmpty(oldUser)){ dto.setCode(ResponseCodeEnum.USER_NOT_EXIST.getCode()); dto.setMsg(ResponseCodeEnum.USER_NOT_EXIST.getMsg()); return dto; } //逻辑删除,删除账号以及该组织下的所有账号 UpdateWrapper<User> deleteWrapper = new UpdateWrapper<>(); deleteWrapper.eq("organization_id",oldUser.getOrganizationId()); deleteWrapper.set("is_delete",Constants.DELETE); userMapper.update(null,deleteWrapper); //返回结果 dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } @Override @Transactional public UserDTO insertUser(UserInsertForm form) { //创建返回对象 UserDTO dto = new UserDTO(); //取参 User user = form.formConvertEntity(); //判断账号是否存在 User existUser = new User(); existUser.setAccount(user.getAccount()); existUser.setIsDelete(Constants.NOT_DELETE); QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.setEntity(existUser); User existUserResult = userMapper.selectOne(wrapper); if(!ObjectUtils.isEmpty(existUserResult)){ dto.setCode(ResponseCodeEnum.USER_EXIST.getCode()); dto.setMsg(ResponseCodeEnum.USER_EXIST.getMsg()); return dto; } //判断组织是否已经存在管理员账号 Integer organizationId = user.getOrganizationId(); User organizationUser = new User(); organizationUser.setIsAdmin(true); organizationUser.setIsDelete(Constants.NOT_DELETE); organizationUser.setOrganizationId(organizationId); QueryWrapper<User> organizationUserWrapper = new QueryWrapper<>(); organizationUserWrapper.setEntity(organizationUser); organizationUser = userMapper.selectOne(organizationUserWrapper); if(!ObjectUtils.isEmpty(organizationUser)){ dto.setCode(ResponseCodeEnum.ORGANIZATION_USER_EXIST.getCode()); dto.setMsg(ResponseCodeEnum.ORGANIZATION_USER_EXIST.getMsg()); return dto; } //插入 userMapper.insert(user); //封装返回结果 dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } } screen-manage/src/main/resources/application-dev.yml
@@ -18,13 +18,9 @@ application: name: screen-manage redis: #cluster: #nodes: 47.112.126.78:7001,47.112.126.78:7002,47.112.126.132:7003,47.112.126.132:7004,47.112.132.193:7005,47.112.132.193:7006 #password: test #timeout: 500 host: 39.97.177.149 host: r-bp1xdlb9wfc6zt0msp.redis.rds.aliyuncs.com port: 6379 password: chenkaiyu111 password: moral_123456 timeout: 30000 jedis: pool: @@ -39,9 +35,9 @@ max-wait: 30000 min-idle: 32 tokenRedis: host: 39.97.177.149 host: r-bp1xdlb9wfc6zt0msp.redis.rds.aliyuncs.com port: 6379 password: chenkaiyu111 password: moral_123456 timeout: 30000 database: 14 pool: @@ -59,12 +55,10 @@ filters: stat type: com.alibaba.druid.pool.DruidDataSource max-wait: 60000 url: jdbc:mysql://39.97.177.149:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: chenkaiyu111 #url: jdbc:mysql://vp9l57dtd2vng7oxft1t.rwlb.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai #username: root #password: moral_123456 url: jdbc:mysql://vp9l57dtd2vng7oxft1t-rw4rm.rwlb.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: moral_123456 test-on-borrow: false sql-script-encoding: utf-8 pool-prepared-statements: true