mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-26 01:01:52 +08:00
📖 MALL:code review 商品浏览记录
This commit is contained in:
parent
bbee720710
commit
8b3bfcbd6b
@ -28,7 +28,6 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
|
||||
// TODO 芋艿:后面再看
|
||||
@Tag(name = "用户 APP - 商品浏览记录")
|
||||
@RestController
|
||||
@RequestMapping("/product/browse-history")
|
||||
@ -50,18 +49,11 @@ public class AppProductBrowseHistoryController {
|
||||
@DeleteMapping(value = "/clean")
|
||||
@Operation(summary = "清空商品浏览记录")
|
||||
@PreAuthenticated
|
||||
public CommonResult<Boolean> cleanBrowseHistory() {
|
||||
public CommonResult<Boolean> deleteBrowseHistory() {
|
||||
productBrowseHistoryService.hideUserBrowseHistory(getLoginUserId(), null);
|
||||
return success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/get-count")
|
||||
@Operation(summary = "获得商品浏览记录数量")
|
||||
@PreAuthenticated
|
||||
public CommonResult<Long> getBrowseHistoryCount() {
|
||||
return success(productBrowseHistoryService.getBrowseHistoryCount(getLoginUserId(), false));
|
||||
}
|
||||
|
||||
@GetMapping(value = "/page")
|
||||
@Operation(summary = "获得商品浏览记录分页")
|
||||
@PreAuthenticated
|
||||
|
@ -20,6 +20,12 @@ import java.util.Collection;
|
||||
@Mapper
|
||||
public interface ProductBrowseHistoryMapper extends BaseMapperX<ProductBrowseHistoryDO> {
|
||||
|
||||
default ProductBrowseHistoryDO selectByUserIdAndSpuId(Long userId, Long spuId) {
|
||||
return selectOne(new LambdaQueryWrapperX<ProductBrowseHistoryDO>()
|
||||
.eq(ProductBrowseHistoryDO::getUserId, userId)
|
||||
.eq(ProductBrowseHistoryDO::getSpuId, spuId));
|
||||
}
|
||||
|
||||
default PageResult<ProductBrowseHistoryDO> selectPage(ProductBrowseHistoryPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<ProductBrowseHistoryDO>()
|
||||
.eqIfPresent(ProductBrowseHistoryDO::getUserId, reqVO.getUserId())
|
||||
@ -36,12 +42,6 @@ public interface ProductBrowseHistoryMapper extends BaseMapperX<ProductBrowseHis
|
||||
.set(ProductBrowseHistoryDO::getUserDeleted, userDeleted));
|
||||
}
|
||||
|
||||
default Long selectCountByUserIdAndUserDeleted(Long userId, Boolean userDeleted) {
|
||||
return selectCount(new LambdaQueryWrapperX<ProductBrowseHistoryDO>()
|
||||
.eq(ProductBrowseHistoryDO::getUserId, userId)
|
||||
.eqIfPresent(ProductBrowseHistoryDO::getUserDeleted, userDeleted));
|
||||
}
|
||||
|
||||
default Page<ProductBrowseHistoryDO> selectPageByUserIdOrderByCreateTimeAsc(Long userId, Integer pageNo, Integer pageSize) {
|
||||
Page<ProductBrowseHistoryDO> page = Page.of(pageNo, pageSize);
|
||||
return selectPage(page, new LambdaQueryWrapperX<ProductBrowseHistoryDO>()
|
||||
|
@ -31,15 +31,6 @@ public interface ProductBrowseHistoryService {
|
||||
*/
|
||||
void hideUserBrowseHistory(Long userId, Collection<Long> spuId);
|
||||
|
||||
/**
|
||||
* 获取用户记录数量
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param userDeleted 用户是否删除
|
||||
* @return 数量
|
||||
*/
|
||||
Long getBrowseHistoryCount(Long userId, Boolean userDeleted);
|
||||
|
||||
/**
|
||||
* 获得商品浏览记录分页
|
||||
*
|
||||
|
@ -20,6 +20,7 @@ import java.util.Collection;
|
||||
@Service
|
||||
@Validated
|
||||
public class ProductBrowseHistoryServiceImpl implements ProductBrowseHistoryService {
|
||||
|
||||
private static final int USER_STORE_MAXIMUM = 100;
|
||||
|
||||
@Resource
|
||||
@ -33,14 +34,14 @@ public class ProductBrowseHistoryServiceImpl implements ProductBrowseHistoryServ
|
||||
}
|
||||
|
||||
// 情况一:同一个商品,只保留最新的一条记录
|
||||
ProductBrowseHistoryDO historyDO = browseHistoryMapper.selectOne(ProductBrowseHistoryDO::getUserId, userId, ProductBrowseHistoryDO::getSpuId, spuId);
|
||||
if (historyDO != null) {
|
||||
browseHistoryMapper.deleteById(historyDO);
|
||||
ProductBrowseHistoryDO history = browseHistoryMapper.selectByUserIdAndSpuId(userId, spuId);
|
||||
if (history != null) {
|
||||
browseHistoryMapper.deleteById(history);
|
||||
} else {
|
||||
// 情况二:限制每个用户的浏览记录的条数(只查一条最早地记录、记录总数)
|
||||
// TODO @疯狂:这里最好先查询一次数量。如果发现超过了,再删除;主要考虑,可能有部分不超过,提前就多了一次 sql 查询了
|
||||
Page<ProductBrowseHistoryDO> pageResult = browseHistoryMapper.selectPageByUserIdOrderByCreateTimeAsc(userId, 1, 1);
|
||||
if (pageResult.getTotal() >= USER_STORE_MAXIMUM) {
|
||||
// 删除最早的一条
|
||||
browseHistoryMapper.deleteById(CollUtil.getFirst(pageResult.getRecords()));
|
||||
}
|
||||
}
|
||||
@ -57,11 +58,6 @@ public class ProductBrowseHistoryServiceImpl implements ProductBrowseHistoryServ
|
||||
browseHistoryMapper.updateUserDeletedByUserId(userId, spuIds, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getBrowseHistoryCount(Long userId, Boolean userDeleted) {
|
||||
return browseHistoryMapper.selectCountByUserIdAndUserDeleted(userId, userDeleted);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<ProductBrowseHistoryDO> getBrowseHistoryPage(ProductBrowseHistoryPageReqVO pageReqVO) {
|
||||
return browseHistoryMapper.selectPage(pageReqVO);
|
||||
|
Loading…
Reference in New Issue
Block a user