From 9abc6588d464269024d3e680b98cfd71e2acc84e Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: Wed, 29 Apr 2026 13:14:15 +0800
Subject: [PATCH] 新增修改部分限制

---
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java |   73 +++++++++++++++++++++++++++++++-----
 1 files changed, 63 insertions(+), 10 deletions(-)

diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java
index 0353ae7..e885554 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java
@@ -1,17 +1,22 @@
 package com.gkhy.exam.system.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.common.exception.ApiException;
+import com.gkhy.exam.common.utils.NaturalOrderComparator;
 import com.gkhy.exam.common.utils.SecurityUtils;
 import com.gkhy.exam.system.domain.SysClauseManagement;
 import com.gkhy.exam.system.mapper.SysClauseManagementMapper;
 import com.gkhy.exam.system.service.SysClauseManagementService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
 
 @Service
@@ -20,19 +25,26 @@
    private SysClauseManagementMapper sysClauseManagementMapper;
 
     @Override
-    public List<SysClauseManagement> getSysClauseManagements() {
+    public List<SysClauseManagement> getSysClauseManagements(Long companyId) {
         LambdaQueryWrapper<SysClauseManagement> lambdaQueryWrapper = Wrappers.<SysClauseManagement>lambdaQuery()
-                .eq(SysClauseManagement::getDelFlag, "0").orderByAsc(SysClauseManagement::getClauseNum);
-        return baseMapper.selectList(lambdaQueryWrapper);
+                .eq(SysClauseManagement::getDelFlag, "0").eq(SysClauseManagement::getCompanyId, companyId)
+                .orderByAsc(SysClauseManagement::getClauseNum);
+
+        List<SysClauseManagement> sysClauseManagements = baseMapper.selectList(lambdaQueryWrapper);
+        if (ObjectUtil.isNotEmpty(sysClauseManagements)){
+            sysClauseManagements.sort(Comparator.comparing(SysClauseManagement::getClauseNum, new NaturalOrderComparator()));
+        }
+
+        return sysClauseManagements;
     }
 
     @Override
     public int saveSysClauseManagement(SysClauseManagement sysClauseManagement) {
-        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
-            throw new ApiException("没有权限访问!");
-        }
+        checkPer();
         LambdaQueryWrapper<SysClauseManagement> lambdaQueryWrapper = Wrappers.<SysClauseManagement>lambdaQuery()
-                .eq(SysClauseManagement::getDelFlag, "0").eq(SysClauseManagement::getClauseNum, sysClauseManagement.getClauseNum());
+                .eq(SysClauseManagement::getDelFlag, "0")
+                .eq(SysClauseManagement::getCompanyId, sysClauseManagement.getCompanyId())
+                .eq(SysClauseManagement::getClauseNum, sysClauseManagement.getClauseNum());
         if (sysClauseManagement.getId() == null){
             if (baseMapper.selectCount(lambdaQueryWrapper) > 0){
                 throw new ApiException("条款编号已存在!");
@@ -53,15 +65,56 @@
 
     }
 
+    private void checkPer(){
+        boolean admin = SecurityUtils.adminUser();
+        if (!admin) {
+            Integer userType = SecurityUtils.getLoginUser().getUser().getUserType();
+            if (userType != 6){
+                throw new ApiException("无权操作!");
+            }
+        }
+    }
+
     @Override
     public int delSysClauseManagement(Long id) {
-        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
-            throw new ApiException("没有权限访问!");
-        }
+        checkPer();
         //todo 校验已使用的?
         SysClauseManagement sysClauseManagement = new SysClauseManagement();
         sysClauseManagement.setDelFlag("1");
         sysClauseManagementMapper.update(sysClauseManagement, Wrappers.<SysClauseManagement>lambdaQuery().eq(SysClauseManagement::getId, id));
         return 1;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void copySysClauseManagements(Long sourceCompanyId, Long targetCompanyId) {
+        boolean admin = SecurityUtils.adminUser();
+        if (!admin) {
+            throw new ApiException("无权操作!");
+        }
+        List<SysClauseManagement> targetClauseManagements = baseMapper.selectList(Wrappers.<SysClauseManagement>lambdaQuery()
+                .eq(SysClauseManagement::getDelFlag, "0")
+                .eq(SysClauseManagement::getCompanyId, targetCompanyId));
+        if (ObjectUtil.isNotEmpty(targetClauseManagements)){
+            throw new ApiException("目标公司已存在条款!");
+        }
+
+        List<SysClauseManagement> sysClauseManagements = baseMapper.selectList(Wrappers.<SysClauseManagement>lambdaQuery()
+                .eq(SysClauseManagement::getDelFlag, "0")
+                .eq(SysClauseManagement::getCompanyId, sourceCompanyId));
+
+//        List<SysClauseManagement> add = new ArrayList<>();
+        sysClauseManagements.forEach(sysClauseManagement -> {
+            SysClauseManagement newClauseManagement = new SysClauseManagement();
+            newClauseManagement.setName(sysClauseManagement.getName());
+            newClauseManagement.setClauseNum(sysClauseManagement.getClauseNum());
+            newClauseManagement.setPoints(sysClauseManagement.getPoints());
+            newClauseManagement.setCompanyId(targetCompanyId);
+            newClauseManagement.setCreateBy(SecurityUtils.getUsername());
+            newClauseManagement.setCreateTime(LocalDateTime.now());
+//            add.add(newClauseManagement);
+            sysClauseManagementMapper.insert(newClauseManagement);
+        });
+
+    }
 }

--
Gitblit v1.9.2