添加案例浏览时间

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.date.DateUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader;
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.CasesRecommendLaunchImport;
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.ICasesRecommendPushRecordService;
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.CasesRecommendPushVo;
import com.xboe.module.boecase.vo.CasesRecommendVo;
@@ -57,6 +58,9 @@ public class CasesRecommendApi extends ApiBaseController {
@Resource
private ICasesRecommendPushRecordService iCasesRecommendPushRecordService;
@Resource
private ICasesBrowseService casesBrowseService;
/**
* 用于后台管理分页
*
@@ -177,10 +181,10 @@ public class CasesRecommendApi extends ApiBaseController {
return success(iCasesRecommendPushRecordService.startRead(caseRecommendId));
}
@GetMapping("/endRead")
public JsonResponse<Boolean> endRead(String caseRecommendId) {
return success(iCasesRecommendPushRecordService.startRead(caseRecommendId));
}
// @GetMapping("/endRead")
// public JsonResponse<Boolean> endRead(String caseRecommendId) {
// return success(iCasesRecommendPushRecordService.startRead(caseRecommendId));
// }
/**
@@ -245,9 +249,8 @@ public class CasesRecommendApi extends ApiBaseController {
exportVo.setPushTime(DateUtil.formatDateTime(record.getPushTime()));
exportVo.setReadFlag(record.getReadFlag() == 1 ? "" : "");
exportVo.setReadStartTime(DateUtil.formatDateTime(record.getReadStartTime()));
if (ObjectUtil.isNotEmpty(record.getReadStartTime()) && ObjectUtil.isNotEmpty(record.getReadEndTime())) {
exportVo.setTotalReadTime(DateUtil.formatBetween(record.getReadStartTime(), record.getReadEndTime()));
}
Long browseDuration = casesBrowseService.getBrowseDuration(record.getCaseId(), getCurrent().getAccountId());
exportVo.setTotalReadTime(browseDuration.toString());
return exportVo;
}).collect(Collectors.toList());
}
@@ -274,9 +277,15 @@ public class CasesRecommendApi extends ApiBaseController {
if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) {
throw new RuntimeException("缺少必要参数");
}
iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo,getCurrent().getAccountId());
iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo, getCurrent().getAccountId());
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")
private Date readStartTime;
/**
* 最后查看时间
*/
@Column(name = "read_end_time")
private Date readEndTime;
// /**
// * 最后查看时间
// */
// @Column(name = "read_end_time")
// 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);
/**
* 结束读
* @param caseRecommendId
* @return
*/
boolean endRead(String caseRecommendId);
// /**
// * 结束读
// * @param caseRecommendId
// * @return
// */
// boolean endRead(String caseRecommendId);
}

View File

@@ -319,15 +319,15 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
.builder()) > 0;
}
@Override
public boolean endRead(String caseRecommendId) {
CasesRecommendPushRecord casesRecommendPushRecord = casesRecommendPushRecordDao.get(caseRecommendId);
if (casesRecommendPushRecord.getReadEndTime() != null) {
return true;
}
return casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class)
.addUpdateField("readEndTime", new Date())
.addFilter(FieldFilters.eq("id", caseRecommendId))
.builder()) > 0;
}
// @Override
// public boolean endRead(String caseRecommendId) {
// CasesRecommendPushRecord casesRecommendPushRecord = casesRecommendPushRecordDao.get(caseRecommendId);
// if (casesRecommendPushRecord.getReadEndTime() != null) {
// return true;
// }
// return casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class)
// .addUpdateField("readEndTime", new Date())
// .addFilter(FieldFilters.eq("id", caseRecommendId))
// .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)
.addUpdateField("readStartTime", new Date())
.addUpdateField("readEndTime", new Date())
// .addUpdateField("readEndTime", new Date())
.addFilter(FieldFilters.in("id", commendRecordIds))
.builder());
}
@@ -179,7 +179,7 @@ public class MessageServiceImpl implements IMessageService {
List<String> commendIds = mixList.stream().map(Message::getRefId).collect(Collectors.toList());
casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class)
.addUpdateField("readStartTime", new Date())
.addUpdateField("readEndTime", new Date())
// .addUpdateField("readEndTime", new Date())
.addFilter(FieldFilters.in("recommendId", commendIds))
.builder());
}