فهرست منبع

Merge branch 'master' of http://47.112.200.206:3000/chchen/JzPeiXun

# Conflicts:
#	pom.xml
#	src/main/java/com/aijia/peixun/controller/JzPeiXunController.java
#	src/main/java/com/aijia/peixun/service/JzPeiXunService.java
#	src/main/java/com/aijia/peixun/service/JzPeiXunServiceImpl.java
shenhao 4 سال پیش
والد
کامیت
e249f62a1e

+ 5 - 5
pom.xml

@@ -185,11 +185,6 @@
       <artifactId>aliyun-sdk-oss</artifactId>
       <version>3.8.1</version>
     </dependency>
-    <dependency>
-      <groupId>org.springframework.session</groupId>
-      <artifactId>spring-session</artifactId>
-      <version>1.3.4.RELEASE</version>
-    </dependency>
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-web</artifactId>
@@ -217,6 +212,11 @@
       <artifactId>fastjson</artifactId>
       <version>1.2.71</version>
     </dependency>
+    <dependency>
+      <groupId>org.springframework.session</groupId>
+      <artifactId>spring-session-data-redis</artifactId>
+      <version>2.1.7.RELEASE</version>
+    </dependency>
 
   </dependencies>
 

+ 0 - 15
src/main/java/com/aijia/core/filter/CorsFilterConfig.java

@@ -12,20 +12,5 @@ import javax.servlet.Filter;
  * @date 2021/8/1
  */
 public class CorsFilterConfig {
-    @Bean
-public FilterRegistrationBean webAuthFilterRegistration() {
-    FilterRegistrationBean registration = new FilterRegistrationBean();
-    registration.setFilter(CorsFilter());
-    registration.setName("CorsFilter");
-    registration.addUrlPatterns("/*");
-//    registration.addInitParameter("excludeUrls", "/web/login");
-    registration.setOrder(0);
-    return registration;
-}
-
-    @Bean
-    public Filter CorsFilter() {
-        return new CorsFilter();
-    }
 
 }

+ 28 - 0
src/main/java/com/aijia/kmt/controller/KmtExerciseController.java

@@ -14,12 +14,14 @@ import com.aijia.kmt.vo.rollbackai.ExerciseQuestionsEditRequest;
 import com.alibaba.fastjson.JSON;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -262,4 +264,30 @@ public class KmtExerciseController extends BaseController {
     }
 
 
+    @RequestMapping(value = "/publishQuestion", method = RequestMethod.POST)
+    @ApiOperation(value = "发布题目", httpMethod = "POST",  notes = "发布题目")
+    public ResponseEntity publishQuestion(@RequestParam(name = "accessToken") String accessToken,
+                                          @RequestBody QuestionPublishRequest request) {
+        long start = System.currentTimeMillis();
+        ResponseEntity responseEntity = new ResponseEntity();
+        try {
+            List<String> questionIdList = request.getQuestionIds();
+            if (CollectionUtils.isEmpty(questionIdList)) {
+                responseEntity.failure("请先选择题目");
+                return responseEntity;
+            }
+            String userId = tokenManager.getUserId(accessToken);
+            responseEntity = kmtExerciseSubmitService.publishQuestion(request, userId);
+        } catch (CommonException e) {
+            throw e;
+        } catch (Exception e){
+            logger.error("入参={}", request);
+            logger.error("异常", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "暂未加载到数据,请稍后重试");
+        }
+        logger.info(accessToken + ":" + (System.currentTimeMillis() - start));
+        return responseEntity;
+    }
+
+
 }

+ 6 - 0
src/main/java/com/aijia/kmt/service/KmtExerciseSubmitService.java

@@ -6,6 +6,7 @@ import com.aijia.core.web.ResponseEntity;
 import com.aijia.kmt.po.KmtExerciseBook;
 import com.aijia.kmt.po.KmtExerciseQuestion;
 import com.aijia.kmt.vo.AuditingV1Request;
+import com.aijia.kmt.vo.QuestionPublishRequest;
 
 import java.util.List;
 
@@ -33,4 +34,9 @@ public interface KmtExerciseSubmitService {
      * @param questionIds
      */
     void updateEsQuestionAndKnow(List<KmtExerciseQuestion> questions, List<String> questionIds);
+
+    /**
+     * 发布题目
+     */
+    ResponseEntity publishQuestion(QuestionPublishRequest request, String userId);
 }

+ 49 - 2
src/main/java/com/aijia/kmt/service/impl/KmtExerciseSubmitServiceImpl.java

@@ -24,6 +24,7 @@ import com.aijia.kmt.utils.ExerciseUtil;
 import com.aijia.kmt.utils.JSONFileUtil;
 import com.aijia.kmt.utils.PropertiesUtil;
 import com.aijia.kmt.vo.AuditingV1Request;
+import com.aijia.kmt.vo.QuestionPublishRequest;
 import com.aijia.kmt.vo.QuestionUpdateRequest;
 import com.aijia.questioninfo.service.KmtExerciseQuestionInfoService;
 import com.aijia.train.bean.TrTrainPartUser;
@@ -125,7 +126,7 @@ public class KmtExerciseSubmitServiceImpl implements KmtExerciseSubmitService {
                             questionInfo.setAnalysis(q.getAnalysis());
                             questionInfo.setAnalysisJson(r.getAnalysisJson());
                             questionInfo.setCreateTime(DateUtil.format_yyyyMMddHHmmss(new Date()));
-                            questionInfo.setStatus(1);
+                            questionInfo.setStatus(request.getType()==0?2:1);
                             if(CollectionUtils.isNotEmpty(r.getDifficultyLevels())){
                                 questionInfo.setDifficultyLevel(r.getDifficultyLevels().get(0).getType());
                             }
@@ -153,7 +154,7 @@ public class KmtExerciseSubmitServiceImpl implements KmtExerciseSubmitService {
                             questionInfo.setAnalysis(q.getAnalysis());
                             questionInfo.setAnalysisJson(r.getAnalysisJson());
                             questionInfo.setCreateTime(DateUtil.format_yyyyMMddHHmmss(new Date()));
-                            questionInfo.setStatus(1);
+                            questionInfo.setStatus(request.getType()==0?2:1);
                             if(CollectionUtils.isNotEmpty(r.getDifficultyLevels())){
                                 questionInfo.setDifficultyLevel(r.getDifficultyLevels().get(0).getType());
                             }
@@ -282,6 +283,52 @@ public class KmtExerciseSubmitServiceImpl implements KmtExerciseSubmitService {
         }
     }
 
+    @Override
+    public ResponseEntity publishQuestion(QuestionPublishRequest request, String userId) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        //查询用户是否有提交数据
+        if (CollectionUtils.isNotEmpty(request.getQuestionIds())) {
+            List<KmtExerciseQuestion> questions = kmtExerciseMapper.findKmtExerciseQuestionsByIdIn(request.getQuestionIds());
+            questions.forEach(q -> {
+                TrTrainUserExercise questionInfo = userExerciseMapper.selectOne(
+                        new QueryWrapper<TrTrainUserExercise>().eq("question_id", q.getId())
+                                .eq("user_id", userId)
+                );
+                if (questionInfo == null) {
+                    //没有提交记录就用原来题目的信息
+                    questionInfo = new TrTrainUserExercise();
+                    KmtExerciseQuestion kmtExerciseQuestion = kmtExerciseQuestionMapper.selectById(q.getId());
+                    questionInfo.setQuestionId(q.getId());
+                    questionInfo.setQuestionOrg(kmtExerciseQuestion.getImage());
+                    questionInfo.setUserId(userId);
+                    questionInfo.setExerciseId(q.getBookId());
+                    questionInfo.setQuestion(q.getQuestion());
+                    questionInfo.setQuestionText(q.getQuestionText());
+                    questionInfo.setQuestionJson(q.getQuestionJson());
+                    questionInfo.setAnswer(q.getOptionAnswer());
+                    questionInfo.setAnswerJson(q.getAnswerJson());
+                    questionInfo.setAnalysis(q.getAnalysis());
+                    questionInfo.setAnalysisJson(q.getAnalysisJson());
+                    questionInfo.setCreateTime(DateUtil.format_yyyyMMddHHmmss(new Date()));
+                    questionInfo.setStatus(1);
+                    questionInfo.setDifficultyLevel(q.getDifficultyLevel());
+                    questionInfo.setQuestionType(q.getQuestionType());
+                    questionInfo.setRealExamType(q.getRealExamType());
+                    questionInfo.setTrainingSkill(q.getTrainingSkill());
+                    userExerciseMapper.insert(questionInfo);
+                } else {
+                    //已经编辑过的信息更新状态
+                    questionInfo.setStatus(1);
+                    userExerciseMapper.updateById(questionInfo);
+                }
+            });
+            responseEntity.success("发布成功");
+        }else{
+            responseEntity.failure("未查到题目信息");
+        }
+        return responseEntity;
+    }
+
 
     /**
      * 是否是管理员提交

+ 1 - 1
src/main/java/com/aijia/kmt/vo/AuditingV1Request.java

@@ -15,7 +15,7 @@ public class AuditingV1Request extends BaseRequest{
 
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(name = "type", value = "类型, 0提交审核,1发布,4解析提交,5解析发布,6答案校对修改, 默认0", required = true)
+    @ApiModelProperty(name = "type", value = "类型, 0保存,1发布, 默认0", required = true)
     private int type;
     @ApiModelProperty(name = "questions", value = "题目ids", required = true)
     private List<QuestionUpdateRequest> questions;

+ 13 - 0
src/main/java/com/aijia/train/bean/TrTrainPartUser.java

@@ -23,6 +23,11 @@ public class TrTrainPartUser extends BaseEntity {
 	private Integer roleType;
 
 	/**
+	 * 密码,明文
+	 */
+	private String password;
+
+	/**
 	 * 手机号
 	 */
 	private String mobile;
@@ -147,4 +152,12 @@ public class TrTrainPartUser extends BaseEntity {
 	public void setCheckTimes(int checkTimes) {
 		this.checkTimes = checkTimes;
 	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
 }

+ 85 - 63
src/main/java/com/aijia/train/controller/ApiTrainController.java

@@ -57,6 +57,7 @@ public class ApiTrainController extends BaseController {
 
 
 
+
     @IgnoreSecurity
     @RequestMapping(value="/sendCode",method = RequestMethod.POST)
     public ResponseEntity sendCode(@RequestBody TrainLoginVo req){
@@ -80,9 +81,42 @@ public class ApiTrainController extends BaseController {
         return  responseEntity;
     }
 
+    @IgnoreSecurity
+    @RequestMapping(value="/register",method = RequestMethod.POST)
+    public ResponseEntity register(@RequestBody TrainLoginVo req){
+        ResponseEntity responseEntity = new ResponseEntity();
+        if(StringUtils.isBlank(req.getMobile())){
+            return responseEntity.failure(ResponseConstant.CODE_000,"请输入电话号码");
+        }
+        if(StringUtils.isBlank(req.getPassword())){
+            return responseEntity.failure(ResponseConstant.CODE_000,"请输入密码");
+        }
+        if(StringUtils.isBlank(req.getMsgCode())){
+            return responseEntity.failure(ResponseConstant.CODE_000,"请输入验证码");
+        }
+
+        try {
+            responseEntity = trainService.confirmSms(req.getMobile().trim(),req.getMsgCode());
+            if(responseEntity.getCode().equals(ResponseConstant.CODE_999)){
+                //验证码正确 查询用户是否存在
+                TrTrainPartUser user = trainService.getTrainUserByMobile(req.getMobile(),0,req.getPassword());
+                if(Objects.isNull(user)){
+                    responseEntity.failure(ResponseConstant.CODE_500, "您手机号码学习次数或者考核次数用光,不能再注册!");
+                    return  responseEntity;
+                }else{
+                    responseEntity.success("注册成功!");
+                }
+            }
+        }catch (Exception e){
+            responseEntity.failure(ResponseConstant.CODE_000,"注册失败,请确认验证码是否输入正确");
+        }
+
+        return  responseEntity;
+    }
+
 	@IgnoreSecurity
 	@RequestMapping(value = "/login", method = RequestMethod.POST)
-    @ApiOperation(value = "账号短信验证码登录接口", httpMethod = "POST",  notes = "账号密码登录接口")
+    @ApiOperation(value = "账号码登录接口", httpMethod = "POST",  notes = "账号密码登录接口")
     public ResponseEntity login(@RequestBody TrainLoginVo req) {
         ResponseEntity responseEntity = new ResponseEntity();
         Map<String, Object> data=new HashMap<String, Object>();
@@ -91,40 +125,47 @@ public class ApiTrainController extends BaseController {
             if(StringUtils.isBlank(req.getMobile())){
                 return responseEntity.failure(ResponseConstant.CODE_000,"请输入电话号码");
             }
-            if(StringUtils.isBlank(req.getMsgCode())){
-                return responseEntity.failure(ResponseConstant.CODE_000,"请输入验证码");
+            if(StringUtils.isBlank(req.getPassword())){
+                return responseEntity.failure(ResponseConstant.CODE_000,"请输入码");
             }
-            responseEntity = trainService.confirmSms(req.getMobile().trim(),req.getMsgCode());
-            if(responseEntity.getCode().equals(ResponseConstant.CODE_999)){
-                //查询此手机用户是否存在,如果不存在则新增一个手机用户,默认密码123456
-                TrTrainPartUser user = trainService.getTrainUserByMobile(req.getMobile(),req.getLoginType());
-                if(Objects.isNull(user)){
-                    responseEntity.failure(ResponseConstant.CODE_500, "您手机号码学习次数或者考核次数也用光,不能再登录!");
-                    return  responseEntity;
-                }
-                if(StringUtils.isBlank(user.getName()) || user.getRoleType()==0 || StringUtils.isBlank(user.getSubject())){
-                    /**
-                     * 资料待补全
-                     */
-                    data.put("userStat",1);
-                }else{
-                    /**
-                     * 资料完善
-                     */
-                    data.put("userStat",2);
-                }
-                //创建token
-                data.put("accessToken",tokenManager.createToken("",user.getId(),"train"));
+            //查询此手机用户是否存在,如果不存在则新增一个手机用户,默认密码123456
+            TrTrainPartUser user = userServiceMapper.getTrainUserByMobile(req.getMobile());
+            if(Objects.isNull(user)){
+                responseEntity.failure(ResponseConstant.CODE_500, "您还没注册,请先去注册吧!");
+                return  responseEntity;
+            }
+
+            if(user.getStatus() == 2){
+                responseEntity.failure(ResponseConstant.CODE_500, "您手机号码学习次数或者考核次数用光,不能再登录!");
+                return  responseEntity;
+            }
+            //检查密码是否正确
+            if(!req.getPassword().equals(user.getPassword())){
+                responseEntity.failure(ResponseConstant.CODE_500, "用户名或密码输入错误,请重新尝试!");
+                return  responseEntity;
+            }
+            if(StringUtils.isBlank(user.getName()) || user.getRoleType()==0 || StringUtils.isBlank(user.getSubject())){
                 /**
-                 * 0,兼职 1管理员
+                 * 资料待补全
                  */
-                data.put("type",user.getManagerType());
-                data.put("roleType",user.getRoleType());
-                data.put("name",StringUtil.isEmpty(user.getName())?"":user.getName());
-                data.put("subject",StringUtil.isEmpty(user.getSubject())?"":user.getSubject());
-                data.put("studyStat",user.getStudyStatus()<3?1:user.getStudyStatus()==3?2:user.getStudyStatus()==4?3:4);
-                responseEntity.success(data,"登录成功!");
+                data.put("userStat",1);
+            }else{
+                /**
+                 * 资料完善
+                 */
+                data.put("userStat",2);
             }
+            //创建token
+            data.put("accessToken",tokenManager.createToken("",user.getId(),"train"));
+            /**
+             * 0,兼职 1管理员
+             */
+            data.put("type",user.getManagerType());
+            data.put("roleType",user.getRoleType());
+            data.put("name",StringUtil.isEmpty(user.getName())?"":user.getName());
+            data.put("subject",StringUtil.isEmpty(user.getSubject())?"":user.getSubject());
+            data.put("studyStat",user.getStudyStatus()<3?1:user.getStudyStatus()==3?2:user.getStudyStatus()==4?3:4);
+            responseEntity.success(data,"登录成功!");
         } catch (Exception e) {
             log.error("账号密码登录接口", e);
             responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
@@ -251,32 +292,23 @@ public class ApiTrainController extends BaseController {
     @RequestMapping("/upload")
     @ResponseBody
     public ResponseEntity uploadFile(@RequestParam(name = "accessToken") String accessToken,
-                                     @RequestParam("roleType") int roleType,
-                                     @RequestParam("fileIndex") int fileIndex,
-                                     @RequestParam("file") MultipartFile file) {
+                                     @RequestBody FileIdVO vo) {
         ResponseEntity responseEntity = new ResponseEntity();
-        Map<String, MultipartFile> fileList = new HashMap<>();
-        fileList.put("myFile",file);
         try {
             String userId = tokenManager.getUserId(accessToken);
             TrTrainPartUser user = userServiceMapper.selectById(userId);
-            String filepath = "";
-            filepath= PropertiesUtil.getValue("file_save_path") + "/part/peixun/";
-            //文件信息入库
-            List<FileInfo> fileInfos = fileInfoService.uploadFile(userId, fileList, filepath);
-            if(fileInfos==null || fileInfos.size()==0){
-                responseEntity.failure(ResponseConstant.CODE_000, "上传文件失败");
+            if(Objects.isNull(vo.getFileUrl()) || "".equals(vo.getFileUrl())){
+                responseEntity.failure(ResponseConstant.CODE_000, "上传文件路径不能为空");
             }else{
-                FileInfo fileInfo = fileInfos.get(0);
                 Map<String, Object> data = new HashMap<String, Object>();
                 TrTrainFiles trainFiles = new TrTrainFiles();
                 int count = fileServiceMapper.selectCount(new QueryWrapper<TrTrainFiles>().eq("role_type",user.getRoleType()).eq("subject",user.getSubject()));
                 trainFiles.setCreateTime(new Date());
                 trainFiles.setFileIndex(count+1);
-                trainFiles.setFileName(fileInfo.getFileName());
-                trainFiles.setFileType(fileInfo.getFileExt());
+                trainFiles.setFileName(vo.getFileName());
+                trainFiles.setFileType(vo.getFileType());
                 trainFiles.setRoleType(user.getRoleType());
-                trainFiles.setFileUrl(fileInfo.getFilePath());
+                trainFiles.setFileUrl(vo.getFileUrl());
                 trainFiles.setSubject(user.getSubject());
                 fileServiceMapper.insert(trainFiles);
                 data.put("fileId", trainFiles.getId());
@@ -292,30 +324,22 @@ public class ApiTrainController extends BaseController {
 
     @RequestMapping(value = "/replaceFile")
     @ApiOperation(value = "替换文件",   notes = "替换文件")
-    public ResponseEntity replaceFile(@RequestParam(name = "accessToken") String accessToken,@RequestParam(name="fileId") String fileId,@RequestParam(name="file") MultipartFile file) {
+    public ResponseEntity replaceFile(@RequestParam(name = "accessToken") String accessToken,@RequestBody FileIdVO vo) {
         ResponseEntity responseEntity = new ResponseEntity();
-        Map<String, MultipartFile> fileList = new HashMap<>();
-        fileList.put("myFile",file);
         try {
             String userId = tokenManager.getUserId(accessToken);
-            TrTrainFiles trainFiles = fileServiceMapper.selectById(fileId);
+            TrTrainFiles trainFiles = fileServiceMapper.selectById(vo.getFileId());
             if(trainFiles == null){
                 return responseEntity.failure("文件不存在,请检查请求参数!");
             }
-            String filepath =  PropertiesUtil.getValue("file_save_path") + "/part/peixun/";
-            //文件信息入库
-            List<FileInfo> fileInfos = fileInfoService.uploadFile(userId, fileList, filepath);
-            if(fileInfos==null || fileInfos.size()==0){
-                responseEntity.failure(ResponseConstant.CODE_000, "上传文件失败");
+            if(Objects.isNull(vo.getFileUrl()) || "".equals(vo.getFileUrl())){
+                responseEntity.failure(ResponseConstant.CODE_000, "上传文件路径不能为空");
             }else{
-                FileInfo fileInfo = fileInfos.get(0);
                 Map<String, Object> data = new HashMap<String, Object>();
-                //先删除原来的文件
-                fileInfoService.deleteByFilePath(trainFiles.getFileUrl());
                 //保存新的文件
-                trainFiles.setFileName(fileInfo.getFileName());
-                trainFiles.setFileType(fileInfo.getFileExt());
-                trainFiles.setFileUrl(fileInfo.getFilePath());
+                trainFiles.setFileName(vo.getFileName());
+                trainFiles.setFileType(vo.getFileType());
+                trainFiles.setFileUrl(vo.getFileUrl());
                 fileServiceMapper.updateById(trainFiles);
                 data.put("fileId", trainFiles.getId());
                 responseEntity.success(data, "替换文件成功 ");
@@ -341,8 +365,6 @@ public class ApiTrainController extends BaseController {
                             .gt("file_index",trainFiles.getFileIndex())
                             .orderByAsc("file_index")
             );
-            //删除磁盘文件
-            fileInfoService.deleteByFilePath(trainFiles.getFileUrl());
             //删除记录
             fileServiceMapper.deleteById(req.getFileId());
             //更新排序

+ 1 - 1
src/main/java/com/aijia/train/service/ITrainService.java

@@ -19,7 +19,7 @@ public interface ITrainService {
      * @param loginName
      * @return
      */
-    TrTrainPartUser getTrainUserByMobile(String loginName, int type);
+    TrTrainPartUser getTrainUserByMobile(String loginName, int type,String password);
 
     /**
      * 发送短信

+ 2 - 1
src/main/java/com/aijia/train/service/impl/TrainServiceImpl.java

@@ -49,7 +49,7 @@ public class TrainServiceImpl implements ITrainService {
     private TrainUserExerciseMapper userExerciseMapper;
 
     @Override
-    public TrTrainPartUser getTrainUserByMobile(String loginName, int type) {
+    public TrTrainPartUser getTrainUserByMobile(String loginName, int type,String password) {
         TrTrainPartUser user = userServiceMapper.getTrainUserByMobile(loginName);
         if(Objects.isNull(user) && type==0){
             user = new TrTrainPartUser();
@@ -58,6 +58,7 @@ public class TrainServiceImpl implements ITrainService {
             user.setCreateTime(new Date());
             user.setRoleType(0);
             user.setManagerType(type);
+            user.setPassword(password);
             userServiceMapper.insert(user);
         }else{
             if(user.getStatus() == 2){

+ 25 - 19
src/main/java/com/aijia/train/task/ChangeUserStatTask.java

@@ -10,6 +10,7 @@ import com.aijia.train.mapper.TrainUserServiceMapper;
 import com.aijia.train.service.ITrainService;
 import com.aijia.utils.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.commons.collections4.CollectionUtils;
 import org.quartz.DisallowConcurrentExecution;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
@@ -56,21 +57,23 @@ public class ChangeUserStatTask {
                     TrTrainUserInfo info = userInfoServiceMapper.selectOne(
                             new QueryWrapper<TrTrainUserInfo>().eq("user_id",u.getId())
                                     .eq("file_id",nextFiles.getId()).eq("status",1));
-                    //相差秒数
-                    long time = (System.currentTimeMillis() - info.getCreateTime().getTime()) / 1000L;
-                    //相差分钟数
-                    long mi = time/60L;
-                    long hi = mi/60L;
-                    if(hi>=48){
-                        u.setStudyStatus(2);
-                        if(u.getStudyTimes()==1){
-                            u.setStudyTimes(2);
-                            u.setStatus(2);
-                            userInfoServiceMapper.updateByUserId(u.getId());
-                        }else{
-                            u.setStudyTimes(1);
+                    if(Objects.nonNull(info)){
+                        //相差秒数
+                        long time = (System.currentTimeMillis() - info.getCreateTime().getTime()) / 1000L;
+                        //相差分钟数
+                        long mi = time/60L;
+                        long hi = mi/60L;
+                        if(hi>=48){
+                            u.setStudyStatus(2);
+                            if(u.getStudyTimes()==1){
+                                u.setStudyTimes(2);
+                                u.setStatus(2);
+                                userInfoServiceMapper.updateByUserId(u.getId());
+                            }else{
+                                u.setStudyTimes(1);
+                            }
+                            userServiceMapper.updateById(u);
                         }
-                        userServiceMapper.updateById(u);
                     }
 //                    //相差小时 测试环境注释这个
 //                    long hi = mi/60L;
@@ -83,11 +86,12 @@ public class ChangeUserStatTask {
                 //看接入考核状态是否超过24小时
                 List<TrTrainUserInfo> infoList = userInfoServiceMapper.selectList(
                         new QueryWrapper<TrTrainUserInfo>().eq("user_id",u.getId()).orderByDesc("create_time"));
-                TrTrainUserInfo info = infoList.get(0);
-                //相差秒数
-                long time = (System.currentTimeMillis() - info.getCreateTime().getTime()) / (1000L);
-                //相差分钟数
-                long mi = time/60L;
+                if(CollectionUtils.isNotEmpty(infoList)){
+                    TrTrainUserInfo info = infoList.get(0);
+                    //相差秒数
+                    long time = (System.currentTimeMillis() - info.getCreateTime().getTime()) / (1000L);
+                    //相差分钟数
+                    long mi = time/60L;
 //                if(mi>5){
 //                    u.setStudyStatus(2);
 //                    userServiceMapper.updateById(u);
@@ -129,6 +133,8 @@ public class ChangeUserStatTask {
                             }
                         }
                     }
+                }
+
             }
 
         });

+ 29 - 5
src/main/java/com/aijia/train/vo/FileIdVO.java

@@ -17,7 +17,15 @@ public class FileIdVO extends BaseRequest {
     private Integer roleType;
 
 
-    private MultipartFile file;
+    private String  fileUrl;
+    /**
+     * 文件名
+     */
+    private String  fileName;
+    /**
+     * 文件后缀
+     */
+    private String  fileType;
 
     public String getFileId() {
         return fileId;
@@ -27,12 +35,12 @@ public class FileIdVO extends BaseRequest {
         this.fileId = fileId;
     }
 
-    public MultipartFile getFile() {
-        return file;
+    public String getFileUrl() {
+        return fileUrl;
     }
 
-    public void setFile(MultipartFile file) {
-        this.file = file;
+    public void setFileUrl(String fileUrl) {
+        this.fileUrl = fileUrl;
     }
 
     public Integer getFileIndex() {
@@ -50,4 +58,20 @@ public class FileIdVO extends BaseRequest {
     public void setRoleType(Integer roleType) {
         this.roleType = roleType;
     }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public String getFileType() {
+        return fileType;
+    }
+
+    public void setFileType(String fileType) {
+        this.fileType = fileType;
+    }
 }

+ 12 - 0
src/main/java/com/aijia/train/vo/TrainLoginVo.java

@@ -10,6 +10,10 @@ public class TrainLoginVo extends BaseRequest {
 	private String mobile;
 	
 	private String msgCode;
+	/**
+	 * 密码
+	 */
+	private String password;
 
 	/**
 	 * 0-兼职登录 1管理员登录
@@ -39,4 +43,12 @@ public class TrainLoginVo extends BaseRequest {
 	public void setLoginType(Integer loginType) {
 		this.loginType = loginType;
 	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
 }