Merge branch 'dev/feat/partner1.1_20230727' into hxd/feat/interviewSelect
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,18 @@ 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);
|
||||||
|
insert.setPlatform(PlatFormTypeEnum.PC.getCode());
|
||||||
|
insertList.add(insert);
|
||||||
|
}
|
||||||
|
return sysRoleMenuMapper.batchInsert(insertList);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -22,6 +22,8 @@ public interface HyInspectionMapper {
|
|||||||
|
|
||||||
HyInspectionDO selectByPrimaryKey(Long id);
|
HyInspectionDO selectByPrimaryKey(Long id);
|
||||||
|
|
||||||
|
HyInspectionDO selectByInterviewPlanId(Long interviewPlanId);
|
||||||
|
|
||||||
int updateByPrimaryKeySelective(HyInspectionDO record);
|
int updateByPrimaryKeySelective(HyInspectionDO record);
|
||||||
|
|
||||||
int updateByPrimaryKey(HyInspectionDO record);
|
int updateByPrimaryKey(HyInspectionDO record);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
@@ -28,7 +28,18 @@
|
|||||||
<include refid="Base_Column_List" />
|
<include refid="Base_Column_List" />
|
||||||
from hy_inspection
|
from hy_inspection
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
|
and deleted = 0
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 使用 interviewPlanId 查询面试稽核信息 -->
|
||||||
|
<select id="selectByInterviewPlanId" resultType="com.cool.store.entity.HyInspectionDO">
|
||||||
|
select
|
||||||
|
<include refid="Base_Column_List" />
|
||||||
|
from hy_inspection
|
||||||
|
where interview_plan_id = #{interviewPlanId}
|
||||||
|
and deleted = 0
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="interviewInspectionGetList" resultType="com.cool.store.vo.interview.InterviewInspectionVO">
|
<select id="interviewInspectionGetList" resultType="com.cool.store.vo.interview.InterviewInspectionVO">
|
||||||
SELECT
|
SELECT
|
||||||
eu.`name` AS interviewerName,
|
eu.`name` AS interviewerName,
|
||||||
|
|||||||
@@ -579,7 +579,7 @@
|
|||||||
<select id="getFollowCountList" resultType="com.cool.store.dto.partner.LineCountDTO">
|
<select id="getFollowCountList" resultType="com.cool.store.dto.partner.LineCountDTO">
|
||||||
SELECT partner_id, IFNULL(COUNT(1), 0) AS followCount
|
SELECT partner_id, IFNULL(COUNT(1), 0) AS followCount
|
||||||
FROM hy_partner_line_info
|
FROM hy_partner_line_info
|
||||||
where (deleted = 1 or (deleted=0 and line_status=0 and close_time is not null and investment_manager is not null))
|
where (deleted = 1 or (deleted=0 and line_status in (0,3) and close_time is not null )) and investment_manager is not null
|
||||||
<if test="partnerIdList!=null and partnerIdList.size>0">
|
<if test="partnerIdList!=null and partnerIdList.size>0">
|
||||||
<foreach collection="partnerIdList" item="partnerId" open="and partner_id in (" close=")" separator=",">
|
<foreach collection="partnerIdList" item="partnerId" open="and partner_id in (" close=")" separator=",">
|
||||||
#{partnerId}
|
#{partnerId}
|
||||||
@@ -605,7 +605,7 @@
|
|||||||
<select id="getLineFollowHistoryList" resultMap="BaseResultMap">
|
<select id="getLineFollowHistoryList" resultMap="BaseResultMap">
|
||||||
SELECT <include refid="Base_Column_List"></include>
|
SELECT <include refid="Base_Column_List"></include>
|
||||||
FROM hy_partner_line_info
|
FROM hy_partner_line_info
|
||||||
where (deleted = 1 or (deleted=0 and line_status in (0,3) and close_time is not null and investment_manager is not null))
|
where (deleted = 1 or (deleted=0 and line_status in (0,3) and close_time is not null )) and investment_manager is not null
|
||||||
and partner_id = #{partner_id}
|
and partner_id = #{partner_id}
|
||||||
order by id desc
|
order by id desc
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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} and deleted = 0
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
@@ -10,7 +10,8 @@
|
|||||||
<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">
|
||||||
|
<foreach collection="recordList" item="record" separator=";">
|
||||||
insert into sys_role_menu
|
insert into sys_role_menu
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
<if test="record.menuId != null">
|
<if test="record.menuId != null">
|
||||||
@@ -34,6 +35,7 @@
|
|||||||
#{record.platform},
|
#{record.platform},
|
||||||
</if>
|
</if>
|
||||||
</trim>
|
</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>
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
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 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 sysMenuDO;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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(sysRole.getRoleName());
|
||||||
|
resultList.add(role);
|
||||||
|
}
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -217,6 +217,7 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
|
|||||||
hyPartnerUserInfoDO.setWantShopArea(request.getWantShopArea());
|
hyPartnerUserInfoDO.setWantShopArea(request.getWantShopArea());
|
||||||
hyPartnerUserInfoDO.setAcceptAdjustType(request.getAcceptAdjustType());
|
hyPartnerUserInfoDO.setAcceptAdjustType(request.getAcceptAdjustType());
|
||||||
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(hyPartnerUserInfoDO);
|
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(hyPartnerUserInfoDO);
|
||||||
|
}
|
||||||
// 更新线索状态和招商经理
|
// 更新线索状态和招商经理
|
||||||
//是公海线索 才会修改线索状态与招商经理
|
//是公海线索 才会修改线索状态与招商经理
|
||||||
if (LineStatusEnum.PUBLIC_SEAS.getCode().equals(hyPartnerLineInfoDO.getLineStatus())){
|
if (LineStatusEnum.PUBLIC_SEAS.getCode().equals(hyPartnerLineInfoDO.getLineStatus())){
|
||||||
@@ -233,7 +234,6 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
|
|||||||
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.ALLOCATION_INVESTMENT_MANAGER,userIdList,DateUtil.formatDateTime(new Date()),hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile());
|
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.ALLOCATION_INVESTMENT_MANAGER,userIdList,DateUtil.formatDateTime(new Date()),hyPartnerUserInfoDO.getUsername(),hyPartnerUserInfoDO.getMobile());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if(!isUpdateIntentInfo){
|
if(!isUpdateIntentInfo){
|
||||||
if(CollectionUtils.isEmpty(userIdList)){
|
if(CollectionUtils.isEmpty(userIdList)){
|
||||||
userIdList.add(hyPartnerLineInfoDO.getInvestmentManager());
|
userIdList.add(hyPartnerLineInfoDO.getInvestmentManager());
|
||||||
|
|||||||
@@ -315,17 +315,10 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|||||||
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
|
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
|
||||||
|
|
||||||
|
|
||||||
List<HyPartnerLineInfoDO> lineFollowHistoryList = hyPartnerLineInfoDAO.getLineFollowHistoryList(hyPartnerLineInfo.getPartnerId());
|
|
||||||
HyPartnerLineInfoDO newHyPartnerLineInfoDO = new HyPartnerLineInfoDO();
|
HyPartnerLineInfoDO newHyPartnerLineInfoDO = new HyPartnerLineInfoDO();
|
||||||
newHyPartnerLineInfoDO.setPartnerId(hyPartnerLineInfo.getPartnerId());
|
newHyPartnerLineInfoDO.setPartnerId(hyPartnerLineInfo.getPartnerId());
|
||||||
newHyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
|
newHyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
|
||||||
newHyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
|
newHyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
|
||||||
log.info("lineFollowHistoryList_1:{}",JSONObject.toJSONString(lineFollowHistoryList));
|
|
||||||
if (CollectionUtils.isNotEmpty(lineFollowHistoryList)){
|
|
||||||
String investmentManager = lineFollowHistoryList.get(0).getInvestmentManager();
|
|
||||||
newHyPartnerLineInfoDO.setInvestmentManager(investmentManager);
|
|
||||||
status = LineStatusEnum.PRIVATE_SEAS.getCode();
|
|
||||||
}
|
|
||||||
newHyPartnerLineInfoDO.setLineStatus(status);
|
newHyPartnerLineInfoDO.setLineStatus(status);
|
||||||
hyPartnerLineInfoDAO.insertSelective(newHyPartnerLineInfoDO);
|
hyPartnerLineInfoDAO.insertSelective(newHyPartnerLineInfoDO);
|
||||||
|
|
||||||
@@ -577,6 +570,12 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
|||||||
@Override
|
@Override
|
||||||
public Boolean assignFollowUser(String partnerId, String wantShopArea, Integer acceptAdjustType) {
|
public Boolean assignFollowUser(String partnerId, String wantShopArea, Integer acceptAdjustType) {
|
||||||
log.info("assignFollowUser partnerId:{},wantShopArea:{},acceptAdjustType:{}",partnerId,wantShopArea,acceptAdjustType);
|
log.info("assignFollowUser partnerId:{},wantShopArea:{},acceptAdjustType:{}",partnerId,wantShopArea,acceptAdjustType);
|
||||||
|
|
||||||
|
List<HyPartnerLineInfoDO> lineFollowHistoryList = hyPartnerLineInfoDAO.getLineFollowHistoryList(partnerId);
|
||||||
|
//如果跟进次数大于1 直接使用上一次的招商经理
|
||||||
|
if (CollectionUtils.isNotEmpty(lineFollowHistoryList)){
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
//当前加盟商线索
|
//当前加盟商线索
|
||||||
HyPartnerLineInfoDO HyPartnerLineInfo = hyPartnerLineInfoDAO.getByPartnerId(partnerId);
|
HyPartnerLineInfoDO HyPartnerLineInfo = hyPartnerLineInfoDAO.getByPartnerId(partnerId);
|
||||||
//如果意向区域没有绑定战区 不分配招商经理
|
//如果意向区域没有绑定战区 不分配招商经理
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,11 +8,13 @@ import com.cool.store.dto.calendar.DeleteCalendarEventDTO;
|
|||||||
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
|
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
|
||||||
import com.cool.store.dto.log.ReInterviewDTO;
|
import com.cool.store.dto.log.ReInterviewDTO;
|
||||||
import com.cool.store.dto.log.RejectInterviewDTO;
|
import com.cool.store.dto.log.RejectInterviewDTO;
|
||||||
|
import com.cool.store.entity.HyInspectionDO;
|
||||||
import com.cool.store.entity.HyPartnerInterviewDO;
|
import com.cool.store.entity.HyPartnerInterviewDO;
|
||||||
import com.cool.store.enums.*;
|
import com.cool.store.enums.*;
|
||||||
import com.cool.store.exception.ApiException;
|
import com.cool.store.exception.ApiException;
|
||||||
import com.cool.store.exception.ServiceException;
|
import com.cool.store.exception.ServiceException;
|
||||||
import com.cool.store.http.ISVHttpRequest;
|
import com.cool.store.http.ISVHttpRequest;
|
||||||
|
import com.cool.store.mapper.HyInspectionMapper;
|
||||||
import com.cool.store.mapper.HyPartnerInterviewMapper;
|
import com.cool.store.mapper.HyPartnerInterviewMapper;
|
||||||
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
|
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
|
||||||
import com.cool.store.request.CloseFollowRequest;
|
import com.cool.store.request.CloseFollowRequest;
|
||||||
@@ -48,6 +50,9 @@ public class InterviewWorkFlowService extends WorkFlowBaseService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private HyPartnerInterviewPlanMapper hyPartnerInterviewPlanMapper;
|
private HyPartnerInterviewPlanMapper hyPartnerInterviewPlanMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private HyInspectionMapper inspectionMapper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private InterviewService interviewService;
|
private InterviewService interviewService;
|
||||||
|
|
||||||
@@ -85,6 +90,13 @@ public class InterviewWorkFlowService extends WorkFlowBaseService {
|
|||||||
if(userCalendarsEventDTO == null ){
|
if(userCalendarsEventDTO == null ){
|
||||||
throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR);
|
throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR);
|
||||||
}
|
}
|
||||||
|
} else if (Integer.parseInt(WorkflowStatusEnum.INTERVIEW_6.getCode()) == interviewBaseInfo.getStatus()) {
|
||||||
|
//删除稽核信息
|
||||||
|
HyInspectionDO rawHyInspection = inspectionMapper.selectByInterviewPlanId(interviewBaseInfo.getInterviewPlanId());
|
||||||
|
HyInspectionDO hyInspection = new HyInspectionDO();
|
||||||
|
hyInspection.setId(rawHyInspection.getId());
|
||||||
|
hyInspection.setDeleted(Boolean.TRUE);
|
||||||
|
inspectionMapper.updateByPrimaryKeySelective(hyInspection);
|
||||||
}
|
}
|
||||||
interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null);
|
interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null);
|
||||||
//记录日志
|
//记录日志
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class Swagger2Config {
|
|||||||
.groupName(groupName)
|
.groupName(groupName)
|
||||||
.select()
|
.select()
|
||||||
.apis(this.scanBasePackage(packages))
|
.apis(this.scanBasePackage(packages))
|
||||||
//.paths(PathSelectors.regex(".*/inspection/setting/.*|.*getRegionUserAndSubRegion"))
|
.paths(PathSelectors.regex(".*/menu/getAllMenus|.*/menu/add|.*/menu/auth/add|.*/role.*"))
|
||||||
.build()
|
.build()
|
||||||
.globalOperationParameters(pars);
|
.globalOperationParameters(pars);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
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 io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
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;
|
||||||
@@ -15,14 +22,35 @@ import javax.annotation.Resource;
|
|||||||
* @date 2023-06-08 16:58
|
* @date 2023-06-08 16:58
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags = "菜单")
|
||||||
public class MenuController {
|
public class MenuController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MenuService menuService;
|
private MenuService menuService;
|
||||||
|
|
||||||
|
@ApiOperation("获取用户权限菜单")
|
||||||
@GetMapping("/menu/getUserMenus")
|
@GetMapping("/menu/getUserMenus")
|
||||||
public ResponseResult getUserMenus(){
|
public ResponseResult getUserMenus(){
|
||||||
return ResponseResult.success(menuService.getUserMenus(CurrentUserHolder.getUserId(), CurrentUserHolder.getRoleId()));
|
return ResponseResult.success(menuService.getUserMenus(CurrentUserHolder.getUserId(), CurrentUserHolder.getRoleId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("获取所有菜单")
|
||||||
|
@GetMapping("/menu/getAllMenus")
|
||||||
|
public ResponseResult getAllMenus(){
|
||||||
|
return ResponseResult.success(menuService.getAllMenus());
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("新增菜单")
|
||||||
|
@PostMapping(path = "/menu/add")
|
||||||
|
public ResponseResult addMenu(@RequestBody AddMenuDTO param){
|
||||||
|
return ResponseResult.success(menuService.addMenu(param, MenuTypeEnum.MENU));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("新增权限")
|
||||||
|
@PostMapping(path = "/menu/auth/add")
|
||||||
|
public ResponseResult addMenuAuth(@RequestBody AddMenuDTO param){
|
||||||
|
return ResponseResult.success(menuService.addMenu(param, MenuTypeEnum.AUTH));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user