he2802 2 years ago
parent
commit
31fb565954

+ 7 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -437,4 +437,11 @@ public class ScheduleController extends BaseController {
         iScheduleService.createExamApply();
         return AjaxResult.success();
     }
+
+    @ApiOperation("每日汇总用户学习数据")
+    @GetMapping("/syncUserDateStudyLog")
+    public AjaxResult syncUserDateStudyLog(){
+        iScheduleService.syncUserDateStudyLog();
+        return AjaxResult.success();
+    }
 }

+ 1 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java

@@ -300,7 +300,7 @@ public class HttpUtils
             conn.setRequestProperty("connection", "Keep-Alive");
             conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
             conn.setRequestProperty("Accept-Charset", "utf-8");
-            conn.setRequestProperty("contentType", "utf-8");
+            conn.setRequestProperty("contentType", "application/json;charset=UTF-8");
             conn.setDoOutput(true);
             conn.setDoInput(true);
             out = new PrintWriter(conn.getOutputStream());

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -929,6 +929,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
             subjectStudyRecordQueryBo.setGoodsId(goodsUserVo.getGoodsId());
             subjectStudyRecordQueryBo.setUserId(goodsUserVo.getUserId());
             subjectStudyRecordQueryBo.setGradeId(goodsUserVo.getGradeId());
+            subjectStudyRecordQueryBo.setOrderGoodsId(goodsUserVo.getOrderGoodsId());
             List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listSubject(subjectStudyRecordQueryBo);
             for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
                 secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeStudentVo.java

@@ -236,4 +236,6 @@ public class ClassGradeStudentVo {
 	@ApiModelProperty("官方信息推送结果")
 	private String officialStatusMsg;
 
+
+
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassStudentExportVo.java

@@ -152,7 +152,7 @@ public class ClassStudentExportVo implements Serializable {
 			vo.setServiceDateStr(DateUtils.timestampToDate(studentVo.getServiceStartTime())+"至"+DateUtils.timestampToDate(studentVo.getServiceEndTime()));
 		}
 		if (ObjectUtil.isNotNull(studentVo.getClassStartTime()) && ObjectUtil.isNotNull(studentVo.getClassEndTime())){
-			vo.setClassDateStr(sdf.format(new Date(studentVo.getClassStartTime()))+"至"+sdf.format(new Date(studentVo.getClassEndTime())));
+			vo.setClassDateStr(DateUtils.timestampToDate(studentVo.getClassStartTime())+"至"+DateUtils.timestampToDate(studentVo.getClassEndTime()));
 		}
 		vo.setFinishStatusStr(ObjectUtil.isNotNull(studentVo.getFinishStatus()) && studentVo.getFinishStatus() == 1?"学完":"未学完");
 		vo.setRebuyStr(ObjectUtil.isNotNull(studentVo.getRebuy()) && studentVo.getRebuy() == 1?"复购 针对业务层次配了【下单前需要选择班级】":"非复购");

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java

@@ -114,4 +114,6 @@ public interface IScheduleService extends IService<PolyvVideo> {
 
     void updatePredictPayTime();
 
+    void syncUserDateStudyLog();
+
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -1799,6 +1799,11 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
         iTopDivideLogService.updateSellerPredictPayTime();
     }
 
+    @Override
+    public void syncUserDateStudyLog() {
+        iUserStudyRecordService.syncUserDateStudyLog();
+    }
+
     private String getWeeks(Long time){
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(DateUtils.timeToDate(time));

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserStudyRecordMapper.java

@@ -118,7 +118,12 @@ public interface UserStudyRecordMapper extends BaseMapper<UserStudyRecord> {
 
     GoodsSectionNumVo getGoodsSectionNum(SubjectStudyRecordQueryBo queryBo);
 
+    @InterceptorIgnore(tenantLine = "true")
     List<CdUserStudyLogVo> syncUserDateStudyLog(UserStudyRecordQueryBo bo);
 
+    @InterceptorIgnore(tenantLine = "true")
     List<CdUserStudyLogVo> syncUserDateStudyExamLog(UserStudyRecordQueryBo bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    List<CdUserStudyLogVo> syncUserList(UserStudyRecordQueryBo bo);
 }

+ 39 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -3,6 +3,8 @@ package com.zhongzheng.modules.user.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -15,6 +17,7 @@ import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.common.utils.ip.IpUtils;
 import com.zhongzheng.modules.course.bo.*;
 import com.zhongzheng.modules.course.domain.*;
@@ -165,6 +168,9 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     @Autowired
     private ICourseMenuService iCourseMenuService;
 
+    @Value("${fileHost}")
+    private String fileHost;
+
     @Override
     public UserStudyRecordVo queryById(Long recordId) {
         UserStudyRecord db = this.baseMapper.selectById(recordId);
@@ -1379,9 +1385,34 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
         UserStudyRecordQueryBo queryBo1 = new UserStudyRecordQueryBo();
         queryBo1.setStartTime(zeroTime);
         queryBo1.setEndTime(endTime);
+        List<CdUserStudyLogVo> userList = baseMapper.syncUserList(queryBo1);
         List<CdUserStudyLogVo> list = baseMapper.syncUserDateStudyLog(queryBo1);
-        List<CdUserStudyLogVo> examList = baseMapper.syncUserDateStudyLog(queryBo1);
-        for(CdUserStudyLogVo vo : list){
+        List<CdUserStudyLogVo> examList = baseMapper.syncUserDateStudyExamLog(queryBo1);
+        for(CdUserStudyLogVo userVo : userList){
+            Long secLong = 0L;
+            Long studyLong = 0L;
+            SubjectStudyRecordQueryBo subjectStudyRecordQueryBo = new SubjectStudyRecordQueryBo();
+            subjectStudyRecordQueryBo.setGoodsId(userVo.getGoodsId());
+            subjectStudyRecordQueryBo.setUserId(userVo.getUserId());
+            subjectStudyRecordQueryBo.setGradeId(userVo.getGradeId());
+            subjectStudyRecordQueryBo.setOrderGoodsId(userVo.getOrderGoodsId());
+            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listSubject(subjectStudyRecordQueryBo);
+            for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
+                secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();
+                studyLong = new BigDecimal(studyLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getRecordNum().toString())).longValue();
+            }
+            userVo.setTotalClassHour(secLong+userVo.getExamNum());
+            userVo.setStudyClassHour(studyLong+userVo.getRecordNum());
+
+            for(CdUserStudyLogVo vo : list){
+                if(vo.getOrderGoodsId()==userVo.getOrderGoodsId()){
+                    userVo.setOnlineTime(vo.getOnlineTime());
+                    userVo.setStudyTime(vo.getStudyTime());
+                    break;
+                }
+            }
+        }
+        for(CdUserStudyLogVo vo : userList){
             for(CdUserStudyLogVo voExam : examList){
                 if(vo.getOrderGoodsId()==voExam.getOrderGoodsId()){
                     vo.setDoQuestionNum(voExam.getDoQuestionNum());
@@ -1392,12 +1423,11 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
                     if(vo.getOnlineTime().longValue()>voExam.getOnlineTime().longValue()){
                         vo.setOnlineTime(voExam.getOnlineTime());
                     }
-                }else{
-                    list.add(voExam);
+                    break;
                 }
             }
         }
-        for(CdUserStudyLogVo vo : list){
+        for(CdUserStudyLogVo vo : userList){
             User user = iUserService.getOne(new LambdaQueryWrapper<User>().eq(User::getUserId, vo.getUserId()).last("limit 1"));
             vo.setIdCard(user.getIdCard());
             vo.setTelphone(user.getTelphone());
@@ -1405,9 +1435,11 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
             vo.setRealname(user.getRealname());
             vo.setDateTime(zeroTime);
             vo.setFromPlat(1);
-            Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, vo.getGoodsId()).last("limit 1"));
-            vo.setGoodsName(goods.getGoodsName());
         }
+        String url = fileHost + "/common/free/ranking/log/batchAdd";
+        JSONObject obj = new JSONObject();
+        obj.put("list", userList);
+        String result = HttpUtils.sendPost(url,obj);
         return null;
     }
 

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/CdUserStudyLogVo.java

@@ -97,4 +97,12 @@ public class CdUserStudyLogVo {
     private Integer resitExamStatus;
     @ApiModelProperty("订单商品ID")
     private Long orderGoodsId;
+
+    @ApiModelProperty("试卷数量")
+    private Long examNum;
+    /** 已学学时 */
+    @ApiModelProperty("已做题目")
+    private Long recordNum;
+    private Long gradeId;
+    private String tenantId;
 }

+ 33 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -1955,4 +1955,37 @@
         LEFT JOIN order_goods og ON u.order_goods_id = og.order_goods_id
         LEFT JOIN `order` o ON og.order_sn = o.order_sn
     </select>
+
+    <select id="syncUserList" parameterType="com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo"
+            resultType="com.zhongzheng.modules.user.vo.CdUserStudyLogVo">
+        SELECT
+            o.user_id,
+            og.order_goods_id,
+            o.plan_id,
+            og.goods_id,
+            o.input_order_sn,
+            og.seven_year,
+            g.goods_name,
+            o.tenant_id,
+               og.grade_id,
+               0 as study_time,
+               0 as online_time,
+            IFNULL(ge.exam_num,0) as exam_num,
+            (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id,ubr.exam_id) FROM user_bank_record ubr  where ubr.`status`=1 and ubr.`type` in (1,3) and ubr.report_status=1 and ubr.grade_id = og.grade_id and ubr.user_id = o.user_id and ubr.current_status = 1) as record_num
+        FROM
+            `order` o
+                LEFT JOIN order_goods og ON o.order_sn = og.order_sn
+                LEFT JOIN goods g ON og.goods_id = g.goods_id
+                LEFT JOIN (SELECT
+                               COUNT( m.id ) AS exam_num,
+                               c.goods_id
+                           FROM
+                               course_menu_exam m
+                                   LEFT JOIN goods_course c ON m.course_id = c.course_id
+                           where
+                               m.type in (1,3)
+                           GROUP BY c.goods_id ) ge on og.goods_id = ge.goods_id
+        WHERE
+            o.plan_id > 0
+    </select>
 </mapper>