Merge remote-tracking branch 'hsayi/dev/feat/partner1.1_20230727' into dev/feat/partner1.1_20230727

This commit is contained in:
苏竹红
2023-07-25 16:12:32 +08:00
18 changed files with 459 additions and 27 deletions

View File

@@ -23,4 +23,9 @@ public class SysMenuDAO {
return sysMenuMapper.selectMenuAll(parentIds, platformType); return sysMenuMapper.selectMenuAll(parentIds, platformType);
} }
public Long addMenu(SysMenuDO param){
sysMenuMapper.insertSelective(param);
return param.getId();
}
} }

View File

@@ -3,6 +3,8 @@ package com.cool.store.dao;
import com.cool.store.entity.SysRoleDO; import com.cool.store.entity.SysRoleDO;
import com.cool.store.enums.DataSourceEnum; import com.cool.store.enums.DataSourceEnum;
import com.cool.store.mapper.SysRoleMapper; import com.cool.store.mapper.SysRoleMapper;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@@ -50,4 +52,16 @@ public class SysRoleDAO {
} }
return sysRoleMapper.getRoleByName(roleName, dataSource.getCode()); return sysRoleMapper.getRoleByName(roleName, dataSource.getCode());
} }
public Page<SysRoleDO> getRolePage(Integer pageNum, Integer pageSize){
PageHelper.startPage(pageNum, pageSize);
return sysRoleMapper.getRolePage();
}
public SysRoleDO getRoleDetail(String roleId){
if(StringUtils.isBlank(roleId)){
return null;
}
return sysRoleMapper.getRoleDetail(roleId);
}
} }

View File

@@ -2,11 +2,13 @@ package com.cool.store.dao;
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.cool.store.entity.SysRoleMenuDO; import com.cool.store.entity.SysRoleMenuDO;
import com.cool.store.enums.PlatFormTypeEnum;
import com.cool.store.mapper.SysRoleMenuMapper; import com.cool.store.mapper.SysRoleMenuMapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@@ -33,4 +35,17 @@ public class SysRoleMenuDAO {
return sysRoleMenuMapper.getRoleMenuByRoleId(roleId, platform); return sysRoleMenuMapper.getRoleMenuByRoleId(roleId, platform);
} }
public Integer updateRoleAuth(String roleId, List<Long> menuIds){
//先删后增
sysRoleMenuMapper.deleteRoleAuth(roleId, PlatFormTypeEnum.PC.getCode());
List<SysRoleMenuDO> insertList = new ArrayList<>();
for (Long menuId : menuIds) {
SysRoleMenuDO insert = new SysRoleMenuDO();
insert.setMenuId(menuId);
insert.setRoleId(roleId);
insertList.add(insert);
}
return sysRoleMenuMapper.batchInsert(insertList);
}
} }

View File

@@ -1,6 +1,7 @@
package com.cool.store.mapper; package com.cool.store.mapper;
import com.cool.store.entity.SysRoleDO; import com.cool.store.entity.SysRoleDO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@@ -40,4 +41,17 @@ public interface SysRoleMapper {
* @return * @return
*/ */
SysRoleDO getRoleByName(@Param("roleName") String roleName, @Param("roleType")Integer roleType); SysRoleDO getRoleByName(@Param("roleName") String roleName, @Param("roleType")Integer roleType);
/**
* 角色分页
* @return
*/
Page<SysRoleDO> getRolePage();
/**
* 获取角色详情
* @param roleId
* @return
*/
SysRoleDO getRoleDetail(@Param("roleId") String roleId);
} }

View File

@@ -16,7 +16,7 @@ public interface SysRoleMenuMapper {
* 会对传进来的字段做判空处理如果字段为空则使用数据库默认字段或者null * 会对传进来的字段做判空处理如果字段为空则使用数据库默认字段或者null
* dateTime:2023-05-19 03:01 * dateTime:2023-05-19 03:01
*/ */
int insertSelective(@Param("record") SysRoleMenuDO record); int batchInsert(@Param("recordList") List<SysRoleMenuDO> recordList);
/** /**
* *
@@ -32,4 +32,11 @@ public interface SysRoleMenuMapper {
* @return * @return
*/ */
List<SysRoleMenuDO> getRoleMenuByRoleId(@Param("roleId")String roleId, @Param("platform")String platform); List<SysRoleMenuDO> getRoleMenuByRoleId(@Param("roleId")String roleId, @Param("platform")String platform);
/**
* 删除角色权限
* @param roleId
* @return
*/
Integer deleteRoleAuth(@Param("roleId")String roleId, @Param("platform")String platform);
} }

View File

@@ -28,7 +28,7 @@
id, parent_id, code, name, alias, path, perms, source, sort, category, action, remark, id, parent_id, code, name, alias, path, perms, source, sort, category, action, remark,
platform, is_deleted, type, target, component, icon, menu_type, env, common_functions_icon platform, is_deleted, type, target, component, icon, menu_type, env, common_functions_icon
</sql> </sql>
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true"> <insert id="insertSelective" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
insert into sys_menu insert into sys_menu
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="parentId != null"> <if test="parentId != null">

View File

@@ -138,4 +138,20 @@
where where
role_name = #{roleName} and role_type = #{roleType} and deleted = 0 limit 1 role_name = #{roleName} and role_type = #{roleType} and deleted = 0 limit 1
</select> </select>
<select id="getRolePage" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from
sys_role
</select>
<select id="getRoleDetail" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from
sys_role
where
role_id = #{roleId} deleted = 0
</select>
</mapper> </mapper>

View File

@@ -10,30 +10,32 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, menu_id, role_id, platform id, menu_id, role_id, platform
</sql> </sql>
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true"> <insert id="batchInsert">
insert into sys_role_menu <foreach collection="recordList" item="record" separator=";">
<trim prefix="(" suffix=")" suffixOverrides=","> insert into sys_role_menu
<if test="record.menuId != null"> <trim prefix="(" suffix=")" suffixOverrides=",">
menu_id, <if test="record.menuId != null">
</if> menu_id,
<if test="record.roleId != null"> </if>
role_id, <if test="record.roleId != null">
</if> role_id,
<if test="record.platform != null"> </if>
platform, <if test="record.platform != null">
</if> platform,
</trim> </if>
<trim prefix="values (" suffix=")" suffixOverrides=","> </trim>
<if test="record.menuId != null"> <trim prefix="values (" suffix=")" suffixOverrides=",">
#{record.menuId}, <if test="record.menuId != null">
</if> #{record.menuId},
<if test="record.roleId != null"> </if>
#{record.roleId}, <if test="record.roleId != null">
</if> #{record.roleId},
<if test="record.platform != null"> </if>
#{record.platform}, <if test="record.platform != null">
</if> #{record.platform},
</trim> </if>
</trim>
</foreach>
</insert> </insert>
<update id="updateByPrimaryKeySelective"> <update id="updateByPrimaryKeySelective">
update sys_role_menu update sys_role_menu
@@ -59,4 +61,8 @@
where where
role_id=#{roleId} and platform=#{platform} role_id=#{roleId} and platform=#{platform}
</select> </select>
<delete id="deleteRoleAuth">
delete from sys_role_menu where role_id=#{roleId} and platform=#{platform}
</delete>
</mapper> </mapper>

View File

@@ -0,0 +1,55 @@
package com.cool.store.dto.menu;
import com.cool.store.entity.SysMenuDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.MenuTypeEnum;
import com.cool.store.exception.ServiceException;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class AddMenuDTO {
@NotBlank(message = "名称不能为空")
private String name;
@JsonProperty("parent_id")
@NotNull(message = "父Id不能为空")
private Long parentId;
@NotBlank(message = "地址不能为空")
private String path;
private String component;
private String target;
private String icon;
private String env;
public static SysMenuDO convertDO(AddMenuDTO param, MenuTypeEnum menuTypeEnum){
SysMenuDO menu = new SysMenuDO();
SysMenuDO sysMenuDO = new SysMenuDO();
sysMenuDO.setParentId(param.getParentId());
sysMenuDO.setName(param.getName());
sysMenuDO.setCode(param.getName());
sysMenuDO.setPath(param.getPath());
sysMenuDO.setType(null);
sysMenuDO.setSource("menu");
sysMenuDO.setAction(1);
sysMenuDO.setPlatform("PC");
sysMenuDO.setComponent(param.getComponent());
sysMenuDO.setTarget(param.getTarget());
sysMenuDO.setIcon(param.getIcon());
sysMenuDO.setMenuType(menuTypeEnum.getCode());
return menu;
}
}

View File

@@ -0,0 +1,26 @@
package com.cool.store.dto.role;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author zhangchenbiao
* @FileName: RoleUpdateDTO
* @Description:
* @date 2023-07-25 15:03
*/
@Data
public class RoleUpdateDTO {
@ApiModelProperty("角色id")
private String roleId;
@ApiModelProperty("角色名称")
private String roleName;
@ApiModelProperty("菜单ids")
private List<Long> menuIds;
}

View File

@@ -0,0 +1,42 @@
package com.cool.store.vo.role;
import com.cool.store.entity.SysRoleDO;
import com.cool.store.entity.SysRoleMenuDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.collections4.ListUtils;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author zhangchenbiao
* @FileName: RoleAuthInfoVO
* @Description:
* @date 2023-07-25 15:11
*/
@Data
public class RoleAuthInfoVO {
@ApiModelProperty("角色id")
private String roleId;
@ApiModelProperty("角色名称")
private String roleName;
@ApiModelProperty("菜单ids")
private List<Long> menuIds;
public static RoleAuthInfoVO convertVO(SysRoleDO role, List<SysRoleMenuDO> roleMenuList){
if(Objects.isNull(role)){
return null;
}
RoleAuthInfoVO result = new RoleAuthInfoVO();
result.setRoleId(role.getRoleId());
result.setRoleName(role.getRoleName());
result.setMenuIds(ListUtils.emptyIfNull(roleMenuList).stream().map(SysRoleMenuDO::getMenuId).distinct().collect(Collectors.toList()));
return result;
}
}

View File

@@ -0,0 +1,38 @@
package com.cool.store.vo.role;
import com.cool.store.entity.SysRoleDO;
import com.google.common.collect.Lists;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
* @author zhangchenbiao
* @FileName: RolePageVO
* @Description:
* @date 2023-07-25 15:10
*/
@Data
public class RolePageVO {
private String roleId;
private String roleName;
public static List<RolePageVO> convertList(List<SysRoleDO> roleList){
if(CollectionUtils.isEmpty(roleList)){
return Lists.newArrayList();
}
List<RolePageVO> resultList = new ArrayList<>();
for (SysRoleDO sysRole : roleList) {
RolePageVO role = new RolePageVO();
role.setRoleId(sysRole.getRoleId());
role.setRoleName(role.getRoleName());
resultList.add(role);
}
return resultList;
}
}

View File

@@ -1,5 +1,7 @@
package com.cool.store.service; package com.cool.store.service;
import com.cool.store.dto.menu.AddMenuDTO;
import com.cool.store.enums.MenuTypeEnum;
import com.cool.store.vo.menu.MenuTreeVO; import com.cool.store.vo.menu.MenuTreeVO;
import java.util.List; import java.util.List;
@@ -19,4 +21,18 @@ public interface MenuService {
* @return * @return
*/ */
List<MenuTreeVO> getUserMenus(String userId, String roleId); List<MenuTreeVO> getUserMenus(String userId, String roleId);
/**
* 获取所有的菜单
* @return
*/
List<MenuTreeVO> getAllMenus();
/**
* 新增菜单
* @param param
* @param menuType
* @return
*/
Long addMenu(AddMenuDTO param, MenuTypeEnum menuType);
} }

View File

@@ -0,0 +1,39 @@
package com.cool.store.service;
import com.cool.store.dto.role.RoleUpdateDTO;
import com.cool.store.vo.role.RoleAuthInfoVO;
import com.cool.store.vo.role.RolePageVO;
import com.github.pagehelper.PageInfo;
/**
* @author zhangchenbiao
* @FileName: RoleService
* @Description:角色service
* @date 2023-07-25 15:05
*/
public interface RoleService {
/**
* 获取角色分页
* @param pageNum
* @param pageSize
* @return
*/
PageInfo<RolePageVO> getRolePage(Integer pageNum, Integer pageSize);
/**
* 获取角色权限详情
* @param roleId
* @return
*/
RoleAuthInfoVO getRoleAuthDetail(String roleId);
/**
* 更新角色权限
* @param userId
* @param param
* @return
*/
Integer updateRoleAuth(String userId, RoleUpdateDTO param);
}

View File

@@ -3,6 +3,7 @@ package com.cool.store.service.impl;
import com.cool.store.constants.CommonConstants; import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.SysMenuDAO; import com.cool.store.dao.SysMenuDAO;
import com.cool.store.dao.SysRoleMenuDAO; import com.cool.store.dao.SysRoleMenuDAO;
import com.cool.store.dto.menu.AddMenuDTO;
import com.cool.store.entity.SysMenuDO; import com.cool.store.entity.SysMenuDO;
import com.cool.store.entity.SysRoleMenuDO; import com.cool.store.entity.SysRoleMenuDO;
import com.cool.store.enums.MenuTypeEnum; import com.cool.store.enums.MenuTypeEnum;
@@ -10,7 +11,6 @@ import com.cool.store.enums.PlatFormTypeEnum;
import com.cool.store.service.MenuService; import com.cool.store.service.MenuService;
import com.cool.store.vo.menu.MenuTreeVO; import com.cool.store.vo.menu.MenuTreeVO;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -52,6 +52,17 @@ public class MenuServiceImpl implements MenuService {
return MenuTreeVO.dealMenuTree(CommonConstants.ZERO_LONG, menuList); return MenuTreeVO.dealMenuTree(CommonConstants.ZERO_LONG, menuList);
} }
@Override
public List<MenuTreeVO> getAllMenus() {
List<SysMenuDO> menuList= sysMenuDAO.selectMenuAll(null, PlatFormTypeEnum.PC.getCode());
return MenuTreeVO.dealMenuTree(CommonConstants.ZERO_LONG, menuList);
}
@Override
public Long addMenu(AddMenuDTO param, MenuTypeEnum menuType) {
return sysMenuDAO.addMenu(AddMenuDTO.convertDO(param, menuType));
}
private void getParentNode(Long menuId, Map<Long, Long> idMap, Set<Long> authMenuList) { private void getParentNode(Long menuId, Map<Long, Long> idMap, Set<Long> authMenuList) {
Long parentId = idMap.get(menuId); Long parentId = idMap.get(menuId);
authMenuList.add(parentId); authMenuList.add(parentId);

View File

@@ -0,0 +1,60 @@
package com.cool.store.service.impl;
import com.cool.store.dao.SysMenuDAO;
import com.cool.store.dao.SysRoleDAO;
import com.cool.store.dao.SysRoleMenuDAO;
import com.cool.store.dto.role.RoleUpdateDTO;
import com.cool.store.entity.SysRoleDO;
import com.cool.store.entity.SysRoleMenuDO;
import com.cool.store.enums.PlatFormTypeEnum;
import com.cool.store.service.RoleService;
import com.cool.store.vo.role.RoleAuthInfoVO;
import com.cool.store.vo.role.RolePageVO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* @author zhangchenbiao
* @FileName: RoleServiceImpl
* @Description:
* @date 2023-07-25 15:06
*/
@Service
public class RoleServiceImpl implements RoleService {
@Resource
private SysRoleDAO sysRoleDAO;
@Resource
private SysMenuDAO sysMenuDAO;
@Resource
private SysRoleMenuDAO sysRoleMenuDAO;
@Override
public PageInfo<RolePageVO> getRolePage(Integer pageNum, Integer pageSize) {
Page<SysRoleDO> page = sysRoleDAO.getRolePage(pageNum, pageSize);
PageInfo resultPage = new PageInfo(page);
List<RolePageVO> resultList = RolePageVO.convertList(page);
resultPage.setList(resultList);
return resultPage;
}
@Override
public RoleAuthInfoVO getRoleAuthDetail(String roleId) {
SysRoleDO roleDetail = sysRoleDAO.getRoleDetail(roleId);
if(Objects.isNull(roleDetail)){
return null;
}
List<SysRoleMenuDO> roleMenuAuths = sysRoleMenuDAO.getRoleMenuByRoleId(roleId, PlatFormTypeEnum.PC.getCode());
return RoleAuthInfoVO.convertVO(roleDetail, roleMenuAuths);
}
@Override
public Integer updateRoleAuth(String userId, RoleUpdateDTO param) {
return sysRoleMenuDAO.updateRoleAuth(param.getRoleId(), param.getMenuIds());
}
}

View File

@@ -1,9 +1,13 @@
package com.cool.store.controller; package com.cool.store.controller;
import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.CurrentUserHolder;
import com.cool.store.dto.menu.AddMenuDTO;
import com.cool.store.enums.MenuTypeEnum;
import com.cool.store.response.ResponseResult; import com.cool.store.response.ResponseResult;
import com.cool.store.service.MenuService; import com.cool.store.service.MenuService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -25,4 +29,19 @@ public class MenuController {
return ResponseResult.success(menuService.getUserMenus(CurrentUserHolder.getUserId(), CurrentUserHolder.getRoleId())); return ResponseResult.success(menuService.getUserMenus(CurrentUserHolder.getUserId(), CurrentUserHolder.getRoleId()));
} }
@GetMapping("/menu/getAllMenus")
public ResponseResult getAllMenus(){
return ResponseResult.success(menuService.getAllMenus());
}
@PostMapping(path = "/menu/add")
public ResponseResult addMenu(@RequestBody AddMenuDTO param){
return ResponseResult.success(menuService.addMenu(param, MenuTypeEnum.MENU));
}
@PostMapping(path = "/menu/auth/add")
public ResponseResult addMenuAuth(@RequestBody AddMenuDTO param){
return ResponseResult.success(menuService.addMenu(param, MenuTypeEnum.AUTH));
}
} }

View File

@@ -0,0 +1,49 @@
package com.cool.store.controller;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.dto.role.RoleUpdateDTO;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.RoleService;
import com.cool.store.vo.role.RoleAuthInfoVO;
import com.cool.store.vo.role.RolePageVO;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @author zhangchenbiao
* @FileName: RoleController
* @Description:
* @date 2023-07-25 14:58
*/
@RestController
@Slf4j
@Api(tags = "角色")
public class RoleController {
@Resource
private RoleService roleService;
@ApiOperation("角色列表")
@GetMapping("/role/page")
public ResponseResult<PageInfo<RolePageVO>> getRolePage(@RequestParam("pageNum")Integer pageNum, @RequestParam("pageSize")Integer pageSize){
return ResponseResult.success(roleService.getRolePage(pageNum, pageSize));
}
@ApiOperation("角色权限详情")
@GetMapping("/role/auth/detail")
public ResponseResult<RoleAuthInfoVO> getRoleAuthDetail(@RequestParam("roleId")String roleId){
return ResponseResult.success(roleService.getRoleAuthDetail(roleId));
}
@ApiOperation("角色更新")
@PostMapping("/role/auth/update")
public ResponseResult updateRoleAuth(@RequestBody RoleUpdateDTO param){
return ResponseResult.success(roleService.updateRoleAuth(CurrentUserHolder.getUserId(), param));
}
}