|
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.winhc.repal.constant.Constant;
|
|
import com.winhc.repal.constant.Constant;
|
|
import com.winhc.repal.entity.RepalRolePermission;
|
|
import com.winhc.repal.entity.RepalRolePermission;
|
|
import com.winhc.repal.enums.DeletedStatusEnum;
|
|
import com.winhc.repal.enums.DeletedStatusEnum;
|
|
|
|
+import com.winhc.repal.model.dto.UpdateRolePermissionDTO;
|
|
import com.winhc.repal.repository.RepalRolePermissionMapper;
|
|
import com.winhc.repal.repository.RepalRolePermissionMapper;
|
|
import com.winhc.repal.service.RepalRolePermissionService;
|
|
import com.winhc.repal.service.RepalRolePermissionService;
|
|
import com.winhc.repal.util.RedisUtil;
|
|
import com.winhc.repal.util.RedisUtil;
|
|
@@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
@@ -81,4 +83,33 @@ public class RepalRolePermissionServiceImpl extends ServiceImpl<RepalRolePermiss
|
|
.eq(RepalRolePermission::getRepalGroupRoleId, roleId)
|
|
.eq(RepalRolePermission::getRepalGroupRoleId, roleId)
|
|
.eq(RepalRolePermission::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
|
|
.eq(RepalRolePermission::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public Boolean updateRolePermission(UpdateRolePermissionDTO dto) {
|
|
|
|
+ Set<String> codeSet = new HashSet<>(repalRolePermissionMapper.getRolePermissionCodeList(dto.getRoleId()));
|
|
|
|
+ List<String> disjunction = new ArrayList<>(CollUtil.disjunction(dto.getCodeSet(), codeSet));
|
|
|
|
+ if (CollUtil.isEmpty(disjunction)) {
|
|
|
|
+ // 无修改
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ for (String code : disjunction) {
|
|
|
|
+ if (codeSet.contains(code) && !dto.getCodeSet().contains(code)) {
|
|
|
|
+ // remove
|
|
|
|
+ this.update(Wrappers.lambdaUpdate(RepalRolePermission.class)
|
|
|
|
+ .eq(RepalRolePermission::getRepalGroupRoleId, dto.getRoleId())
|
|
|
|
+ .eq(RepalRolePermission::getPermissionCode, code)
|
|
|
|
+ .set(RepalRolePermission::getDeleted, DeletedStatusEnum.DELETE.getCode()));
|
|
|
|
+ }
|
|
|
|
+ if (!codeSet.contains(code) && dto.getCodeSet().contains(code)) {
|
|
|
|
+ // add
|
|
|
|
+ RepalRolePermission permission = new RepalRolePermission();
|
|
|
|
+ permission.setPermissionCode(code);
|
|
|
|
+ permission.setPermissionName(Constant.PERMISSION_MAP.get(code));
|
|
|
|
+ permission.setRepalGroupRoleId(dto.getRoleId());
|
|
|
|
+ this.save(permission);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
}
|
|
}
|