Commit a0380bea authored by fangxinjiang's avatar fangxinjiang

B端服务添加

parent 97201675
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* b端用户客户关系表
*
* @author pwang
* @date 2020-08-26 12:00:12
*/
@Data
@TableName("m_setttle_customer_user")
@Tag(name = "b端用户客户关系表")
public class MSetttleCustomerUser {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键", name = "id")
private String id;
/**
* 客户id
*/
@NotBlank(message = "客户id不能为空")
@Length(max = 32, message = "客户id不能超过32个字符")
@ExcelAttribute(name = "客户id", isNotEmpty = true, errorInfo = "客户id不能为空", maxLength = 32)
@Schema(description = "客户id", name = "customerId")
private String customerId;
/**
* 结算主体id
*/
@NotBlank(message = "结算主体id不能为空")
@Length(max = 32, message = "结算主体id不能超过32个字符")
@ExcelAttribute(name = "结算主体id", isNotEmpty = true, errorInfo = "结算主体id不能为空", maxLength = 32)
@Schema(description = "结算主体id", name = "settleId")
private String settleId;
/**
* 用户id
*/
@NotBlank(message = "用户id不能为空")
@Length(max = 32, message = "用户id不能超过32个字符")
@ExcelAttribute(name = "用户id", isNotEmpty = true, errorInfo = "用户id不能为空", maxLength = 32)
@Schema(description = "用户id", name = "userId")
private String userId;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.MSetttleCustomerUser;
import lombok.Data;
/**
* @Author fxj
* @Description 用户客户关系包装类
* @Date 16:32 2022/12/27
* @Param
* @return
**/
@Data
public class MSetttleCustomerUserVo extends MSetttleCustomerUser {
/**
* 客户名称
**/
private String customerName;
}
package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.entity.MSetttleCustomerUser;
import com.yifu.cloud.plus.v1.yifu.archives.service.MSetttleCustomerUserService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
* @Author fxj
* @Description b端用户客户关系表
* @Date 16:24 2022/12/27
* @Param
* @return
**/
@RestController
@AllArgsConstructor
@RequestMapping("/msetttlecustomeruser")
@Tag(name = "b端用户客户关系表")
public class MSetttleCustomerUserController {
private final MSetttleCustomerUserService mSetttleCustomerUserService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param mSetttleCustomerUser b端用户客户关系表
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<MSetttleCustomerUser>> getMSetttleCustomerUserPage(Page<MSetttleCustomerUser> page, MSetttleCustomerUser mSetttleCustomerUser) {
return new R<>(mSetttleCustomerUserService.getMSetttleCustomerUserPage(page, mSetttleCustomerUser));
}
/**
* 通过id查询单条记录
*
* @param id
* @return R
*/
@Operation(description = "id查询")
@GetMapping("/{id}")
public R<MSetttleCustomerUser> getById(@PathVariable("id") String id) {
return new R<>(mSetttleCustomerUserService.getById(id));
}
/**
* 新增记录
*
* @param mSetttleCustomerUser
* @return R
*/
@Operation(description = "新增(wxhr:msetttlecustomeruser_add)")
@PostMapping
@PreAuthorize("@pms.hasPermission('wxhr:msetttlecustomeruser_add')")
public R<Boolean> save(@Valid @RequestBody MSetttleCustomerUser mSetttleCustomerUser) {
return new R<>(mSetttleCustomerUserService.save(mSetttleCustomerUser));
}
/**
* 修改记录
*
* @param mSetttleCustomerUser
* @return R
*/
@Operation(description = "修改(wxhr:msetttlecustomeruser_edit)")
@SysLog("修改b端用户客户关系表")
@PutMapping
@PreAuthorize("@pms.hasPermission('wxhr:msetttlecustomeruser_edit')")
public R<Boolean> update(@RequestBody MSetttleCustomerUser mSetttleCustomerUser) {
return new R<>(mSetttleCustomerUserService.updateById(mSetttleCustomerUser));
}
/**
* 通过id删除一条记录
*
* @param id
* @return R
*/
@Operation(description = "删除(wxhr:msetttlecustomeruser_del)")
@SysLog("删除b端用户客户关系表")
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('wxhr:msetttlecustomeruser_del')")
public R<Boolean> removeById(@PathVariable String id) {
return new R<>(mSetttleCustomerUserService.removeById(id));
}
/**
* 远程接口获取客户用户关系
*/
@Inner
@PostMapping("/inner/getCustomerUserMap")
public Map<String,String> getCustomerUserMap(@RequestBody List<Integer> userIdList) {
return mSetttleCustomerUserService.getCustomerUser(userIdList);
}
/**
* 远程接口获取客户关系数
*/
@Inner
@GetMapping("/inner/getCustomerCount")
public Integer getCustomerCount() {
return mSetttleCustomerUserService.getCustomerCount();
}
}
package com.yifu.cloud.plus.v1.yifu.archives.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.entity.MSetttleCustomerUser;
import com.yifu.cloud.plus.v1.yifu.archives.vo.MSetttleCustomerUserVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* b端用户客户关系表
*
* @author pwang
* @date 2020-08-26 12:00:12
*/
public interface MSetttleCustomerUserMapper extends BaseMapper<MSetttleCustomerUser> {
/**
* b端用户客户关系表简单分页查询
*
* @param mSetttleCustomerUser b端用户客户关系表
* @return
*/
IPage<MSetttleCustomerUser> getMSetttleCustomerUserPage(Page<MSetttleCustomerUser> page, @Param("mSetttleCustomerUser") MSetttleCustomerUser mSetttleCustomerUser);
List<MSetttleCustomerUserVo> getCustomerUser(@Param("userIdList")List<Integer> userIdList);
Integer getCustomerCount();
}
package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.MSetttleCustomerUser;
import java.util.List;
import java.util.Map;
/**
* @Author fxj
* @Description b端用户客户关系表
* @Date 16:34 2022/12/27
* @Param
* @return
**/
public interface MSetttleCustomerUserService extends IService<MSetttleCustomerUser> {
/**
* b端用户客户关系表简单分页查询
*
* @param mSetttleCustomerUser b端用户客户关系表
* @return
*/
IPage<MSetttleCustomerUser> getMSetttleCustomerUserPage(Page<MSetttleCustomerUser> page, MSetttleCustomerUser mSetttleCustomerUser);
Map<String,String> getCustomerUser(List<Integer> userIdList);
Integer getCustomerCount();
}
package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.MSetttleCustomerUser;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.MSetttleCustomerUserMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.MSetttleCustomerUserService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.MSetttleCustomerUserVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author fxj
* @Description b端用户客户关系表
* @Date 16:33 2022/12/27
* @Param
* @return
**/
@Service
public class MSetttleCustomerUserServiceImpl extends ServiceImpl<MSetttleCustomerUserMapper, MSetttleCustomerUser> implements MSetttleCustomerUserService {
/**
* b端用户客户关系表简单分页查询
*
* @param mSetttleCustomerUser b端用户客户关系表
* @return
*/
@Override
public IPage<MSetttleCustomerUser> getMSetttleCustomerUserPage(Page<MSetttleCustomerUser> page, MSetttleCustomerUser mSetttleCustomerUser) {
return baseMapper.getMSetttleCustomerUserPage(page, mSetttleCustomerUser);
}
@Override
public Map<String, String> getCustomerUser(List<Integer> userIdList) {
Map<String,String> map = new HashMap<>();
List<MSetttleCustomerUserVo> list = baseMapper.getCustomerUser(userIdList);
if(Common.isNotNull(list)){
for(MSetttleCustomerUserVo vo :list){
map.put(vo.getUserId(),vo.getCustomerName());
}
}
return map;
}
@Override
public Integer getCustomerCount() {
return baseMapper.getCustomerCount();
}
}
<?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.yifu.cloud.plus.v1.yifu.archives.mapper.MSetttleCustomerUserMapper">
<resultMap id="mSetttleCustomerUserMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.MSetttleCustomerUser">
<id property="id" column="id"/>
<result property="customerId" column="customer_id"/>
<result property="settleId" column="settle_id"/>
<result property="userId" column="user_id"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.customer_id,
a.settle_id,
a.user_id
</sql>
<sql id="mSetttleCustomerUser_where">
<if test="mSetttleCustomerUser != null">
<if test="mSetttleCustomerUser.id != null and mSetttleCustomerUser.id.trim() != ''">
AND a.id = #{mSetttleCustomerUser.id}
</if>
<if test="mSetttleCustomerUser.customerId != null and mSetttleCustomerUser.customerId.trim() != ''">
AND a.customer_id = #{mSetttleCustomerUser.customerId}
</if>
<if test="mSetttleCustomerUser.settleId != null and mSetttleCustomerUser.settleId.trim() != ''">
AND a.settle_id = #{mSetttleCustomerUser.settleId}
</if>
<if test="mSetttleCustomerUser.userId != null and mSetttleCustomerUser.userId.trim() != ''">
AND a.user_id = #{mSetttleCustomerUser.userId}
</if>
</if>
</sql>
<!--mSetttleCustomerUser简单分页查询-->
<select id="getMSetttleCustomerUserPage" resultMap="mSetttleCustomerUserMap">
SELECT
<include refid="Base_Column_List"/>
FROM m_setttle_customer_user a
<where>
1=1
<include refid="mSetttleCustomerUser_where"/>
</where>
</select>
<select id="getCustomerUser" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.MSetttleCustomerUserVo">
select a.user_id,GROUP_CONCAT(DISTINCT b.CUSTOMER_NAME) as CUSTOMER_NAME from m_setttle_customer_user a
left join t_customer_info b on a.customer_id = b.id
where a.user_id in
<foreach item="item" index="index" collection="userIdList" open="(" separator="," close=")">
'${item}'
</foreach>
GROUP BY a.user_id
</select>
<select id="getCustomerCount" resultType="java.lang.Integer">
SELECT count(DISTINCT customer_id) from m_setttle_customer_user a ;
</select>
</mapper>
......@@ -507,4 +507,9 @@ public interface CommonConstants {
public static final String A_CREATE_BY = "a.CREATE_BY";
String SETTLE_DOMAIN_GET_ERROR = "获取结算主体信息失败!";
/**
* b端机构节点
* @Author fxj
**/
public static final long HR_B_ORG_ID = 295;
}
......@@ -45,4 +45,9 @@ public interface ServiceNameConstants {
* hrms-archives模块
*/
String ARCHIVES_SERVICE = "yifu-archives";
/**
* hr b端Client id
**/
String CLIENT_ID_HR_B = "hrCustomer";
}
......@@ -311,6 +311,12 @@ public class Common {
}
return null;
}
public static String isNotNullToStr(Long value) {
if (Common.isNotNull(value)){
return Long.toString(value);
}
return null;
}
public static Integer isNotNullToInt(String value) {
if (Common.isNotNull(value)){
......
......@@ -17,10 +17,13 @@
package com.yifu.cloud.plus.v1.yifu.common.core.vo;
import lombok.Getter;
import lombok.Setter;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.User;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* @author lengleng
......@@ -70,6 +73,12 @@ public class YifuUser extends User {
@Getter
private final String userGroup;
/**
* key是客户端id,val是角色id数组
*/
@Getter
@Setter
private Map<String, List<Long>> clientRoleMap;
/**
* LDAP_DN
*/
......
......@@ -30,6 +30,16 @@ import java.util.Map;
public class ArchivesDaprUtil {
@Autowired
private DaprArchivesProperties daprArchivesProperties;
public R<Map<String,String>> getCustomerUserMap(List<String> userList){
R<Map> res = HttpDaprUtil.invokeMethodPost(daprArchivesProperties.getAppUrl(),daprArchivesProperties.getAppId(),"/msetttlecustomeruser/inner/getCustomerUserMap" , JSON.toJSONString(userList), Map.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(res)){
return R.failed("获取档案派单信息失败!");
}
Map<String,String> map = JSON.parseObject(JSON.toJSONString(res.getData()),new TypeReference<HashMap<String,String>>(){});
return R.ok(map);
}
/**
* @Author fxj
* @Description 获取派单校验需要的档案信息
......
......@@ -81,5 +81,13 @@ public class SecurityUtils {
});
return roleIds;
}
/**
* 获取用户client终端角色信息
*
* @return 角色集合
*/
public List<Long> getRolesByClient(String client) {
YifuUser user = getUser();
return null != user && null != user.getClientRoleMap() ? user.getClientRoleMap().get(client) : null;
}
}
......@@ -23,6 +23,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* @author lengleng
......@@ -64,4 +65,8 @@ public class UserInfo implements Serializable {
*/
private List<SysPost> postList;
/**
* key是客户端id,val是角色id数组
*/
private Map<String,List<Long>> clientRoleMap;
}
......@@ -115,4 +115,7 @@ public class SysMenu extends BaseEntity {
*/
@Schema(description = "是否系统内置")
private String systemFlag;
@NotBlank(message = "所属终端 不能为空")
private String clientId;
}
......@@ -64,4 +64,7 @@ public class SysRole extends BaseEntity {
@Schema(description = "是否是系统内置")
private String systemFlag;
@NotBlank(message = "所属终端 不能为空")
private String clientId;
}
package com.yifu.cloud.plus.v1.yifu.admin.api.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
/**
* @program: master
* @description: b端角色菜单包装类
* @author: pwang
* @create: 2020-08-25 21:13
**/
@Data
@Tag(name = "b端角色菜单包装类")
public class BusinessRoleMenuVo {
@Schema(description ="角色id")
private String roleId;
@Schema(description ="角色名称")
private String roleName;
@Schema(description ="菜单id")
private String menuId;
@Schema(description ="菜单名称")
private String name;
@Schema(description ="菜单排序")
private String sort;
}
package com.yifu.cloud.plus.v1.yifu.admin.api.vo;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUser;
import lombok.Data;
import java.util.List;
/**
* b端客户包装类
* @program: master
* @description:
* @author: pwang
* @create: 2020-08-25 14:05
**/
@Data
public class BusinessUserVo extends SysUser {
/**
* 客户单位
* @Author fxj
* @Date 2020-08-25 14:54
* @param null
* @return
**/
private String customerName;
/**
* B端的部门ID
* @author fxj
*/
private String organIdB;
/**
* B端的部门等级
* @author fxj
*/
private String organLevelB;
/**
* 用户IDs
* @author fxj
*/
private List<String> userIdsB;
}
package com.yifu.cloud.plus.v1.yifu.admin.api.vo;
import cn.hutool.json.JSONObject;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysMenu;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
public class MenuTreeForVue extends TreeNode {
private Integer id;
private String icon;
private String name;
private String path;
private String authority;
private String redirect;
private String type;
private Integer sort;
private String url;
/*private Meta meta;*/
private JSONObject meta;
private String component;
private String route = "1";
private String alwaysShow;
private boolean hidden;
public MenuTreeForVue() {
}
public MenuTreeForVue(int id, String name, int parentId) {
this.id = id;
this.parentId = Common.isNotNullToStr(parentId);
this.name = name;
/*this.meta=new Meta(name,null,null);*/
this.meta =new JSONObject();
meta.put("title",name);
}
public MenuTreeForVue(int id, String name, MenuTreeForVue parent) {
this.id = id;
this.parentId = Common.isNotNullToStr(parent.getId());
this.name = name;
/*this.meta=new Meta(name,null,null);*/
this.meta =new JSONObject();
meta.put("title",name);
}
public MenuTreeForVue(MenuVO menuVo) {
this.id = menuVo.getMenuId();
this.parentId = Common.isNotNullToStr(menuVo.getParentId());
this.icon = menuVo.getIcon();
this.name = menuVo.getName();
if (null != menuVo.getPath()){
this.path = menuVo.getPath().replace("#","");
}
if (CommonConstants.ONE_STRING.equals(menuVo.getType())){
this.component = menuVo.getPermission();
}else {
this.component = this.path;
}
this.type = menuVo.getType();
if(CommonConstants.ZERO_STRING.equals(menuVo.getType())){
alwaysShow = "true";
hidden = false;
}else{
alwaysShow = "false";
hidden = true;
}
this.sort = menuVo.getSort();
this.url = menuVo.getUrl();
/*this.meta=new Meta(menuVo.getName(),menuVo.getIcon(),menuVo.getKeepAlive());*/
this.meta =new JSONObject();
meta.put("title",menuVo.getName());
meta.put("icon",menuVo.getIcon());
meta.put("keepAlive",menuVo.getKeepAlive());
/*this.authority = menuVo.getPermission();*/
}
public MenuTreeForVue(SysMenu menuVo) {
this.id = menuVo.getMenuId().intValue();
this.parentId = Common.isNotNullToStr(menuVo.getParentId());
this.icon = menuVo.getIcon();
this.name = menuVo.getName();
if (null != menuVo.getPath()){
this.path = menuVo.getPath().replace("#","");
}
if (CommonConstants.ONE_STRING.equals(menuVo.getType())){
this.component = menuVo.getPermission();
}else {
this.component = this.path;
}
this.type = menuVo.getType();
if(CommonConstants.ZERO_STRING.equals(menuVo.getType())){
alwaysShow = "true";
hidden = false;
}else{
alwaysShow = "false";
hidden = true;
}
this.sort = menuVo.getSortOrder();
this.url = menuVo.getPath();
/*this.meta=new Meta(menuVo.getName(),menuVo.getIcon(),menuVo.getKeepAlive());*/
this.meta =new JSONObject();
meta.put("title",menuVo.getName());
meta.put("icon",menuVo.getIcon());
meta.put("keepAlive",menuVo.getKeepAlive());
/*this.authority = menuVo.getPermission();*/
}
}
package com.yifu.cloud.plus.v1.yifu.admin.api.vo;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 菜单权限表
* </p>
*
*/
@Data
public class MenuVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 菜单ID
*/
private Integer menuId;
/**
* 菜单名称
*/
private String name;
/**
* 菜单权限标识
*/
private String permission;
/**
* 父菜单ID
*/
private Integer parentId;
/**
* 图标
*/
private String icon;
/**
* 一个路径
*/
private String path;
/**
* 排序值
*/
private Integer sort;
/**
* 菜单类型 (0菜单 1按钮)
*/
private String type;
/**
* 是否缓冲
*/
private String keepAlive;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 0--正常 1--删除
*/
private String delFlag;
/**
* 菜单或功能按钮访问的URL
*/
private String url;
/**
* 用于功能按钮权限设置的临时变量
*/
private Integer roleOwnerButton;
/**
* 功能或菜单描述
*/
private String description;
/**
*
* 终端主键ID
*/
private String clientId;
@Override
public int hashCode() {
return menuId.hashCode();
}
/**
* menuId 相同则相同
*
* @param obj
* @return
*/
@Override
public boolean equals(Object obj) {
if (obj instanceof MenuVO) {
Integer targetMenuId = ((MenuVO) obj).getMenuId();
return menuId.equals(targetMenuId);
}
return super.equals(obj);
}
}
package com.yifu.cloud.plus.v1.yifu.admin.api.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @program: master
* @description: b端角色菜单返回结果类
* @author: pwang
* @create: 2020-08-25 21:20
**/
@Data
@Tag(name = "b端角色菜单返回结果类")
public class RoleMenuR {
@Schema(description = "已有角色集合")
private Set<String> havaRole ;
@Schema(description = "权限组名称集合,key权限组id,value权限组名称")
private Map<String, String> roleNameMap ;
@Schema(description ="菜单集合,key权限组id,value菜单集合")
private Map<String, List<BusinessRoleMenuVo>> roleMenuMap ;
}
......@@ -18,9 +18,12 @@ package com.yifu.cloud.plus.v1.yifu.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysRole;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.BusinessRoleMenuVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;
/**
* <p>
......@@ -40,4 +43,7 @@ public interface SysRoleMapper extends BaseMapper<SysRole> {
*/
List<SysRole> listRolesByUserId(String userId);
List<BusinessRoleMenuVo> getRoleAndMenu(@Param("type")String type);
Set<String> getRoleByUserIdAndClient(@Param("userId")Integer userId, @Param("clientId") String clientId);
}
......@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.admin.api.dto.UserDTO;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUser;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.BusinessUserVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.UserVO;
import com.yifu.cloud.plus.v1.yifu.common.ldap.entity.PersonVo;
import org.apache.ibatis.annotations.Mapper;
......@@ -75,4 +76,5 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
void updateUser(@Param("list") List<Map<String,Object>> list);
Page<BusinessUserVo> getBusinessUserVoPage(Page page,@Param("query") BusinessUserVo user);
}
......@@ -41,4 +41,6 @@ public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
*/
Boolean deleteByUserId(@Param("userId") String userId);
Boolean removeByUserAndClientId(@Param("userId")Integer userId,@Param("clientId") String clientId);
}
......@@ -19,11 +19,13 @@ package com.yifu.cloud.plus.v1.yifu.admin.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysRole;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.BusinessRoleMenuVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.RoleExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import org.springframework.validation.BindingResult;
import java.util.List;
import java.util.Set;
/**
* <p>
......@@ -72,4 +74,19 @@ public interface SysRoleService extends IService<SysRole> {
* @return
**/
R<Boolean> getBooleanR(SysRole sysRole);
/**
* 获取b角色菜单集合
* @param type 0 菜单 1 按钮 null所有
* @return
**/
List<BusinessRoleMenuVo> getRoleAndMenu(String type);
/**
* 获取该用户在此客户端的所有角色id
* @param userId
* @param clientId
* @return
**/
Set<String> getRoleByUserIdAndClient(Integer userId, String clientId);
}
......@@ -28,5 +28,12 @@ import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUserRole;
* @since 2019/2/1
*/
public interface SysUserRoleService extends IService<SysUserRole> {
/**
* 根据用户id和角色所在终端id删除这个用户在这个终端的所有角色
* @param userId
* @param clientId
* @return
**/
Boolean removeByUserAndClientId(Integer userId, String clientId);
}
......@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.admin.api.dto.UserDTO;
import com.yifu.cloud.plus.v1.yifu.admin.api.dto.UserInfo;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUser;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.BusinessUserVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.UserExcelVO;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.UserPasswordVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.UserVO;
......@@ -145,4 +146,15 @@ public interface SysUserService extends IService<SysUser> {
*/
R<Boolean> loginAuthentication(String userName, String password) throws NoSuchAlgorithmException;
Page<BusinessUserVo> getBusinessUserVoPage(Page page, BusinessUserVo user);
/**
* 更新用户锁定状态
*
* @param user
* @param lockFlag
* @return
*/
Boolean updateLockFlagById(SysUser user, String lockFlag);
}
......@@ -27,6 +27,7 @@ import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysRole;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysRoleMenu;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUserRole;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.BusinessRoleMenuVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.RoleExcelVO;
import com.yifu.cloud.plus.v1.yifu.admin.mapper.SysRoleMapper;
import com.yifu.cloud.plus.v1.yifu.admin.mapper.SysRoleMenuMapper;
......@@ -227,4 +228,14 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
wrapper.last(CommonConstants.LAST_ONE_SQL);
return wrapper;
}
@Override
public List<BusinessRoleMenuVo> getRoleAndMenu(String type) {
return baseMapper.getRoleAndMenu(type);
}
@Override
public Set<String> getRoleByUserIdAndClient(Integer userId, String clientId) {
return baseMapper.getRoleByUserIdAndClient(userId,clientId);
}
}
......@@ -32,5 +32,8 @@ import org.springframework.stereotype.Service;
*/
@Service
public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
@Override
public Boolean removeByUserAndClientId(Integer userId, String clientId) {
return baseMapper.removeByUserAndClientId(userId,clientId);
}
}
......@@ -30,6 +30,7 @@ import com.yifu.cloud.plus.v1.yifu.admin.api.dto.UserDTO;
import com.yifu.cloud.plus.v1.yifu.admin.api.dto.UserInfo;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.*;
import com.yifu.cloud.plus.v1.yifu.admin.api.util.ParamResolver;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.BusinessUserVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.UserExcelVO;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.UserPasswordVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.UserVO;
......@@ -38,11 +39,13 @@ import com.yifu.cloud.plus.v1.yifu.admin.service.SysMenuService;
import com.yifu.cloud.plus.v1.yifu.admin.service.SysUserService;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ServiceNameConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.enums.MenuTypeEnum;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.util.RedisUtil;
import com.yifu.cloud.plus.v1.yifu.common.ldap.entity.PersonVo;
import com.yifu.cloud.plus.v1.yifu.common.ldap.util.LdapUtil;
import lombok.RequiredArgsConstructor;
......@@ -60,6 +63,9 @@ import java.security.NoSuchAlgorithmException;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.util.stream.Collectors.toList;
/**
* @author lengleng
......@@ -84,6 +90,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
private final LdapUtil ldapUtil;
private final RedisUtil redisUtil;
/**
* 保存用户信息
* @param userDto DTO 对象
......@@ -139,6 +147,33 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
.filter(m -> MenuTypeEnum.BUTTON.getType().equals(m.getType())).map(SysMenu::getPermission)
.filter(StrUtil::isNotBlank).collect(Collectors.toSet());
userInfo.setPermissions(ArrayUtil.toArray(permissions, String.class));
//设置角色列表 (ID)
List<SysRole> roles = sysRoleMapper.listRolesByUserId(sysUser.getUserId());
Map<String, List<Long>> clientRoleMap = new HashMap<>();
if (Common.isNotNull(roles)){
roles.forEach(role -> {
if (null != clientRoleMap.get(role.getClientId())) {
clientRoleMap.get(role.getClientId()).add(role.getRoleId());
} else {
clientRoleMap.put(role.getClientId(), Stream.of(role.getRoleId()).collect(toList()));
}
/* List<String> permissionList = sysMenuService.findMenuByRoleId(role.getRoleId())
.stream()
.filter(menuVo -> Common.isNotNull(menuVo.getPermission()))
.map(menuVo -> {
if (menuVo.getPermission().contains(":")) {
return menuVo.getPermission();
} else {
return role.getClientId() + ":" + menuVo.getPermission();
}
})
.collect(toList());
permissions.addAll(permissionList);*/
}
);
}
userInfo.setClientRoleMap(clientRoleMap);
return userInfo;
}
......@@ -551,4 +586,47 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
return R.failed("验证不通过");
}
@Override
public Page<BusinessUserVo> getBusinessUserVoPage(Page page, BusinessUserVo user) {
if (Common.isNotNull(user.getOrganIdB()) || Common.isNotNull(user.getOrganLevelB())){
R<List<String>> userIdR = null;//remoteBusinessService.getUserIdByOrganInfo(user.getOrganIdB(), user.getOrganLevelB(), SecurityConstants.FROM_IN);
if (null != userIdR && Common.isNotNull(userIdR.getData())){
user.setUserIdsB(userIdR.getData());
}
}
return baseMapper.getBusinessUserVoPage(page,user);
}
/**
* 更新用户锁定状态
*
* @param user
* @param lockFlag
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
//不用原因user.phone和user.wxUserId做键时可能为空 服务报错
public Boolean updateLockFlagById(SysUser user, String lockFlag) {
clenrUserCache(user.getUsername(),null,user.getPhone());
SysUser sysUser = new SysUser();
sysUser.setUserId(user.getUserId());
sysUser.setLockFlag(lockFlag);
return this.updateById(sysUser);
}
private void clenrUserCache(String username,String wxUserId,String phone){
//用户名登录用户缓存清除
if(Common.isNotNull(username)){
redisUtil.remove(CacheConstants.USER_DETAILS +"::"+username);
}
//微信登录用户缓存清除
if(Common.isNotNull(wxUserId)){
redisUtil.remove(CacheConstants.USER_DETAILS + "_wx::"+wxUserId);
}
//手机号登录用户缓存清除
if(Common.isNotNull(phone)){
redisUtil.remove(CacheConstants.USER_DETAILS + "_phone::"+phone);
}
}
}
......@@ -76,7 +76,6 @@
and t.parent_id= #{parentId} and t.del_flag='0'
)
</select>
<select id="getDictRedisVo" resultMap="dictRedisMap">
SELECT
CONCAT(a.type,"_",a.`value`) as "key",
......
......@@ -49,4 +49,28 @@
AND r.del_flag = 0
and ur.user_id = #{userId}
</select>
<select id="getRoleAndMenu" resultType="com.yifu.cloud.plus.v1.yifu.admin.api.vo.BusinessRoleMenuVo">
SELECT
a.role_id,
a.role_name,
c.menu_id,
c.name,
c.sort
FROM
sys_role a,
sys_role_menu b
LEFT JOIN sys_menu c on b.menu_id =c.menu_id
where a.client_id = "hrCustomer" and a.del_flag = '0'
<if test="null != type">
and c.type = #{type}
</if>
and c.del_flag = "0" and a.role_id =b.role_id ;
</select>
<select id="getRoleByUserIdAndClient" resultType="java.lang.String">
select a.role_id from sys_user_role a
left join sys_role b on a.role_id = b.role_id
where a.user_id = #{userId} and b.client_id = #{clientId} and b.del_flag = '0'
</select>
</mapper>
......@@ -295,4 +295,30 @@
username=#{i.userId}
</foreach>
</update>
<!-- 获取b端用户分页 fxj 2022-12-27 -->
<select id="getBusinessUserVoPage" resultType="com.yifu.cloud.plus.v1.yifu.admin.api.vo.BusinessUserVo">
select *
from sys_user AS `user`
<where> `user`.del_flag = '0'
<if test="query.organId != null and query.organId != ''">
and `user`.organ_id = #{query.organId}
</if>
<if test="query.nickname != null and query.nickname != ''">
and `user`.nickname LIKE CONCAT('%',#{query.nickname},'%')
</if>
<if test="query.username != null and query.username != ''">
and `user`.username LIKE CONCAT('%',#{query.username},'%')
</if>
<if test="query.organCode != null and query.organCode != ''">
and `user`.organ_code LIKE CONCAT(#{query.organCode},'%')
</if>
<if test="null != query.userIdsB and query.userIdsB.size > 0">
where b.user_id in
<foreach collection="query.userIdsB" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
ORDER BY `user`.create_time DESC
</select>
</mapper>
......@@ -28,5 +28,18 @@
<delete id="deleteByUserId">
DELETE FROM sys_user_role WHERE user_id = #{userId}
</delete>
<delete id="removeByUserAndClientId">
DELETE
FROM
sys_user_role
WHERE
user_id = #{userId}
AND role_id IN (
SELECT
b.role_id
FROM
sys_role b
WHERE
b.client_id = #{clientId} )
</delete>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment