passExamCheck(Long classId);
+
+
+}
diff --git a/src/main/java/com/subsidy/mapper/RenshejuHistoryMapper.java b/src/main/java/com/subsidy/mapper/RenshejuHistoryMapper.java
new file mode 100644
index 0000000..d71c37f
--- /dev/null
+++ b/src/main/java/com/subsidy/mapper/RenshejuHistoryMapper.java
@@ -0,0 +1,18 @@
+package com.subsidy.mapper;
+
+import com.subsidy.model.RenshejuHistoryDO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ * 人社局推送失败记录表 Mapper 接口
+ *
+ *
+ * @author Tuyp
+ * @since 2023-02-07
+ */
+ @Repository
+public interface RenshejuHistoryMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java b/src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java
index df1fcc2..93e34cd 100644
--- a/src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java
+++ b/src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java
@@ -96,6 +96,10 @@ public interface VodPlayHistoryMapper extends BaseMapper {
*/
List getVodPlayDay(Long classId, Long memberId, Date endDate);
+ /**
+ * 找到某个人最新的学习记录
+ */
+// Long memberLatestRecord(Long memberId);
double getStudyTotal();
diff --git a/src/main/java/com/subsidy/model/CompanyDictDO.java b/src/main/java/com/subsidy/model/CompanyDictDO.java
index 76af168..9643b32 100644
--- a/src/main/java/com/subsidy/model/CompanyDictDO.java
+++ b/src/main/java/com/subsidy/model/CompanyDictDO.java
@@ -56,6 +56,11 @@ public class CompanyDictDO extends BaseModel {
private String address;
/**
+ * 区域
+ */
+ private String areaName;
+
+ /**
* 是否需要跳转到Q学友
*/
private Boolean qxyStatus;
diff --git a/src/main/java/com/subsidy/model/RenshejuHistoryDO.java b/src/main/java/com/subsidy/model/RenshejuHistoryDO.java
new file mode 100644
index 0000000..d6a1567
--- /dev/null
+++ b/src/main/java/com/subsidy/model/RenshejuHistoryDO.java
@@ -0,0 +1,44 @@
+package com.subsidy.model;
+
+import com.subsidy.util.BaseModel;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ * 人社局推送失败记录表
+ *
+ *
+ * @author Tuyp
+ * @since 2023-02-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("rensheju_history")
+public class RenshejuHistoryDO extends BaseModel {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 接口名称
+ */
+ private String interfaceName;
+
+ /**
+ * 入参
+ */
+ private String inputParam;
+
+ /**
+ * 出参
+ */
+ private Object outputParam;
+
+
+}
diff --git a/src/main/java/com/subsidy/model/VodPlayHistoryDO.java b/src/main/java/com/subsidy/model/VodPlayHistoryDO.java
index 2086fba..ec42acd 100644
--- a/src/main/java/com/subsidy/model/VodPlayHistoryDO.java
+++ b/src/main/java/com/subsidy/model/VodPlayHistoryDO.java
@@ -48,6 +48,11 @@ public class VodPlayHistoryDO extends BaseModel {
private Integer playLength;
/**
+ * 暂停时长
+ */
+ private Integer suspendLength;
+
+ /**
* 播放视频位置
*/
private Integer playRecord;
diff --git a/src/main/java/com/subsidy/service/ActivityDetectionService.java b/src/main/java/com/subsidy/service/ActivityDetectionService.java
index a02bb4c..777ebef 100644
--- a/src/main/java/com/subsidy/service/ActivityDetectionService.java
+++ b/src/main/java/com/subsidy/service/ActivityDetectionService.java
@@ -23,4 +23,5 @@ public interface ActivityDetectionService extends IService
IPage getCheckHistory(GetCheckHistoryDTO getCheckHistoryDTO);
+ String verifyError(ActivityDetectionDO activityDetectionDO);
}
diff --git a/src/main/java/com/subsidy/service/RenSheJuService.java b/src/main/java/com/subsidy/service/RenSheJuService.java
new file mode 100644
index 0000000..99a89bd
--- /dev/null
+++ b/src/main/java/com/subsidy/service/RenSheJuService.java
@@ -0,0 +1,32 @@
+package com.subsidy.service;
+
+import com.subsidy.dto.renshe.*;
+import com.subsidy.vo.renshe.RensheResponseVO;
+import com.subsidy.vo.renshe.RensheStringVO;
+
+import java.io.IOException;
+import java.util.List;
+
+public interface RenSheJuService {
+
+ RensheResponseVO classBaseInfo() throws IOException;
+
+ RensheResponseVO classHourBehavior() throws IOException;
+
+ RensheResponseVO uploadChapterBehavior() throws IOException;
+
+ RensheResponseVO uploadClassAnswerQuestionBehavior()throws IOException;
+
+ List uploadImage()throws IOException;
+
+ RensheResponseVO getClassCodeByPrivateKey()throws IOException;
+
+ RensheResponseVO uploadClassCode()throws IOException;
+
+ RensheResponseVO getErrorClass()throws IOException;
+
+ RensheStringVO clear()throws IOException;
+
+ void test();
+
+}
diff --git a/src/main/java/com/subsidy/service/RenshejuHistoryService.java b/src/main/java/com/subsidy/service/RenshejuHistoryService.java
new file mode 100644
index 0000000..73ef5ca
--- /dev/null
+++ b/src/main/java/com/subsidy/service/RenshejuHistoryService.java
@@ -0,0 +1,16 @@
+package com.subsidy.service;
+
+import com.subsidy.model.RenshejuHistoryDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 人社局推送失败记录表 服务类
+ *
+ *
+ * @author Tuyp
+ * @since 2023-02-07
+ */
+public interface RenshejuHistoryService extends IService {
+
+}
diff --git a/src/main/java/com/subsidy/service/impl/ActivityDetectionServiceImpl.java b/src/main/java/com/subsidy/service/impl/ActivityDetectionServiceImpl.java
index e2f1f6e..42e0f47 100644
--- a/src/main/java/com/subsidy/service/impl/ActivityDetectionServiceImpl.java
+++ b/src/main/java/com/subsidy/service/impl/ActivityDetectionServiceImpl.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.detection.GetCheckHistoryDTO;
import com.subsidy.dto.detection.VerifyDTO;
+import com.subsidy.mapper.VodPlayHistoryMapper;
import com.subsidy.model.ActivityDetectionDO;
import com.subsidy.mapper.ActivityDetectionMapper;
import com.subsidy.service.ActivityDetectionService;
@@ -13,6 +14,7 @@ import com.subsidy.util.ActivityDetectionUtils;
import com.subsidy.util.ConstantUtils;
import com.subsidy.vo.activity.GetCheckHistoryVO;
import com.tencentcloudapi.captcha.v20190722.models.DescribeCaptchaResultResponse;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
@@ -28,6 +30,9 @@ import javax.servlet.http.HttpServletRequest;
@Service
public class ActivityDetectionServiceImpl extends ServiceImpl implements ActivityDetectionService {
+ @Autowired
+ private VodPlayHistoryMapper vodPlayHistoryMapper;
+
public String verify(VerifyDTO verifyDTO, HttpServletRequest request){
try{
@@ -47,6 +52,11 @@ public class ActivityDetectionServiceImpl extends ServiceImpl()
.lambda()
.eq(ClassMemberMappingDO::getMemberId, imageCheckRecordDO.getMemberId())
.eq(ClassMemberMappingDO::getClassId, imageCheckRecordDO.getClassId()));
-
- classMemberMappingDO.setPhoto(imageCheckRecordDO.getPhoto());
- classMemberMappingMapper.updateById(classMemberMappingDO);
+ if (StringUtils.isEmpty(classMemberMappingDO.getPhoto())){
+ classMemberMappingDO.setPhoto(imageCheckRecordDO.getPhoto());
+ classMemberMappingMapper.updateById(classMemberMappingDO);
+ }
}
} else {
activityDetectionDO.setStatus(0);
diff --git a/src/main/java/com/subsidy/service/impl/RenSheJuServiceImpl.java b/src/main/java/com/subsidy/service/impl/RenSheJuServiceImpl.java
new file mode 100644
index 0000000..25dd12e
--- /dev/null
+++ b/src/main/java/com/subsidy/service/impl/RenSheJuServiceImpl.java
@@ -0,0 +1,572 @@
+package com.subsidy.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.subsidy.common.configure.RenSheConfig;
+import com.subsidy.dto.renshe.*;
+import com.subsidy.mapper.ClassDictMapper;
+import com.subsidy.mapper.RenSheJuMapper;
+import com.subsidy.mapper.RenshejuHistoryMapper;
+import com.subsidy.model.ClassDictDO;
+import com.subsidy.model.ExerciseDoneResultDO;
+import com.subsidy.model.OprMemDictDO;
+import com.subsidy.model.RenshejuHistoryDO;
+import com.subsidy.service.RenSheJuService;
+import com.subsidy.util.OSSUtils;
+import com.subsidy.util.RenSheJuConstant;
+import com.subsidy.vo.renshe.*;
+import net.sf.json.JSONObject;
+import okhttp3.*;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+@Service
+public class RenSheJuServiceImpl implements RenSheJuService {
+
+ @Autowired
+ private RenSheJuMapper renSheJuMapper;
+
+ @Autowired
+ private RenSheConfig renSheConfig;
+
+ @Autowired
+ private ClassDictMapper classDictMapper;
+
+ @Autowired
+ RenshejuHistoryMapper renshejuHistoryMapper;
+
+ public RensheResponseVO classBaseInfo() throws IOException {
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+ MediaType mediaType = MediaType.parse("application/json");
+
+ //拼数据
+ ClassBaseInfoDTO classBaseInfoDTO = new ClassBaseInfoDTO();
+ classBaseInfoDTO.setPrivateKey(getSecret());
+
+ List epidemicSituationClassBasics = new ArrayList<>();
+
+ //查找前一天产生数据的班级
+ List classIds = renSheJuMapper.newClasses();
+ for (Long classId : classIds) {
+ EpidemicSituationClassBasic epidemicSituationClassBasic = new EpidemicSituationClassBasic();
+ //班级基本信息
+ ClassBaseInfoVO classBaseInfoVO = renSheJuMapper.classBaseInfo(classId);
+ BeanUtils.copyProperties(classBaseInfoVO, epidemicSituationClassBasic);
+ epidemicSituationClassBasic.setDownCode(classBaseInfoVO.getDownCode());
+
+ //章节
+ List chapterLists = renSheJuMapper.classChapters(classId);
+ ChapterList2 chapterList2 = chapterLists.get(chapterLists.size() - 1);
+ chapterList2.setIsExam(1);
+ epidemicSituationClassBasic.setChapterList(chapterLists);
+
+ //学员列表
+ List memberVOS = renSheJuMapper.classMembers(classId);
+ epidemicSituationClassBasic.setStudentList(memberVOS);
+
+ epidemicSituationClassBasics.add(epidemicSituationClassBasic);
+ }
+ classBaseInfoDTO.setEpidemicSituationClassBasic(epidemicSituationClassBasics);
+
+ System.out.println(JSONObject.fromObject(classBaseInfoDTO).toString());
+
+ RequestBody body = RequestBody.create(mediaType, JSONObject.fromObject(classBaseInfoDTO).toString());
+// Request request = new Request.Builder()
+// .url(renSheConfig.getUrl() + "/import/downstream/enterprise/uploadClass")
+// .method("POST", body)
+// .addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
+// .addHeader("Content-Type", "application/json")
+// .build();
+// Response response = client.newCall(request).execute();
+// RensheResponseVO rensheResponseVO = JSON.parseObject(response.body().string(), RensheResponseVO.class);
+// RenshejuHistoryDO renshejuHistoryDO = new RenshejuHistoryDO();
+// renshejuHistoryDO.setInterfaceName(RenSheJuConstant.POST_2);
+// renshejuHistoryDO.setInputParam(JSONObject.fromObject(classBaseInfoDTO).toString());
+// renshejuHistoryDO.setOutputParam(rensheResponseVO.getCtt().toString());
+// renshejuHistoryMapper.insert(renshejuHistoryDO);
+// System.out.println(rensheResponseVO);
+// return rensheResponseVO;
+ return null;
+
+ }
+
+ public RensheResponseVO classHourBehavior() throws IOException {
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+ MediaType mediaType = MediaType.parse("application/json");
+
+ ClassHourBehaviorDTO classHourBehaviorDTO = new ClassHourBehaviorDTO();
+
+ classHourBehaviorDTO.setPrivateKey(getSecret());
+
+ List classHourBasics = new ArrayList<>();
+
+ //前一天新增视频学习数据的班级
+ List dailyStudyInfoVOS = renSheJuMapper.dailyStudyInfo();
+ for (DailyStudyInfoVO dailyStudyInfoVO : dailyStudyInfoVOS) {
+ ClassHourBasic classHourBasic = new ClassHourBasic();
+ BeanUtils.copyProperties(dailyStudyInfoVO, classHourBasic);
+ classHourBasic.setDownCode(dailyStudyInfoVO.getDownCode());
+
+ //上线时间列表
+ //找到当天每次上线下线时间
+ //上线时间
+ List loginRecords = renSheJuMapper.loginRecords(dailyStudyInfoVO.getMemberId());
+ //下线时间
+ List loginOutRecords = renSheJuMapper.loginOutRecords(dailyStudyInfoVO.getMemberId());
+
+ List loginLists = new ArrayList<>();
+ for (int i = 0; i < loginRecords.size(); i++) {
+ LoginList loginList = new LoginList();
+ loginList.setIp(loginRecords.get(i).getIpAddress());
+ loginList.setStartTime(Timestamp.valueOf(loginRecords.get(i).getCreateDate()).getTime());
+ loginList.setEndTime(Timestamp.valueOf(loginOutRecords.get(i).getCreateDate()).getTime());
+
+ //查看这个人该时间段的学习记录
+ List chapterList3s = renSheJuMapper.dailyStudyRecords(dailyStudyInfoVO.getMemberId(), dailyStudyInfoVO.getDownCode(), loginRecords.get(0).getCreateDate().toString().replace("T", " "), loginOutRecords.get(i).getCreateDate().toString().replace("T", " "));
+ loginList.setChapterList(chapterList3s);
+ loginLists.add(loginList);
+ }
+ classHourBasic.setLoginList(loginLists);
+
+ //活跃度列表
+ List activityLists = new ArrayList<>();
+ List activityDetectionDOS = renSheJuMapper.dailyActivities(dailyStudyInfoVO.getDownCode(), dailyStudyInfoVO.getMemberId());
+ for (DailyActivitiesVO dailyActivitiesVO : activityDetectionDOS) {
+
+ ActivityList activityList = new ActivityList();
+ if (dailyActivitiesVO.getAccess() == 1) {
+ activityList.setAccess(0);
+ } else {
+ activityList.setAccess(1);
+ activityList.setErrorInfo(2);
+ }
+ activityList.setActivityDetection(2);
+ activityList.setActivityTime(dailyActivitiesVO.getActivityTime());
+ activityLists.add(activityList);
+ }
+ classHourBasic.setActivityList(activityLists);
+
+ classHourBasics.add(classHourBasic);
+ }
+ classHourBehaviorDTO.setClassHourBasic(classHourBasics);
+
+ System.out.println(com.alibaba.fastjson.JSONObject.toJSONString(classHourBehaviorDTO));
+
+ RequestBody body = RequestBody.create(mediaType, JSONObject.fromObject(classHourBehaviorDTO).toString());
+
+ Request request = new Request.Builder()
+ .url(renSheConfig.getUrl() + "/import/downstream/enterprise/uploadClassHourBehavior")
+ .method("POST", body)
+ .addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
+ .addHeader("Content-Type", "application/json")
+ .build();
+ Response response = client.newCall(request).execute();
+ RensheResponseVO rensheResponseVO = JSON.parseObject(response.body().string(), RensheResponseVO.class);
+ if (null!=rensheResponseVO.getCtt()){
+ RenshejuHistoryDO renshejuHistoryDO = new RenshejuHistoryDO();
+ renshejuHistoryDO.setInterfaceName(RenSheJuConstant.POST_3);
+ renshejuHistoryDO.setInputParam(JSONObject.fromObject(classHourBehaviorDTO).toString());
+ renshejuHistoryDO.setOutputParam(rensheResponseVO.getCtt().toString());
+ renshejuHistoryMapper.insert(renshejuHistoryDO);
+ }
+ System.out.println(rensheResponseVO);
+ return rensheResponseVO;
+ }
+
+ public RensheResponseVO uploadChapterBehavior() throws IOException {
+
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+ MediaType mediaType = MediaType.parse("application/json");
+
+ UploadChapterBehaviorDTO uploadChapterBehaviorDTO = new UploadChapterBehaviorDTO();
+
+ uploadChapterBehaviorDTO.setPrivateKey(getSecret());
+
+ List chapterExamBasics = new ArrayList<>();
+
+ List dailyExamBasicVOS = renSheJuMapper.dailyExamBasic();
+
+ for (DailyExamBasicVO dailyExamBasicVO : dailyExamBasicVOS) {
+
+ //章节课程考试时间列表
+ ChapterExamBasic chapterExamBasic = new ChapterExamBasic();
+ BeanUtils.copyProperties(dailyExamBasicVO, chapterExamBasic);
+ chapterExamBasic.setDownCode(dailyExamBasicVO.getDownCode());
+
+ //最后一节课作为chapterCode
+ String vodId = renSheJuMapper.classVodName(dailyExamBasicVO.getDownCode());
+ chapterExamBasic.setChapterCode(vodId);
+
+ //考试活跃度列表
+ List activityLists = new ArrayList<>();
+ List activityDetectionDOS = renSheJuMapper.examActivities(dailyExamBasicVO.getDownCode(), dailyExamBasicVO.getMemberId());
+ for (ExamActivitiesVO dailyActivitiesVO : activityDetectionDOS) {
+
+ ActivityList activityList = new ActivityList();
+ if (null == dailyActivitiesVO.getAccess() || 0 == dailyActivitiesVO.getAccess()) {
+ activityList.setAccess(1);
+ activityList.setErrorInfo(1);
+ } else {
+ activityList.setAccess(0);
+ }
+ activityList.setActivityDetection(1);
+ activityList.setActivityTime(dailyActivitiesVO.getActivityTime());
+ activityLists.add(activityList);
+ }
+ chapterExamBasic.setActivityList(activityLists);
+
+ //考试时间列表
+ //上线时间
+ List loginRecords = renSheJuMapper.loginRecords(dailyExamBasicVO.getMemberId());
+ //下线时间
+ List loginOutRecords = renSheJuMapper.loginOutRecords(dailyExamBasicVO.getMemberId());
+
+ List examLists = new ArrayList();
+
+ for (int i = 0; i < loginRecords.size(); i++) {
+ //找到该时间段内的测评
+ List exerciseDoneResultDOS = renSheJuMapper.dailyExerciseDone(dailyExamBasicVO.getMemberId(), loginRecords.get(i).getCreateDate().toString().replace("T", " "), loginOutRecords.get(i).getCreateDate().toString().replace("T", " "));
+ for (ExerciseDoneResultDO exerciseDoneResultDO : exerciseDoneResultDOS) {
+ ExamList examList = new ExamList();
+ examList.setStartTime(Timestamp.valueOf(exerciseDoneResultDO.getStartDate()).getTime());
+ examList.setEndTime(Timestamp.valueOf(exerciseDoneResultDO.getCreateDate()).getTime());
+ examList.setIp(loginRecords.get(i).getIpAddress());
+ examLists.add(examList);
+ }
+ }
+ chapterExamBasic.setExamList(examLists);
+ chapterExamBasics.add(chapterExamBasic);
+ }
+
+ uploadChapterBehaviorDTO.setChapterExamBasic(chapterExamBasics);
+
+ System.out.println(com.alibaba.fastjson.JSONObject.toJSONString(uploadChapterBehaviorDTO));
+
+ RequestBody body = RequestBody.create(mediaType, JSONObject.fromObject(uploadChapterBehaviorDTO).toString());
+ Request request = new Request.Builder()
+ .url(renSheConfig.getUrl() + "/import/downstream/enterprise/uploadChapterBehavior")
+ .method("POST", body)
+ .addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
+ .addHeader("Content-Type", "application/json")
+ .build();
+ Response response = client.newCall(request).execute();
+ RensheResponseVO rensheResponseVO = JSON.parseObject(response.body().string(), RensheResponseVO.class);
+ System.out.println(rensheResponseVO);
+ if (null!=rensheResponseVO.getCtt()){
+ RenshejuHistoryDO renshejuHistoryDO = new RenshejuHistoryDO();
+ renshejuHistoryDO.setInterfaceName(RenSheJuConstant.POST_4);
+ renshejuHistoryDO.setInputParam(JSONObject.fromObject(uploadChapterBehaviorDTO).toString());
+ renshejuHistoryDO.setOutputParam(rensheResponseVO.getCtt().toString());
+ renshejuHistoryMapper.insert(renshejuHistoryDO);
+ }
+ return rensheResponseVO;
+ }
+
+ public RensheResponseVO uploadClassAnswerQuestionBehavior() throws IOException {
+
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+ MediaType mediaType = MediaType.parse("application/json");
+
+ UploadClassAnswerQuestionBehaviorDTO uploadClassAnswerQuestionBehaviorDTO = new UploadClassAnswerQuestionBehaviorDTO();
+
+ //秘钥
+ uploadClassAnswerQuestionBehaviorDTO.setPrivateKey(getSecret());
+
+ List dailyAnswerVOS = renSheJuMapper.dailyAnswer();
+
+ HashMap> hashMap = new HashMap<>();
+ for (DailyAnswerVO dailyAnswerVO : dailyAnswerVOS) {
+
+ if (!hashMap.containsKey(dailyAnswerVO.getDownCode() + ":" + dailyAnswerVO.getIdentity())) {
+ List answerAndQuestionLists = new ArrayList<>();
+ AnswerAndQuestionList answerAndQuestionList = new AnswerAndQuestionList();
+ answerAndQuestionList.setAnswer(dailyAnswerVO.getAnswer());
+ answerAndQuestionList.setQuestion(dailyAnswerVO.getQuestion());
+ answerAndQuestionLists.add(answerAndQuestionList);
+ hashMap.put(dailyAnswerVO.getDownCode() + ":" + dailyAnswerVO.getIdentity(), answerAndQuestionLists);
+ } else {
+ List answerAndQuestionLists = hashMap.get(dailyAnswerVO.getDownCode() + ":" + dailyAnswerVO.getIdentity());
+ AnswerAndQuestionList answerAndQuestionList = new AnswerAndQuestionList();
+ answerAndQuestionList.setAnswer(dailyAnswerVO.getAnswer());
+ answerAndQuestionList.setQuestion(dailyAnswerVO.getQuestion());
+ answerAndQuestionLists.add(answerAndQuestionList);
+ hashMap.put(dailyAnswerVO.getDownCode() + ":" + dailyAnswerVO.getIdentity(), answerAndQuestionLists);
+ }
+ }
+
+ List answerBasics = new ArrayList<>();
+
+ for (String key : hashMap.keySet()) {
+ AnswerBasic answerBasic = new AnswerBasic();
+ String downCode = key.split(":")[0];
+ String identity = key.split(":")[1];
+ answerBasic.setDownCode(downCode);
+ answerBasic.setIdentity(identity);
+ answerBasic.setAnswerAndQuestionList(hashMap.get(key));
+ answerBasics.add(answerBasic);
+ }
+
+ uploadClassAnswerQuestionBehaviorDTO.setAnswerBasic(answerBasics);
+ System.out.println(com.alibaba.fastjson.JSONObject.toJSONString(uploadClassAnswerQuestionBehaviorDTO));
+ RequestBody body = RequestBody.create(mediaType, JSONObject.fromObject(uploadClassAnswerQuestionBehaviorDTO).toString());
+ Request request = new Request.Builder()
+ .url(renSheConfig.getUrl() + "/import/downstream/enterprise/uploadClassAnswerQuestionBehavior")
+ .method("POST", body)
+ .addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
+ .addHeader("Content-Type", "application/json")
+ .build();
+ Response response = client.newCall(request).execute();
+ RensheResponseVO rensheResponseVO = JSON.parseObject(response.body().string(), RensheResponseVO.class);
+ System.out.println(rensheResponseVO);
+ if (null!=rensheResponseVO.getCtt()){
+ RenshejuHistoryDO renshejuHistoryDO = new RenshejuHistoryDO();
+ renshejuHistoryDO.setInterfaceName(RenSheJuConstant.POST_5);
+ renshejuHistoryDO.setInputParam(JSONObject.fromObject(uploadClassAnswerQuestionBehaviorDTO).toString());
+ renshejuHistoryDO.setOutputParam(rensheResponseVO.getCtt().toString());
+ renshejuHistoryMapper.insert(renshejuHistoryDO);
+ }
+
+ return rensheResponseVO;
+ }
+
+ public List uploadImage() throws IOException {
+
+ List rensheResponseVOS = new ArrayList<>();
+
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+ MediaType mediaType = MediaType.parse("application/json");
+
+
+ //找到昨天做过人脸识别的班级
+ List classIds = renSheJuMapper.checkClassIds();
+ for (Long classId : classIds) {
+
+ UploadImageDTO uploadImage = new UploadImageDTO();
+ uploadImage.setPrivateKey(getSecret());
+ uploadImage.setDownCode(String.valueOf(classId));
+// //查找班级下所有人做过的实名认证记录
+ List classImageChecksVOS = renSheJuMapper.classImageChecks(classId);
+
+ List imageDetailLists = new ArrayList();
+ //
+ for (ClassImageChecksVO classImageChecksVO : classImageChecksVOS) {
+ ImageDetailList imageDetailList = new ImageDetailList();
+ BeanUtils.copyProperties(classImageChecksVO, imageDetailList);
+ imageDetailList.setImageBase64(OSSUtils.image2Base64(classImageChecksVO.getImage()));
+ imageDetailList.setProcessType(0L);
+ imageDetailList.setDetectionType(0L);
+ imageDetailLists.add(imageDetailList);
+ }
+
+ //查找前一天做过考试验证的记录
+ List classImageChecksVOS1 = renSheJuMapper.passExamCheck(classId);
+
+ for (ClassImageChecksVO cic : classImageChecksVOS1) {
+ ImageDetailList imageDetailList = new ImageDetailList();
+ BeanUtils.copyProperties(cic, imageDetailList);
+ imageDetailList.setImageBase64(OSSUtils.image2Base64(cic.getImage()));
+ imageDetailList.setProcessType(2L);
+ imageDetailList.setDetectionType(1L);
+ imageDetailLists.add(imageDetailList);
+ }
+
+ uploadImage.setImageDetailList(imageDetailLists);
+ System.out.println(com.alibaba.fastjson.JSONObject.toJSONString(uploadImage));
+ RequestBody body = RequestBody.create(mediaType, JSONObject.fromObject(uploadImage).toString());
+ Request request = new Request.Builder()
+ .url(renSheConfig.getUrl() + "/import/downstream/enterprise/uploadImage")
+ .method("POST", body)
+ .addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
+ .addHeader("Content-Type", "application/json")
+ .build();
+ Response response = client.newCall(request).execute();
+ RensheResponseVO rensheResponseVO= JSON.parseObject(response.body().string(), RensheResponseVO.class);
+
+ if (null!=rensheResponseVO.getCtt()){
+ RenshejuHistoryDO renshejuHistoryDO = new RenshejuHistoryDO();
+ renshejuHistoryDO.setInterfaceName(RenSheJuConstant.POST_6);
+ renshejuHistoryDO.setInputParam(JSONObject.fromObject(uploadImage).toString());
+ renshejuHistoryDO.setOutputParam(rensheResponseVO.getCtt().toString());
+ renshejuHistoryMapper.insert(renshejuHistoryDO);
+ }
+ System.out.println(rensheResponseVO);
+ rensheResponseVOS.add(rensheResponseVO);
+ }
+
+ return rensheResponseVOS;
+ }
+
+ public RensheResponseVO getClassCodeByPrivateKey() throws IOException {
+
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+ MediaType mediaType = MediaType.parse("text/plain");
+ RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
+ .addFormDataPart("privateKey", getSecret())
+ .build();
+ Request request = new Request.Builder()
+ .url(renSheConfig.getUrl() + "/import/downstream/enterprise/getClassCodeByPrivateKey")
+ .method("POST", body)
+ .addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
+ .build();
+ Response response = client.newCall(request).execute();
+ System.out.println(response);
+ RensheResponseVO rensheResponseVO = JSON.parseObject(response.body().string(), RensheResponseVO.class);
+ System.out.println(rensheResponseVO);
+
+ if (null!=rensheResponseVO.getCtt()){
+ RenshejuHistoryDO renshejuHistoryDO = new RenshejuHistoryDO();
+ renshejuHistoryDO.setInterfaceName(RenSheJuConstant.POST_7);
+ renshejuHistoryDO.setInputParam(getSecret());
+ renshejuHistoryDO.setOutputParam(rensheResponseVO.getCtt().toString());
+ renshejuHistoryMapper.insert(renshejuHistoryDO);
+ }
+ return rensheResponseVO;
+ }
+
+ public RensheResponseVO uploadClassCode() throws IOException {
+
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+ MediaType mediaType = MediaType.parse("application/json");
+
+ UploadClassCodeDTO uploadClassCodeDTO = new UploadClassCodeDTO();
+
+ uploadClassCodeDTO.setPrivateKey(getSecret());
+
+ //所有班级
+ List classIds = renSheJuMapper.newClasses();
+
+ List classCodeBasics = new ArrayList();
+ for (Long classId : classIds) {
+ ClassCodeBasic classCodeBasic = new ClassCodeBasic();
+ ClassDictDO classDictDO = classDictMapper.selectById(classId);
+ classCodeBasic.setDownCode(String.valueOf(classDictDO.getId()));
+ classCodeBasic.setClassCode(classDictDO.getClassCode());
+ classCodeBasics.add(classCodeBasic);
+ }
+ uploadClassCodeDTO.setClassCodeBasic(classCodeBasics);
+
+ System.out.println(com.alibaba.fastjson.JSONObject.toJSONString(uploadClassCodeDTO));
+
+ RequestBody body = RequestBody.create(mediaType, JSONObject.fromObject(uploadClassCodeDTO).toString());
+ Request request = new Request.Builder()
+ .url(renSheConfig.getUrl()+"/import/downstream/enterprise/uploadClassCode")
+ .method("POST", body)
+ .addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
+ .addHeader("Content-Type", "application/json")
+ .build();
+ Response response = client.newCall(request).execute();
+ RensheResponseVO rensheResponseVO = JSON.parseObject(response.body().string(), RensheResponseVO.class);
+ System.out.println(rensheResponseVO);
+
+ if (null!=rensheResponseVO.getCtt()){
+ RenshejuHistoryDO renshejuHistoryDO = new RenshejuHistoryDO();
+ renshejuHistoryDO.setInterfaceName(RenSheJuConstant.POST_8);
+ renshejuHistoryDO.setInputParam(JSONObject.fromObject(uploadClassCodeDTO).toString());
+ renshejuHistoryDO.setOutputParam(rensheResponseVO.getCtt().toString());
+ renshejuHistoryMapper.insert(renshejuHistoryDO);
+ }
+ return rensheResponseVO;
+ }
+
+ public RensheResponseVO getErrorClass() throws IOException {
+
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+ MediaType mediaType = MediaType.parse("text/plain");
+ RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
+ .addFormDataPart("privateKey", getSecret())
+ .build();
+ Request request = new Request.Builder()
+ .url(renSheConfig.getUrl() + "/import/downstream/enterprise/getErrorClass")
+ .method("POST", body)
+ .addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
+ .build();
+ Response response = client.newCall(request).execute();
+ RensheResponseVO rensheResponseVO = JSON.parseObject(response.body().string(), RensheResponseVO.class);
+ System.out.println(rensheResponseVO);
+ if (null!=rensheResponseVO.getCtt()){
+ RenshejuHistoryDO renshejuHistoryDO = new RenshejuHistoryDO();
+ renshejuHistoryDO.setInterfaceName(RenSheJuConstant.POST_9);
+ renshejuHistoryDO.setInputParam(getSecret());
+ renshejuHistoryDO.setOutputParam(rensheResponseVO.getCtt().toString());
+ renshejuHistoryMapper.insert(renshejuHistoryDO);
+ }
+ return rensheResponseVO;
+ }
+
+ public RensheStringVO clear() throws IOException {
+
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+// MediaType mediaType = MediaType.parse("text/plain");
+ RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
+ .addFormDataPart("privateKey", getSecret())
+ .build();
+ Request request = new Request.Builder()
+ .url(renSheConfig.getUrl() + "/import/downstream/enterprise/clear")
+ .method("POST", body)
+ .addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
+ .build();
+ Response response = client.newCall(request).execute();
+ RensheStringVO rensheStringVO = JSON.parseObject(response.body().string(), RensheStringVO.class);
+ System.out.println(rensheStringVO);
+
+ return rensheStringVO;
+ }
+
+
+ public String getSecret() throws IOException {
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+// MediaType mediaType = MediaType.parse("text/plain");
+ RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
+ .addFormDataPart("publicKey", renSheConfig.getSecretKey())
+ .build();
+ Request request = new Request.Builder()
+ .url(renSheConfig.getUrl() + "/token/accessPrivateKey")
+ .method("POST", body)
+ .addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
+ .build();
+ Response response = client.newCall(request).execute();
+ GetSecretVO getSecretVO = JSON.parseObject(response.body().string(), GetSecretVO.class);
+ System.out.println(getSecretVO);
+ return getSecretVO.getCtt().getPrivateKey();
+ }
+
+ public static void main(String[] args) {
+// GetSecretVO getSecretVO = new GetSecretVO();
+//
+// getSecretVO.setC(1);
+// getSecretVO.setMsg("aaaa");
+// GetSecretChildVO getSecretChildVO = new GetSecretChildVO();
+// getSecretChildVO.setIp("1121");
+// getSecretChildVO.setPrivateKey("1111111");
+//// getSecretChildVO.setValidTime("2212");
+// getSecretVO.setCtt(getSecretChildVO);
+// String s = JSONObject.fromObject(getSecretVO).toString();
+// System.out.println(s);
+
+ LocalDateTime localDateTime = LocalDateTime.now();
+ System.out.println(localDateTime.toString());
+
+ }
+
+ public void test(){
+ System.out.println("132222222222222222222222222222");
+ }
+
+}
diff --git a/src/main/java/com/subsidy/service/impl/RenshejuHistoryServiceImpl.java b/src/main/java/com/subsidy/service/impl/RenshejuHistoryServiceImpl.java
new file mode 100644
index 0000000..bf9f47a
--- /dev/null
+++ b/src/main/java/com/subsidy/service/impl/RenshejuHistoryServiceImpl.java
@@ -0,0 +1,20 @@
+package com.subsidy.service.impl;
+
+import com.subsidy.model.RenshejuHistoryDO;
+import com.subsidy.mapper.RenshejuHistoryMapper;
+import com.subsidy.service.RenshejuHistoryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 人社局推送失败记录表 服务实现类
+ *
+ *
+ * @author Tuyp
+ * @since 2023-02-07
+ */
+@Service
+public class RenshejuHistoryServiceImpl extends ServiceImpl implements RenshejuHistoryService {
+
+}
diff --git a/src/main/java/com/subsidy/util/RenSheJuConstant.java b/src/main/java/com/subsidy/util/RenSheJuConstant.java
new file mode 100644
index 0000000..a79e493
--- /dev/null
+++ b/src/main/java/com/subsidy/util/RenSheJuConstant.java
@@ -0,0 +1,51 @@
+package com.subsidy.util;
+
+public class RenSheJuConstant {
+
+ /**
+ * POST-2:班级基本信息信息采集接口
+ */
+ public static final String POST_2 = "POST_2_classBaseInfo";
+
+ /**
+ * POST-3:学时信息采集接口
+ */
+ public static final String POST_3 = "POST_3_classHourBehavior";
+
+ /**
+ * POST-4:考试信息采集接口
+ */
+ public static final String POST_4 = "POST_4_uploadChapterBehavior";
+
+ /**
+ * POST-5:答疑辅导采集接口
+ */
+ public static final String POST_5 = "POST_5_uploadClassAnswerQuestionBehavior";
+
+ /**
+ * POST-6 班级活跃度/实名认证照片信息采集接口
+ */
+ public static final String POST_6 = "POST_6_uploadImage";
+
+ /**
+ * POST-7 获取培训待绑定的(班级编号,项目编号)列表
+ */
+ public static final String POST_7 = "POST_7_getClassCodeByPrivateKey";
+
+ /**
+ * POST-8 上下游班级数据绑定接口
+ */
+ public static final String POST_8 = "POST_8_uploadClassCode";
+
+ /**
+ * POST-9 获取推送失败班级列表
+ */
+ public static final String POST_9 = "POST_9_getErrorClass";
+
+ /**
+ * POST-10 清除推送失败班级缓存
+ */
+ public static final String POST_10 = "POST_10_clear";
+
+
+}
diff --git a/src/main/java/com/subsidy/vo/administer/OperatorsVO.java b/src/main/java/com/subsidy/vo/administer/OperatorsVO.java
index e866734..91fef68 100644
--- a/src/main/java/com/subsidy/vo/administer/OperatorsVO.java
+++ b/src/main/java/com/subsidy/vo/administer/OperatorsVO.java
@@ -35,4 +35,6 @@ public class OperatorsVO {
private String superviseName;
private String companyCode;
+
+ private String areaName;
}
diff --git a/src/main/java/com/subsidy/vo/renshe/ActivityList9.java b/src/main/java/com/subsidy/vo/renshe/ActivityList9.java
new file mode 100644
index 0000000..df2cb5e
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/ActivityList9.java
@@ -0,0 +1,37 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class ActivityList9 {
+
+ /**
+ * 活跃度是否通过
+ */
+ private String access;
+ /**
+ * 活跃度检测依据
+ */
+ private String activityDetection;
+ /**
+ * 活跃度检测时间
+ */
+ private String activityTime;
+ /**
+ * 活跃度未通过原因
+ */
+ private String errorInfo;
+ /**
+ * 未通过详情
+ */
+ private String errorMessage;
+ /**
+ * 修改日期
+ */
+ private String updateDate;
+ /**
+ * 同步状态
+ */
+ private String updateStatus;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/ChapterList9.java b/src/main/java/com/subsidy/vo/renshe/ChapterList9.java
new file mode 100644
index 0000000..3b54fb2
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/ChapterList9.java
@@ -0,0 +1,38 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class ChapterList9 {
+
+ /**
+ * 章节(课程)编码,与基本信息内的章节(课程)编码相对应
+ */
+ private String chapterCode;
+ /**
+ * 章节(课程)学习时长,本次登录时间段内本章节学习累计时长【分】
+ */
+ private long chapterTime;
+ /**
+ * 学习结束时间
+ */
+ private String endTime;
+ /**
+ * 未通过详情
+ */
+ private String errorMessage;
+ /**
+ * 学习开始时间
+ */
+ private String startTime;
+ /**
+ * 修改日期
+ */
+ private String updateDate;
+ /**
+ * 同步状态
+ */
+ private String updateStatus;
+
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/ClassBaseInfoVO.java b/src/main/java/com/subsidy/vo/renshe/ClassBaseInfoVO.java
new file mode 100644
index 0000000..5f0e434
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/ClassBaseInfoVO.java
@@ -0,0 +1,26 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class ClassBaseInfoVO {
+
+ private String downCode;
+
+ private String shortName;
+
+ private Long learnHour;
+
+ private Long courseHour;
+
+ private Long startDate;
+
+ private Long endDate;
+
+ private String areaName;
+
+ private String trainingName;
+
+ private String trainingCode;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/ClassImageChecksVO.java b/src/main/java/com/subsidy/vo/renshe/ClassImageChecksVO.java
new file mode 100644
index 0000000..3a5b265
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/ClassImageChecksVO.java
@@ -0,0 +1,37 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class ClassImageChecksVO {
+
+ /**
+ * 检测时间,【13位时间戳】【精确到毫秒】如检测类型为活跃度检测则与【学时信息采集接口】、【考试信息采集接口】activityTime时间保持一致
+ */
+ private Long activityTime;
+ /**
+ * 检测类型,0.实名认证 1活跃度检测 (实名认证第一次必须是活体采集)
+ */
+ private Long detectionType;
+ /**
+ * 学员身份证,会对身份证号长度、格式进行校验、X用大写
+ */
+ private String identity;
+ /**
+ * Base64图片,【jpg】【30kb~50kb】【413*295】
+ */
+ private String image;
+ /**
+ * 学员电话号,会对学生手机号长度、格式进行校验
+ */
+ private String phone;
+ /**
+ * 行为类型,0实名认证 1 学时行为类型的活跃度检测 2 考试行为类型的活跃度检测
+ */
+ private Long processType;
+ /**
+ * 学员姓名
+ */
+ private String studentName;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/Ctt7.java b/src/main/java/com/subsidy/vo/renshe/Ctt7.java
new file mode 100644
index 0000000..44f3133
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/Ctt7.java
@@ -0,0 +1,25 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class Ctt7 {
+
+ /**
+ * 所在区域名称
+ */
+ private String areaName;
+ /**
+ * 班级(项目)编号
+ */
+ private String classCode;
+ /**
+ * 项目(项目)名称
+ */
+ private String name;
+ /**
+ * 所属企业名称
+ */
+ private String trainingUnit;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/Ctt9.java b/src/main/java/com/subsidy/vo/renshe/Ctt9.java
new file mode 100644
index 0000000..52ac825
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/Ctt9.java
@@ -0,0 +1,60 @@
+package com.subsidy.vo.renshe;
+
+import com.subsidy.dto.renshe.LoginList;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class Ctt9 {
+
+ /**
+ * 活跃度列表,【数组】
+ */
+ private List activityList;
+ /**
+ * 班级(项目)编码
+ */
+ private Object downCode;
+ /**
+ * 未通过详情
+ */
+ private String errorMessage;
+ /**
+ * 学员身份证,会对身份证号长度、格式进行校验、X用大写
+ */
+ private String identity;
+ /**
+ * 当日累计学习时长,视频暂停时间不计入【分】
+ */
+ private Object learnTime;
+ /**
+ * 上线时间列表,【数组】
+ */
+ private List loginList;
+ /**
+ * 当日累计登陆时长,该字段数据应为当日产生LoginList列表内多条下线时间-上线时间累加和【分】
+ */
+ private Object loginTime;
+ /**
+ * 学员电话,会对手机号长度、格式进行校验
+ */
+ private String phone;
+ /**
+ * 当日累计播放时长,视频暂停时间计入【分】
+ */
+ private Object playTime;
+ /**
+ * 学员姓名
+ */
+ private String studentName;
+ /**
+ * 修改日期
+ */
+ private Long updateDate;
+ /**
+ * 同步状态
+ */
+ private String updateStatus;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/DailyActivitiesVO.java b/src/main/java/com/subsidy/vo/renshe/DailyActivitiesVO.java
new file mode 100644
index 0000000..5bb512d
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/DailyActivitiesVO.java
@@ -0,0 +1,13 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class DailyActivitiesVO {
+
+ private Integer access;
+
+ private Long activityTime;
+
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/DailyAnswerVO.java b/src/main/java/com/subsidy/vo/renshe/DailyAnswerVO.java
new file mode 100644
index 0000000..f7d9d42
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/DailyAnswerVO.java
@@ -0,0 +1,20 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class DailyAnswerVO {
+
+ private Long id;
+
+ private Long askId;
+
+ private String downCode;
+
+ private String identity;
+
+ private Long answer;
+
+ private Long question;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/DailyExamBasicVO.java b/src/main/java/com/subsidy/vo/renshe/DailyExamBasicVO.java
new file mode 100644
index 0000000..58724b3
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/DailyExamBasicVO.java
@@ -0,0 +1,23 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class DailyExamBasicVO {
+
+
+ private Long memberId;
+
+ private String downCode;
+
+ private String studentName;
+
+ private String phone;
+
+ private String identity;
+
+ private Long access;
+
+ private Long examTime;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/DailyStudyInfoVO.java b/src/main/java/com/subsidy/vo/renshe/DailyStudyInfoVO.java
new file mode 100644
index 0000000..eb488d3
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/DailyStudyInfoVO.java
@@ -0,0 +1,42 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class DailyStudyInfoVO {
+
+ private Long memberId;
+
+// private Long classId;
+
+ /**
+ * 临时班级(临时项目)编号
+ */
+ private String downCode;
+ /**
+ * 学员身份证号,会对身份证号长度、格式进行校验、X用大写
+ */
+ private String identity;
+ /**
+ * 当日累计学习时长,视频暂停时间不计入【秒】
+ */
+ private long learnTime;
+
+ /**
+ * 当日累计登陆时长,该字段数据应为当日产生LoginList列表内多条下线时间-上线时间累加和【秒】
+ */
+ private long loginTime;
+ /**
+ * 学员电话号,会对学生手机号长度、格式进行校验
+ */
+ private String phone;
+ /**
+ * 当日累计播放时长,视频暂停时间计入【秒】
+ */
+ private Long playTime;
+ /**
+ * 学员姓名
+ */
+ private String studentName;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/ExamActivitiesVO.java b/src/main/java/com/subsidy/vo/renshe/ExamActivitiesVO.java
new file mode 100644
index 0000000..d90e3cd
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/ExamActivitiesVO.java
@@ -0,0 +1,12 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class ExamActivitiesVO {
+
+ private Integer access;
+
+ private Long activityTime;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/GetSecretChildVO.java b/src/main/java/com/subsidy/vo/renshe/GetSecretChildVO.java
new file mode 100644
index 0000000..405ca3e
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/GetSecretChildVO.java
@@ -0,0 +1,14 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class GetSecretChildVO {
+
+ private String privateKey;
+
+ private String validTime;
+
+ private String ip;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/GetSecretVO.java b/src/main/java/com/subsidy/vo/renshe/GetSecretVO.java
new file mode 100644
index 0000000..3967b06
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/GetSecretVO.java
@@ -0,0 +1,14 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class GetSecretVO {
+
+ private Integer c;
+
+ private String msg;
+
+ private GetSecretChildVO ctt;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/LoginList9.java b/src/main/java/com/subsidy/vo/renshe/LoginList9.java
new file mode 100644
index 0000000..30dad11
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/LoginList9.java
@@ -0,0 +1,39 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LoginList9 {
+
+ /**
+ * 章节(课程)学时列表
+ */
+ private List chapterList;
+ /**
+ * 下线时间,【13位时间戳】【精确到毫秒】
+ */
+ private long endTime;
+ /**
+ * 未通过详情
+ */
+ private String errorMessage;
+ /**
+ * 登录ip,会对IP进行校验
+ */
+ private String ip;
+ /**
+ * 上线时间,【13位时间戳】【精确到毫秒】
+ */
+ private long startTime;
+ /**
+ * 修改日期
+ */
+ private String updateDate;
+ /**
+ * 同步状态
+ */
+ private String updateStatus;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/MemberVO.java b/src/main/java/com/subsidy/vo/renshe/MemberVO.java
new file mode 100644
index 0000000..8753fef
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/MemberVO.java
@@ -0,0 +1,15 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class MemberVO {
+
+ private String name;
+
+ private String phone;
+
+ private String identity;
+
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/RensheResponseVO.java b/src/main/java/com/subsidy/vo/renshe/RensheResponseVO.java
new file mode 100644
index 0000000..f1b2ce9
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/RensheResponseVO.java
@@ -0,0 +1,21 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class RensheResponseVO {
+
+ /**
+ * 响应码
+ */
+ private long c;
+ /**
+ * 响应体
+ */
+ private Object ctt;
+ /**
+ * 响应信息
+ */
+ private String msg;
+
+}
diff --git a/src/main/java/com/subsidy/vo/renshe/RensheStringVO.java b/src/main/java/com/subsidy/vo/renshe/RensheStringVO.java
new file mode 100644
index 0000000..2dc9eaa
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/renshe/RensheStringVO.java
@@ -0,0 +1,21 @@
+package com.subsidy.vo.renshe;
+
+import lombok.Data;
+
+@Data
+public class RensheStringVO {
+
+ /**
+ * 响应码
+ */
+ private long c;
+ /**
+ * 响应体
+ */
+ private Object ctt;
+ /**
+ * 响应信息
+ */
+ private String msg;
+
+}
diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties
index c07a6e3..1dbb2bb 100644
--- a/src/main/resources/application-dev.properties
+++ b/src/main/resources/application-dev.properties
@@ -57,4 +57,4 @@ qxueyou.securityKey=626737T1-65K0-5xC2-0Y0V-2Aq95qxy
qxueyou.url=https://dev.qxueyou.com/auth/user/token
renshe.url = https://test.shzypxy.com
-renshe.secretKey = 111
\ No newline at end of file
+renshe.secretKey = ad927f0b-6a39-43a7-bac7-163baef1fff7
\ No newline at end of file
diff --git a/src/main/resources/application-online.properties b/src/main/resources/application-online.properties
index 441d9b9..5bca86a 100644
--- a/src/main/resources/application-online.properties
+++ b/src/main/resources/application-online.properties
@@ -54,4 +54,7 @@ spring.redis.lettuce.pool.min-idle=8
qxueyou.appId=qxywz5nnWMI77CM3Tx
qxueyou.securityKey=626737T1-65K0-5xC2-0Y0V-2Aq95qxy
-qxueyou.url=https://dev.qxueyou.com/auth/user/token
\ No newline at end of file
+qxueyou.url=https://dev.qxueyou.com/auth/user/token
+
+renshe.url = https://api.shzypxy.com
+renshe.secretKey = 111
\ No newline at end of file
diff --git a/src/main/resources/mapper/ClassDictMapper.xml b/src/main/resources/mapper/ClassDictMapper.xml
index b18c881..4801738 100644
--- a/src/main/resources/mapper/ClassDictMapper.xml
+++ b/src/main/resources/mapper/ClassDictMapper.xml
@@ -250,4 +250,14 @@
order by t.create_date desc
+
+
diff --git a/src/main/resources/mapper/CompanyDictMapper.xml b/src/main/resources/mapper/CompanyDictMapper.xml
index 6844115..4c5107e 100644
--- a/src/main/resources/mapper/CompanyDictMapper.xml
+++ b/src/main/resources/mapper/CompanyDictMapper.xml
@@ -33,7 +33,8 @@
t2.logo,
t2.address,
t2.supervise_name,
- t2.company_code
+ t2.company_code,
+ t2.area_name
FROM
administer t
left join role_administer_mapping t4 on t.id = t4.administer_id
diff --git a/src/main/resources/mapper/RenSheJuMapper.xml b/src/main/resources/mapper/RenSheJuMapper.xml
new file mode 100644
index 0000000..7545a9c
--- /dev/null
+++ b/src/main/resources/mapper/RenSheJuMapper.xml
@@ -0,0 +1,404 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ create_date,
+ update_date,
+ delete_date,
+ id, company_id, cert_id
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/RenshejuHistoryMapper.xml b/src/main/resources/mapper/RenshejuHistoryMapper.xml
new file mode 100644
index 0000000..1095cf9
--- /dev/null
+++ b/src/main/resources/mapper/RenshejuHistoryMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ create_date,
+ update_date,
+ delete_date,
+ id, interface_name, input_param, output_param
+
+
+
diff --git a/src/main/resources/mapper/VodPlayHistoryMapper.xml b/src/main/resources/mapper/VodPlayHistoryMapper.xml
index c16ee43..dba0765 100644
--- a/src/main/resources/mapper/VodPlayHistoryMapper.xml
+++ b/src/main/resources/mapper/VodPlayHistoryMapper.xml
@@ -399,6 +399,18 @@
t.create_date
+
+
+
+
+
+
+
+
+
+
+
+