Commit 852228ba by liangkaiping

copy

parent 751563cd
# cloud-course-studyLog
123
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud-course-study-log</artifactId>
<groupId>com.yizhi</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.yizhi</groupId>
<artifactId>cloud-course-study-log-api</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
/**
* FileName: StudyClient
* Author: wenjunlong
* Date: 2018/5/3 15:22
* Description: 学习日志feign接口服务
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.yizhi.studylog.application.feign;
import com.yizhi.studylog.application.vo.StudyLogVo;
import com.yizhi.studylog.application.vo.TpStudentActivityRecordVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* 〈一句话功能简述〉<br>
* 〈学习日志feign接口服务〉
*
* @author wenjunlong
* @create 2018/5/3
* @since 1.0.0
*/
@FeignClient(name = "studyLog", contextId = "StudyLogClient")
public interface StudyLogClient {
/**
* 获取未分析的学习日志
* @return
*/
@GetMapping("/studyLog/list")
List<StudyLogVo> list(@RequestParam("type") String type);
/**
* 获取未分析的学习日志sessionId(指定开始时间)
* @param maxId
* @return
*/
@GetMapping("/studyLog/startId/list/sessionId")
List<String> listSessionId(@RequestParam("maxId") Long maxId);
/**
* 获取最大的id数据
* @return
*/
@GetMapping("/studyLog/id/max")
Long maxId();
/**
* 获取最大的id数据
* @return
*/
@GetMapping("/studyLog/id/min")
Long minId();
/**
* 获取sessionId为纬度的分组数据
* @param maxId
* @param sessionId
* @return
*/
@GetMapping("/studyLog/sessionId/recode/get")
List<StudyLogVo> getRecodeBySessionId(@RequestParam(value = "maxId" ,required = false) Long maxId, @RequestParam("sessionId") String sessionId);
/**
* 将已分析的学习日志状态status 置为 1 批量进行
* @param studyLogs
* @return
*/
@PostMapping("/studyLog/list/update")
Boolean updateList(@RequestBody List<StudyLogVo> studyLogs);
/**
* 删除 已经解析完成的日志
* @return
*/
@PostMapping("/studyLog/delete/batch")
Boolean deleteBatch(@RequestBody List<Long> ids);
/**
* 保留原始记录,如果消息丢失可以通过反查机制
* @param tsar
* @return
*/
@PostMapping("/studyLog/recorde/insert/batch")
Boolean insertRecoreds(@RequestBody TpStudentActivityRecordVo tsar);
/**
* 根据课程id查询心跳记录条数
* @param courseId
* @return
*/
@GetMapping("/studyLog/get/courseId")
int getStudyLogByCourseId(@RequestParam("courseId") Long courseId);
}
package com.yizhi.studylog.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 学习日志表
* </p>
*
* @author fulan123
* @since 2018-05-03
*/
@Data
@Api(tags = "StudyLog", description = "学习日志表")
public class StudyLogVo{
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "日志主键")
private Long id;
@ApiModelProperty(value = "会话id")
private String sessionId;
@ApiModelProperty(value = "课程id")
private Long courseId;
@ApiModelProperty(value = "账号id")
private String accountId;
@ApiModelProperty(value = "章节id")
private Long chapterId;
@ApiModelProperty(value = "素材id")
private Long materialId;
@ApiModelProperty(value = "分辨率")
private String resolution;
@ApiModelProperty(value = "文档页面")
private Integer page;
private Date createTime;
@ApiModelProperty(value = "终端规格")
private String terminalDevice;
@ApiModelProperty(value = "终端类型")
private String terminalType;
@ApiModelProperty(value = "素材完成条件 0 未完成 1 完成")
private Integer materialCompleted;
private String orgId;
private String companyId;
private Long siteId;
@ApiModelProperty(value = "日志分析完成条件 0 未完成 1 完成")
private Integer status;
@ApiModelProperty(value = "发送请求时间")
private Long timestamp;
@ApiModelProperty(value = "nginx接收请求时间")
private Date nginxTime;
private Integer progress;
private String type;
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.studylog.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 学员完成活动记录(这里无论有没有被设置成别的活动的开启条件,都记录)
* </p>
*
* @author shengchenglong
* @since 2018-03-29
*/
@Data
@Api(tags = "TpStudentActivityRecord", description = "TpStudentActivityRecord")
public class TpStudentActivityRecordVo {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "活动类型: 0课程 1考试 2调研 3直播 4投票 5作业 6证书 7报名 8签到 9外部链接")
private Integer type;
@ApiModelProperty(value = "学员id")
private Long accountId;
@ApiModelProperty(value = "课程、考试、调研、直播、投票、作业、证书、外部链接的id,由type决定类型。")
private Long relationId;
@ApiModelProperty(value = "若是考试(type=1)的话,需要记录分数")
private Float score;
@ApiModelProperty(value = "若是课程,需要记录学习时长")
private Long seconds;
@ApiModelProperty(value = "是否完成(1是,0否),默认完成。")
private Integer finished;
@ApiModelProperty(value = "完成时间")
private Date finishDate;
@ApiModelProperty(value = "所属站点id")
private Long siteId;
@ApiModelProperty(value = "原始数据id")
private Long oId;
protected Serializable pkVal() {
return this.id;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud-course-study-log</artifactId>
<groupId>com.yizhi</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.yizhi</groupId>
<artifactId>cloud-course-study-log-service</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-course-study-log-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- deploy 时跳过该模块 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.yizhi.studylog.application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
/**
*
* @author scotthu
*
* @date 2018年2月28日
*/
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.yizhi")
@ComponentScan(basePackages = {"com.yizhi"})
public class StudyLogApplication {
public static void main(java.lang.String[] args) {
SpringApplication.run(StudyLogApplication.class, args);
}
}
package com.yizhi.studylog.application.controller;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.yizhi.application.orm.id.IdGenerator;
import com.yizhi.application.orm.util.QueryUtil;
import com.yizhi.studylog.application.domain.StudyLog;
import com.yizhi.studylog.application.domain.TpStudentActivityRecord;
import com.yizhi.studylog.application.service.IStudyLogService;
import com.yizhi.studylog.application.service.ITpStudentActivityRecordService;
import com.yizhi.studylog.application.vo.StudyLogVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 学习日志表 前端控制器
* </p>
*
* @author fulan123
* @since 2018-05-03
*/
@RestController
@RequestMapping("/studyLog")
public class StudyLogController {
@Autowired
IStudyLogService studyLogService;
@Autowired
IdGenerator idGenerator;
@Autowired
ITpStudentActivityRecordService tpStudentActivityRecordService;
@GetMapping("/list")
public List<StudyLogVo> list(@RequestParam("type") String type){
List<StudyLog> studyLogs = studyLogService.selectStudyLogList(type);
List<StudyLogVo> studyLogVoList = new ArrayList<>();
if(CollectionUtils.isNotEmpty(studyLogs)){
for (StudyLog studyLog : studyLogs){
StudyLogVo studyLogVo = new StudyLogVo();
BeanUtils.copyProperties(studyLog, studyLogVo);
studyLogVoList.add(studyLogVo);
}
}
return studyLogVoList;
}
/**
* 获取未分析的学习日志sessionId(指定开始时间)
* @param maxId
* @return
*/
@GetMapping("/startId/list/sessionId")
public List<String> listSessionId(@RequestParam("maxId") Long maxId){
if(Objects.isNull(maxId) || maxId.longValue() <= 0){
return null;
}
return studyLogService.listSessionId(maxId);
}
/**
* 获取最大的id数据
* @return
*/
@GetMapping("/id/max")
public Long maxId(){
return studyLogService.maxId();
}
/**
* 获取最小的id数据
* @return
*/
@GetMapping("/id/min")
public Long minId(){
return studyLogService.minId();
}
/**
* 获取sessionId为纬度的分组数据
* @param maxId
* @param sessionId
* @return
*/
@GetMapping("/sessionId/recode/get")
public List<StudyLogVo> getRecodeBySessionId(@RequestParam(value = "maxId" ,required = false) Long maxId, @RequestParam("sessionId") String sessionId){
if((Objects.isNull(maxId) || maxId.longValue() <= 0) && StringUtils.isBlank(sessionId)){
return null;
}
EntityWrapper<StudyLog> ew = QueryUtil.condition(new StudyLog());
if(Objects.nonNull(maxId) && maxId.longValue()>0){
ew.le("id",maxId);
}
ew.eq("session_id",sessionId);
ew.orderBy("id", false);
List<StudyLogVo> studyLogVoList = new ArrayList<>();
if(CollectionUtils.isNotEmpty(studyLogService.selectList(ew))){
for (StudyLog studyLog : studyLogService.selectList(ew)){
StudyLogVo studyLogVo = new StudyLogVo();
BeanUtils.copyProperties(studyLog, studyLogVo);
studyLogVoList.add(studyLogVo);
}
}
return studyLogVoList;
}
@PostMapping("/list/update")
public Boolean updateList(@RequestBody List<StudyLog> studyLogs ){
Boolean f = studyLogService.insertBatch(studyLogs,500);
return f;
}
@PostMapping("/delete/batch")
public Boolean deleteBatch(@RequestBody List<Long> ids){
Boolean f = studyLogService.deleteBatchIds(ids);
return f;
}
//因为异步消息可能会丢失,加这个可以通过反查机制查询
@PostMapping("/recorde/insert/batch")
public Boolean recordeInsertBatch(@RequestBody TpStudentActivityRecord tsar) {
return tpStudentActivityRecordService.insert(tsar);
}
@GetMapping("/get/courseId")
public int getStudyLogByCourseId(@RequestParam("courseId") Long courseId){
StudyLog studyLog = new StudyLog();
studyLog.setCourseId(courseId);
return studyLogService.selectCount(QueryUtil.condition(studyLog));
}
}
package com.yizhi.studylog.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 学习日志表
* </p>
*
* @author fulan123
* @since 2018-05-03
*/
@Data
@Api(tags = "StudyLog", description = "学习日志表")
@TableName("study_log")
public class StudyLog extends Model<StudyLog> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "日志主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty(value = "会话id")
@TableField("session_id")
private String sessionId;
@ApiModelProperty(value = "课程id")
@TableField("course_id")
private Long courseId;
@ApiModelProperty(value = "账号id")
@TableField("account_id")
private String accountId;
@ApiModelProperty(value = "章节id")
@TableField("chapter_id")
private Long chapterId;
@ApiModelProperty(value = "素材id")
@TableField("material_id")
private Long materialId;
@ApiModelProperty(value = "分辨率")
private String resolution;
@ApiModelProperty(value = "文档页面")
private Integer page;
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "终端规格")
@TableField("terminal_device")
private String terminalDevice;
@ApiModelProperty(value = "终端类型")
@TableField("terminal_type")
private String terminalType;
@ApiModelProperty(value = "素材完成条件 0 未完成 1 完成")
@TableField("material_completed")
private Integer materialCompleted;
@TableField("org_id")
private String orgId;
@TableField("company_id")
private String companyId;
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "日志分析完成条件 0 未完成 1 完成")
private Integer status;
@ApiModelProperty(value = "发送请求时间")
private Long timestamp;
@ApiModelProperty(value = "nginx接收请求时间")
@TableField("nginx_time")
private Date nginxTime;
@TableField("progress")
private Integer progress;
@TableField("type")
private String type;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.studylog.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 学员完成活动记录(这里无论有没有被设置成别的活动的开启条件,都记录)
* </p>
*
* @author shengchenglong
* @since 2018-03-29
*/
@Data
@Api(tags = "TpStudentActivityRecord", description = "TpStudentActivityRecord")
@TableName("tp_student_activity_record")
public class TpStudentActivityRecord extends Model<TpStudentActivityRecord> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "活动类型: 0课程 1考试 2调研 3直播 4投票 5作业 6证书 7报名 8签到 9外部链接")
private Integer type;
@ApiModelProperty(value = "学员id")
@TableField("account_id")
private Long accountId;
@ApiModelProperty(value = "课程、考试、调研、直播、投票、作业、证书、外部链接的id,由type决定类型。")
@TableField("relation_id")
private Long relationId;
@ApiModelProperty(value = "若是考试(type=1)的话,需要记录分数")
private Float score;
@ApiModelProperty(value = "若是课程,需要记录学习时长")
private Long seconds;
@ApiModelProperty(value = "是否完成(1是,0否),默认完成。")
private Integer finished;
@ApiModelProperty(value = "完成时间")
@TableField("finish_date")
private Date finishDate;
@ApiModelProperty(value = "所属站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "原始数据id")
@TableField("o_id")
private Long oId;
@Override
protected Serializable pkVal() {
return this.id;
}
}
/**
* FileName: StudyLogListener
* Author: wenjunlong
* Date: 2018/5/28 17:17
* Description: 监听消息 消费学习记录信息
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.yizhi.studylog.application.listener;
//import com.alibaba.fastjson.JSONObject;
//import com.fulan.application.cache.RedisCache;
//import com.fulan.application.domain.StudyLog;
//import com.fulan.application.service.IStudyLogService;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.amqp.core.AmqpTemplate;
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.util.ArrayList;
//import java.util.List;
/**
* 〈一句话功能简述〉<br>
* 〈监听消息 消费学习记录信息〉
*
* @author wenjunlong
* @create 2018/5/28
* @since 1.0.0
*/
//@Component
public class StudyLogListener {
// private static final Logger LOG = LoggerFactory.getLogger(StudyLogListener.class);
// @Autowired
// AmqpTemplate amqpTemplate;
// @Autowired
// private IStudyLogService studyLogService;
//
// @Autowired
// RedisCache redisCache;
//
// @RabbitListener(queues = "studyLog")
// public void processStudyLog(String key) {
// LOG.info("------------处理消息学习日志消息 -----------------");
// updateStudyLog(key);
// }
//
//
// @RabbitListener(queues = "rollBackStuduLog")
// public void processUpdateStudyLog(String key) {
// LOG.info("------------回滚消息学习日志消息 -----------------");
// rollBackStuduLog(key);
// }
//
//
//
// /**
// * //批量更新学习日志
// * @param key
// */
// private void updateStudyLog(String key) {
// String[] keys = key.split(",");
// List<StudyLog> studyLogs = new ArrayList<StudyLog>();
// try {
// String studyLogString = redisCache.hget(keys[0], keys[0]).toString();
// System.out.println("数据格式:"+studyLogString);
// studyLogs = JSONObject.parseArray(studyLogString, StudyLog.class);
// } catch (Exception e) {
// redisCache.hdel(keys[2], keys);
// redisCache.hdel(keys[1], keys);
// redisCache.hdel(keys[0], keys);
// LOG.error("updateStudyLog方法redis中取出学习日志数据不符", e.getMessage());
// }
// if (studyLogs.size() > 0) {
// Boolean f = studyLogService.updateBatchById(studyLogs);
// if (f) {
// amqpTemplate.convertAndSend("recorde", key);
// }
// }
// LOG.error("学习日志更新成功!!!");
// }
//
// /**
// * 批量回滚学习日志
// * @param key
// */
// private void rollBackStuduLog(String key) {
// String[] keys = key.split(",");
// List<StudyLog> studyLogs = new ArrayList<StudyLog>();
// try {
// String studyLogString = redisCache.hget(keys[0], keys[0]).toString();
//
// studyLogs = JSONObject.parseArray(studyLogString, StudyLog.class);
// } catch (Exception e) {
// LOG.error("rollBackStuduLog方法redis中取出学习日志数据不符"+ e.getMessage());
// }
// if (studyLogs.size() > 0) {
// for (StudyLog studyLogs1 : studyLogs) {
// studyLogs1.setStatus(0);
// }
// Boolean f = studyLogService.updateBatchById(studyLogs);
// if (f) {
// redisCache.hdel(keys[2], keys);
// redisCache.hdel(keys[1], keys);
// redisCache.hdel(keys[0], keys);
// }
// }
// LOG.error("学习日志已回滚!!!");
// }
}
package com.yizhi.studylog.application.mapper;
import com.yizhi.studylog.application.domain.StudyLog;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 学习日志表 Mapper 接口
* </p>
*
* @author fulan123
* @since 2018-05-03
*/
public interface StudyLogMapper extends BaseMapper<StudyLog> {
Boolean insertList(@Param("list")List<StudyLog> list);
List<StudyLog> selectStudyLogList(@Param("type") String type);
List<String> listSessionId(@Param("startId") Long startId);
Long maxId();
Long minId();
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yizhi.studylog.application.mapper.StudyLogMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.yizhi.studylog.application.domain.StudyLog">
<id column="id" property="id"/>
<result column="session_id" property="sessionId"/>
<result column="course_id" property="courseId"/>
<result column="account_id" property="accountId"/>
<result column="chapter_id" property="chapterId"/>
<result column="material_id" property="materialId"/>
<result column="resolution" property="resolution"/>
<result column="page" property="page"/>
<result column="create_time" property="createTime"/>
<result column="terminal_device" property="terminalDevice"/>
<result column="terminal_type" property="terminalType"/>
<result column="material_completed" property="materialCompleted"/>
<result column="org_id" property="orgId"/>
<result column="company_id" property="companyId"/>
<result column="site_id" property="siteId"/>
<result column="status" property="status"/>
<result column="timestamp" property="timestamp"/>
<result column="nginx_time" property="nginxTime"/>
</resultMap>
<!-- 数据批量插入 -->
<insert id="insertList" parameterType="java.util.ArrayList">
insert into
study_log (
id,
session_id,
course_id,
account_id,
chapter_id,
material_id,
resolution,
page,
create_time,
terminal_device,
terminal_type,
material_completed,
org_id,
company_id,
site_id,
status,
timestamp
) VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.id},
#{item.sessionId},
#{item.courseId},
#{item.accountId},
#{item.chapterId},
#{item.materialId},
#{item.resolution},
#{item.page},
#{item.createTime},
#{item.terminalDevice},
#{item.terminalType},
#{item.materialCompleted},
#{item.orgId},
#{item.companyId},
#{item.siteId},
#{item.status},
#{item.timestamp}
)
</foreach>
</insert>
<select id="selectStudyLogList" resultMap="BaseResultMap">
SELECT
*
FROM
study_log sl
WHERE
sl.account_id > 0
AND sl.status = 0
AND sl.timestamp > 0
<choose>
<when test="type != null and type == 'scorm'">
AND type = 'scorm'
</when>
<otherwise>
<![CDATA[ AND type <> 'scorm' ]]>
</otherwise>
</choose>
ORDER BY sl.id asc
limit 50000
</select>
<select id="listSessionId" resultType="java.lang.String">
SELECT session_id FROM study_log
where id <![CDATA[ <= ]]> #{startId} GROUP BY session_id
</select>
<select id="maxId" resultType="java.lang.Long">
SELECT MAX(id) FROM study_log
</select>
<select id="minId" resultType="java.lang.Long">
SELECT MIN(id) FROM study_log
</select>
</mapper>
package com.yizhi.studylog.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.studylog.application.domain.TpStudentActivityRecord;
/**
* @author wangfeida
* @since 2019-02-14
*/
public interface TpStudentActivityRecordMapper extends BaseMapper<TpStudentActivityRecord> {
}
package com.yizhi.studylog.application.service;
import com.yizhi.studylog.application.domain.StudyLog;
import com.baomidou.mybatisplus.service.IService;
import java.util.List;
/**
* <p>
* 学习日志表 服务类
* </p>
*
* @author fulan123
* @since 2018-05-03
*/
public interface IStudyLogService extends IService<StudyLog> {
Boolean insertList(List<StudyLog> studyLogs);
List<StudyLog> selectStudyLogList(String type);
List<String> listSessionId(Long startId);
Long maxId();
Long minId();
}
package com.yizhi.studylog.application.service;
import com.yizhi.studylog.application.domain.TpStudentActivityRecord;
import com.baomidou.mybatisplus.service.IService;
/**
* @author wangfeida
* @since 2019-02-14
*/
public interface ITpStudentActivityRecordService extends IService<TpStudentActivityRecord> {
}
package com.yizhi.studylog.application.service.impl;
import com.yizhi.studylog.application.domain.StudyLog;
import com.yizhi.studylog.application.mapper.StudyLogMapper;
import com.yizhi.studylog.application.service.IStudyLogService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 学习日志表 服务实现类
* </p>
*
* @author fulan123
* @since 2018-05-03
*/
@Service
public class StudyLogServiceImpl extends ServiceImpl<StudyLogMapper, StudyLog> implements IStudyLogService {
@Override
public Boolean insertList(List<StudyLog> studyLogs) {
return this.baseMapper.insertList(studyLogs);
}
@Override
public List<StudyLog> selectStudyLogList(String type) {
return this.baseMapper.selectStudyLogList(type);
}
@Override
public List<String> listSessionId(Long startId) {
return this.baseMapper.listSessionId(startId);
}
@Override
public Long maxId() {
return this.baseMapper.maxId();
}
@Override
public Long minId() {
return this.baseMapper.minId();
}
}
package com.yizhi.studylog.application.service.impl;
import com.yizhi.studylog.application.domain.TpStudentActivityRecord;
import com.yizhi.studylog.application.mapper.TpStudentActivityRecordMapper;
import com.yizhi.studylog.application.service.ITpStudentActivityRecordService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 学员完成活动记录(这里无论有没有被设置成别的活动的开启条件,都记录) 服务实现类
* </p>
*
* @author shengchenglong
* @since 2018-03-29
*/
@Service
public class TpStudentActivityRecordServiceImpl extends ServiceImpl<TpStudentActivityRecordMapper, TpStudentActivityRecord> implements ITpStudentActivityRecordService {
}
server.port=31234
spring.application.name=studyLog
ACTIVE=${spring.profiles.active}
spring.profiles.active=dev
# nacos
spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties
spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.server-addr=192.168.1.22:3333,192.168.1.22:4444,192.168.1.22:5555
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.yizhi</groupId>
<artifactId>wmy-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath />
</parent>
<groupId>com.yizhi</groupId>
<artifactId>cloud-course-study-log</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>cloud-course-study-log-api</module>
<module>cloud-course-study-log-service</module>
</modules>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-common-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-orm</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-util</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>wmy4.0</id>
<url>http://mvn.km365.pw/nexus/content/groups/wmy4.0-group/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment