package cn.iocoder.yudao.module.aftersales.service.permission; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.aftersales.dal.dataobject.permission.AfterSalePermissionDO; import cn.iocoder.yudao.module.aftersales.dal.mysql.permission.AfterSalePermissionMapper; import cn.iocoder.yudao.module.aftersales.enums.permission.AfterSalePermissionLevelEnum; import cn.iocoder.yudao.module.aftersales.service.permission.bo.AfterSalePermissionCreateReqBO; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.Collection; import java.util.Collections; import java.util.List; /** * 售后模块数据权限 Service 实现类 */ @Service @Validated public class AfterSalePermissionServiceImpl implements AfterSalePermissionService { @Resource private AfterSalePermissionMapper afterSalePermissionMapper; @Override @Transactional(rollbackFor = Exception.class) public Long createPermission(AfterSalePermissionCreateReqBO createReqBO) { AfterSalePermissionDO permission = BeanUtils.toBean(createReqBO, AfterSalePermissionDO.class); afterSalePermissionMapper.insert(permission); return permission.getId(); } @Override @Transactional(rollbackFor = Exception.class) public void deletePermission(Integer bizType, Long bizId) { afterSalePermissionMapper.deleteByBiz(bizType, bizId); } @Override public List getPermissionListByBiz(Integer bizType, Long bizId) { return afterSalePermissionMapper.selectListByBiz(bizType, bizId); } @Override public List getPermissionListByBiz(Integer bizType, Collection bizIds) { if (CollUtil.isEmpty(bizIds)) { return Collections.emptyList(); } return afterSalePermissionMapper.selectListByBiz(bizType, bizIds); } @Override public boolean hasPermission(Integer bizType, Long bizId, Long userId, AfterSalePermissionLevelEnum level) { List permissionList = getPermissionListByBiz(bizType, bizId); return permissionList.stream() .anyMatch(p -> ObjUtil.equal(p.getUserId(), userId) && ObjUtil.equal(p.getLevel(), level.getLevel())); } }