diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index 7897ac9a1..c50e54438 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -329,7 +329,7 @@ public class WxCarController extends BaseController { userCarQ.setCUserId(memberId); userCarQ.setId(couponOrderId); userCarQ.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); - List list = wxCouponOrderService.carListCUserVo(userCarQ); + List list = wxCouponOrderService.carListCUserVo(userCarQ,true); if (null != list && list.size() > 0) { userCar = list.get(0); WxCUserBasicInfo user; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponMerchant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponMerchant.java index 618fa729e..9f9c5db3e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponMerchant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponMerchant.java @@ -1,11 +1,13 @@ package com.iformall.domain.po; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; +import java.util.List; @TableName(value = "wx_coupon_merchant") @Data @@ -16,8 +18,12 @@ public class WxCouponMerchant extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="",name="productId") private Long productId; + @TableField(exist = false) + private List productIds; @io.swagger.annotations.ApiModelProperty(value="",name="merchantId") private Long merchantId; + @TableField(exist = false) + private List merchantIds; @io.swagger.annotations.ApiModelProperty(value="",name="parameter") private String parameter; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java index 8da415eaa..932c659f0 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java @@ -3,6 +3,7 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxCouponMerchant; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.vo.WxMerchantProductVo; import com.iformall.domain.vo.WxMerchantVo; diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index b5cdbbcc2..662eb4b9e 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -146,7 +146,7 @@ public interface WxCouponOrderService { ResultData carListCUserVoAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize); - List carListCUserVo(WxCouponOrder record); + List carListCUserVo(WxCouponOrder record,boolean getMerchant); /** * A端查询分页列表 diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java index 8ef51024c..191fd4320 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java @@ -155,7 +155,8 @@ public interface WxMerchantService { PageInfo listVoAsPage(WxMerchant wxMerchant, Integer pageNum, Integer pageSize); - List findMerchantVoList(Long productId,String tenantId); + List findMerchantVoList(Long couponId,String tenantId); + Map> findCouponMerchantVoList(List couponIds,String tenantId); PageInfo listVoAsPage2(WxMerchant wxMerchant, Integer pageNum, Integer pageSize); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index 31caf143c..5cc30a7da 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -110,6 +110,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Autowired WxCouponMapper wxCouponMapper; + @Lazy @Autowired WxMerchantService wxMerchantService; @@ -676,15 +677,15 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override public ResultData carListCUserVoAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { - return new ResultData(findCarListOfCUser(record,pageIndex,pageSize)); + return new ResultData(findCarListOfCUser(record,pageIndex,pageSize,true)); } @Override - public List carListCUserVo(WxCouponOrder record) { - return findCarListOfCUser(record,1,10).getList(); + public List carListCUserVo(WxCouponOrder record,boolean getMerchant) { + return findCarListOfCUser(record,1,10,getMerchant).getList(); } - private PageInfo findCarListOfCUser(WxCouponOrder wxCouponOrder,Integer pageIndex, Integer pageSize){ + private PageInfo findCarListOfCUser(WxCouponOrder wxCouponOrder,Integer pageIndex, Integer pageSize,boolean getMerchant){ WxCoupon couponQ = new WxCoupon(); couponQ.updateTenantInfo(wxCouponOrder); List types = new ArrayList(); @@ -700,14 +701,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { PageInfo retPageInfo = new PageInfo(); retPageInfo.setPageNum(pageInfo.getPageNum()); retPageInfo.setPageSize(pageInfo.getPageSize()); - retPageInfo.setList(couponOrderListToCarVoList(wxCouponOrder,pageInfo.getList())); + retPageInfo.setList(couponOrderListToCarVoList(wxCouponOrder,pageInfo.getList(),getMerchant)); retPageInfo.setPages(pageInfo.getPages()); retPageInfo.setTotal(pageInfo.getTotal()); return retPageInfo; } - private List couponOrderListToCarVoList(TenantEntity tenantEntity,List couponOrderList) { + private List couponOrderListToCarVoList(TenantEntity tenantEntity,List couponOrderList,boolean getMerchant) { if (null != couponOrderList) { //查询coupon List couponIds = new ArrayList(); @@ -750,21 +751,22 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } + Map> couponMerchantVoMap = wxMerchantService.findCouponMerchantVoList(couponIds, tenantEntity.getTenantId()); + List volist = new ArrayList(); for (int i = 0 ; i < couponOrderList.size(); i++){ WxCouponOrder co = couponOrderList.get(i); - WxCouponOrderCarCVo cvo = getCouponOrderCarVo(co,couponMap,couponCarMap); + WxCouponOrderCarCVo cvo = getCouponOrderCarVo(co,couponMap,couponCarMap,getMerchant,couponMerchantVoMap); if (null != cvo) { volist.add(cvo); } - } return volist; } return null; } - private WxCouponOrderCarCVo getCouponOrderCarVo(WxCouponOrder co,Map couponMap,Map couponCarMap) { + private WxCouponOrderCarCVo getCouponOrderCarVo(WxCouponOrder co,Map couponMap,Map couponCarMap,boolean getMerchant,Map> couponMerchantVoMap) { if (null == co) { return null; } @@ -790,6 +792,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if (null != couponCar) { cvo.setVendorParams(couponCar.getVendorParams()); } + if (getMerchant && null != couponMerchantVoMap) { + cvo.setMerchantVoList(couponMerchantVoMap.get(cvo.getCouponId())); + } return cvo; } catch (IllegalAccessException | InvocationTargetException e) { logger.error("getCouponOrderCarVo error.",e); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index a339be149..0cdeb7af1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -923,11 +923,86 @@ public class WxMerchantServiceImpl implements WxMerchantService { public PageInfo userTradeDetailList(WxMerchant record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMerchantMapper.userTradeDetailList(record)); } + + @Override + public Map> findCouponMerchantVoList(List couponIds,String tenantId) { + List merchantIds = wxCouponMerchantMapper.findMerchantByProductIds(tenantId, couponIds); + if(null != merchantIds && merchantIds.size() > 0 ) { + WxMerchant merchantQ = new WxMerchant(); + merchantQ.setTenantId(tenantId); + merchantQ.setIds(merchantIds); + List merchantList = wxMerchantMapper.findList(merchantQ); + Map merchantMap = new HashMap(); + if (null != merchantList) { + for (int i = 0 ; i < merchantList.size() ; i++) { + WxMerchant m = merchantList.get(i); + if (null != m) { + merchantMap.put(m.getId(), m); + } + } + } + + WxCouponMerchant couponMerchantQ = new WxCouponMerchant(); + couponMerchantQ.setTenantId(tenantId); + couponMerchantQ.setStatus(0); + couponMerchantQ.setProductIds(couponIds); + List couponMerchantList = wxCouponMerchantMapper.findList(couponMerchantQ); + if (null == couponMerchantList) { + return null; + } + Map> retMap = new HashMap>(); + for (int i = 0 ; i < couponMerchantList.size() ; i ++) { + WxCouponMerchant cm = couponMerchantList.get(i); + Long couponId = cm.getProductId(); + Long merchantId = cm.getMerchantId(); + if (null != couponId && null != merchantId) { + List volist = retMap.get(couponId); + if (null == volist) { + volist = new ArrayList(); + } + retMap.put(couponId, volist); + WxMerchantVo vo = merchantToVo(cm,merchantMap.get(merchantId)); + if (null != vo) { + volist.add(vo); + } + } + } + return retMap; + } + return null; + } - + private WxMerchantVo merchantToVo(WxCouponMerchant cm,WxMerchant m) { + if (null == cm) { + return null; + } + if (null == m) { + return null; + } + WxMerchantVo vo = new WxMerchantVo(); + vo.setId(m.getId()); + vo.setTenantId(m.getTenantId()); + vo.setParentTenantId(m.getParentTenantId()); + vo.setMerchantImgUrl(m.getImgUrl()); + vo.setMerchantName(m.getName()); + vo.setMerchantLinkPhone(m.getLinkPhone()); + vo.setMerchantStatus(m.getStatus()); + vo.setBusinessId(m.getBusinessId()); + vo.setSubBusinessId(m.getSubBusinessId()); + vo.setParameter(cm.getParameter()); + vo.setLinkLinePhone(m.getLinkLinePhone()); + return vo; + } + @Override - public List findMerchantVoList(Long productId,String tenantId) { - return wxCouponMerchantMapper.findMerchantVoList(productId,tenantId); + public List findMerchantVoList(Long couponId,String tenantId) { + List couponIds = new ArrayList(); + couponIds.add(couponId); + Map> couponMerchantVoList = findCouponMerchantVoList(couponIds,tenantId); + if (null != couponMerchantVoList) { + return couponMerchantVoList.get(couponId); + } + return null; } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/park/impl/etcp/EtcpHelper.java b/mallinkService/src/main/java/com/iformall/service/park/impl/etcp/EtcpHelper.java index c326a17aa..43538bd84 100644 --- a/mallinkService/src/main/java/com/iformall/service/park/impl/etcp/EtcpHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/park/impl/etcp/EtcpHelper.java @@ -363,7 +363,9 @@ public class EtcpHelper { } // 优先从从商户表里取 - businessId = getETCPBusinessID(merchantVo.getId()); + if (null != merchantVo) { + businessId = getETCPBusinessID(merchantVo.getId()); + } if (StringUtils.isBlank(businessId)) { // 1期只有一个虚拟商户,可以写在商场配置里 businessId = objParams.getString("businessId"); diff --git a/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml index 52cb52ecf..62403a5bf 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml @@ -60,7 +60,20 @@ #{idItem} - + + + and merchant_id in + + #{merchantIdItem} + + + + and product_id in + + #{productIdItem} + + + order by ${sortColumns}