diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java index 504a4efa..caca2658 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java @@ -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 endRead(String caseRecommendId) { - return success(iCasesRecommendPushRecordService.startRead(caseRecommendId)); - } +// @GetMapping("/endRead") +// public JsonResponse 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 recordBrowseDuration(@RequestBody BrowseDurationVo browseDuration) { + casesBrowseService.recordBrowseDuration(browseDuration.getCaseId(), getCurrent().getAccountId(), browseDuration.getBrowseDuration()); + return success(true); + } + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesBrowseDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesBrowseDao.java new file mode 100644 index 00000000..cb485a36 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesBrowseDao.java @@ -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 { +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesBrowse.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesBrowse.java new file mode 100644 index 00000000..574424ef --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesBrowse.java @@ -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; +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java index 3c4cb6ab..78233e86 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java @@ -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; /** * 备注 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesBrowseService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesBrowseService.java new file mode 100644 index 00000000..4bfd7802 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesBrowseService.java @@ -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); + +} + diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java index e9206467..f462bfc0 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java @@ -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); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java index 33ec7ee4..9f3f4152 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java @@ -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; +// } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/ICasesBrowseServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/ICasesBrowseServiceImpl.java new file mode 100644 index 00000000..9b07f70d --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/ICasesBrowseServiceImpl.java @@ -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(); + } +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/BrowseDurationVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/BrowseDurationVo.java new file mode 100644 index 00000000..b09269be --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/BrowseDurationVo.java @@ -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; +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/system/user/service/impl/MessageServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/system/user/service/impl/MessageServiceImpl.java index 814a8384..a0be9a38 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/system/user/service/impl/MessageServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/system/user/service/impl/MessageServiceImpl.java @@ -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 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()); }