员工权限
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package cn.ysk.cashier.service;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopPermissionDto;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import cn.ysk.cashier.entity.TbShopPermission;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* (TbShopPermission)表服务接口
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2024-09-14 10:53:11
|
||||
*/
|
||||
public interface TbShopPermissionService extends IService<TbShopPermission> {
|
||||
|
||||
TbShopPermission queryByCode(String code);
|
||||
|
||||
ResponseEntity<Object> insert(TbShopPermissionDto permissionDto);
|
||||
|
||||
ResponseEntity<Object> update(TbShopPermissionDto permissionDto);
|
||||
|
||||
ResponseEntity<Object> delete(Integer id);
|
||||
|
||||
List<TbShopPermissionDto> getShopPermissionList();
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.ysk.cashier.service;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopPermissionDto;
|
||||
import cn.ysk.cashier.mybatis.mapper.TbShopStaffPermissionMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import cn.ysk.cashier.entity.TbShopStaffPermission;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 店铺员工权限关联表(TbShopStaffPermission)表服务接口
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2024-09-14 10:54:00
|
||||
*/
|
||||
public interface TbShopStaffPermissionService extends IService<TbShopStaffPermission> {
|
||||
|
||||
boolean userHasPermission(Integer userId, String permissionCode);
|
||||
|
||||
List<TbShopPermissionDto> getStaffPermissionList(Integer userId);
|
||||
|
||||
void updateStaffPermission(Integer userId, Integer shopId, Integer staffId, List<TbShopPermissionDto> permissionIds);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
package cn.ysk.cashier.service.impl;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopPermissionDto;
|
||||
import cn.ysk.cashier.mybatis.mapper.TbShopPermissionMapper;
|
||||
import cn.ysk.cashier.utils.StringUtils;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import cn.ysk.cashier.entity.TbShopPermission;
|
||||
import cn.ysk.cashier.service.TbShopPermissionService;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* (TbShopPermission)表服务实现类
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2024-09-14 10:53:11
|
||||
*/
|
||||
@Service("tbShopPermissionService")
|
||||
public class TbShopPermissionServiceImpl extends ServiceImpl<TbShopPermissionMapper, TbShopPermission> implements TbShopPermissionService {
|
||||
|
||||
@Override
|
||||
public TbShopPermission queryByCode(String code) {
|
||||
QueryWrapper<TbShopPermission> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("code", code);
|
||||
return this.getOne(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResponseEntity<Object> insert(TbShopPermissionDto permissionDto) {
|
||||
// 校验类型和code是否已存在
|
||||
if (this.checkTypeAndCodeExist(permissionDto.getType(), permissionDto.getCode(), null)) {
|
||||
return ResponseEntity.badRequest().body("类型和code已存在");
|
||||
}
|
||||
|
||||
TbShopPermission permission = new TbShopPermission();
|
||||
permission.setType(permissionDto.getType());
|
||||
permission.setLabel(permissionDto.getLabel());
|
||||
permission.setCode(permissionDto.getCode());
|
||||
permission.setIsImportant(permissionDto.getIsImportant());
|
||||
permission.setSort(permissionDto.getSort());
|
||||
permission.setLevel(permissionDto.getLevel());
|
||||
permission.setParentId(permissionDto.getParentId());
|
||||
permission.setCreateTime(new Date());
|
||||
permission.setUpdateTime(new Date());
|
||||
|
||||
this.save(permission);
|
||||
|
||||
return ResponseEntity.ok("新增成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResponseEntity<Object> update(TbShopPermissionDto permissionDto) {
|
||||
// 检查记录是否存在
|
||||
TbShopPermission permission = this.getById(permissionDto.getId());
|
||||
if (permission == null) {
|
||||
return ResponseEntity.badRequest().body("记录不存在");
|
||||
}
|
||||
|
||||
// 校验类型和code是否已存在
|
||||
if (this.checkTypeAndCodeExist(permissionDto.getType(), permissionDto.getCode(), permissionDto.getId())) {
|
||||
return ResponseEntity.badRequest().body("类型和code已存在");
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(permission.getType())) permission.setType(permissionDto.getType());
|
||||
if (StringUtils.isNotBlank(permission.getLabel())) permission.setLabel(permissionDto.getLabel());
|
||||
if (StringUtils.isNotBlank(permission.getCode())) permission.setCode(permissionDto.getCode());
|
||||
if (permissionDto.getIsImportant() != null) permission.setIsImportant(permissionDto.getIsImportant());
|
||||
if (permissionDto.getSort() != null) permission.setSort(permissionDto.getSort());
|
||||
if (permissionDto.getLevel() != null) permission.setLevel(permissionDto.getLevel());
|
||||
if (permissionDto.getParentId() != null) permission.setParentId(permissionDto.getParentId());
|
||||
permission.setUpdateTime(new Date());
|
||||
|
||||
this.updateById(permission);
|
||||
|
||||
return ResponseEntity.ok("修改成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResponseEntity<Object> delete(Integer id) {
|
||||
// 检查记录是否存在
|
||||
TbShopPermission permission = this.getById(id);
|
||||
if (permission == null) {
|
||||
return ResponseEntity.badRequest().body("记录不存在");
|
||||
}
|
||||
|
||||
this.removeById(id);
|
||||
|
||||
return ResponseEntity.ok("删除成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbShopPermissionDto> getShopPermissionList() {
|
||||
// 查询level为1的权限
|
||||
QueryWrapper<TbShopPermission> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("level", 1);
|
||||
queryWrapper.orderByAsc("sort");
|
||||
List<TbShopPermission> list = this.list(queryWrapper);
|
||||
|
||||
List<TbShopPermissionDto> permissionDtoList = new ArrayList<>();
|
||||
// 查询子权限
|
||||
for (TbShopPermission permission : list) {
|
||||
String jsonString = JSONObject.toJSONString(permission);
|
||||
TbShopPermissionDto permissionDto = JSONObject.parseObject(jsonString, TbShopPermissionDto.class);
|
||||
|
||||
QueryWrapper<TbShopPermission> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("parent_id", permission.getId());
|
||||
wrapper.orderByAsc("sort");
|
||||
List<TbShopPermission> children = this.list(wrapper);
|
||||
|
||||
String listStr = JSONObject.toJSONString(children);
|
||||
List<TbShopPermissionDto> childrenDto = JSONObject.parseArray(listStr, TbShopPermissionDto.class);
|
||||
permissionDto.setChildren(childrenDto);
|
||||
|
||||
permissionDtoList.add(permissionDto);
|
||||
}
|
||||
|
||||
return permissionDtoList;
|
||||
}
|
||||
|
||||
private boolean checkTypeAndCodeExist(String type, String code, Integer id) {
|
||||
QueryWrapper<TbShopPermission> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("type", type);
|
||||
queryWrapper.eq("code", code);
|
||||
if (id != null) {
|
||||
queryWrapper.ne("id", id);
|
||||
}
|
||||
return this.count(queryWrapper) > 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
package cn.ysk.cashier.service.impl;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopPermissionDto;
|
||||
import cn.ysk.cashier.entity.TbShopPermission;
|
||||
import cn.ysk.cashier.service.TbShopPermissionService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import cn.ysk.cashier.mybatis.mapper.TbShopStaffPermissionMapper;
|
||||
import cn.ysk.cashier.entity.TbShopStaffPermission;
|
||||
import cn.ysk.cashier.service.TbShopStaffPermissionService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 店铺员工权限关联表(TbShopStaffPermission)表服务实现类
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2024-09-14 10:54:01
|
||||
*/
|
||||
@Service("tbShopStaffPermissionService")
|
||||
public class TbShopStaffPermissionServiceImpl extends ServiceImpl<TbShopStaffPermissionMapper, TbShopStaffPermission> implements TbShopStaffPermissionService {
|
||||
|
||||
@Autowired
|
||||
private TbShopPermissionService shopPermissionService;
|
||||
|
||||
@Override
|
||||
public boolean userHasPermission(Integer userId, String permissionCode) {
|
||||
TbShopPermission permission = shopPermissionService.queryByCode(permissionCode);
|
||||
if (permission == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
QueryWrapper<TbShopStaffPermission> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("user_id", userId);
|
||||
queryWrapper.eq("permission_id", permission.getId());
|
||||
TbShopStaffPermission staffPermission = this.getOne(queryWrapper);
|
||||
|
||||
return staffPermission != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbShopPermissionDto> getStaffPermissionList(Integer userId) {
|
||||
List<TbShopPermissionDto> permissionList = shopPermissionService.getShopPermissionList();
|
||||
|
||||
QueryWrapper<TbShopStaffPermission> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("user_id", userId);
|
||||
List<TbShopStaffPermission> staffPermissions = this.list(queryWrapper);
|
||||
|
||||
List<Integer> permissionIds = staffPermissions.stream().collect(ArrayList::new, (list, staffPermission) -> list.add(staffPermission.getPermissionId()), ArrayList::addAll);
|
||||
|
||||
for (TbShopPermissionDto permission : permissionList) {
|
||||
permission.setHasPermission(permissionIds.contains(permission.getId()) ? 1 : 0);
|
||||
|
||||
if (permission.getChildren().isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (TbShopPermissionDto child : permission.getChildren()) {
|
||||
child.setHasPermission(permissionIds.contains(child.getId()) ? 1 : 0);
|
||||
}
|
||||
}
|
||||
return permissionList;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateStaffPermission(Integer userId, Integer shopId, Integer staffId, List<TbShopPermissionDto> permissionIds) {
|
||||
QueryWrapper<TbShopStaffPermission> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("user_id", userId);
|
||||
this.remove(queryWrapper);
|
||||
|
||||
List<TbShopStaffPermission> staffPermissions = new ArrayList<>();
|
||||
for (TbShopPermissionDto permission : permissionIds) {
|
||||
TbShopStaffPermission staffPermission = new TbShopStaffPermission();
|
||||
staffPermission.setUserId(userId);
|
||||
staffPermission.setPermissionId(permission.getId());
|
||||
staffPermission.setStaffId(staffId);
|
||||
staffPermission.setShopId(shopId);
|
||||
staffPermissions.add(staffPermission);
|
||||
|
||||
if (permission.getChildren().isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (TbShopPermissionDto child : permission.getChildren()) {
|
||||
TbShopStaffPermission childStaffPermission = new TbShopStaffPermission();
|
||||
childStaffPermission.setUserId(userId);
|
||||
childStaffPermission.setPermissionId(child.getId());
|
||||
staffPermission.setStaffId(staffId);
|
||||
staffPermission.setShopId(shopId);
|
||||
staffPermissions.add(childStaffPermission);
|
||||
}
|
||||
}
|
||||
|
||||
this.saveBatch(staffPermissions);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,9 +15,11 @@
|
||||
*/
|
||||
package cn.ysk.cashier.service.impl.shopimpl;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopPermissionDto;
|
||||
import cn.ysk.cashier.exception.BadRequestException;
|
||||
import cn.ysk.cashier.exception.EntityExistException;
|
||||
import cn.ysk.cashier.pojo.shop.TbPlussShopStaff;
|
||||
import cn.ysk.cashier.service.TbShopStaffPermissionService;
|
||||
import cn.ysk.cashier.system.domain.Dept;
|
||||
import cn.ysk.cashier.system.domain.Job;
|
||||
import cn.ysk.cashier.system.domain.Role;
|
||||
@@ -64,6 +66,8 @@ public class TbPlussShopStaffServiceImpl implements TbPlussShopStaffService {
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
private final UserService userService;
|
||||
|
||||
private final TbShopStaffPermissionService shopStaffPermissionService;
|
||||
|
||||
// 正则表达式:(\u4e00-\u9fa5) 表示匹配一个中文字符,.* 表示匹配零个或多个任意字符
|
||||
private final Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]");
|
||||
|
||||
@@ -91,6 +95,9 @@ public class TbPlussShopStaffServiceImpl implements TbPlussShopStaffService {
|
||||
}
|
||||
dto.setPhone(userDto.getPhone());
|
||||
dto.setPassword("");//不返回密码
|
||||
|
||||
List<TbShopPermissionDto> permissionList = shopStaffPermissionService.getStaffPermissionList(userDto.getId().intValue());
|
||||
dto.setPermissions(permissionList);
|
||||
return dto;
|
||||
}
|
||||
|
||||
@@ -147,6 +154,9 @@ public class TbPlussShopStaffServiceImpl implements TbPlussShopStaffService {
|
||||
jobs.add(job);
|
||||
user.setJobs(jobs);
|
||||
userRepository.save(user);
|
||||
|
||||
shopStaffPermissionService.updateStaffPermission(user.getId().intValue(),
|
||||
Integer.valueOf(resources.getShopId()), resources.getId(), resources.getPermissions());
|
||||
return tbPlussShopStaffMapper.toDto(tbPlussShopStaffRepository.save(resources));
|
||||
}
|
||||
|
||||
@@ -187,6 +197,9 @@ public class TbPlussShopStaffServiceImpl implements TbPlussShopStaffService {
|
||||
}
|
||||
sysUser.setPhone(resources.getPhone());
|
||||
userRepository.save(sysUser);
|
||||
|
||||
shopStaffPermissionService.updateStaffPermission(sysUser.getId().intValue(),
|
||||
Integer.valueOf(resources.getShopId()), resources.getId(), resources.getPermissions());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user