diff --git a/src/main/java/com/subsidy/common/configure/ActivityDetectionConfig.java b/src/main/java/com/subsidy/common/configure/ActivityDetectionConfig.java
new file mode 100644
index 0000000..3aca11a
--- /dev/null
+++ b/src/main/java/com/subsidy/common/configure/ActivityDetectionConfig.java
@@ -0,0 +1,18 @@
+package com.subsidy.common.configure;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "activity")
+public class ActivityDetectionConfig {
+
+ private Long captchaAppId;
+
+ private String appSecretKey;
+
+ private Long businessId;
+
+}
diff --git a/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java b/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java
index 897e5da..73c8225 100644
--- a/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java
+++ b/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java
@@ -62,6 +62,16 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
+
+ TimeRequired timeRequired = method.getAnnotation(TimeRequired.class);
+ if (timeRequired !=null){
+ Calendar calendar = Calendar.getInstance();
+ int hour = calendar.get(Calendar.HOUR_OF_DAY);
+ if (hour<6){
+ throw new HttpException(17001);
+ }
+ }
+
LoginRequired methodAnnotation = method.getAnnotation(LoginRequired.class);
if (methodAnnotation != null) {
String authorization = request.getHeader("Authorization");
@@ -111,15 +121,6 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
}
throw new HttpException(1010);
}
-
- TimeRequired timeRequired = method.getAnnotation(TimeRequired.class);
- if (timeRequired !=null){
- Calendar calendar = Calendar.getInstance();
- int hour = calendar.get(Calendar.HOUR_OF_DAY);
- if (hour<6){
- throw new HttpException(17001);
- }
- }
return true;
}
diff --git a/src/main/java/com/subsidy/controller/ActivityDetectionController.java b/src/main/java/com/subsidy/controller/ActivityDetectionController.java
new file mode 100644
index 0000000..85ed646
--- /dev/null
+++ b/src/main/java/com/subsidy/controller/ActivityDetectionController.java
@@ -0,0 +1,53 @@
+package com.subsidy.controller;
+
+
+import com.subsidy.common.ResponseData;
+import com.subsidy.common.ResponseVO;
+import com.subsidy.common.interceptor.TimeRequired;
+import com.subsidy.dto.detection.VerifyDTO;
+import com.subsidy.model.ActivityDetectionDO;
+import com.subsidy.service.ActivityDetectionService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.Api;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * 活跃度检测表 前端控制器
+ *
+ *
+ * @author DengMin
+ * @since 2022-07-13
+ */
+@RestController
+@Api(tags = "活跃度检测表")
+@RequestMapping("/activityDetection")
+public class ActivityDetectionController {
+
+ @Autowired
+ private ActivityDetectionService activityDetectionService;
+
+ @PostMapping("verify")
+ @ApiOperation("验证滑块 ticket randStr memberId classId")
+ @TimeRequired
+ public ResponseVO verify(@RequestBody VerifyDTO verifyDTO, HttpServletRequest request){
+ return ResponseData.generateCreatedResponse(0,activityDetectionService.verify(verifyDTO,request));
+ }
+
+ @PostMapping("getCheckHistory")
+ @ApiOperation("获取某个人某个课程的活跃度验证详情 memberId classId")
+ public ResponseVO getCheckHistory(@RequestBody ActivityDetectionDO activityDetectionDO){
+ return ResponseData.generateCreatedResponse(0,activityDetectionService.getCheckHistory(activityDetectionDO));
+ }
+
+
+
+
+}
diff --git a/src/main/java/com/subsidy/controller/AdministerController.java b/src/main/java/com/subsidy/controller/AdministerController.java
index 71a300f..bad6784 100644
--- a/src/main/java/com/subsidy/controller/AdministerController.java
+++ b/src/main/java/com/subsidy/controller/AdministerController.java
@@ -42,11 +42,11 @@ public class AdministerController {
@Autowired
private AdministerService administerService;
- @GetMapping("getIp")
- public String getIp()throws Exception{
- InetAddress addr = InetAddress.getLocalHost();
- return addr.getHostAddress();
- }
+// @GetMapping("getIp")
+// public String getIp()throws Exception{
+// InetAddress addr = InetAddress.getLocalHost();
+// return addr.getHostAddress();
+// }
@PostMapping("/login")
@ApiOperation("登录接口 accountName password")
@@ -97,8 +97,8 @@ public class AdministerController {
}
@PostMapping("classDetail")
- @ApiOperation("班级管理--班级成员 id 班级id userName")
-// @LoginRequired
+ @ApiOperation("班级管理--班级成员 id 班级id userName pageSize pageNum")
+ @LoginRequired
public ResponseVO classDetail(@RequestBody ClassDetailDTO classDetailDTO){
return ResponseData.generateCreatedResponse(0,administerService.classDetail(classDetailDTO));
}
@@ -112,7 +112,7 @@ public class AdministerController {
}
@PostMapping("signDetail")
- @ApiOperation("班级管理--注册签到 id 班级id userName")
+ @ApiOperation("班级管理--注册签到 id 班级id userName pageSize pageNum")
@LoginRequired
public ResponseVO signDetail(@RequestBody ClassDetailDTO classDetailDTO){
return ResponseData.generateCreatedResponse(0,administerService.signDetail(classDetailDTO));
@@ -127,7 +127,7 @@ public class AdministerController {
}
@PostMapping("exerciseTest")
- @ApiOperation("班级管理--测评成绩 id 班级id userName paperId")
+ @ApiOperation("班级管理--测评成绩 id 班级id userName paperId pageSize pageNum")
@LoginRequired
public ResponseVO exerciseTest(@RequestBody ClassDetailDTO classDetailDTO){
return ResponseData.generateCreatedResponse(0,administerService.exerciseTest(classDetailDTO));
@@ -212,6 +212,28 @@ public class AdministerController {
return ResponseData.generateCreatedResponse(0,administerService.memberStudy(memberStudyLogDTO));
}
+ @PostMapping("memberDetectionRecord")
+ @ApiOperation("获取某个班级活跃度检测记录 id userName pageSize pageNum ")
+ @LoginRequired
+ public ResponseVO memberDetectionRecord(@RequestBody ClassDetailDTO classDetailDTO ){
+ return ResponseData.generateCreatedResponse(0,administerService.memberDetectionRecord(classDetailDTO));
+ }
+
+ @PostMapping("exportMemberDetectionRecord")
+ @ApiOperation("获取某个班级活跃度检测记录 id userName ")
+ @LoginRequired
+ public void exportMemberDetectionRecord(@RequestBody ClassDetailDTO classDetailDTO ){
+ administerService.exportMemberDetectionRecord(classDetailDTO);
+ }
+
+ @PostMapping("imageCheckDetail")
+ @ApiOperation("实名制验证详情 id 班级id userName pageSize pageNum")
+ @LoginRequired
+ public ResponseVO imageCheckDetail(@RequestBody ClassDetailDTO classDetailDTO){
+ return ResponseData.generateCreatedResponse(0,administerService.imageCheckDetail(classDetailDTO));
+ }
+
+
@PostMapping("exportZip")
@ApiOperation("下载压缩包 id 班级id")
@CrossOrigin
@@ -235,7 +257,7 @@ public class AdministerController {
}
@PostMapping("manageMember")
- @ApiOperation("用户管理 {pageSize pageNum userName:名字}")
+ @ApiOperation("用户管理 {pageSize pageNum userName:名字 【废弃】}")
@LoginRequired
public ResponseVO manageMember(@RequestBody ManageMemberDTO manageMemberDTO){
return ResponseData.generateCreatedResponse(0,administerService.manageMember(manageMemberDTO));
diff --git a/src/main/java/com/subsidy/controller/CompanyDictController.java b/src/main/java/com/subsidy/controller/CompanyDictController.java
index c039bca..edace0a 100644
--- a/src/main/java/com/subsidy/controller/CompanyDictController.java
+++ b/src/main/java/com/subsidy/controller/CompanyDictController.java
@@ -6,7 +6,9 @@ import com.subsidy.common.ResponseVO;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.administer.OperatorsDTO;
import com.subsidy.dto.company.AddCompanyDTO;
+import com.subsidy.dto.company.GetCompanyMembersDTO;
import com.subsidy.model.CompanyDictDO;
+import com.subsidy.model.MemberDO;
import com.subsidy.service.CompanyDictService;
import com.subsidy.util.ConstantUtils;
import io.swagger.annotations.Api;
@@ -63,8 +65,16 @@ public class CompanyDictController {
@PostMapping("getAllCompany")
@ApiOperation("获取全部企业 {companyName}")
+ @LoginRequired
public ResponseVO getAllCompany(@RequestBody CompanyDictDO companyDictDO){
return ResponseData.generateCreatedResponse(0,companyDictService.getAllCompany(companyDictDO));
}
+ @PostMapping("getCompanyMembers")
+ @ApiOperation("获取公司里的成员 pageNum pageSize companyId 公司id userName 成员名称")
+ @LoginRequired
+ public ResponseVO getCompanyMembers(@RequestBody GetCompanyMembersDTO getCompanyMembersDTO){
+ return ResponseData.generateCreatedResponse(0,companyDictService.getCompanyMembers(getCompanyMembersDTO));
+ }
+
}
diff --git a/src/main/java/com/subsidy/controller/ImageCheckRecordController.java b/src/main/java/com/subsidy/controller/ImageCheckRecordController.java
new file mode 100644
index 0000000..b3db474
--- /dev/null
+++ b/src/main/java/com/subsidy/controller/ImageCheckRecordController.java
@@ -0,0 +1,45 @@
+package com.subsidy.controller;
+
+
+import com.subsidy.common.ResponseData;
+import com.subsidy.common.ResponseVO;
+import com.subsidy.common.interceptor.LoginRequired;
+import com.subsidy.model.ImageCheckRecordDO;
+import com.subsidy.service.ImageCheckRecordService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.Api;
+
+/**
+ *
+ * 实名验证记录表 前端控制器
+ *
+ *
+ * @author DengMin
+ * @since 2022-07-14
+ */
+@RestController
+@Api(tags = "实名验证记录表")
+@RequestMapping("/imageCheckRecord")
+public class ImageCheckRecordController {
+
+
+ @Autowired
+ private ImageCheckRecordService imageCheckRecordService;
+
+
+ @PostMapping("getImageCheckHistory")
+ @ApiOperation("获取某人某个班级的验证历史 memberId classId ")
+ @LoginRequired
+ public ResponseVO getImageCheckHistory(@RequestBody ImageCheckRecordDO imageCheckRecordDO){
+ return ResponseData.generateCreatedResponse(0,imageCheckRecordService.getImageCheckHistory(imageCheckRecordDO));
+ }
+
+
+
+}
diff --git a/src/main/java/com/subsidy/controller/MemberController.java b/src/main/java/com/subsidy/controller/MemberController.java
index 2282e43..848cb43 100644
--- a/src/main/java/com/subsidy/controller/MemberController.java
+++ b/src/main/java/com/subsidy/controller/MemberController.java
@@ -63,14 +63,12 @@ public class MemberController {
@PostMapping(value = "/login")
@ApiOperation("手机端:登录:telephone/手机号, verifyCode/验证码")
- @TimeRequired
public ResponseVO login(@RequestBody VerifyCodeDTO verifyCodeDTO) {
return ResponseData.generateCreatedResponse(0, memberService.login(verifyCodeDTO));
}
@PostMapping("passwordLogin")
@ApiOperation("手机端:密码登录 { companyId accountName password}")
- @TimeRequired
public ResponseVO passwordLogin(@RequestBody PasswordLoginDTO passwordLoginDTO){
return ResponseData.generateCreatedResponse(0,memberService.passwordLogin(passwordLoginDTO));
}
@@ -89,6 +87,12 @@ public class MemberController {
return ResponseData.generateCreatedResponse(0,memberService.kunchiLogin(qingxuetangLoginDTO));
}
+ @PostMapping("checkStatus")
+ @ApiOperation("实名制验证状态 memberId")
+ @TimeRequired
+ public ResponseVO checkStatus(@RequestBody MemberDO memberDO){
+ return ResponseData.generateCreatedResponse(0,memberService.checkStatus(memberDO));
+ }
@PostMapping("updatePassword")
@ApiOperation("修改密码 {id password}")
@@ -98,10 +102,17 @@ public class MemberController {
return ResponseData.generateCreatedResponse(0,memberService.updatePassword(memberDO));
}
- @PostMapping("studyPage")
- @ApiOperation("[废弃]手机端:学习主页 id 学员id")
- public ResponseVO studyPage(@RequestBody MemberDO memberDO){
- return ResponseData.generateCreatedResponse(0,memberService.studyPage(memberDO));
+ @PostMapping("updateCheckImage")
+ @ApiOperation("上传采集照片 id checkImage")
+ @TimeRequired
+ public ResponseVO updateCheckImage(@RequestBody MemberDO memberDO){
+ return ResponseData.generateCreatedResponse(0,memberService.updateCheckImage(memberDO));
+ }
+
+ @PostMapping("removeCheckImage")
+ @ApiOperation("清除采集照片 id ")
+ public ResponseVO removeCheckImage(@RequestBody MemberDO memberDO){
+ return ResponseData.generateCreatedResponse(0,memberService.removeCheckImage(memberDO));
}
@PostMapping("myCourses")
diff --git a/src/main/java/com/subsidy/dto/company/GetCompanyMembersDTO.java b/src/main/java/com/subsidy/dto/company/GetCompanyMembersDTO.java
new file mode 100644
index 0000000..2c469c3
--- /dev/null
+++ b/src/main/java/com/subsidy/dto/company/GetCompanyMembersDTO.java
@@ -0,0 +1,16 @@
+package com.subsidy.dto.company;
+
+import lombok.Data;
+
+@Data
+public class GetCompanyMembersDTO {
+
+ private Integer pageSize;
+
+ private Integer pageNum;
+
+ private Long companyId;
+
+ private String userName;
+
+}
diff --git a/src/main/java/com/subsidy/dto/detection/VerifyDTO.java b/src/main/java/com/subsidy/dto/detection/VerifyDTO.java
new file mode 100644
index 0000000..b2e963c
--- /dev/null
+++ b/src/main/java/com/subsidy/dto/detection/VerifyDTO.java
@@ -0,0 +1,18 @@
+package com.subsidy.dto.detection;
+
+import lombok.Data;
+
+@Data
+public class VerifyDTO {
+
+ private String ticket;
+
+ private String userIp;
+
+ private String randStr;
+
+ private Long memberId;
+
+ private Long classId;
+
+}
diff --git a/src/main/java/com/subsidy/mapper/ActivityDetectionMapper.java b/src/main/java/com/subsidy/mapper/ActivityDetectionMapper.java
new file mode 100644
index 0000000..caf5e1b
--- /dev/null
+++ b/src/main/java/com/subsidy/mapper/ActivityDetectionMapper.java
@@ -0,0 +1,18 @@
+package com.subsidy.mapper;
+
+import com.subsidy.model.ActivityDetectionDO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ * 活跃度检测表 Mapper 接口
+ *
+ *
+ * @author DengMin
+ * @since 2022-07-13
+ */
+ @Repository
+public interface ActivityDetectionMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/subsidy/mapper/AdministerMapper.java b/src/main/java/com/subsidy/mapper/AdministerMapper.java
index dacc50f..0d07293 100644
--- a/src/main/java/com/subsidy/mapper/AdministerMapper.java
+++ b/src/main/java/com/subsidy/mapper/AdministerMapper.java
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.model.AdministerDO;
import com.subsidy.vo.administer.ExerciseTestVO;
+import com.subsidy.vo.administer.ImageCheckDetailVO;
+import com.subsidy.vo.administer.MemberDetectionRecordVO;
import com.subsidy.vo.administer.PermissionsVO;
import com.subsidy.vo.classdict.ClassDetailVO;
import com.subsidy.vo.member.ClassSignVO;
@@ -45,5 +47,14 @@ public interface AdministerMapper extends BaseMapper {
*/
IPage answerRecord(IPage iPage, Long classId, String userName);
+ /**
+ * 活跃度检测
+ */
+ IPage classActivityDetection(IPage iPage, Long classId, String userName);
+
+ /**
+ * 实名验证
+ */
+ IPage imageCheckDetail(IPage iPage, Long classId, String userName);
}
diff --git a/src/main/java/com/subsidy/mapper/CompanyDictMapper.java b/src/main/java/com/subsidy/mapper/CompanyDictMapper.java
index 5ecde24..6792b3e 100644
--- a/src/main/java/com/subsidy/mapper/CompanyDictMapper.java
+++ b/src/main/java/com/subsidy/mapper/CompanyDictMapper.java
@@ -3,8 +3,10 @@ package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.model.CompanyDictDO;
+import com.subsidy.model.MemberDO;
import com.subsidy.vo.administer.OperatorsVO;
import com.subsidy.vo.company.GetAllCompanyVO;
+import com.subsidy.vo.company.GetCompanyMembersVO;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -22,13 +24,20 @@ public interface CompanyDictMapper extends BaseMapper {
/**
* 企业管理--查找所有主账号 、运营者
+ *
* @return
*/
- IPage operators(IPage page, String companyName,Long fieldId,Long id,Integer role,String superviseName);
+ IPage operators(IPage page, String companyName, Long fieldId, Long id, Integer role, String superviseName);
/**
* 查找所有的公司名称
*/
List getAllCompany(CompanyDictDO companyDictDO);
+ /**
+ * 查看某个公司的学生
+ */
+ IPage getCompanyMembers(IPage page, Long companyId, String userName);
+
+
}
diff --git a/src/main/java/com/subsidy/mapper/ImageCheckRecordMapper.java b/src/main/java/com/subsidy/mapper/ImageCheckRecordMapper.java
new file mode 100644
index 0000000..8c29f55
--- /dev/null
+++ b/src/main/java/com/subsidy/mapper/ImageCheckRecordMapper.java
@@ -0,0 +1,18 @@
+package com.subsidy.mapper;
+
+import com.subsidy.model.ImageCheckRecordDO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ * 实名验证记录表 Mapper 接口
+ *
+ *
+ * @author DengMin
+ * @since 2022-07-14
+ */
+ @Repository
+public interface ImageCheckRecordMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/subsidy/mapper/MemberMapper.java b/src/main/java/com/subsidy/mapper/MemberMapper.java
index f46e2a0..2a7a8e2 100644
--- a/src/main/java/com/subsidy/mapper/MemberMapper.java
+++ b/src/main/java/com/subsidy/mapper/MemberMapper.java
@@ -70,4 +70,11 @@ public interface MemberMapper extends BaseMapper {
List getMemberListBySignInRecord(Long classId);
List getUnfinishedMemberList(Long classId);
+
+ /**
+ * 清除采集照片
+ */
+ void removeCheckImage(Long id);
+
+
}
diff --git a/src/main/java/com/subsidy/model/ActivityDetectionDO.java b/src/main/java/com/subsidy/model/ActivityDetectionDO.java
new file mode 100644
index 0000000..73e9319
--- /dev/null
+++ b/src/main/java/com/subsidy/model/ActivityDetectionDO.java
@@ -0,0 +1,48 @@
+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 DengMin
+ * @since 2022-07-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("activity_detection")
+public class ActivityDetectionDO extends BaseModel {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 班级id
+ */
+ private Long classId;
+
+ /**
+ * 人员id
+ */
+ private Long memberId;
+
+ /**
+ * 成功/失败
+ */
+ private Integer status;
+
+ /**
+ * RequestId
+ */
+ private String requestId;
+
+}
diff --git a/src/main/java/com/subsidy/model/ExerciseDoneResultDO.java b/src/main/java/com/subsidy/model/ExerciseDoneResultDO.java
index 74cd33a..243db90 100644
--- a/src/main/java/com/subsidy/model/ExerciseDoneResultDO.java
+++ b/src/main/java/com/subsidy/model/ExerciseDoneResultDO.java
@@ -66,6 +66,9 @@ public class ExerciseDoneResultDO extends BaseModel {
*/
private String result;
+ /**
+ * 做题时长
+ */
private Integer length;
}
diff --git a/src/main/java/com/subsidy/model/ImageCheckRecordDO.java b/src/main/java/com/subsidy/model/ImageCheckRecordDO.java
new file mode 100644
index 0000000..d47b9df
--- /dev/null
+++ b/src/main/java/com/subsidy/model/ImageCheckRecordDO.java
@@ -0,0 +1,49 @@
+package com.subsidy.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.subsidy.util.BaseModel;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ * 实名验证记录表
+ *
+ *
+ * @author DengMin
+ * @since 2022-07-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("image_check_record")
+public class ImageCheckRecordDO extends BaseModel {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 班级id
+ */
+ private Long classId;
+
+ /**
+ * 试卷id
+ */
+ private Long paperId;
+
+ /**
+ * 成员id
+ */
+ private Long memberId;
+
+ private String requestId;
+
+ /**
+ * 图片地址
+ */
+ private String imageUrl;
+}
diff --git a/src/main/java/com/subsidy/model/MemberDO.java b/src/main/java/com/subsidy/model/MemberDO.java
index b7cf9e2..8f60de6 100644
--- a/src/main/java/com/subsidy/model/MemberDO.java
+++ b/src/main/java/com/subsidy/model/MemberDO.java
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import java.time.LocalDateTime;
import java.util.Date;
/**
@@ -85,6 +86,16 @@ public class MemberDO extends BaseModel {
private String image;
/**
+ * 人脸核验--照片
+ */
+ private String checkImage;
+
+ /**
+ * 采集时间
+ */
+ private LocalDateTime checkTime;
+
+ /**
* 身份证号
*/
private String idCard;
diff --git a/src/main/java/com/subsidy/model/OprMemDictDO.java b/src/main/java/com/subsidy/model/OprMemDictDO.java
index d6c2492..a62aa80 100644
--- a/src/main/java/com/subsidy/model/OprMemDictDO.java
+++ b/src/main/java/com/subsidy/model/OprMemDictDO.java
@@ -37,4 +37,9 @@ public class OprMemDictDO extends BaseModel {
*/
private Integer result;
+ /**
+ * 登录ip
+ */
+ private String ipAddress;
+
}
diff --git a/src/main/java/com/subsidy/service/ActivityDetectionService.java b/src/main/java/com/subsidy/service/ActivityDetectionService.java
new file mode 100644
index 0000000..3a0ab1e
--- /dev/null
+++ b/src/main/java/com/subsidy/service/ActivityDetectionService.java
@@ -0,0 +1,25 @@
+package com.subsidy.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.subsidy.dto.detection.VerifyDTO;
+import com.subsidy.model.ActivityDetectionDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ *
+ * 活跃度检测表 服务类
+ *
+ *
+ * @author DengMin
+ * @since 2022-07-13
+ */
+public interface ActivityDetectionService extends IService {
+
+ String verify(VerifyDTO verifyDTO, HttpServletRequest request);
+
+ IPage getCheckHistory(ActivityDetectionDO activityDetectionDO);
+
+}
diff --git a/src/main/java/com/subsidy/service/AdministerService.java b/src/main/java/com/subsidy/service/AdministerService.java
index b678fff..beb7745 100644
--- a/src/main/java/com/subsidy/service/AdministerService.java
+++ b/src/main/java/com/subsidy/service/AdministerService.java
@@ -68,6 +68,12 @@ public interface AdministerService extends IService {
void exportClassVodDailyInfo(ClassVodDailyInfoDTO classVodDailyInfoDTO);
+ IPage memberDetectionRecord(ClassDetailDTO classDetailDTO);
+
+ void exportMemberDetectionRecord(ClassDetailDTO classDetailDTO);
+
+ IPage imageCheckDetail(ClassDetailDTO classDetailDTO);
+
void export(ClassDetailDTO classDetailDTO)throws Exception;
IPage memberStudy(MemberStudyLogDTO memberStudyLogDTO);
diff --git a/src/main/java/com/subsidy/service/CompanyDictService.java b/src/main/java/com/subsidy/service/CompanyDictService.java
index d17f9e2..29b31d1 100644
--- a/src/main/java/com/subsidy/service/CompanyDictService.java
+++ b/src/main/java/com/subsidy/service/CompanyDictService.java
@@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.dto.administer.OperatorsDTO;
import com.subsidy.dto.company.AddCompanyDTO;
+import com.subsidy.dto.company.GetCompanyMembersDTO;
import com.subsidy.model.CompanyDictDO;
+import com.subsidy.model.MemberDO;
import com.subsidy.vo.administer.OperatorsVO;
import com.subsidy.vo.company.GetAllCompanyVO;
+import com.subsidy.vo.company.GetCompanyMembersVO;
import java.util.List;
@@ -30,4 +33,6 @@ public interface CompanyDictService extends IService {
List getAllCompany(CompanyDictDO companyDictDO);
+ IPage getCompanyMembers(GetCompanyMembersDTO getCompanyMembersDTO);
+
}
diff --git a/src/main/java/com/subsidy/service/ImageCheckRecordService.java b/src/main/java/com/subsidy/service/ImageCheckRecordService.java
new file mode 100644
index 0000000..d66abc4
--- /dev/null
+++ b/src/main/java/com/subsidy/service/ImageCheckRecordService.java
@@ -0,0 +1,20 @@
+package com.subsidy.service;
+
+import com.subsidy.model.ImageCheckRecordDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ *
+ * 实名验证记录表 服务类
+ *
+ *
+ * @author DengMin
+ * @since 2022-07-14
+ */
+public interface ImageCheckRecordService extends IService {
+
+ List getImageCheckHistory(ImageCheckRecordDO imageCheckRecordDO);
+
+}
diff --git a/src/main/java/com/subsidy/service/MemberService.java b/src/main/java/com/subsidy/service/MemberService.java
index f79d37b..df1526c 100644
--- a/src/main/java/com/subsidy/service/MemberService.java
+++ b/src/main/java/com/subsidy/service/MemberService.java
@@ -39,9 +39,13 @@ public interface MemberService extends IService {
UserRoleVO kunchiLogin(QingxuetangLoginDTO qingxuetangLoginDTO);
+ CheckStatusVO checkStatus(MemberDO memberDO);
+
String updatePassword(MemberDO memberDO);
- MemberStudyPageVO studyPage(MemberDO memberDO);
+ String updateCheckImage(MemberDO memberDO);
+
+ String removeCheckImage(MemberDO memberDO);
List myCourses(MyCoursesDTO myCoursesDTO);
diff --git a/src/main/java/com/subsidy/service/impl/ActivityDetectionServiceImpl.java b/src/main/java/com/subsidy/service/impl/ActivityDetectionServiceImpl.java
new file mode 100644
index 0000000..48cd2d9
--- /dev/null
+++ b/src/main/java/com/subsidy/service/impl/ActivityDetectionServiceImpl.java
@@ -0,0 +1,105 @@
+package com.subsidy.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.subsidy.common.configure.ActivityDetectionConfig;
+import com.subsidy.common.configure.VODConfig;
+import com.subsidy.common.configure.WechatConfig;
+import com.subsidy.dto.detection.VerifyDTO;
+import com.subsidy.model.ActivityDetectionDO;
+import com.subsidy.mapper.ActivityDetectionMapper;
+import com.subsidy.service.ActivityDetectionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.subsidy.util.ConstantUtils;
+import com.tencentcloudapi.captcha.v20190722.CaptchaClient;
+import com.tencentcloudapi.captcha.v20190722.models.DescribeCaptchaResultRequest;
+import com.tencentcloudapi.captcha.v20190722.models.DescribeCaptchaResultResponse;
+import com.tencentcloudapi.common.Credential;
+import com.tencentcloudapi.common.exception.TencentCloudSDKException;
+import com.tencentcloudapi.common.profile.ClientProfile;
+import com.tencentcloudapi.common.profile.HttpProfile;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * 活跃度检测表 服务实现类
+ *
+ *
+ * @author DengMin
+ * @since 2022-07-13
+ */
+@Service
+public class ActivityDetectionServiceImpl extends ServiceImpl implements ActivityDetectionService {
+
+ @Autowired
+ private ActivityDetectionConfig activityDetectionConfig;
+
+ @Autowired
+ private VODConfig vodConfig;
+
+ public String verify(VerifyDTO verifyDTO, HttpServletRequest request){
+
+ try{
+ // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
+ // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
+ Credential cred = new Credential(vodConfig.getSecretId(),vodConfig.getSecretKey());
+ // 实例化一个http选项,可选的,没有特殊需求可以跳过
+ HttpProfile httpProfile = new HttpProfile();
+ httpProfile.setEndpoint("captcha.tencentcloudapi.com");
+ // 实例化一个client选项,可选的,没有特殊需求可以跳过
+ ClientProfile clientProfile = new ClientProfile();
+ clientProfile.setHttpProfile(httpProfile);
+ // 实例化要请求产品的client对象,clientProfile是可选的
+ CaptchaClient client = new CaptchaClient(cred, "", clientProfile);
+ // 实例化一个请求对象,每个接口都会对应一个request对象
+ DescribeCaptchaResultRequest req = new DescribeCaptchaResultRequest();
+ req.setCaptchaType(9L);
+ req.setTicket(verifyDTO.getTicket());
+// String ip = request.getHeader("x-forwarded-for");
+ String ip = request.getHeader( " x-forwarded-for " );
+ if (ip == null || ip.length() == 0 || " unknown " .equalsIgnoreCase(ip)) {
+ ip = request.getHeader( " Proxy-Client-IP " );
+ }
+ if (ip == null || ip.length() == 0 || " unknown " .equalsIgnoreCase(ip)) {
+ ip = request.getHeader( " WL-Proxy-Client-IP " );
+ }
+ if (ip == null || ip.length() == 0 || " unknown " .equalsIgnoreCase(ip)) {
+ ip = request.getRemoteAddr();
+ }
+ req.setUserIp(ip);
+ req.setRandstr(verifyDTO.getRandStr());
+ req.setCaptchaAppId(activityDetectionConfig.getCaptchaAppId());
+ req.setAppSecretKey(activityDetectionConfig.getAppSecretKey());
+ req.setBusinessId(activityDetectionConfig.getBusinessId());
+ // 返回的resp是一个DescribeCaptchaResultResponse的实例,与请求对象对应
+ DescribeCaptchaResultResponse resp = client.DescribeCaptchaResult(req);
+ // 输出json格式的字符串回包
+ System.out.println(DescribeCaptchaResultResponse.toJsonString(resp));
+ ActivityDetectionDO activityDetectionDO = new ActivityDetectionDO();
+ activityDetectionDO.setClassId(verifyDTO.getClassId());
+ activityDetectionDO.setMemberId(verifyDTO.getMemberId());
+ activityDetectionDO.setRequestId(resp.getRequestId());
+ if (resp.getCaptchaCode()==1){
+ activityDetectionDO.setStatus(1);
+ this.baseMapper.insert(activityDetectionDO);
+ return ConstantUtils.SUCCESS_VERIFY;
+ }else {
+ activityDetectionDO.setStatus(0);
+ this.baseMapper.insert(activityDetectionDO);
+ return ConstantUtils.FAIL_VERIFY;
+ }
+ } catch (TencentCloudSDKException e) {
+ System.out.println(e.toString());
+ }
+ return null;
+ }
+
+ public IPage getCheckHistory(ActivityDetectionDO activityDetectionDO){
+
+
+ return null;
+ }
+
+}
diff --git a/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java b/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java
index 1eb31e8..7a16a08 100644
--- a/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java
+++ b/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java
@@ -54,19 +54,7 @@ import com.subsidy.util.JwtUtil;
import com.subsidy.util.Localstorage;
import com.subsidy.util.MathUtil;
import com.subsidy.util.excel.ExcelUtil;
-import com.subsidy.vo.administer.AdministerPermissionVO;
-import com.subsidy.vo.administer.ClassDailyInfoVO;
-import com.subsidy.vo.administer.ClassSummaryVO;
-import com.subsidy.vo.administer.ClassVodDailyInfoItemVO;
-import com.subsidy.vo.administer.ClassVodInfoVO;
-import com.subsidy.vo.administer.ExerciseTestVO;
-import com.subsidy.vo.administer.GetMemberPapersVO;
-import com.subsidy.vo.administer.GetPaperDetailVO;
-import com.subsidy.vo.administer.LoginVO;
-import com.subsidy.vo.administer.ManageMemberVO;
-import com.subsidy.vo.administer.MemberStudyLogVO;
-import com.subsidy.vo.administer.OperatorsVO;
-import com.subsidy.vo.administer.PermissionsVO;
+import com.subsidy.vo.administer.*;
import com.subsidy.vo.classdict.ClassDetailVO;
import com.subsidy.vo.done.GetMaxScoreVO;
import com.subsidy.vo.done.TestScoreInfoVO;
@@ -324,8 +312,8 @@ public class AdministerServiceImpl extends ServiceImpl()
- .lambda()
- .eq(RoleAdministerMappingDO::getAdministerId,administerDO.getId()));
+ .lambda()
+ .eq(RoleAdministerMappingDO::getAdministerId, administerDO.getId()));
administerPermissionVO.setRole(roleAdministerMappingDO.getRoleId());
return administerPermissionVO;
}
@@ -333,7 +321,7 @@ public class AdministerServiceImpl extends ServiceImpl operators(OperatorsDTO operatorsDTO) {
Page pager = new Page(operatorsDTO.getPageNum(), operatorsDTO.getPageSize());
- IPage operatorsVOIPage = companyDictMapper.operators(pager, operatorsDTO.getCompanyName(), operatorsDTO.getFieldId(), null, 1,null);
+ IPage operatorsVOIPage = companyDictMapper.operators(pager, operatorsDTO.getCompanyName(), operatorsDTO.getFieldId(), null, 1, null);
List operatorsVOS = operatorsVOIPage.getRecords();
for (OperatorsVO operatorsVO : operatorsVOS) {
@@ -432,7 +420,7 @@ public class AdministerServiceImpl extends ServiceImpl= vodDictDO.getVodLength()) {
i++;
}
@@ -483,7 +471,7 @@ public class AdministerServiceImpl extends ServiceImpl= vodDictDO.getVodLength()) {
i++;
}
@@ -554,7 +542,7 @@ public class AdministerServiceImpl extends ServiceImpl= vodDictDO.getVodLength()) {
i++;
}
@@ -589,9 +577,12 @@ public class AdministerServiceImpl extends ServiceImpl()
.lambda()
@@ -635,7 +626,7 @@ public class AdministerServiceImpl extends ServiceImpl= vodDictDO.getVodLength()) {
i++;
}
@@ -694,7 +685,7 @@ public class AdministerServiceImpl extends ServiceImpl= vodDictDO.getVodLength()) {
i++;
}
@@ -706,9 +697,12 @@ public class AdministerServiceImpl extends ServiceImpl set = redisUtil.scan(RedisPrefixConstant.SUBSIDY_SIGN_INFO_PREFIX + classSignVO.getId() + ":classId:" + classDetailDTO.getId() + "*");
List signInRecordDOS = signInRecordMapper.selectList(new QueryWrapper()
@@ -753,7 +747,7 @@ public class AdministerServiceImpl extends ServiceImpl classSignVOS = exerciseTestVOIPage.getRecords();
for (ExerciseTestVO exerciseTestVO : classSignVOS) {
- //学生测试完成情况
+ //学生测试完成情况---以最后一次成绩为准
TestScoreInfoVO testScoreInfoVO = exerciseDoneResultMapper.testScoreInfo(classDetailDTO.getPaperId(), exerciseTestVO.getId(), classDetailDTO.getId());
exerciseTestVO.setPaperId(exerciseTestVO.getPaperId());
if (null != testScoreInfoVO) {
@@ -897,7 +891,8 @@ public class AdministerServiceImpl extends ServiceImpl classDailyInfoVOIPage = classMemberMappingMapper.getClassMembersWithName(pager, classDailyInfoDTO.getClassId(), classDailyInfoDTO.getUserName());
@@ -1003,7 +998,8 @@ public class AdministerServiceImpl extends ServiceImpl memberDetectionRecord(ClassDetailDTO classDetailDTO) {
+ Page pager = new Page(classDetailDTO.getPageNum(), classDetailDTO.getPageSize());
+ return this.baseMapper.classActivityDetection(pager, classDetailDTO.getId(), classDetailDTO.getUserName());
+ }
+
+ public void exportMemberDetectionRecord(ClassDetailDTO classDetailDTO) {
+ Page pager = new Page(1, -1L);
+ IPage iPage = baseMapper.classActivityDetection(pager, classDetailDTO.getId(), classDetailDTO.getUserName());
+ List memberDetectionRecordVOS = iPage.getRecords();
+ //TODO
+ }
+
+ public IPage imageCheckDetail(ClassDetailDTO classDetailDTO){
+ Page pager = new Page(classDetailDTO.getPageNum(), classDetailDTO.getPageSize());
+ return this.baseMapper.imageCheckDetail(pager,classDetailDTO.getId(),classDetailDTO.getUserName());
+ }
public void writeVodExcel(List classDailyInfoVOS, HashMap hashMap, List title, HashMap vodHashmap) {
@@ -1067,12 +1079,13 @@ public class AdministerServiceImpl extends ServiceImpl()
.lambda()
- .eq(RoleAdministerMappingDO::getAdministerId,operatorsDTO.getId())
- .eq(RoleAdministerMappingDO::getRoleId,1));
+ .eq(RoleAdministerMappingDO::getAdministerId, operatorsDTO.getId())
+ .eq(RoleAdministerMappingDO::getRoleId, 1));
- if (count > 0){
+ if (count > 0) {
administerDO.setCompanyId(null);
}
- IPage page = this.baseMapper.operators(pager, operatorsDTO.getCompanyName(), operatorsDTO.getFieldId(),administerDO.getCompanyId(),2,operatorsDTO.getSuperviseName());
+ IPage page = this.baseMapper.operators(pager, operatorsDTO.getCompanyName(), operatorsDTO.getFieldId(), administerDO.getCompanyId(), 2, operatorsDTO.getSuperviseName());
List operatorsVOS = page.getRecords();
for (OperatorsVO operatorsVO : operatorsVOS) {
//查看公司所在行业
@@ -181,27 +170,27 @@ public class CompanyDictServiceImpl extends ServiceImpl jobDictDOS = jobDictMapper.selectList(new QueryWrapper()
- .lambda()
- .isNull(JobDictDO::getCompanyId));
- for (JobDictDO jobDictDO : jobDictDOS){
+ .lambda()
+ .isNull(JobDictDO::getCompanyId));
+ for (JobDictDO jobDictDO : jobDictDOS) {
jobDictDO.setCompanyId(companyDictDO.getId());
jobDictMapper.insert(jobDictDO);
}
//初始化运营者的职级
List rankDictDOS = rankDictMapper.selectList(new QueryWrapper()
- .lambda()
- .isNull(RankDictDO::getCompanyId));
- for (RankDictDO rankDictDO : rankDictDOS){
+ .lambda()
+ .isNull(RankDictDO::getCompanyId));
+ for (RankDictDO rankDictDO : rankDictDOS) {
rankDictDO.setCompanyId(companyDictDO.getId());
rankDictMapper.insert(rankDictDO);
}
//初始化轮播图
List rotationImgDictDOS = rotationImgDictMapper.selectList(new QueryWrapper()
- .lambda()
- .isNull(RotationImgDictDO::getCompanyId));
- for (RotationImgDictDO rotationImgDictDO : rotationImgDictDOS){
+ .lambda()
+ .isNull(RotationImgDictDO::getCompanyId));
+ for (RotationImgDictDO rotationImgDictDO : rotationImgDictDOS) {
rotationImgDictDO.setCompanyId(companyDictDO.getId());
rotationImgDictMapper.insert(rotationImgDictDO);
}
@@ -247,8 +236,8 @@ public class CompanyDictServiceImpl extends ServiceImpl getCompanyMembers(GetCompanyMembersDTO getCompanyMembersDTO) {
+ Page pager = new Page(getCompanyMembersDTO.getPageNum(), getCompanyMembersDTO.getPageSize());
+ return this.baseMapper.getCompanyMembers(pager,getCompanyMembersDTO.getCompanyId(),getCompanyMembersDTO.getUserName());
+ }
+
+
}
diff --git a/src/main/java/com/subsidy/service/impl/ImageCheckRecordServiceImpl.java b/src/main/java/com/subsidy/service/impl/ImageCheckRecordServiceImpl.java
new file mode 100644
index 0000000..d5a85c3
--- /dev/null
+++ b/src/main/java/com/subsidy/service/impl/ImageCheckRecordServiceImpl.java
@@ -0,0 +1,31 @@
+package com.subsidy.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.subsidy.model.ImageCheckRecordDO;
+import com.subsidy.mapper.ImageCheckRecordMapper;
+import com.subsidy.service.ImageCheckRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *
+ * 实名验证记录表 服务实现类
+ *
+ *
+ * @author DengMin
+ * @since 2022-07-14
+ */
+@Service
+public class ImageCheckRecordServiceImpl extends ServiceImpl implements ImageCheckRecordService {
+
+ public List getImageCheckHistory(ImageCheckRecordDO imageCheckRecordDO){
+ return this.baseMapper.selectList(new QueryWrapper()
+ .lambda()
+ .eq(ImageCheckRecordDO::getClassId,imageCheckRecordDO.getClassId())
+ .eq(ImageCheckRecordDO::getMemberId,imageCheckRecordDO.getMemberId())
+ .orderByDesc(ImageCheckRecordDO::getCreateDate));
+ }
+
+}
diff --git a/src/main/java/com/subsidy/service/impl/MemberServiceImpl.java b/src/main/java/com/subsidy/service/impl/MemberServiceImpl.java
index fc82526..66f430b 100644
--- a/src/main/java/com/subsidy/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/subsidy/service/impl/MemberServiceImpl.java
@@ -682,49 +682,42 @@ public class MemberServiceImpl extends ServiceImpl imple
return userRoleVO;
}
- public String updatePassword(MemberDO memberDO) {
- this.baseMapper.updateById(memberDO);
- //MemberDO memberDO1 = this.baseMapper.selectById(memberDO.getId());
- //redisUtil.set(RedisPrefixConstant.SUBSIDY_COMPANY_MEMBER_PREFIX + memberDO1.getCompanyId() + ":" + memberDO.getAccountName(), memberDO);
- return ConstantUtils.SET_SUCCESS;
- }
+ public CheckStatusVO checkStatus(MemberDO memberDO) {
- public MemberStudyPageVO studyPage(MemberDO memberDO) {
-
- MemberStudyPageVO memberStudyPageVO = new MemberStudyPageVO();
+ CheckStatusVO checkStatusVO = new CheckStatusVO();
+ MemberDO memberDO1 = this.baseMapper.selectById(memberDO.getId());
- List studyPageVOS = this.baseMapper.studyPage(memberDO);
+ if (StringUtils.isEmpty(memberDO1.getCheckImage())) {
+ checkStatusVO.setImageStatus(false);
+ } else {
+ checkStatusVO.setImageStatus(true);
+ }
- final ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
- for (StudyPageVO studyPageVO : studyPageVOS) {
- //查看课程下有几节课
- List vodDictDOS = courseContentMapper.getCourseVods(studyPageVO.getId());
- studyPageVO.setTotalVods(vodDictDOS.size());
- newCachedThreadPool.submit(() -> studyPageTask1(studyPageVO, vodDictDOS, memberDO.getId()));
+ if (memberDO1.getFirstLogin() == 1) {
+ checkStatusVO.setSMSStatus(true);
+ } else {
+ checkStatusVO.setSMSStatus(false);
}
- newCachedThreadPool.shutdown();
- memberStudyPageVO.setStudyPageVOS(studyPageVOS);
- return memberStudyPageVO;
+ return checkStatusVO;
}
- public Future studyPageTask1(StudyPageVO studyPageVO, List vodDictDOS, Long memberId) {
-
- int i = 0;
+ public String updatePassword(MemberDO memberDO) {
+ this.baseMapper.updateById(memberDO);
+ //MemberDO memberDO1 = this.baseMapper.selectById(memberDO.getId());
+ //redisUtil.set(RedisPrefixConstant.SUBSIDY_COMPANY_MEMBER_PREFIX + memberDO1.getCompanyId() + ":" + memberDO.getAccountName(), memberDO);
+ return ConstantUtils.SET_SUCCESS;
+ }
- //该成员完成了几个视频
- for (VodDictDO vodDictDO : vodDictDOS) {
- int completeVodOrNot = vodPlayHistoryMapper.completeVodOrNot(memberId, vodDictDO.getId(), studyPageVO.getClassId());
- i += completeVodOrNot;
- }
- studyPageVO.setDoneVods(i);
- ////该班级课程下有多少人
- //Integer count = classMemberMappingMapper.selectCount(new QueryWrapper()
- // .lambda()
- // .eq(ClassMemberMappingDO::getClassId, studyPageVO.getClassId()));
- //studyPageVO.setTotalMember(count);
+ public String updateCheckImage(MemberDO memberDO) {
+ memberDO.setCheckTime(LocalDateTime.now());
+ this.baseMapper.updateById(memberDO);
+ return ConstantUtils.SET_SUCCESS;
+ }
- return new AsyncResult<>(studyPageVO);
+ public String removeCheckImage(MemberDO memberDO) {
+ this.baseMapper.removeCheckImage(memberDO.getId());
+ return ConstantUtils.DELETE_SUCCESS;
}
public List myCourses(MyCoursesDTO myCoursesDTO) {
diff --git a/src/main/java/com/subsidy/util/ExcelFormatUtils.java b/src/main/java/com/subsidy/util/ExcelFormatUtils.java
index 5424dfd..aa4eee3 100644
--- a/src/main/java/com/subsidy/util/ExcelFormatUtils.java
+++ b/src/main/java/com/subsidy/util/ExcelFormatUtils.java
@@ -6,9 +6,9 @@ import java.util.List;
public class ExcelFormatUtils {
- public static final List memberList = Arrays.asList("序号", "成员名称","身份证号码", "性别", "账号", "联系方式", "签到次数", "课程进度", "学习时长", "答疑数", "测试成绩", "总评价");
+ public static final List memberList = Arrays.asList("序号", "成员名称","身份证号码", "性别", "账号", "联系方式", "签到次数", "课程进度", "学习时长(小时)","学习时长(分钟)", "答疑数", "测试成绩", "总评价");
- public static final List signList = Arrays.asList("序号", "成员名称", "身份证号码", "联系方式", "学习时长", "课程进度", "完成率", "签到次数", "签到日期");
+ public static final List signList = Arrays.asList("序号", "成员名称", "身份证号码", "联系方式", "学习时长(小时)","学习时长(分钟)", "课程进度", "完成率", "签到次数", "签到日期");
public static final List scoreList = Arrays.asList("序号", "成员名称", "身份证号码", "联系方式", "测试成绩", "测试次数", "总评价");
diff --git a/src/main/java/com/subsidy/util/excel/ExcelUtil.java b/src/main/java/com/subsidy/util/excel/ExcelUtil.java
index 33855ed..86d6ad2 100644
--- a/src/main/java/com/subsidy/util/excel/ExcelUtil.java
+++ b/src/main/java/com/subsidy/util/excel/ExcelUtil.java
@@ -466,7 +466,7 @@ public class ExcelUtil {
sheet.addMergedRegion(cellRangeAddress21);
setBorderStyle(HSSFCellStyle.BORDER_THIN, cellRangeAddress21, sheet, workbook); //给合并过的单元格加边框
- CellRangeAddress cellRangeAddress22 = new CellRangeAddress(1, 1, 5, 11);
+ CellRangeAddress cellRangeAddress22 = new CellRangeAddress(1, 1, 5, 12);
sheet.addMergedRegion(cellRangeAddress22);
setBorderStyle(HSSFCellStyle.BORDER_THIN, cellRangeAddress22, sheet, workbook); //给合并过的单元格加边框
@@ -482,7 +482,7 @@ public class ExcelUtil {
sheet.addMergedRegion(cellRangeAddress31);
setBorderStyle(HSSFCellStyle.BORDER_THIN, cellRangeAddress31, sheet, workbook); //给合并过的单元格加边框
- CellRangeAddress cellRangeAddress32 = new CellRangeAddress(2, 2, 5, 11);
+ CellRangeAddress cellRangeAddress32 = new CellRangeAddress(2, 2, 5, 12);
sheet.addMergedRegion(cellRangeAddress32);
setBorderStyle(HSSFCellStyle.BORDER_THIN, cellRangeAddress32, sheet, workbook); //给合并过的单元格加边框
thirdRow.createCell(0).setCellValue(thirdHead[0]);
@@ -553,14 +553,18 @@ public class ExcelUtil {
newCell = dataRow.createCell(9);
newCell.setCellStyle(cellStyle);
- newCell.setCellValue(classDetailVO.getAskCounts());
+ newCell.setCellValue(classDetailVO.getTrainingLengthMinute());
newCell = dataRow.createCell(10);
newCell.setCellStyle(cellStyle);
- newCell.setCellValue(classDetailVO.getScore());
+ newCell.setCellValue(classDetailVO.getAskCounts());
newCell = dataRow.createCell(11);
newCell.setCellStyle(cellStyle);
+ newCell.setCellValue(classDetailVO.getScore());
+
+ newCell = dataRow.createCell(12);
+ newCell.setCellStyle(cellStyle);
newCell.setCellValue(classDetailVO.getResult());
rowIndex++;
seq++;
@@ -693,7 +697,7 @@ public class ExcelUtil {
sheet.addMergedRegion(cellRangeAddress21);
setBorderStyle(HSSFCellStyle.BORDER_THIN, cellRangeAddress21, sheet, workbook); //给合并过的单元格加边框
- CellRangeAddress cellRangeAddress22 = new CellRangeAddress(1, 1, 4, 8);
+ CellRangeAddress cellRangeAddress22 = new CellRangeAddress(1, 1, 4, 9);
sheet.addMergedRegion(cellRangeAddress22);
setBorderStyle(HSSFCellStyle.BORDER_THIN, cellRangeAddress22, sheet, workbook); //给合并过的单元格加边框
@@ -709,7 +713,7 @@ public class ExcelUtil {
sheet.addMergedRegion(cellRangeAddress31);
setBorderStyle(HSSFCellStyle.BORDER_THIN, cellRangeAddress31, sheet, workbook); //给合并过的单元格加边框
- CellRangeAddress cellRangeAddress32 = new CellRangeAddress(2, 2, 4, 8);
+ CellRangeAddress cellRangeAddress32 = new CellRangeAddress(2, 2, 4, 9);
sheet.addMergedRegion(cellRangeAddress32);
setBorderStyle(HSSFCellStyle.BORDER_THIN, cellRangeAddress32, sheet, workbook); //给合并过的单元格加边框
thirdRow.createCell(0).setCellValue(thirdHead[0]);
@@ -765,18 +769,22 @@ public class ExcelUtil {
newCell = dataRow.createCell(5);
newCell.setCellStyle(cellStyle);
- newCell.setCellValue(classSignVO.getClassProcess());
+ newCell.setCellValue(classSignVO.getTrainingLengthMinute());
newCell = dataRow.createCell(6);
newCell.setCellStyle(cellStyle);
- newCell.setCellValue(classSignVO.getPercent());
+ newCell.setCellValue(classSignVO.getClassProcess());
newCell = dataRow.createCell(7);
newCell.setCellStyle(cellStyle);
- newCell.setCellValue(classSignVO.getSignCounts());
+ newCell.setCellValue(classSignVO.getPercent());
newCell = dataRow.createCell(8);
newCell.setCellStyle(cellStyle);
+ newCell.setCellValue(classSignVO.getSignCounts());
+
+ newCell = dataRow.createCell(9);
+ newCell.setCellStyle(cellStyle);
newCell.setCellValue(classSignVO.getSignInDateList());
rowIndex++;
diff --git a/src/main/java/com/subsidy/vo/administer/ImageCheckDetailVO.java b/src/main/java/com/subsidy/vo/administer/ImageCheckDetailVO.java
new file mode 100644
index 0000000..1f8e658
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/administer/ImageCheckDetailVO.java
@@ -0,0 +1,7 @@
+package com.subsidy.vo.administer;
+
+import lombok.Data;
+
+@Data
+public class ImageCheckDetailVO {
+}
diff --git a/src/main/java/com/subsidy/vo/administer/MemberDetectionRecordVO.java b/src/main/java/com/subsidy/vo/administer/MemberDetectionRecordVO.java
new file mode 100644
index 0000000..2462926
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/administer/MemberDetectionRecordVO.java
@@ -0,0 +1,27 @@
+package com.subsidy.vo.administer;
+
+import com.subsidy.util.excel.ExcelColumn;
+import lombok.Data;
+
+@Data
+public class MemberDetectionRecordVO {
+
+
+ private Long id;
+
+ @ExcelColumn(col = 1,value = "成员名称")
+ private String userName;
+
+ @ExcelColumn(col = 2,value = "账号")
+ private String accountName;
+
+ @ExcelColumn(col = 3,value = "身份证号")
+ private String idCard;
+
+ @ExcelColumn(col = 4,value = "身份证号")
+ private String telephone;
+
+ @ExcelColumn(col = 5,value = "检测次数")
+ private Integer cnt;
+
+}
diff --git a/src/main/java/com/subsidy/vo/classdict/ClassDetailVO.java b/src/main/java/com/subsidy/vo/classdict/ClassDetailVO.java
index b2aab3d..9bb46d7 100644
--- a/src/main/java/com/subsidy/vo/classdict/ClassDetailVO.java
+++ b/src/main/java/com/subsidy/vo/classdict/ClassDetailVO.java
@@ -51,9 +51,11 @@ public class ClassDetailVO{
private Integer trainingLength;
- @ExcelColumn(col = 8,value = "培训时长")
+ @ExcelColumn(col = 8,value = "培训时长(小时)")
private String trainingLengthStr;
+ @ExcelColumn(col = 9,value = "培训时长(分钟)")
+ private String trainingLengthMinute;
/**
* 作对个数
@@ -68,13 +70,13 @@ public class ClassDetailVO{
/**
* 评价测试
*/
- @ExcelColumn(col = 9,value = "评价测试")
+ @ExcelColumn(col = 10,value = "评价测试")
private String score;
/**
* 答疑个数
*/
- @ExcelColumn(col = 10,value = "答题数")
+ @ExcelColumn(col = 11,value = "答题数")
private Integer askCounts;
diff --git a/src/main/java/com/subsidy/vo/company/GetCompanyMembersVO.java b/src/main/java/com/subsidy/vo/company/GetCompanyMembersVO.java
new file mode 100644
index 0000000..8ab3ea2
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/company/GetCompanyMembersVO.java
@@ -0,0 +1,22 @@
+package com.subsidy.vo.company;
+
+import lombok.Data;
+
+@Data
+public class GetCompanyMembersVO {
+
+ private Long id;
+
+ private String userName;
+
+ private String idCard;
+
+ private String companyName;
+
+ private Integer firstLogin;
+
+ private String checkImage;
+
+ private String checkTime;
+
+}
diff --git a/src/main/java/com/subsidy/vo/member/CheckStatusVO.java b/src/main/java/com/subsidy/vo/member/CheckStatusVO.java
new file mode 100644
index 0000000..5c56033
--- /dev/null
+++ b/src/main/java/com/subsidy/vo/member/CheckStatusVO.java
@@ -0,0 +1,12 @@
+package com.subsidy.vo.member;
+
+import lombok.Data;
+
+@Data
+public class CheckStatusVO {
+
+ private Boolean SMSStatus;
+
+ private Boolean imageStatus;
+
+}
diff --git a/src/main/java/com/subsidy/vo/member/ClassSignVO.java b/src/main/java/com/subsidy/vo/member/ClassSignVO.java
index 3aa3ef7..4e7228b 100644
--- a/src/main/java/com/subsidy/vo/member/ClassSignVO.java
+++ b/src/main/java/com/subsidy/vo/member/ClassSignVO.java
@@ -31,17 +31,19 @@ public class ClassSignVO {
*/
private Integer trainingLength;
- @ExcelColumn(col = 4,value = "培训时长")
+ @ExcelColumn(col = 4,value = "培训时长(小时)")
private String trainingLengthStr;
+ @ExcelColumn(col = 5,value = "培训时长(分钟)")
+ private String trainingLengthMinute;
- @ExcelColumn(col = 5,value = "课程进度")
+ @ExcelColumn(col = 6,value = "课程进度")
private String classProcess;
/**
* 完成率
*/
- @ExcelColumn(col = 6,value = "完成率")
+ @ExcelColumn(col = 7,value = "完成率")
private String percent;
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 1a694d2..f8eae84 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -69,3 +69,9 @@ wechat:
#pro
appId: wx5e1ecb9c9bd33451
appSecret: 4f5e1abb6fb4f68f5273820b6295ec6b
+
+
+#活体检测配置
+activity.captchaAppId: 2013197365
+activity.appSecretKey: 04ABoF0ZVuMje8NP84DE5Sg**
+activity.businessId: 1
\ No newline at end of file
diff --git a/src/main/resources/mapper/ActivityDetectionMapper.xml b/src/main/resources/mapper/ActivityDetectionMapper.xml
new file mode 100644
index 0000000..9fc0b42
--- /dev/null
+++ b/src/main/resources/mapper/ActivityDetectionMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ create_date,
+ update_date,
+ delete_date,
+ id, class_id, member_id, status
+
+
+
diff --git a/src/main/resources/mapper/AdministerMapper.xml b/src/main/resources/mapper/AdministerMapper.xml
index e98eda5..ab76a16 100644
--- a/src/main/resources/mapper/AdministerMapper.xml
+++ b/src/main/resources/mapper/AdministerMapper.xml
@@ -120,4 +120,77 @@
+
+
+
+
diff --git a/src/main/resources/mapper/CompanyDictMapper.xml b/src/main/resources/mapper/CompanyDictMapper.xml
index c345db5..a9ad5f9 100644
--- a/src/main/resources/mapper/CompanyDictMapper.xml
+++ b/src/main/resources/mapper/CompanyDictMapper.xml
@@ -75,4 +75,24 @@
+
+
diff --git a/src/main/resources/mapper/ExerciseDoneResultMapper.xml b/src/main/resources/mapper/ExerciseDoneResultMapper.xml
index 839563d..081c5a0 100644
--- a/src/main/resources/mapper/ExerciseDoneResultMapper.xml
+++ b/src/main/resources/mapper/ExerciseDoneResultMapper.xml
@@ -119,23 +119,47 @@
+
+
+ update member set check_image = nulll where id = #{id}
+