Browse Source

代码更新

wangliang 3 tháng trước cách đây
mục cha
commit
24961bb1b6

+ 12 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardModelFourServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.api.exception.ApiException;
 import com.qmth.boot.core.concurrent.service.ConcurrentService;
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
 import com.qmth.distributed.print.business.bean.params.GenericExamCardModelFourParams;
@@ -28,6 +29,7 @@ import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
 import com.qmth.teachcloud.common.enums.PageSizeEnum;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.*;
@@ -40,6 +42,7 @@ import com.qmth.teachcloud.mark.service.ScanAnswerCardService;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -203,7 +206,15 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
             map.put("title", examCardModelFour.getTitle());
             return map;
         } catch (Exception e) {
-            throw new RuntimeException(e);
+            if (e instanceof DuplicateKeyException) {
+                String errorColumn = e.getCause().toString();
+                String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
+                throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
+            } else if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
         } finally {
             concurrentService.getReadWriteLock(LockType.CUSTOM_MODEL_FOUR_CARD_SAVE + "-" + schoolId + CardTypeEnum.CUSTOM + params.getTitle()).writeLock().unlock();
         }

+ 2 - 0
distributed-print/install/mysql/upgrade/3.4.4.sql

@@ -307,3 +307,5 @@ WHERE id=946;
 
 -- 2025-03-14
 ALTER TABLE t_b_version ADD CONSTRAINT t_b_version_unique UNIQUE KEY (client_version);
+
+ALTER TABLE exam_card_model_four ADD CONSTRAINT exam_card_model_four_unique UNIQUE KEY (exam_id,course_id);

+ 3 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FieldUniqueEnum.java

@@ -51,7 +51,9 @@ public enum FieldUniqueEnum {
 
     teach_course_unique("任课老师课程"),
 
-    t_b_version_unique("客户端版本号");
+    t_b_version_unique("客户端版本号"),
+
+    exam_card_model_four_unique("题卡课程");
 
     private String title;