添加案例浏览时间

This commit is contained in:
Guava
2023-07-04 16:49:54 +08:00
parent 1983691f89
commit a667434553
10 changed files with 172 additions and 33 deletions

View File

@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelUtil;
@@ -18,9 +17,11 @@ import com.xboe.module.boecase.dto.CasesRecommendPushRecordExportVo;
import com.xboe.module.boecase.entity.CasesRecommend; import com.xboe.module.boecase.entity.CasesRecommend;
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport; import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
import com.xboe.module.boecase.entity.CasesRecommendPushRecord; import com.xboe.module.boecase.entity.CasesRecommendPushRecord;
import com.xboe.module.boecase.service.ICasesBrowseService;
import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService; import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService;
import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; import com.xboe.module.boecase.service.ICasesRecommendPushRecordService;
import com.xboe.module.boecase.service.ICasesRecommendService; import com.xboe.module.boecase.service.ICasesRecommendService;
import com.xboe.module.boecase.vo.BrowseDurationVo;
import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo;
import com.xboe.module.boecase.vo.CasesRecommendPushVo; import com.xboe.module.boecase.vo.CasesRecommendPushVo;
import com.xboe.module.boecase.vo.CasesRecommendVo; import com.xboe.module.boecase.vo.CasesRecommendVo;
@@ -57,6 +58,9 @@ public class CasesRecommendApi extends ApiBaseController {
@Resource @Resource
private ICasesRecommendPushRecordService iCasesRecommendPushRecordService; private ICasesRecommendPushRecordService iCasesRecommendPushRecordService;
@Resource
private ICasesBrowseService casesBrowseService;
/** /**
* 用于后台管理分页 * 用于后台管理分页
* *
@@ -177,10 +181,10 @@ public class CasesRecommendApi extends ApiBaseController {
return success(iCasesRecommendPushRecordService.startRead(caseRecommendId)); return success(iCasesRecommendPushRecordService.startRead(caseRecommendId));
} }
@GetMapping("/endRead") // @GetMapping("/endRead")
public JsonResponse<Boolean> endRead(String caseRecommendId) { // public JsonResponse<Boolean> endRead(String caseRecommendId) {
return success(iCasesRecommendPushRecordService.startRead(caseRecommendId)); // return success(iCasesRecommendPushRecordService.startRead(caseRecommendId));
} // }
/** /**
@@ -245,9 +249,8 @@ public class CasesRecommendApi extends ApiBaseController {
exportVo.setPushTime(DateUtil.formatDateTime(record.getPushTime())); exportVo.setPushTime(DateUtil.formatDateTime(record.getPushTime()));
exportVo.setReadFlag(record.getReadFlag() == 1 ? "" : ""); exportVo.setReadFlag(record.getReadFlag() == 1 ? "" : "");
exportVo.setReadStartTime(DateUtil.formatDateTime(record.getReadStartTime())); exportVo.setReadStartTime(DateUtil.formatDateTime(record.getReadStartTime()));
if (ObjectUtil.isNotEmpty(record.getReadStartTime()) && ObjectUtil.isNotEmpty(record.getReadEndTime())) { Long browseDuration = casesBrowseService.getBrowseDuration(record.getCaseId(), getCurrent().getAccountId());
exportVo.setTotalReadTime(DateUtil.formatBetween(record.getReadStartTime(), record.getReadEndTime())); exportVo.setTotalReadTime(browseDuration.toString());
}
return exportVo; return exportVo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
@@ -274,9 +277,15 @@ public class CasesRecommendApi extends ApiBaseController {
if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) { if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) {
throw new RuntimeException("缺少必要参数"); throw new RuntimeException("缺少必要参数");
} }
iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo,getCurrent().getAccountId()); iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo, getCurrent().getAccountId());
return success(true); return success(true);
} }
@PostMapping("/recordBrowseDuration")
public JsonResponse<Boolean> recordBrowseDuration(@RequestBody BrowseDurationVo browseDuration) {
casesBrowseService.recordBrowseDuration(browseDuration.getCaseId(), getCurrent().getAccountId(), browseDuration.getBrowseDuration());
return success(true);
}
} }

View File

@@ -0,0 +1,14 @@
package com.xboe.module.boecase.dao;
import com.xboe.core.orm.BaseDao;
import com.xboe.module.boecase.entity.CasesBrowse;
import org.springframework.stereotype.Repository;
/**
* @author : civism
* @version 1.0
* @date 2023/7/4 16:32
*/
@Repository
public class CasesBrowseDao extends BaseDao<CasesBrowse> {
}

View File

@@ -0,0 +1,37 @@
package com.xboe.module.boecase.entity;
import com.xboe.core.SysConstant;
import com.xboe.core.orm.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* 案例推荐发起导入
*/
@Data
@Entity
@EqualsAndHashCode(callSuper = false)
@Table(name = SysConstant.TABLE_PRE + "cases_browse")
public class CasesBrowse extends BaseEntity {
/**
* 案例id
*/
@Column(name = "case_id")
private String caseId;
/**
* 用户id
*/
private String userId;
/**
* 浏览时长
*/
private Long browseDuration;
}

View File

@@ -79,11 +79,11 @@ public class CasesRecommendPushRecord extends BaseEntity {
@Column(name = "read_start_time") @Column(name = "read_start_time")
private Date readStartTime; private Date readStartTime;
/** // /**
* 最后查看时间 // * 最后查看时间
*/ // */
@Column(name = "read_end_time") // @Column(name = "read_end_time")
private Date readEndTime; // private Date readEndTime;
/** /**
* 备注 * 备注

View File

@@ -0,0 +1,10 @@
package com.xboe.module.boecase.service;
public interface ICasesBrowseService {
boolean recordBrowseDuration(String caseId, String userId, Long browseDuration);
Long getBrowseDuration(String caseId, String userId);
}

View File

@@ -42,10 +42,10 @@ public interface ICasesRecommendPushRecordService {
*/ */
boolean startRead(String caseRecommendId); boolean startRead(String caseRecommendId);
/** // /**
* 结束读 // * 结束读
* @param caseRecommendId // * @param caseRecommendId
* @return // * @return
*/ // */
boolean endRead(String caseRecommendId); // boolean endRead(String caseRecommendId);
} }

View File

@@ -319,15 +319,15 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
.builder()) > 0; .builder()) > 0;
} }
@Override // @Override
public boolean endRead(String caseRecommendId) { // public boolean endRead(String caseRecommendId) {
CasesRecommendPushRecord casesRecommendPushRecord = casesRecommendPushRecordDao.get(caseRecommendId); // CasesRecommendPushRecord casesRecommendPushRecord = casesRecommendPushRecordDao.get(caseRecommendId);
if (casesRecommendPushRecord.getReadEndTime() != null) { // if (casesRecommendPushRecord.getReadEndTime() != null) {
return true; // return true;
} // }
return casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) // return casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class)
.addUpdateField("readEndTime", new Date()) // .addUpdateField("readEndTime", new Date())
.addFilter(FieldFilters.eq("id", caseRecommendId)) // .addFilter(FieldFilters.eq("id", caseRecommendId))
.builder()) > 0; // .builder()) > 0;
} // }
} }

View File

@@ -0,0 +1,53 @@
package com.xboe.module.boecase.service.impl;
import com.xboe.core.orm.FieldFilters;
import com.xboe.core.orm.UpdateBuilder;
import com.xboe.module.boecase.dao.CasesBrowseDao;
import com.xboe.module.boecase.entity.CasesBrowse;
import com.xboe.module.boecase.service.ICasesBrowseService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* @author : civism
* @version 1.0
* @date 2023/7/4 16:31
*/
@Service
@Transactional
public class ICasesBrowseServiceImpl implements ICasesBrowseService {
@Resource
private CasesBrowseDao casesBrowseDao;
@Override
public boolean recordBrowseDuration(String caseId, String userId, Long browseDuration) {
CasesBrowse one = casesBrowseDao.findOne(FieldFilters.eq("caseId", caseId), FieldFilters.eq("userId", userId));
if (one == null) {
CasesBrowse save = new CasesBrowse();
save.setUserId(userId);
save.setCaseId(caseId);
save.setBrowseDuration(browseDuration);
casesBrowseDao.save(save);
return true;
} else {
return casesBrowseDao.update(UpdateBuilder.from(CasesBrowse.class)
.addUpdateField("browseDuration", one.getBrowseDuration() + browseDuration)
.addFilter(FieldFilters.eq("id", one.getId()))
.builder()) > 0;
}
}
@Override
public Long getBrowseDuration(String caseId, String userId) {
CasesBrowse one = casesBrowseDao.findOne(FieldFilters.eq("caseId", caseId), FieldFilters.eq("userId", userId));
if (one == null) {
return 0L;
}
return one.getBrowseDuration();
}
}

View File

@@ -0,0 +1,16 @@
package com.xboe.module.boecase.vo;
import lombok.Data;
/**
* @author : civism
* @version 1.0
* @date 2023/7/4 16:34
*/
@Data
public class BrowseDurationVo {
private String caseId;
private Long browseDuration;
}

View File

@@ -169,7 +169,7 @@ public class MessageServiceImpl implements IMessageService {
casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class)
.addUpdateField("readStartTime", new Date()) .addUpdateField("readStartTime", new Date())
.addUpdateField("readEndTime", new Date()) // .addUpdateField("readEndTime", new Date())
.addFilter(FieldFilters.in("id", commendRecordIds)) .addFilter(FieldFilters.in("id", commendRecordIds))
.builder()); .builder());
} }
@@ -179,7 +179,7 @@ public class MessageServiceImpl implements IMessageService {
List<String> commendIds = mixList.stream().map(Message::getRefId).collect(Collectors.toList()); List<String> commendIds = mixList.stream().map(Message::getRefId).collect(Collectors.toList());
casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class)
.addUpdateField("readStartTime", new Date()) .addUpdateField("readStartTime", new Date())
.addUpdateField("readEndTime", new Date()) // .addUpdateField("readEndTime", new Date())
.addFilter(FieldFilters.in("recommendId", commendIds)) .addFilter(FieldFilters.in("recommendId", commendIds))
.builder()); .builder());
} }