员工权限

This commit is contained in:
2024-09-14 16:22:41 +08:00
parent 260bf68c23
commit bdad979450
14 changed files with 622 additions and 1 deletions

View File

@@ -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();
}

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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