From 6e804cf35fa556fa26d9634a5f4f8ba248f586f0 Mon Sep 17 00:00:00 2001 From: winter Date: Sat, 14 May 2022 20:15:24 +0800 Subject: [PATCH] fix bug --- .../controller/WxCouponChannelController.java | 33 ++++++++++++ .../java/com/iformall/enums/EnumCacheKey.java | 1 + .../mapper/WxCouponChannelMapper.java | 2 + .../service/WxCouponChannelService.java | 3 ++ .../impl/WxCouponChannelServiceImpl.java | 50 +++++++++++++++++++ .../mapper/WxCouponChannelMapper.xml | 35 +++++++++++++ 6 files changed, 124 insertions(+) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponChannelController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponChannelController.java index 318baff3b..8f569046e 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponChannelController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponChannelController.java @@ -9,6 +9,7 @@ import java.util.concurrent.TimeUnit; import com.github.pagehelper.PageHelper; import com.iformall.common.ErrorCode; import com.iformall.domain.po.WxCampaign; +import com.iformall.domain.po.WxCoupon; import com.iformall.enums.*; import org.apache.commons.collections.map.HashedMap; import org.apache.commons.lang3.StringUtils; @@ -96,6 +97,38 @@ public class WxCouponChannelController extends BaseController { } return new ResultData(page); } + + @RedisCache + @ApiOperation("分页列表接口") + @GetMapping("douyinLiveList") + @ApiImplicitParams({ + @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), + @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) + public ResultData zhiboList(@ModelAttribute WxCouponChannel wxCouponChannel,Integer pageNum, Integer pageSize) { + if (null == wxCouponChannel) wxCouponChannel = new WxCouponChannel(); + wxCouponChannel.updateTenantInfo(getTenantInfo()); + wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + wxCouponChannel.setCouponStatus(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()); + + wxCouponChannel.setSortColumn(null); + wxCouponChannel.setSortColumns(BaseEntity.SortField.CCUpdateDate_DESC, BaseEntity.SortField.CCId_DESC); + wxCouponChannel.setShowBeginTime(new Date()); + + String key = EnumCacheKey.DOUYIN_LIVE_PAGE_LIST.getMessage() + + wxCouponChannel.getTenantId() + "_" + + wxCouponChannel.getTargetAd() + "_" + + wxCouponChannel.getBusiness() + "_" + + pageNum + ":"+ pageNum + ":"; + PageInfo page = RedisCacheUtils.getCacheObject(redisTemplate, key, PageInfo.class); + logger.info("WxCouponChannelController.chache.get:{} page:{}",key,page); + if (null == page ) { + page = wxCouponChannelService.liveHomePage(wxCouponChannel, pageNum, pageSize); + if(page.getList() != null && page.getList().size() > 0){ + RedisCacheUtils.cache(redisTemplate, key, page, 100); + } + } + return new ResultData(page); + } // @ApiOperation("商户活动列表信息") diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCacheKey.java b/mallinkService/src/main/java/com/iformall/enums/EnumCacheKey.java index 3faa9f06c..c933c8bf8 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCacheKey.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCacheKey.java @@ -16,6 +16,7 @@ public enum EnumCacheKey { TOPIC_ONE(5, "topicOne_"), TOPIC_LIST(6, "topiList_"), COUPON_CHANNEL_STOCK(7, "couponChannelStock:couponChannelStock_"), + DOUYIN_LIVE_PAGE_LIST(8,"douyinLiveList") ; private static Map map = new HashMap(); static { diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java index 23821a48a..c97929f50 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java @@ -48,6 +48,8 @@ public interface WxCouponChannelMapper extends CommonMapper newfindCList(WxCouponChannel wxCouponChannel); + + List liveHomeList(WxCouponChannel wxCouponChannel); /** * 查询已同步的上架卷的Id diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java index 41580e73c..81eb6b3bb 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java @@ -3,6 +3,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; @@ -62,6 +63,8 @@ public interface WxCouponChannelService { PageInfo newListPageVo(WxCouponChannel record, Integer pageIndex, Integer pageSize); + PageInfo liveHomePage(WxCouponChannel record, Integer pageIndex, Integer pageSize); + void reduceChannelStock(TenantEntity tenantEntity,Long couponChannelId, Integer number); void backChannelStock(TenantEntity tenantEntity,Long couponChannelId, Integer number); void setChannelStock(WxCouponChannel record,Integer number); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java index bbe91c526..81aefcae3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java @@ -485,6 +485,56 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { retPageInfo.setList(handleWxCouponChannelVo(pageInfo.getList(),record)); return retPageInfo; } + + /** + * 直播间查询,精简字段,提升效率 + * @param record + * @param pageIndex + * @param pageSize + * @return + */ + @Override + public PageInfo liveHomePage(WxCouponChannel record, Integer pageIndex, Integer pageSize) { + + PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponChannelMapper.liveHomeList(record)); + PageInfo retPageInfo = new PageInfo(); + retPageInfo.setPageNum(pageInfo.getPageNum()); + retPageInfo.setPageSize(pageInfo.getPageSize()); + retPageInfo.setPages(pageInfo.getPages()); + retPageInfo.setTotal(pageInfo.getTotal()); + retPageInfo.setList(toLiveHomeCouponList(pageInfo.getList(),record)); + return retPageInfo; + } + + private List toLiveHomeCouponList(List list, TenantEntity tenantEntity){ + if(list == null || list.isEmpty()){ + return null; + } + List couponIds = list.stream().map(cc -> cc.getCouponId()).collect(Collectors.toList()); + Map couponMap = wxCouponService.getCouponMap(couponIds,tenantEntity); + List retList = new ArrayList<>(); + for (WxCouponChannel cc:list) { + WxCoupon cm = couponMap.get(cc.getCouponId()); + if (null != cm) { + WxCoupon vo = new WxCoupon(); + vo.setId(cc.getId()); + vo.setCouponId(cc.getCouponId()); + vo.setCoverImg(cm.getCoverImg()); + vo.setTitle(cm.getTitle()); + vo.setRemainInventory(cm.getRemainInventory()); + vo.setInventory(cm.getInventory()); + vo.setSalePrice(cm.getSalePrice()); + vo.setPrice(cm.getPrice()); + retList.add(vo); + } + } + if (retList.size() <= 0 ) { + return null; + } + return retList; + } + + private boolean isCouponMerchantValid(Long couponId,TenantEntity tenantEntity) { List merchantVoList = wxMerchantService.findMerchantListByProduct(tenantEntity,couponId,false); diff --git a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml index d5eaaaf3f..f30079226 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml @@ -328,6 +328,41 @@ order by ${sortColumns} + +