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