From aaa55aa7b0be807ddd6814b13307f9cb2cd9c67a Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: 星期六, 12 十月 2024 11:06:14 +0800
Subject: [PATCH] 新增课程审核 ,短信提醒
---
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThCourseManagerService.java | 5
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThBatchManagerService.java | 2
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java | 7 +
ruoyi-admin/src/main/resources/application-pro.yml | 8 +
exam-system/pom.xml | 7 +
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThCourse.java | 3
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java | 24 ++++++
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThCourseManagerServiceImpl.java | 23 ++++-
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThCourseManagerController.java | 10 ++
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/enums/CourseStatus.java | 33 ++++++++
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThCourseRespDTO.java | 4 +
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudentManagerServiceImpl.java | 5 +
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThCourseDTO.java | 9 ++
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThBatchManagerController.java | 6 +
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudentManagerService.java | 2
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/utils/SendMessageUtil.java | 48 ++++++++++++
16 files changed, 187 insertions(+), 9 deletions(-)
diff --git a/exam-system/pom.xml b/exam-system/pom.xml
index 6b53c53..6a85092 100644
--- a/exam-system/pom.xml
+++ b/exam-system/pom.xml
@@ -25,6 +25,13 @@
<artifactId>ruoyi-file</artifactId>
</dependency>
+ <!-- 七牛云短信-->
+ <dependency>
+ <groupId>com.qiniu</groupId>
+ <artifactId>qiniu-java-sdk</artifactId>
+ <version>[7.2.0, 7.2.99]</version>
+ </dependency>
+
</dependencies>
</project>
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThBatchManagerController.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThBatchManagerController.java
index 01d6c7a..7934496 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThBatchManagerController.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThBatchManagerController.java
@@ -31,4 +31,10 @@
public AjaxResult getStudent(@PathVariable String batchUuid) {
return AjaxResult.success(thBatchManagerService.getStudent(batchUuid));
}
+
+ //发送短信提醒
+ @GetMapping("/sendMessage/{idcard}")
+ public AjaxResult sendMes(@PathVariable String idcard){
+ return thBatchManagerService.sendMes(idcard);
+ }
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThCourseManagerController.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThCourseManagerController.java
index 2daf041..09a64d8 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThCourseManagerController.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThCourseManagerController.java
@@ -1,5 +1,6 @@
package com.gkhy.exam.institutionalaccess.controller;
+import com.gkhy.exam.institutionalaccess.entity.ThCourseDTO;
import com.gkhy.exam.institutionalaccess.model.query.ThCourseQuery;
import com.gkhy.exam.institutionalaccess.service.ThCourseManagerService;
import com.ruoyi.common.core.controller.BaseController;
@@ -34,4 +35,13 @@
public AjaxResult getStudent(@PathVariable String courseUuid) {
return AjaxResult.success(courseManagerService.getSutdent(courseUuid));
}
+
+ /**
+ * 课程审核
+ */
+ @PostMapping("/checkCourse")
+ public AjaxResult checkCourse(@RequestBody ThCourseDTO thCourseDTO){
+ return toAjax(courseManagerService.updateByCourse(thCourseDTO));
+ }
+
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThCourse.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThCourse.java
index a99f46c..1237d55 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThCourse.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThCourse.java
@@ -27,6 +27,9 @@
//删除标志(0代表存在 2代表删除)
private Byte delFlag;
+ //审核字段(0待审核,1审核通过,2审核驳回)
+ private Byte status;
+
/** 创建者 */
private String createBy;
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThCourseDTO.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThCourseDTO.java
new file mode 100644
index 0000000..a58dab5
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThCourseDTO.java
@@ -0,0 +1,9 @@
+package com.gkhy.exam.institutionalaccess.entity;
+
+import lombok.Data;
+
+@Data
+public class ThCourseDTO {
+ private Long id;
+ private Byte status;
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/enums/CourseStatus.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/enums/CourseStatus.java
new file mode 100644
index 0000000..1a680d1
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/enums/CourseStatus.java
@@ -0,0 +1,33 @@
+package com.gkhy.exam.institutionalaccess.enums;
+
+
+public enum CourseStatus {
+
+ REVIEWED((byte)1,"待审核"),
+ PASS((byte)2,"审核通过"),
+ REJECT((byte)3,"审核驳回");
+
+ private Byte status;
+ private String desc;
+
+ CourseStatus(Byte status, String desc) {
+ this.status = status;
+ this.desc = desc;
+ }
+
+ public Byte getStatus() {
+ return status;
+ }
+
+ public void setStatus(Byte status) {
+ this.status = status;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+
+ public void setDesc(String desc) {
+ this.desc = desc;
+ }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThCourseRespDTO.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThCourseRespDTO.java
index 9c55cc0..7d8a49d 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThCourseRespDTO.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThCourseRespDTO.java
@@ -1,5 +1,6 @@
package com.gkhy.exam.institutionalaccess.model.resp;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.models.auth.In;
import lombok.Data;
@@ -21,6 +22,9 @@
//删除标志(0代表存在 2代表删除)
private Byte delFlag;
+ //审核字段
+ private Byte status;
+
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThBatchManagerService.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThBatchManagerService.java
index 3948add..817f30e 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThBatchManagerService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThBatchManagerService.java
@@ -7,6 +7,7 @@
import com.gkhy.exam.institutionalaccess.model.resp.ThStudentStudyRespDTO;
import com.gkhy.exam.institutionalaccess.model.vo.ThBatchCourseVO;
import com.gkhy.exam.institutionalaccess.model.vo.ThBatchVO;
+import com.ruoyi.common.core.domain.AjaxResult;
import java.util.List;
@@ -17,4 +18,5 @@
List<ThStudentStudyRespDTO> getStudent(String batchUuid);
+ AjaxResult sendMes(String idcard);
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThCourseManagerService.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThCourseManagerService.java
index ab825c3..eaca7a7 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThCourseManagerService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThCourseManagerService.java
@@ -1,7 +1,6 @@
package com.gkhy.exam.institutionalaccess.service;
-import com.gkhy.exam.institutionalaccess.entity.ThStudent;
-import com.gkhy.exam.institutionalaccess.entity.ThStudentBatch;
+import com.gkhy.exam.institutionalaccess.entity.ThCourseDTO;
import com.gkhy.exam.institutionalaccess.model.query.ThCourseQuery;
import com.gkhy.exam.institutionalaccess.model.resp.ThCourseRespDTO;
import com.gkhy.exam.institutionalaccess.model.resp.ThStudentStudyRespDTO;
@@ -15,5 +14,7 @@
List<ThStudentStudyRespDTO> getSutdent(String courseUuid);
+ Boolean updateByCourse(ThCourseDTO thCourseDTO);
+
//List<ThStudentBatchR> getStudent(String );
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudentManagerService.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudentManagerService.java
index 3543e91..aedd20b 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudentManagerService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudentManagerService.java
@@ -7,4 +7,6 @@
public interface ThStudentManagerService {
List<ThStudent> listByPage(ThStudentQuery query);
+
+ ThStudent findByIdCard(String idcard);
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java
index 34efd7f..be08ff3 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java
@@ -10,6 +10,8 @@
import com.gkhy.exam.institutionalaccess.model.vo.*;
import com.gkhy.exam.institutionalaccess.service.*;
import com.gkhy.exam.institutionalaccess.utils.ConvertTimeUtils;
+import com.gkhy.exam.institutionalaccess.utils.SendMessageUtil;
+import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -18,6 +20,7 @@
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@@ -35,6 +38,11 @@
private ThBatchCourseChapterService thBatchCourseChapterService;
@Autowired
private ThSubjectTypeService subjectTypeService;
+ @Autowired
+ private ThStudentManagerService thStudentManagerService;
+
+ @Autowired
+ private SendMessageUtil sendMessageUtil;
@Override
public List<ThBatchVO> listByPage(ThBatchQuery query) {
@@ -180,6 +188,22 @@
return respDTOS;
}
+ //短信提醒
+ @Override
+ public AjaxResult sendMes(String idcard) {
+ ThStudent thStudent = thStudentManagerService.findByIdCard(idcard);
+ if (StringUtils.isEmpty(thStudent.getPhone()) || thStudent.getPhone().equals("-")){
+ return AjaxResult.error("该学员未绑定手机号");
+ }
+ //调用短信接口
+ String[] phone={thStudent.getPhone()};
+ HashMap<String, String> map = new HashMap<>();
+ map.put("name",thStudent.getName());
+ map.put("platform",thStudent.getInstitutionName());
+ sendMessageUtil.sendMessageCheck(phone,map);
+ return AjaxResult.success();
+ }
+
public String getObtainSuperiors(String code){
List<ThSubjectType> subjectTypeList = subjectTypeService.getSubjectTypeList();
if(StringUtils.isEmpty(code)){
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThCourseManagerServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThCourseManagerServiceImpl.java
index bcccccd..744e76c 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThCourseManagerServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThCourseManagerServiceImpl.java
@@ -1,9 +1,7 @@
package com.gkhy.exam.institutionalaccess.service.serviceImpl;
-import com.gkhy.exam.institutionalaccess.entity.ThBatchCourse;
-import com.gkhy.exam.institutionalaccess.entity.ThCourse;
-import com.gkhy.exam.institutionalaccess.entity.ThCourseChapter;
-import com.gkhy.exam.institutionalaccess.entity.ThStudentBatch;
+import com.gkhy.exam.institutionalaccess.entity.*;
+import com.gkhy.exam.institutionalaccess.enums.CourseStatus;
import com.gkhy.exam.institutionalaccess.enums.FinishStatus;
import com.gkhy.exam.institutionalaccess.model.query.ThCourseQuery;
import com.gkhy.exam.institutionalaccess.model.resp.ThCourseChapterRespDTO;
@@ -22,7 +20,6 @@
import java.math.BigDecimal;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -147,6 +144,22 @@
return respDTOS;
}
+ //课程审核
+ @Override
+ public Boolean updateByCourse(ThCourseDTO thCourseDTO) {
+ if (StringUtils.isEmpty(thCourseDTO.getStatus()) || StringUtils.isEmpty(thCourseDTO.getId())){
+ return false;
+ }
+ ThCourse byUuid = courseService.getById(thCourseDTO.getId());
+ if (!byUuid.getStatus().equals(CourseStatus.REVIEWED.getStatus())){
+ return false;
+ }
+ ThCourse thCourse = new ThCourse();
+ thCourse.setId(thCourseDTO.getId());
+ thCourse.setStatus(thCourseDTO.getStatus());
+ return courseService.updateById(thCourse);
+ }
+
//获取章节
private List<ThCourseChapterRespDTO> getChildren(List<ThCourseChapterVO> courseChapterVOS, String parentUuid) {
List<ThCourseChapterRespDTO> chapterList = courseChapterVOS
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudentManagerServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudentManagerServiceImpl.java
index f2f66ea..2305ace 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudentManagerServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudentManagerServiceImpl.java
@@ -24,4 +24,9 @@
.like(!StringUtils.isEmpty(query.getName()),ThStudent::getName, query.getName())
.eq(ThStudent::getDelFlag, DeleteStatusEnum.NO.getStatus()).orderByDesc(ThStudent::getUpdateTime));
}
+
+ @Override
+ public ThStudent findByIdCard(String idcard) {
+ return thStudentService.getByIdcard(idcard);
+ }
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java
index 0f36892..0d5d89f 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java
@@ -19,6 +19,7 @@
import com.ruoyi.common.signature.AESUtils;
import com.ruoyi.system.domain.ThAccessAddress;
import com.ruoyi.system.service.ThAccessAddressService;
+import lombok.extern.log4j.Log4j2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@@ -31,6 +32,7 @@
import java.util.stream.Collectors;
@Service("ThStudyRecordManagerService")
+@Log4j2
public class ThStudyRecordManagerServiceImpl implements ThStudyRecordManagerService {
private Logger logger = LoggerFactory.getLogger(ThStudyRecordManagerServiceImpl.class);
@@ -131,9 +133,11 @@
Map<String,String> params = new HashMap<>();
params.put("idcard",query.getIdcard());
String json = HttpClientUtil.doGet(accessAddress.getUrl(), params);
+ log.info("调用机构接口返回结果: "+json);
ReturnVO<String> returnVo = JSONObject.parseObject(json, new TypeReference<ReturnVO<String>>() {});
- if(returnVo.getCode() == null || returnVo.getCode() != 200){
+ log.info("获得第三方数据:"+returnVo);
+ if(returnVo==null || returnVo.getCode() == null || returnVo.getCode() != 200){
throw new ServiceException("获取三方数据数据异常");
}
ThPlatformStudentRespDTO thPlatformStudentRespDTO = null;
@@ -141,6 +145,7 @@
String decrypt = "";
try {
decrypt = AESUtils.decrypt(returnVo.getData());
+ log.info("解密后的数据为:"+decrypt);
}catch (Exception e){
throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR,"解密异常");
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/utils/SendMessageUtil.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/utils/SendMessageUtil.java
new file mode 100644
index 0000000..17c9e0f
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/utils/SendMessageUtil.java
@@ -0,0 +1,48 @@
+package com.gkhy.exam.institutionalaccess.utils;
+
+import com.qiniu.common.QiniuException;
+import com.qiniu.http.Response;
+import com.qiniu.sms.SmsManager;
+import com.qiniu.util.Auth;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Component
+public class SendMessageUtil {
+
+ private static final Logger log = LoggerFactory.getLogger(SendMessageUtil.class);
+
+ @Value("${safecheckqiniuymes.accesskey}")
+ private String accesskey;
+
+ @Value("${safecheckqiniuymes.secretkey}")
+ private String secretkey;
+
+ @Value("${safecheckqiniuymes.templateid}")
+ private String templateid;
+
+ /**
+ * 发送短信提示
+ */
+ @Async("SocketTaskExecutor")
+ public Boolean sendMessageCheck(String[] phone, Map<String, String> map){
+ Auth auth = Auth.create(accesskey, secretkey);
+ SmsManager smsManager = new SmsManager(auth);
+ try {
+ Response resp = smsManager.sendMessage(templateid, phone , map);
+ if(resp.statusCode == 200){
+ return true;
+ }else {
+ return false;
+ }
+ } catch (QiniuException e) {
+ log.info("发生短信异常 =======================" ,e);
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-pro.yml b/ruoyi-admin/src/main/resources/application-pro.yml
index f615957..cb188b5 100644
--- a/ruoyi-admin/src/main/resources/application-pro.yml
+++ b/ruoyi-admin/src/main/resources/application-pro.yml
@@ -122,4 +122,10 @@
queueCapacity: 10000
scheduling:
#控制线程是否执行 true:执行;false:不执行
- enabled: true
\ No newline at end of file
+ enabled: true
+
+# 七牛云相关信息
+safecheckqiniuymes:
+ accesskey: 5YprpjY0BJiyjII2VqlHed7UhBEvvkPZicbwd8Kl
+ secretkey: m3gGQNQ9cLmVBBZwPXZ5-Wzr0duzyAPPmJUx4_ay
+ templateid: 1844221365930962944
\ No newline at end of file
--
Gitblit v1.9.2