mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-13 21:06:48 +08:00
添加案例浏览时间
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user