ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java
@@ -2,11 +2,10 @@ /** * 全局异常 * * * @author ruoyi */ public class GlobalException extends RuntimeException { public class GlobalException extends RuntimeException { private static final long serialVersionUID = 1L; /** @@ -16,41 +15,34 @@ /** * 错误明细,内部调试错误 * */ private String detailMessage; /** * 空构造方法,避免反序列化问题 */ public GlobalException() { public GlobalException() { } public GlobalException(String message) { public GlobalException(String message) { this.message = message; } public String getDetailMessage() { public String getDetailMessage() { return detailMessage; } public GlobalException setDetailMessage(String detailMessage) { public GlobalException setDetailMessage(String detailMessage) { this.detailMessage = detailMessage; return this; } @Override public String getMessage() { public String getMessage() { return message; } public GlobalException setMessage(String message) { public GlobalException setMessage(String message) { this.message = message; return this; } ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -145,7 +145,7 @@ public LoginUserParent getLoginUserStudy() { LoginUserParent userStudy = getLoginUserStudy(ServletUtils.getRequest()); if (null == userStudy) { throw new StudyLoginException("登录失效,请重新登录!", 504); throw new StudyLoginException("登录失效,请重新登录!", 600); } return userStudy; } ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java
@@ -62,7 +62,7 @@ String userkey2 = JwtUtils.getUserKey2(claims); boolean islogin = redisService.hasKey(getTokenKey(userkey)); boolean islogin1 = redisService.hasKey(getTokenKey(userkey1)); boolean islogin2 = redisService.hasKey(getTokenKey(userkey2)); boolean islogin2 = redisService.hasKey(getTokenKeyStudy(userkey2)); if (!islogin && !islogin1 && !islogin2) { return unauthorizedResponse(exchange, "登录状态已过期"); } @@ -72,13 +72,13 @@ return unauthorizedResponse(exchange, "令牌验证失败"); } if (org.springframework.util.StringUtils.hasLength(userkey)){ if (org.springframework.util.StringUtils.hasLength(userkey)) { addHeader(mutate, SecurityConstants.USER_KEY, userkey); } if (org.springframework.util.StringUtils.hasLength(userkey1)){ if (org.springframework.util.StringUtils.hasLength(userkey1)) { addHeader(mutate, SecurityConstants.USER_PARENT_KEY, userkey1); } if (org.springframework.util.StringUtils.hasLength(userkey2)){ if (org.springframework.util.StringUtils.hasLength(userkey2)) { addHeader(mutate, SecurityConstants.USER_STUDY_KEY, userkey2); } // 设置用户信息到请求 @@ -115,6 +115,13 @@ } /** * 获取学习端缓存key */ private String getTokenKeyStudy(String token) { return CacheConstants.LOGIN_TOKEN_KEY_STUDY + token; } /** * 获取请求token */ private String getToken(ServerHttpRequest request) { ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -1,10 +1,12 @@ package com.ruoyi.system.service.impl; import java.util.*; import java.util.stream.Collectors; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.domain.SysMenu; import com.ruoyi.system.domain.SysMenus; import com.ruoyi.system.domain.vo.MetaVo; @@ -17,20 +19,17 @@ import com.ruoyi.system.service.ISysMenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.domain.SysRole; import java.util.*; import java.util.stream.Collectors; /** * 菜单 业务层处理 * * * @author ruoyi */ @Service public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService { public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService { public static final String PREMISSION_STRING = "perms[\"{0}\"]"; @Autowired @@ -50,25 +49,23 @@ /** * 根据用户查询系统菜单列表 * * * @param userId 用户ID * @return 菜单列表 */ @Override public List<SysMenu> selectMenuList(Long userId) { public List<SysMenu> selectMenuList(Long userId) { return selectMenuList(new SysMenu(), userId); } /** * 查询系统菜单列表 * * * @param menu 菜单信息 * @return 菜单列表 */ @Override public List<SysMenu> selectMenuList(SysMenu menu, Long userId) { public List<SysMenu> selectMenuList(SysMenu menu, Long userId) { List<SysMenu> menuList = null; // 管理员显示所有菜单信息 { @@ -80,19 +77,16 @@ /** * 根据用户ID查询权限 * * * @param userId 用户ID * @return 权限列表 */ @Override public Set<String> selectMenuPermsByUserId(Long userId) { public Set<String> selectMenuPermsByUserId(Long userId) { List<String> perms = menuMapper.selectMenuPermsByUserId(userId); Set<String> permsSet = new HashSet<>(); for (String perm : perms) { if (StringUtils.isNotEmpty(perm)) { for (String perm : perms) { if (StringUtils.isNotEmpty(perm)) { permsSet.addAll(Arrays.asList(perm.trim().split(","))); } } @@ -101,19 +95,16 @@ /** * 根据角色ID查询权限 * * * @param roleId 角色ID * @return 权限列表 */ @Override public Set<String> selectMenuPermsByRoleId(Long roleId) { public Set<String> selectMenuPermsByRoleId(Long roleId) { List<String> perms = menuMapper.selectMenuPermsByRoleId(roleId); Set<String> permsSet = new HashSet<>(); for (String perm : perms) { if (StringUtils.isNotEmpty(perm)) { for (String perm : perms) { if (StringUtils.isNotEmpty(perm)) { permsSet.addAll(Arrays.asList(perm.trim().split(","))); } } @@ -122,20 +113,16 @@ /** * 根据用户ID查询菜单 * * * @param userId 用户名称 * @return 菜单列表 */ @Override public List<SysMenu> selectMenuTreeByUserId(Long userId) { public List<SysMenu> selectMenuTreeByUserId(Long userId) { List<SysMenu> menus = null; if (SecurityUtils.isAdmin(userId)) { if (SecurityUtils.isAdmin(userId)) { menus = menuMapper.selectMenuTreeAll(); } else { } else { menus = menuMapper.selectMenuTreeByUserId(userId); } return getChildPerms(menus, 0); @@ -143,29 +130,26 @@ /** * 根据角色ID查询菜单树信息 * * * @param roleId 角色ID * @return 选中菜单列表 */ @Override public List<Long> selectMenuListByRoleId(Long roleId) { public List<Long> selectMenuListByRoleId(Long roleId) { SysRole role = roleMapper.selectRoleById(roleId); return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly()); } /** * 构建前端路由所需要的菜单 * * * @param menus 菜单列表 * @return 路由列表 */ @Override public List<RouterVo> buildMenus(List<SysMenu> menus) { public List<RouterVo> buildMenus(List<SysMenu> menus) { List<RouterVo> routers = new LinkedList<RouterVo>(); for (SysMenu menu : menus) { for (SysMenu menu : menus) { RouterVo router = new RouterVo(); router.setHidden("1".equals(menu.getVisible())); router.setName(getRouteName(menu)); @@ -174,14 +158,11 @@ router.setQuery(menu.getQuery()); router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); List<SysMenu> cMenus = menu.getChildren(); if (!cMenus.isEmpty() && cMenus.size() > 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { if (!cMenus.isEmpty() && cMenus.size() > 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { router.setAlwaysShow(true); router.setRedirect("noRedirect"); router.setChildren(buildMenus(cMenus)); } else if (isMenuFrame(menu)) { } else if (isMenuFrame(menu)) { router.setMeta(null); List<RouterVo> childrenList = new ArrayList<RouterVo>(); RouterVo children = new RouterVo(); @@ -192,9 +173,7 @@ children.setQuery(menu.getQuery()); childrenList.add(children); router.setChildren(childrenList); } else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) { } else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) { router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); router.setPath("/"); List<RouterVo> childrenList = new ArrayList<RouterVo>(); @@ -214,27 +193,23 @@ /** * 构建前端所需要树结构 * * * @param menus 菜单列表 * @return 树结构列表 */ @Override public List<SysMenu> buildMenuTree(List<SysMenu> menus) { public List<SysMenu> buildMenuTree(List<SysMenu> menus) { List<SysMenu> returnList = new ArrayList<SysMenu>(); List<Long> tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList()); for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext();) { for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext(); ) { SysMenu menu = (SysMenu) iterator.next(); // 如果是顶级节点, 遍历该父节点的所有子节点 if (!tempList.contains(menu.getParentId())) { if (!tempList.contains(menu.getParentId())) { recursionFn(menus, menu); returnList.add(menu); } } if (returnList.isEmpty()) { if (returnList.isEmpty()) { returnList = menus; } return returnList; @@ -242,104 +217,95 @@ /** * 构建前端所需要下拉树结构 * * * @param menus 菜单列表 * @return 下拉树结构列表 */ @Override public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus) { public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus) { List<SysMenu> menuTrees = buildMenuTree(menus); return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); } /** * 根据菜单ID查询信息 * * * @param menuId 菜单ID * @return 菜单信息 */ @Override public SysMenu selectMenuById(Long menuId) { public SysMenu selectMenuById(Long menuId) { return menuMapper.selectMenuById(menuId); } /** * 是否存在菜单子节点 * * * @param menuId 菜单ID * @return 结果 */ @Override public boolean hasChildByMenuId(Long menuId) { public boolean hasChildByMenuId(Long menuId) { int result = menuMapper.hasChildByMenuId(menuId); return result > 0; } /** * 查询菜单使用数量 * * * @param menuId 菜单ID * @return 结果 */ @Override public boolean checkMenuExistRole(Long menuId) { public boolean checkMenuExistRole(Long menuId) { int result = roleMenuMapper.checkMenuExistRole(menuId); return result > 0; } /** * 新增保存菜单信息 * * * @param menu 菜单信息 * @return 结果 */ @Override public int insertMenu(SysMenu menu) { public int insertMenu(SysMenu menu) { return menuMapper.insertMenu(menu); } /** * 修改保存菜单信息 * * * @param menu 菜单信息 * @return 结果 */ @Override public int updateMenu(SysMenu menu) { public int updateMenu(SysMenu menu) { return menuMapper.updateMenu(menu); } /** * 删除菜单管理信息 * * * @param menuId 菜单ID * @return 结果 */ @Override public int deleteMenuById(Long menuId) { public int deleteMenuById(Long menuId) { return menuMapper.deleteMenuById(menuId); } /** * 校验菜单名称是否唯一 * * * @param menu 菜单信息 * @return 结果 */ @Override public boolean checkMenuNameUnique(SysMenu menu) { public boolean checkMenuNameUnique(SysMenu menu) { Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId(); SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId()); if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) { if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -348,11 +314,11 @@ @Override public List<SysMenus> getAllMenu() { Long roleId = tokenService.getLoginUser().getSysUser().getRoles().get(0).getRoleId(); List<SysMenus> list=null; if(roleId!=1){ List<SysMenus> list = null; if (roleId != 1) { list = menuMapper.getAllOne(); }else { list = menuMapper.getAll(); } else { list = menuMapper.getAll(); } // 获取所有 @@ -384,16 +350,14 @@ /** * 获取路由名称 * * * @param menu 菜单信息 * @return 路由名称 */ public String getRouteName(SysMenu menu) { public String getRouteName(SysMenu menu) { String routerName = StringUtils.capitalize(menu.getPath()); // 非外链并且是一级目录(类型为目录) if (isMenuFrame(menu)) { if (isMenuFrame(menu)) { routerName = StringUtils.EMPTY; } return routerName; @@ -401,27 +365,23 @@ /** * 获取路由地址 * * * @param menu 菜单信息 * @return 路由地址 */ public String getRouterPath(SysMenu menu) { public String getRouterPath(SysMenu menu) { String routerPath = menu.getPath(); // 内链打开外网方式 if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) { if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) { routerPath = innerLinkReplaceEach(routerPath); } // 非外链并且是一级目录(类型为目录) if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType()) && UserConstants.NO_FRAME.equals(menu.getIsFrame())) { && UserConstants.NO_FRAME.equals(menu.getIsFrame())) { routerPath = "/" + menu.getPath(); } // 非外链并且是一级目录(类型为菜单) else if (isMenuFrame(menu)) { else if (isMenuFrame(menu)) { routerPath = "/"; } return routerPath; @@ -429,23 +389,17 @@ /** * 获取组件信息 * * * @param menu 菜单信息 * @return 组件信息 */ public String getComponent(SysMenu menu) { public String getComponent(SysMenu menu) { String component = UserConstants.LAYOUT; if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) { if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) { component = menu.getComponent(); } else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) { } else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) { component = UserConstants.INNER_LINK; } else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) { } else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) { component = UserConstants.PARENT_VIEW; } return component; @@ -453,54 +407,48 @@ /** * 是否为菜单内部跳转 * * * @param menu 菜单信息 * @return 结果 */ public boolean isMenuFrame(SysMenu menu) { public boolean isMenuFrame(SysMenu menu) { return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType()) && menu.getIsFrame().equals(UserConstants.NO_FRAME); } /** * 是否为内链组件 * * * @param menu 菜单信息 * @return 结果 */ public boolean isInnerLink(SysMenu menu) { public boolean isInnerLink(SysMenu menu) { return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath()); } /** * 是否为parent_view组件 * * * @param menu 菜单信息 * @return 结果 */ public boolean isParentView(SysMenu menu) { public boolean isParentView(SysMenu menu) { return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType()); } /** * 根据父节点的ID获取所有子节点 * * @param list 分类表 * * @param list 分类表 * @param parentId 传入的父节点ID * @return String */ public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) { public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) { List<SysMenu> returnList = new ArrayList<SysMenu>(); for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext();) { for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext(); ) { SysMenu t = (SysMenu) iterator.next(); // 一、根据传入的某个父节点ID,遍历该父节点的所有子节点 if (t.getParentId() == parentId) { if (t.getParentId() == parentId) { recursionFn(list, t); returnList.add(t); } @@ -510,19 +458,16 @@ /** * 递归列表 * * * @param list * @param t */ private void recursionFn(List<SysMenu> list, SysMenu t) { private void recursionFn(List<SysMenu> list, SysMenu t) { // 得到子节点列表 List<SysMenu> childList = getChildList(list, t); t.setChildren(childList); for (SysMenu tChild : childList) { if (hasChild(list, tChild)) { for (SysMenu tChild : childList) { if (hasChild(list, tChild)) { recursionFn(list, tChild); } } @@ -531,15 +476,12 @@ /** * 得到子节点列表 */ private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t) { private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t) { List<SysMenu> tlist = new ArrayList<SysMenu>(); Iterator<SysMenu> it = list.iterator(); while (it.hasNext()) { while (it.hasNext()) { SysMenu n = (SysMenu) it.next(); if (n.getParentId().longValue() == t.getMenuId().longValue()) { if (n.getParentId().longValue() == t.getMenuId().longValue()) { tlist.add(n); } } @@ -549,19 +491,17 @@ /** * 判断是否有子节点 */ private boolean hasChild(List<SysMenu> list, SysMenu t) { private boolean hasChild(List<SysMenu> list, SysMenu t) { return getChildList(list, t).size() > 0; } /** * 内链域名特殊字符替换 * * * @return */ public String innerLinkReplaceEach(String path) { return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, "." }, new String[] { "", "", "", "/" }); public String innerLinkReplaceEach(String path) { return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, "."}, new String[]{"", "", "", "/"}); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java
@@ -1,25 +1,24 @@ package com.ruoyi.system.service.impl; import java.util.HashSet; import java.util.List; import java.util.Set; import com.ruoyi.system.service.ISysRoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.service.ISysMenuService; import com.ruoyi.system.service.ISysPermissionService; import com.ruoyi.system.service.ISysRoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashSet; import java.util.List; import java.util.Set; /** * 用户权限处理 * * * @author ruoyi */ @Service public class SysPermissionServiceImpl implements ISysPermissionService { public class SysPermissionServiceImpl implements ISysPermissionService { @Autowired private ISysRoleService roleService; @@ -28,21 +27,17 @@ /** * 获取角色数据权限 * * * @param userId 用户Id * @return 角色权限信息 */ @Override public Set<String> getRolePermission(SysUser user) { public Set<String> getRolePermission(SysUser user) { Set<String> roles = new HashSet<String>(); // 管理员拥有所有权限 if (user.isAdmin()) { if (user.isAdmin()) { roles.add("admin"); } else { } else { roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId())); } return roles; @@ -50,34 +45,26 @@ /** * 获取菜单数据权限 * * * @param userId 用户Id * @return 菜单权限信息 */ @Override public Set<String> getMenuPermission(SysUser user) { public Set<String> getMenuPermission(SysUser user) { Set<String> perms = new HashSet<String>(); // 管理员拥有所有权限 if (user.isAdmin()) { if (user.isAdmin()) { perms.add("*:*:*"); } else { } else { List<SysRole> roles = user.getRoles(); if (!roles.isEmpty() && roles.size() > 1) { if (!roles.isEmpty() && roles.size() > 1) { // 多角色设置permissions属性,以便数据权限匹配权限 for (SysRole role : roles) { for (SysRole role : roles) { Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId()); role.setPermissions(rolePerms); perms.addAll(rolePerms); } } else { } else { perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId())); } } ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/config/DataUpdateHandlerConfig.java
@@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUserParent; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; import org.springframework.beans.factory.annotation.Autowired; @@ -40,7 +39,7 @@ LoginUser loginUser = tokenService.getLoginUser(); this.setFieldValByName("createTime", new Date(), metaObject); this.setFieldValByName("updateTime", new Date(), metaObject); if (loginUser!=null){ if (loginUser != null) { String userName = loginUser.getUsername(); if (StringUtils.hasLength(userName)) { this.setFieldValByName("createBy", userName, metaObject); ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java
@@ -1,7 +1,6 @@ package com.ruoyi.goods.controller; import com.alibaba.fastjson2.util.UUIDUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; @@ -10,8 +9,6 @@ import com.ruoyi.goods.domain.*; import com.ruoyi.goods.dto.*; import com.ruoyi.goods.service.*; import com.ruoyi.goods.utils.MyQrCodeUtil; import com.ruoyi.goods.utils.QRCodeUtil; import com.ruoyi.goods.vo.GoodDetailVO; import com.ruoyi.goods.vo.TGoodsVO; import com.ruoyi.goods.vo.TOrderVO; @@ -20,15 +17,12 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.logging.log4j.core.util.UuidUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.awt.image.BufferedImage; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; @@ -77,7 +71,7 @@ @PostMapping("/goodList") @ApiOperation(value = "商品列表查询", tags = {"家长端-商品列表"}) public R<PageInfo<TGoods>> listType(@RequestBody GoodQueryDTO goodQuery) { if (tokenService.getLoginUser1() == null){ if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } List<String> type = goodQuery.getType(); @@ -87,7 +81,7 @@ wrapper = keywords != null && "".equals(keywords.trim()) ? wrapper.like("name", keywords) : wrapper; // 类型匹配 todo if (goodQuery.getType()!=null && goodQuery.getType().size()>0){ if (goodQuery.getType() != null && goodQuery.getType().size() > 0) { StringBuilder temp = new StringBuilder(""); for (String s : goodQuery.getType()) { wrapper.or().apply("FIND_IN_SET('" + s + "', typeIds)"); // 将每个类型 ID 应用于 FIND_IN_SET 函数 @@ -96,10 +90,11 @@ wrapper.eq("isDelete", 0); return R.ok(goodsService.page(new PageInfo<>(goodQuery.getPageNumber(), goodQuery.getPageSize()), wrapper)); } @PostMapping("/goodListStudy") @ApiOperation(value = "商品列表查询", tags = {"学习端"}) public R<PageInfo<TGoods>> goodListStudy(@RequestBody GoodQueryDTO goodQuery) { if (tokenService.getLoginUserStudy() == null){ if (tokenService.getLoginUserStudy() == null) { return R.tokenError("登录失效"); } List<String> type = goodQuery.getType(); @@ -109,7 +104,7 @@ wrapper = keywords != null && "".equals(keywords.trim()) ? wrapper.like("name", keywords) : wrapper; // 类型匹配 todo if (goodQuery.getType()!=null && goodQuery.getType().size()>0){ if (goodQuery.getType() != null && goodQuery.getType().size() > 0) { StringBuilder temp = new StringBuilder(""); for (String s : goodQuery.getType()) { wrapper.or().apply("FIND_IN_SET('" + s + "', typeIds)"); // 将每个类型 ID 应用于 FIND_IN_SET 函数 @@ -211,6 +206,7 @@ return R.ok(orderService.lambdaQuery().eq(TOrder::getUserId, tokenService.getLoginUserStudy().getUserid()) .orderByDesc(TOrder::getCreateTime).list()); } @GetMapping("/exchangeRecordParent") @ApiOperation(value = "家长端-兑换记录", tags = {"家长端-兑换记录"}) public R<Page<TOrder>> exchangeRecordParent(Integer pageNumber,Integer pageSize) { @@ -249,13 +245,14 @@ @ApiImplicitParam(value = "订单id", name = "id", dataType = "String", required = true) }) public R<Boolean> confirm(@RequestParam Integer id) { if (tokenService.getLoginUser1() == null){ if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } TOrder byId = orderService.getById(id); byId.setState(3); return R.ok(orderService.updateById(byId)); } /** * 兑换记录 */ @@ -265,7 +262,7 @@ @ApiImplicitParam(value = "订单id", name = "id", dataType = "String", required = true) }) public R<Boolean> confirmStudy(@RequestParam Integer id) { if (tokenService.getLoginUserStudy() == null){ if (tokenService.getLoginUserStudy() == null) { return R.tokenError("登录失效"); } TOrder byId = orderService.getById(id); @@ -279,12 +276,13 @@ @GetMapping("/shopAddressParent") @ApiOperation(value = "获取用户收货地址", tags = {"家长端-获取用户收货地址"}) public R<List<Recipient>> shopAddressParent() { if (tokenService.getLoginUser1() == null){ if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } return R.ok(recipientService.lambdaQuery().eq(Recipient::getUserId, tokenService.getLoginUser1().getUserid()).list()); } /** * 设置默认地址 */ @@ -294,7 +292,7 @@ @ApiImplicitParam(value = "地址id", name = "id", dataType = "String", required = true) }) public R setDefault(@RequestParam Integer id) { if (tokenService.getLoginUser1() == null){ if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } Recipient byId = recipientService.getById(id); @@ -310,6 +308,7 @@ } return R.ok(); } /** * 设置默认地址 */ @@ -319,7 +318,7 @@ @ApiImplicitParam(value = "地址id", name = "id", dataType = "String", required = true) }) public R setDefaultStudy(@RequestParam Integer id) { if (tokenService.getLoginUserStudy() == null){ if (tokenService.getLoginUserStudy() == null) { return R.tokenError("登录失效"); } Recipient byId = recipientService.getById(id); @@ -338,6 +337,7 @@ /** * 根据地址id 获取详情 * * @param id * @return */ @@ -347,14 +347,16 @@ @ApiImplicitParam(value = "地址id", name = "id", dataType = "String", required = true) }) public R<Recipient> getAddressById(@RequestParam Integer id) { if (tokenService.getLoginUser1() == null){ if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } Recipient byId = recipientService.getById(id); return R.ok(byId); } /** * 根据地址id 获取详情 * * @param id * @return */ @@ -364,19 +366,20 @@ @ApiImplicitParam(value = "地址id", name = "id", dataType = "String", required = true) }) public R<Recipient> getAddressByIdStudy(@RequestParam Integer id) { if (tokenService.getLoginUserStudy() == null){ if (tokenService.getLoginUserStudy() == null) { return R.tokenError("登录失效"); } Recipient byId = recipientService.getById(id); return R.ok(byId); } /** * 获取用户收货地址 */ @GetMapping("/shopAddress") @ApiOperation(value = "获取用户收货地址", tags = {"学习端-获取用户收货地址"}) public R<List<Recipient>> shopAddress() { if (tokenService.getLoginUserStudy() == null){ if (tokenService.getLoginUserStudy() == null) { return R.tokenError("登录失效"); } return R.ok(recipientService.lambdaQuery().eq(Recipient::getUserId, @@ -402,6 +405,7 @@ recipientService.addressSaveOrUpdate(recipient); return R.ok(); } /** * 新增收货地址/修改收货地址 */ @@ -450,6 +454,7 @@ public R<String> addressDelete(@RequestParam String id) { return R.ok(recipientService.removeById(id) ? "删除成功!" : "删除失败!"); } /** * 删除收货地址 */ @@ -466,7 +471,7 @@ @GetMapping("/getOrderAddressParent") @ApiOperation(value = "获取修改订单收货地址", tags = {"家长端-获取修改订单收货地址"}) public R<List<Recipient>> getOrderAddressParent() { if (tokenService.getLoginUser1() == null){ if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } List<Recipient> userId = recipientService.list(new QueryWrapper<Recipient>() @@ -474,24 +479,26 @@ return R.ok(userId); } @GetMapping("/getOrderAddress") @ApiOperation(value = "获取修改订单收货地址", tags = {"学习端-获取修改订单收货地址"}) public R<List<Recipient>> getOrderAddress() { if (tokenService.getLoginUserStudy() == null){ if (tokenService.getLoginUserStudy() == null) { return R.tokenError("登录失效"); } List<Recipient> userId = recipientService.list(new QueryWrapper<Recipient>() .eq("userId", tokenService.getLoginUserStudy().getUserid())); return R.ok(userId); } @GetMapping("/updateOrderAddressParent") @ApiOperation(value = "修改订单收货地址", tags = {"家长端-修改订单收货地址"}) @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true), @ApiImplicitParam(value = "地址信息id", name = "recipientId", dataType = "String", required = true) }) public R updateOrderAddressParent(@RequestParam Integer orderId,@RequestParam Integer recipientId) { if (tokenService.getLoginUser1() == null){ public R updateOrderAddressParent(@RequestParam Integer orderId, @RequestParam Integer recipientId) { if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } Recipient userId = recipientService.getById(recipientId); @@ -502,10 +509,11 @@ orderService.updateById(byId); return R.ok("修改成功"); } @GetMapping("/updateOrderAddress") @ApiOperation(value = "修改订单收货地址", tags = {"学习端-修改订单收货地址"}) public R updateOrderAddress(@RequestParam Integer orderId,@RequestParam Integer recipientId) { if (tokenService.getLoginUserStudy() == null){ public R updateOrderAddress(@RequestParam Integer orderId, @RequestParam Integer recipientId) { if (tokenService.getLoginUserStudy() == null) { return R.tokenError("登录失效"); } Recipient userId = recipientService.getById(recipientId); @@ -537,6 +545,15 @@ } /** * 获取所有商品分类 */ @GetMapping("/goodTypeStudy") @ApiOperation(value = "学习端-商品分类列表", tags = {"学习端-商品分类列表"}) public R<List<TGoodsType>> goodTypeStudy() { return R.ok(goodsTypeService.lambdaQuery().eq(TGoodsType::getIsDelete, 0).eq(TGoodsType::getIsDelete, 0).list()); } /** * 商品详情 * * @param goodId 商品id @@ -555,6 +572,7 @@ int number = goods.getBasicCount() + orderService.getGoodBuyNumber(goods.getId()); return R.ok(new GoodDetailVO(goods, goodsTypes, number)); } /** * 商品详情 * @@ -566,7 +584,7 @@ @ApiImplicitParam(value = "商品id", name = "goodId", dataType = "String", required = true) }) public R<GoodDetailVO> goodDetailParent(@RequestParam String goodId) { if (tokenService.getLoginUser1() == null){ if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } // 商品详情 @@ -587,7 +605,7 @@ @ApiImplicitParam(value = "商品id", name = "goodId", dataType = "String", required = true) }) public R<GoodDetailVO> redeemNow(@RequestParam String goodId) { if (tokenService.getLoginUserStudy() == null){ if (tokenService.getLoginUserStudy() == null) { return R.tokenError("登录失效"); } Recipient recipient = recipientService.lambdaQuery() @@ -609,6 +627,7 @@ goodDetailVO.setOrderNumber(orderNumber); return R.ok(goodDetailVO); } /** * 商城-立即兑换 */ @@ -618,7 +637,7 @@ @ApiImplicitParam(value = "商品id", name = "goodId", dataType = "String", required = true) }) public R<GoodDetailVO> redeemNowParent(@RequestParam String goodId) { if (tokenService.getLoginUser1() == null){ if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } Recipient recipient = recipientService.lambdaQuery() @@ -662,6 +681,7 @@ Recipient recipient = recipientService.getById(Integer.valueOf(goodExchange.getRecipientId())); return goodsService.goodExchange1(goodExchange, recipient); } @PostMapping("/goodExchangeStudy") @ApiOperation(value = "学习端-商品兑换确认", tags = {"学习端-商品兑换确认"}) public R goodExchangeStudy(@RequestBody GoodExchangeDTO goodExchange) { @@ -672,19 +692,21 @@ @Autowired private StudyClient studyClient; @PostMapping("/getOrderInfo/{id}") @ApiOperation(value = "查看详情", tags = {"后台-订单管理"}) public R<TOrderVO> getOrderInfo(@PathVariable("id")Integer id) { public R<TOrderVO> getOrderInfo(@PathVariable("id") Integer id) { TOrder byId = orderService.getById(id); TGoods byId2 = goodsService.getById(byId.getGoodsId()); TOrderVO tGoodsVO = new TOrderVO(); tGoodsVO.setName(byId2.getName()); BeanUtils.copyProperties(byId,tGoodsVO); BeanUtils.copyProperties(byId, tGoodsVO); TUser byId1 = studyClient.getUserById(byId.getUserId()).getData(); tGoodsVO.setUserName(byId1.getName()); tGoodsVO.setPhone(byId1.getPhone()); return R.ok(tGoodsVO); } @PostMapping("/confirm1") @ApiOperation(value = "确认发货", tags = {"后台-订单管理"}) public R getGoodsInfo1(@RequestBody OrderDTO dto) { @@ -696,12 +718,13 @@ orderService.updateById(byId); return R.ok("修改成功"); } @PostMapping("/listAll1") @ApiOperation(value = "列表查询", tags = {"后台-订单管理"}) public R<PageInfo<TOrderVO>> listAll1(@RequestBody OrderQuery query) throws ParseException { public R<PageInfo<TOrderVO>> listAll1(@RequestBody OrderQuery query) throws ParseException { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (query.getEndTime()!=null){ if (query.getEndTime() != null) { Date parse = format.parse(query.getStartTime()); Date parse1 = format.parse(query.getEndTime()); query.setStartTime1(parse); @@ -711,25 +734,25 @@ List<TOrderVO> list1 = new ArrayList<>(); for (TOrderVO tOrderVO : list) { TUser data = studyClient.getUserById(tOrderVO.getUserId()).getData(); if (data!=null){ if (data != null) { tOrderVO.setUserName(data.getName()); tOrderVO.setPhone(data.getPhone()); } if (!StringUtils.hasLength(query.getPhone()) && !StringUtils.hasLength(query.getUserName())){ if (!StringUtils.hasLength(query.getPhone()) && !StringUtils.hasLength(query.getUserName())) { list1.add(tOrderVO); continue; } // 如果筛选条件输入了电话或者姓名那么需要过滤掉不符合条件的数据 if (StringUtils.hasLength(query.getPhone()) && StringUtils.hasLength(query.getUserName())){ if (tOrderVO.getPhone().contains(query.getPhone()) && tOrderVO.getUserName().contains(query.getUserName())){ if (StringUtils.hasLength(query.getPhone()) && StringUtils.hasLength(query.getUserName())) { if (tOrderVO.getPhone().contains(query.getPhone()) && tOrderVO.getUserName().contains(query.getUserName())) { list1.add(tOrderVO); } }else if (StringUtils.hasLength(query.getPhone())){ if (tOrderVO.getPhone().contains(query.getPhone())){ } else if (StringUtils.hasLength(query.getPhone())) { if (tOrderVO.getPhone().contains(query.getPhone())) { list1.add(tOrderVO); } }else if (StringUtils.hasLength(query.getUserName())){ if (tOrderVO.getUserName().contains(query.getUserName())){ } else if (StringUtils.hasLength(query.getUserName())) { if (tOrderVO.getUserName().contains(query.getUserName())) { list1.add(tOrderVO); } } ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/RecipientServiceImpl.java
@@ -30,7 +30,7 @@ public String addressSaveOrUpdate(Recipient recipient) { boolean result; // 主键ID为空,新增收货地址 if (StringUtils.isEmpty(String.valueOf(recipient.getId()))) { if (null == recipient.getId()) { recipient.setUserId(tokenService.getLoginUserStudy().getUserid()); result = this.save(recipient); } else { ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java
@@ -1071,8 +1071,13 @@ TStoryListen listen = storyListenService.lambdaQuery().eq(TStoryListen::getWeek, week).one(); // 获取对应图片语音 List<String> list = Arrays.asList(listen.getLookStory().split(",")); return R.ok(new StudyStoryListenResultVO(listen, subjectService.lambdaQuery().in(TSubject::getId, list).eq(TSubject::getState, 1).list())); List<TSubject> subjectList; if (!list.isEmpty()) { subjectList = subjectService.lambdaQuery().in(TSubject::getId, list).eq(TSubject::getState, 1).list(); } else { subjectList = new ArrayList<>(); } return R.ok(new StudyStoryListenResultVO(listen, subjectList)); } /** @@ -1090,8 +1095,13 @@ TStoryListen listen = storyListenService.lambdaQuery().eq(TStoryListen::getWeek, week).one(); // 获取对应图片语音 List<String> list = Arrays.asList(listen.getStory().split(",")); return R.ok(new StudyStoryListenResultVO(listen, subjectService.lambdaQuery().in(TSubject::getId, list).eq(TSubject::getState, 1).list())); List<TSubject> subjectList; if (!list.isEmpty()) { subjectList = subjectService.lambdaQuery().in(TSubject::getId, list).eq(TSubject::getState, 1).list(); } else { subjectList = new ArrayList<>(); } return R.ok(new StudyStoryListenResultVO(listen,subjectList)); } /** ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java
@@ -29,7 +29,6 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -359,24 +358,26 @@ } return R.ok(); } @PostMapping("/getUserInfoParent") @ApiOperation(value = "获取用户信息", tags = {"家长端-获取用户信息"}) public R<TUser> getUserInfo() { LoginUserParent loginUser1 = tokenService.getLoginUser1(); if (loginUser1!=null){ if (loginUser1 != null) { TUser byId = userService.getById(loginUser1.getUserid()); if (byId.getVipEndTime() == null){ if (byId.getVipEndTime() == null) { byId.setIsVip(0); }else if (byId.getVipEndTime().after(new Date())){ } else if (byId.getVipEndTime().after(new Date())) { byId.setIsVip(1); }else{ } else { byId.setIsVip(0); } return R.ok(byId); }else{ } else { return R.tokenError("登录失效"); } } @PostMapping("/parentPage") @ApiOperation(value = "平板", tags = {"启动页"}) public R<String> parentPage() { @@ -464,8 +465,8 @@ } } else { // 手机验证码校验 if (!phoneCode.equals("123456")){ Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); if (!phoneCode.equals("123456")) { Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); if (null == redisPhoneCode) { throw new GlobalException("登录失败,手机验证码已过期!"); } else { @@ -479,7 +480,7 @@ userService.save(tUser1); } } }else{ } else { tUser1 = getUser(phone); userService.save(tUser1); } @@ -529,7 +530,7 @@ userService.save(user); } } }else{ } else { user = getUser(phone); userService.save(user); } @@ -548,6 +549,7 @@ /** * 学生端退出登录 * * @param request 请求信息 */ @PostMapping("/logoutStudy") @@ -602,7 +604,7 @@ public R<TSysSet> shareInfo() { // 分享信息 TSysSet data = managementClient.shareInfo().getData(); if (tokenService.getLoginUserStudy() == null){ if (tokenService.getLoginUserStudy() == null) { return R.tokenError("登录失效"); } Integer userid = tokenService.getLoginUserStudy().getUserid(); @@ -631,7 +633,7 @@ public R<TSysSet> shareInfoParent() { // 分享信息 TSysSet data = managementClient.shareInfo().getData(); if (tokenService.getLoginUser1() == null){ if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } Integer userid = tokenService.getLoginUser1().getUserid(); @@ -651,6 +653,7 @@ } return R.ok(data); } /** * 获取用户信息 * @@ -686,7 +689,7 @@ @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), }) public R<String> logout(HttpServletRequest request) { if (tokenService.getLoginUser1() == null){ if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } String token = SecurityUtils.getToken(request); @@ -707,8 +710,8 @@ @ApiImplicitParam(name = "headImg", value = "头像 改什么就只传什么"), @ApiImplicitParam(name = "phoneCode", value = "手机验证码,修改手机号的时候传"), }) public R<String> updateUserInfo(String name, String phone, String headImg,String phoneCode) { if (tokenService.getLoginUser1() == null){ public R<String> updateUserInfo(String name, String phone, String headImg, String phoneCode) { if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } Integer userid = tokenService.getLoginUser1().getUserid(); @@ -730,7 +733,7 @@ byId.setPhone(phone); } // 手机验证码校验 if (!phoneCode.equals("123456")){ if (!phoneCode.equals("123456")) { Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); if (null == redisPhoneCode) { return R.errorCode("手机验证码无效");