14 changed files with 588 additions and 6 deletions
@ -0,0 +1,31 @@ |
|||
package com.ccsens.common.api; |
|||
|
|||
import com.ccsens.util.JsonResponse; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiImplicitParams; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import io.swagger.annotations.ApiParam; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RequestMethod; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import javax.servlet.http.HttpServletRequest; |
|||
|
|||
@Slf4j |
|||
@Api(tags = "插件相关", description = "") |
|||
@RestController |
|||
@RequestMapping("/plugins") |
|||
public class PluginController { |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
} |
@ -0,0 +1,48 @@ |
|||
package com.ccsens.common.api; |
|||
|
|||
import com.ccsens.cloudutil.annotation.MustLogin; |
|||
import com.ccsens.common.bean.dto.RoleDto; |
|||
import com.ccsens.common.bean.vo.RoleVo; |
|||
import com.ccsens.common.service.IProRoleService; |
|||
import com.ccsens.util.JsonResponse; |
|||
import com.ccsens.util.WebConstant; |
|||
import com.ccsens.util.bean.dto.QueryDto; |
|||
import io.jsonwebtoken.Claims; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiImplicitParams; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import io.swagger.annotations.ApiParam; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RequestMethod; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import javax.annotation.Resource; |
|||
import javax.servlet.http.HttpServletRequest; |
|||
import java.util.List; |
|||
|
|||
@Api(tags = "角色操作相关api" ) |
|||
@RestController |
|||
@RequestMapping("/roles") |
|||
@Slf4j |
|||
public class RoleController { |
|||
|
|||
@Resource |
|||
private IProRoleService proRoleService; |
|||
|
|||
//@MustLogin
|
|||
@ApiOperation(value = "查询角色栏展示的角色",notes = "") |
|||
@ApiImplicitParams({ |
|||
}) |
|||
@RequestMapping(value = "/QueryShowRole", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
|||
public JsonResponse<RoleVo.QueryRole> queryByProjectVirtualRole( |
|||
@ApiParam @Validated @RequestBody QueryDto<RoleDto.QueryRole> params) throws Exception { |
|||
log.info("查询角色栏展示的角色:{}",params); |
|||
params.setUserId(1373938255183089664L); |
|||
RoleVo.QueryRole list = proRoleService.QueryShowRole(params.getParam(),params.getUserId()); |
|||
log.info("查询角色栏展示的角色成功"); |
|||
return JsonResponse.newInstance().ok(list); |
|||
} |
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.ccsens.common.bean.dto; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import java.util.List; |
|||
|
|||
@Data |
|||
public class RoleDto { |
|||
@Data |
|||
@ApiModel("查看角色栏展示") |
|||
public static class QueryRole{ |
|||
@NotNull(message = "项目id不能为空") |
|||
@ApiModelProperty("项目id") |
|||
private Long projectId; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("查看永久日常任务") |
|||
public static class UpdateRoleShow{ |
|||
@NotNull(message = "项目id不能为空") |
|||
@ApiModelProperty("项目id") |
|||
private Long projectId; |
|||
@ApiModelProperty("角色id") |
|||
private List<Long> roleIds; |
|||
} |
|||
} |
@ -0,0 +1,37 @@ |
|||
package com.ccsens.common.bean.vo; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
@Data |
|||
public class RoleVo { |
|||
@Data |
|||
@ApiModel("查看定期任务返回值") |
|||
public static class QueryRole { |
|||
@ApiModelProperty("展示的角色信息") |
|||
private List<RoleInfo> visibleList; |
|||
@ApiModelProperty("不展示的角色信息") |
|||
private List<RoleInfo> invisibleList; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("查看定期任务返回值") |
|||
public static class RoleInfo { |
|||
@ApiModelProperty("角色id") |
|||
private Long id; |
|||
@ApiModelProperty("是否是项目经理 0否 1是") |
|||
private Long pm; |
|||
@ApiModelProperty("是否是自己所属的角色 0否 1是") |
|||
private Long mine; |
|||
@ApiModelProperty("角色名") |
|||
private String name; |
|||
@ApiModelProperty("排序") |
|||
private Long sequence; |
|||
} |
|||
} |
@ -0,0 +1,13 @@ |
|||
package com.ccsens.common.persist.dao; |
|||
|
|||
import com.ccsens.common.persist.mapper.ProRoleMapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
@Repository |
|||
public interface LabelDao extends ProRoleMapper { |
|||
|
|||
|
|||
String queryIsPm(Long labelId); |
|||
|
|||
} |
@ -0,0 +1,9 @@ |
|||
package com.ccsens.common.persist.dao; |
|||
|
|||
import com.ccsens.common.persist.mapper.ProRoleMapper; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
@Repository |
|||
public interface ProRoleDao extends ProRoleMapper { |
|||
|
|||
} |
@ -0,0 +1,9 @@ |
|||
package com.ccsens.common.service; |
|||
|
|||
import com.ccsens.common.bean.dto.RoleDto; |
|||
import com.ccsens.common.bean.vo.RoleVo; |
|||
|
|||
public interface IProRoleService { |
|||
|
|||
RoleVo.QueryRole QueryShowRole(RoleDto.QueryRole param, Long userId); |
|||
} |
@ -0,0 +1,283 @@ |
|||
package com.ccsens.common.service; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import com.ccsens.common.bean.dto.RoleDto; |
|||
import com.ccsens.common.bean.po.*; |
|||
import com.ccsens.common.bean.vo.RoleVo; |
|||
import com.ccsens.common.persist.dao.LabelDao; |
|||
import com.ccsens.common.persist.dao.ProRoleDao; |
|||
import com.ccsens.common.persist.mapper.*; |
|||
import com.ccsens.util.WebConstant; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Propagation; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
@Slf4j |
|||
@Service |
|||
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
|||
public class ProRoleService implements IProRoleService { |
|||
@Resource |
|||
private ProRoleMapper proRoleMapper; |
|||
@Resource |
|||
private ProRoleDao proRoleDao; |
|||
@Resource |
|||
private ProMemberMapper proMemberMapper; |
|||
@Resource |
|||
private ProRoleMemberMapper proRoleMemberMapper; |
|||
@Resource |
|||
private ProRoleRepulsionMapper proRoleRepulsionMapper; |
|||
@Resource |
|||
private ProRoleShowMapper ProRoleShowMapper; |
|||
@Resource |
|||
private LabelMapper labelMapper; |
|||
@Resource |
|||
private LabelDao labelDao; |
|||
|
|||
|
|||
@Override |
|||
public RoleVo.QueryRole QueryShowRole(RoleDto.QueryRole param, Long userId) { |
|||
RoleVo.QueryRole role = new RoleVo.QueryRole(); |
|||
//角色显示的角色
|
|||
List<RoleVo.RoleInfo> visibleList = new ArrayList<>(); |
|||
RoleVo.RoleInfo RoleInfo = new RoleVo.RoleInfo(); |
|||
//不显示的角色
|
|||
List<RoleVo.RoleInfo> invisibleList = new ArrayList<>(); |
|||
//查询当前用户所属的角色的list
|
|||
List<Long> roleIds = null; |
|||
//对自己不可见的角色的list
|
|||
List<Long> roleIds1 = null; |
|||
//判断是否是关注者 用户不是项目下的成员 并且 用户是成员但不属于任何角色 就是关注者
|
|||
// 判断用户是成员但是不属于任何角色 在成员表下查询到 成员信息
|
|||
ProMemberExample proMemberExample = new ProMemberExample(); |
|||
proMemberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(param.getProjectId()); |
|||
List<ProMember> proMembers = proMemberMapper.selectByExample(proMemberExample); //默认一个
|
|||
//判断用户是不是项目下的成员
|
|||
List<ProRole> proRoles = null; |
|||
//排序后的
|
|||
List<ProRole> proRoles1 = null; |
|||
if (ObjectUtil.isNotNull(proMembers)) { |
|||
//判断用户是成员是不是有角色 通过成员id来判断
|
|||
ProRoleMemberExample proRoleMemberExample = new ProRoleMemberExample(); |
|||
proRoleMemberExample.createCriteria().andMemberIdEqualTo(proMembers.get(0).getId()); |
|||
List<ProRoleMember> proRoleMembers = proRoleMemberMapper.selectByExample(proRoleMemberExample); |
|||
if (ObjectUtil.isNotNull(proRoleMembers)) { |
|||
//用户不是关注者 否 不是才是关注者
|
|||
//用户有角色 角色是那个 查询当前用户所属的角色
|
|||
Long roleId1 = 0L; |
|||
//List<Long> roleIds =null; //查询当前用户所属的角色
|
|||
for (ProRoleMember proRoleMember : proRoleMembers) { |
|||
Long roleId = proRoleMember.getRoleId();//查询当前用户所属的角色
|
|||
roleIds.add(roleId); |
|||
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
|||
proRoleRepulsionExample.createCriteria().andRoleIdEqualTo(roleId); |
|||
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
|||
for (ProRoleRepulsion proRoleRepulsion : proRoleRepulsions) { |
|||
roleId1 = proRoleRepulsion.getRoleId();//对自己不可见的角色
|
|||
roleIds1.add(roleId1); |
|||
} |
|||
} |
|||
//查询项目下的所有角色 去除不可见角色 通过项目id查找角色id
|
|||
ProRoleExample proRoleExample = new ProRoleExample(); |
|||
proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); |
|||
proRoles = proRoleMapper.selectByExample(proRoleExample); |
|||
//在一个集合里面 去除另外一个集合 1 2 3 1 2
|
|||
for (ProRole proRole : proRoles) { |
|||
for (int i = 0; i < roleIds1.size(); i++) { |
|||
if (proRole.getId().equals(roleIds1.get(i))) { |
|||
proRoles.remove(proRole); |
|||
} |
|||
} |
|||
} |
|||
//进行排序 把项目经理拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
String PM = labelDao.queryIsPm(proRoles.get(i).getLabelId()); |
|||
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|||
ProRole proRole = proRoles.get(i); |
|||
proRoles1.add(proRole); |
|||
proRoles.remove(proRole); //把项目经理角色拿出去
|
|||
} |
|||
} |
|||
//进行排序 把我的角色拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
proRoles1.add(proRoles.get(i)); |
|||
proRoles.remove(proRoles.get(i)); //把我的角色拿出去
|
|||
} |
|||
} |
|||
} |
|||
//进行排序 把其他角色拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
proRoles1.add(proRoles.get(i)); |
|||
} |
|||
|
|||
} |
|||
} else { //用户是关注者 是 查询所有 未设置对谁不可见信息 的角色 通过角色id去查找 role_id
|
|||
ProRoleExample proRoleExample = new ProRoleExample(); |
|||
proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); |
|||
proRoles = proRoleMapper.selectByExample(proRoleExample); |
|||
if (ObjectUtil.isNotNull(proRoles)) { |
|||
for (ProRole proRole : proRoles) { |
|||
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
|||
proRoleRepulsionExample.createCriteria().andRoleIdEqualTo(proRole.getId()); |
|||
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
|||
if (ObjectUtil.isNotNull(proRoleRepulsions)) { |
|||
//查到就是设置过了 移除
|
|||
proRoles.remove(proRole); |
|||
} |
|||
} |
|||
|
|||
//进行排序 把项目经理拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
String PM = labelDao.queryIsPm(proRoles.get(i).getLabelId()); |
|||
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|||
ProRole proRole = proRoles.get(i); |
|||
proRoles1.add(proRole); |
|||
proRoles.remove(proRole); //把项目经理角色拿出去
|
|||
} |
|||
} |
|||
//进行排序 把我的角色拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
proRoles1.add(proRoles.get(i)); |
|||
proRoles.remove(proRoles.get(i)); //把我的角色拿出去
|
|||
} |
|||
} |
|||
} |
|||
//进行排序 把其他角色拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
proRoles1.add(proRoles.get(i)); |
|||
} |
|||
|
|||
} |
|||
} |
|||
//根据项目id和userId查询当前用户配置的角色栏信息
|
|||
ProRoleShowExample proRoleShowExample = new ProRoleShowExample(); |
|||
proRoleShowExample.createCriteria().andProjectIdEqualTo(param.getProjectId()).andUserIdEqualTo(userId); |
|||
List<ProRoleShow> proRoleShows = ProRoleShowMapper.selectByExample(proRoleShowExample); |
|||
//循环所有的角色,判断是否在配置信息内 将角色信息放入“显示角色”的数组内 将角色放入“隐藏角色"数组
|
|||
if (ObjectUtil.isNotNull(proRoleShows)) { |
|||
for (int i = 0; i < proRoles1.size(); i++) { |
|||
ProRoleShowExample proRoleShowExample1 = new ProRoleShowExample(); |
|||
proRoleShowExample.createCriteria().andRoleIdEqualTo(proRoles1.get(i).getId()); |
|||
List<ProRoleShow> proRoleShows1 = ProRoleShowMapper.selectByExample(proRoleShowExample1); |
|||
if (ObjectUtil.isNotNull(proRoleShows1)) { |
|||
//配置过了 将角色信总放入“显示角色"的数组内
|
|||
RoleInfo.setId(proRoles1.get(i).getId()); |
|||
RoleInfo.setName(proRoles1.get(i).getName()); |
|||
//是否是pm 0否 1 是 //通过标签来定义 5 和 2 34是
|
|||
//通过角色表里面的标签id 去 标签表查询 label_type_id =5 在去标签类型表查5 和 level =2
|
|||
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|||
if (StrUtil.isNotEmpty(PM)) { //是
|
|||
RoleInfo.setPm(1L); |
|||
} else { |
|||
RoleInfo.setPm(0L); |
|||
} |
|||
|
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles1.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
RoleInfo.setMine(1L); |
|||
} else { |
|||
RoleInfo.setMine(0L); |
|||
} |
|||
} |
|||
//排序
|
|||
RoleInfo.setSequence(Long.valueOf(proRoleShows1.get(0).getSequence())); |
|||
visibleList.add(RoleInfo); |
|||
|
|||
} else { |
|||
//未配置过了
|
|||
RoleInfo.setId(proRoles1.get(i).getId()); |
|||
RoleInfo.setName(proRoles1.get(i).getName()); |
|||
//是否是pm
|
|||
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|||
if (StrUtil.isNotEmpty(PM)) { //是
|
|||
RoleInfo.setPm(1L); |
|||
} else { |
|||
RoleInfo.setPm(0L); |
|||
} |
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles1.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
RoleInfo.setMine(1L); |
|||
} else { |
|||
RoleInfo.setMine(0L); |
|||
} |
|||
} |
|||
//排序
|
|||
RoleInfo.setSequence((long) i); |
|||
invisibleList.add(RoleInfo); |
|||
} |
|||
} |
|||
} else { |
|||
//循环查询到的角色,放入“显示角色”的数组内 数组长度大于等于5
|
|||
for (int i = 0; i < 5; i++) { |
|||
RoleInfo.setId(proRoles1.get(i).getId()); |
|||
RoleInfo.setName(proRoles1.get(i).getName()); |
|||
//是否是pm
|
|||
Long index = proRoles1.get(i).getLabelId()+1; |
|||
String PM = labelDao.queryIsPm(index); |
|||
if (StrUtil.isNotEmpty(PM)) { //是
|
|||
RoleInfo.setPm(1L); |
|||
} else { |
|||
RoleInfo.setPm(0L); |
|||
} |
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles1.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
RoleInfo.setMine(1L); |
|||
} else { |
|||
RoleInfo.setMine(0L); |
|||
} |
|||
} |
|||
//排序
|
|||
RoleInfo.setSequence((long) i); |
|||
visibleList.add(RoleInfo); |
|||
} |
|||
if (proRoles1.size() >= 6) { |
|||
//将剩下的角色放入“隐藏角色”数组
|
|||
for (int i = 5; i < proRoles1.size(); i++) { |
|||
RoleInfo.setId(proRoles1.get(i).getId()); |
|||
RoleInfo.setName(proRoles1.get(i).getName()); |
|||
//是否是pm
|
|||
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|||
if (StrUtil.isNotEmpty(PM)) { //是
|
|||
RoleInfo.setPm(1L); |
|||
} else { |
|||
RoleInfo.setPm(0L); |
|||
} |
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles1.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
RoleInfo.setMine(1L); |
|||
} else { |
|||
RoleInfo.setMine(0L); |
|||
} |
|||
} |
|||
//排序
|
|||
RoleInfo.setSequence((long) (i-5)); //6-5
|
|||
invisibleList.add(RoleInfo); |
|||
} |
|||
} |
|||
} |
|||
role.setInvisibleList(invisibleList); |
|||
role.setVisibleList(visibleList); |
|||
return role; |
|||
} |
|||
} |
@ -0,0 +1,19 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.LabelDao"> |
|||
|
|||
<select id="queryIsPm" resultType="String"> |
|||
select t_label.description |
|||
from t_label,t_label_type |
|||
where t_label.id=#{labelId} |
|||
and t_label.`level` = 2 |
|||
and t_label.label_type_id=t_label_type.id |
|||
</select> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</mapper> |
@ -0,0 +1,16 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProRoleDao"> |
|||
|
|||
<select id="" parameterType="java.util.Map" |
|||
resultType="Long"> |
|||
|
|||
</select> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</mapper> |
Loading…
Reference in new issue