Explorar el Código

fix 券订单

release_toaliyun_real
winter hace 4 años
padre
commit
300ac3920d
Se han modificado 7 ficheros con 88 adiciones y 55 borrados
  1. +2
    -2
      mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxCouponService.java
  3. +3
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java
  4. +31
    -22
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java
  5. +5
    -5
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java
  6. +17
    -5
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java
  7. +29
    -19
      mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml

+ 2
- 2
mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java Ver fichero

@@ -19,8 +19,8 @@ public interface WxCouponMerchantMapper extends CommonMapper<WxCouponMerchant, L
List<WxMerchantVo> findMerchantNameList(@Param("productId")Long productId,@Param("tenantId")String tenantId); List<WxMerchantVo> findMerchantNameList(@Param("productId")Long productId,@Param("tenantId")String tenantId);
List<WxMerchantVo> findMerchantBaseList(@Param("productId")Long productId,@Param("tenantId")String tenantId); List<WxMerchantVo> findMerchantBaseList(@Param("productId")Long productId,@Param("tenantId")String tenantId);
List<WxMerchantProductVo> findMerchantProduct(@Param("tenantId")String tenantId,@Param("merchantIdList")List<Long> merchantIdList); List<WxMerchantProductVo> findMerchantProduct(@Param("tenantId")String tenantId,@Param("merchantIdList")List<Long> merchantIdList);
List<WxMerchantProductVo> findOnlyMerchantProduct(@Param("tenantId")String tenantId,@Param("merchantIdList")List<Long> merchantIdList);
List<Long> findMerchantProductIds(@Param("tenantId")String tenantId,@Param("merchantIdList")List<Long> merchantIdList,@Param("status")Integer status); List<Long> findMerchantProductIds(@Param("tenantId")String tenantId,@Param("merchantIdList")List<Long> merchantIdList,@Param("status")Integer status);
List<Long> findOneMerchantProductIds(@Param("tenantId")String tenantId,@Param("merchantId")Long merchantId);
List<Long> findMerchantByProductIds(@Param("tenantId")String tenantId,@Param("productIds")List<Long> productIds); List<Long> findMerchantByProductIds(@Param("tenantId")String tenantId,@Param("productIds")List<Long> productIds);
List<Long> findMerchantByProductId(@Param("tenantId")String tenantId,@Param("productId")Long productId);
List<Long> findOnlyMerchantByProductIds(@Param("tenantId")String tenantId,@Param("productIds")List<Long> productIds);
} }

+ 1
- 1
mallinkService/src/main/java/com/iformall/service/WxCouponService.java Ver fichero

@@ -259,7 +259,7 @@ public interface WxCouponService {
* 获取券商户map * 获取券商户map
* *
*/ */
Map<Long,String> getCouponMerchantMap(List<Long> couponIds,TenantEntity tenantEntity);
Map<Long,String> getCouponMerchantMap(List<Long> couponIds,TenantEntity tenantEntity,boolean onlyOneMerchantCoupons);


Map<Long, WxCoupon> getCouponMap(List<Long> couponIds, TenantEntity tenantEntity); Map<Long, WxCoupon> getCouponMap(List<Long> couponIds, TenantEntity tenantEntity);
} }

+ 3
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java Ver fichero

@@ -317,7 +317,9 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService {
return; return;
} }
if(wxCouponChannel.getMerchantId() != null){ if(wxCouponChannel.getMerchantId() != null){
List<Long> mcids = wxCouponMerchantMapper.findOneMerchantProductIds(wxCouponChannel.getTenantId(), wxCouponChannel.getMerchantId());
List<Long> merchantIds = new ArrayList<Long>();
merchantIds.add(wxCouponChannel.getMerchantId());
List<Long> mcids = wxCouponMerchantMapper.findMerchantProductIds(wxCouponChannel.getTenantId(), merchantIds,0);
if(mcids == null || mcids.isEmpty()){ if(mcids == null || mcids.isEmpty()){
wxCouponChannel.setId(-999L); wxCouponChannel.setId(-999L);
return; return;


+ 31
- 22
mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java Ver fichero

@@ -291,22 +291,25 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
dateMap.put("endDateTimes", endDate.getTime()); dateMap.put("endDateTimes", endDate.getTime());
List<Long> merchantIdList = new ArrayList<Long>(); List<Long> merchantIdList = new ArrayList<Long>();
merchantIdList.add(wxMerchant.getId()); merchantIdList.add(wxMerchant.getId());
List<WxMerchantProductVo> merchantProductVos = wxCouponMerchantMapper.findMerchantProduct(wxMerchant.getTenantId(), merchantIdList);
if (null != merchantProductVos) {
List<WxMerchantProductVo> merchantProductVos = wxCouponMerchantMapper.findOnlyMerchantProduct(wxMerchant.getTenantId(), merchantIdList);
if (null != merchantProductVos && merchantProductVos.size() > 0 ){
List<Long> couponIds = new ArrayList<Long>(); List<Long> couponIds = new ArrayList<Long>();
for (int i = 0 ; i < merchantProductVos.size(); i ++) { for (int i = 0 ; i < merchantProductVos.size(); i ++) {
WxMerchantProductVo mp = merchantProductVos.get(i); WxMerchantProductVo mp = merchantProductVos.get(i);
if (mp.getMc() == 1) {
if (!couponIds.contains(mp.getProductId())) {
couponIds.add(mp.getProductId());
}
}
if (!couponIds.contains(mp.getProductId())) {
couponIds.add(mp.getProductId());
}
} }
if (couponIds.size() > 0 ) { if (couponIds.size() > 0 ) {
dateMap.put("couponIds", couponIds); dateMap.put("couponIds", couponIds);
list = wxCouponOrderMapper.findListOfOrderedByDate(dateMap);
}else {
list = new ArrayList<WxCouponOrder>();
} }
}else {
list = new ArrayList<WxCouponOrder>();
} }
list = wxCouponOrderMapper.findListOfOrderedByDate(dateMap);
} }
//logger.info("find " + list.size() + " coupon order from " + /startDate + " to " + new Date()); //logger.info("find " + list.size() + " coupon order from " + /startDate + " to " + new Date());
resultMap.put("amount", list.stream().mapToInt(p -> p.getCouponPrice()).sum()); resultMap.put("amount", list.stream().mapToInt(p -> p.getCouponPrice()).sum());
@@ -350,29 +353,35 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
dateMap.put("endDateTimes", endDate.getTime()); dateMap.put("endDateTimes", endDate.getTime());
List<Long> merchantIdList = new ArrayList<Long>(); List<Long> merchantIdList = new ArrayList<Long>();
merchantIdList.add(merchantId); merchantIdList.add(merchantId);
List<WxMerchantProductVo> merchantProductVos = wxCouponMerchantMapper.findMerchantProduct(tenantEntity.getTenantId(), merchantIdList);
if (null != merchantProductVos) {
List<WxMerchantProductVo> merchantProductVos = wxCouponMerchantMapper.findOnlyMerchantProduct(tenantEntity.getTenantId(), merchantIdList);
PageInfo<WxCouponOrder> couponOrderPage = null;
if (null != merchantProductVos && merchantProductVos.size() > 0 ) {
List<Long> couponIds = new ArrayList<Long>(); List<Long> couponIds = new ArrayList<Long>();
for (int i = 0 ; i < merchantProductVos.size(); i ++) { for (int i = 0 ; i < merchantProductVos.size(); i ++) {
WxMerchantProductVo mp = merchantProductVos.get(i); WxMerchantProductVo mp = merchantProductVos.get(i);
if (mp.getMc() == 1) {
if (!couponIds.contains(mp.getProductId())) {
couponIds.add(mp.getProductId());
}
}
if (!couponIds.contains(mp.getProductId())) {
couponIds.add(mp.getProductId());
}
} }
if (couponIds.size() > 0 ) { if (couponIds.size() > 0 ) {
dateMap.put("couponIds", couponIds); dateMap.put("couponIds", couponIds);
couponOrderPage = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() ->wxCouponOrderMapper.findListOfOrderedByDateForBUser(dateMap));
} }
} }
PageInfo<WxCouponOrder> couponOrderPage = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() ->wxCouponOrderMapper.findListOfOrderedByDateForBUser(dateMap));
PageInfo<WxCouponOrderBVo> pageInfo = new PageInfo<WxCouponOrderBVo>(); PageInfo<WxCouponOrderBVo> pageInfo = new PageInfo<WxCouponOrderBVo>();
pageInfo.setList(handleToCouponOrderBVoList(tenantEntity,couponOrderPage.getList(),false,false));
pageInfo.setPageNum(couponOrderPage.getPageNum());
pageInfo.setPageSize(couponOrderPage.getPageSize());
pageInfo.setPages(couponOrderPage.getPages());
pageInfo.setTotal(couponOrderPage.getTotal());
if (null != couponOrderPage) {
pageInfo.setList(handleToCouponOrderBVoList(tenantEntity,couponOrderPage.getList(),false,false));
pageInfo.setPageNum(couponOrderPage.getPageNum());
pageInfo.setPageSize(couponOrderPage.getPageSize());
pageInfo.setPages(couponOrderPage.getPages());
pageInfo.setTotal(couponOrderPage.getTotal());
}else {
pageInfo.setList(null);
pageInfo.setPageNum(pageIndex);
pageInfo.setPageSize(pageSize);
pageInfo.setPages(0);
pageInfo.setTotal(0);
}
return pageInfo; return pageInfo;
} }


+ 5
- 5
mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java Ver fichero

@@ -129,7 +129,7 @@ public class WxCouponSendServiceImpl implements WxCouponSendService {
pageInfo.setPageSize(sendPageInfo.getPageSize()); pageInfo.setPageSize(sendPageInfo.getPageSize());
pageInfo.setPages(sendPageInfo.getPages()); pageInfo.setPages(sendPageInfo.getPages());
pageInfo.setTotal(sendPageInfo.getTotal()); pageInfo.setTotal(sendPageInfo.getTotal());
pageInfo.setList(couponSendToVoList(record,sendPageInfo.getList(),true,false));
pageInfo.setList(couponSendToVoList(record,sendPageInfo.getList(),true,false,true));
} else { } else {
record.setStatus(EnumCouponSendStatus.VALID.getCode()); record.setStatus(EnumCouponSendStatus.VALID.getCode());
record.setSortColumns(BaseEntity.SortField.CreateDate_DESC); record.setSortColumns(BaseEntity.SortField.CreateDate_DESC);
@@ -139,7 +139,7 @@ public class WxCouponSendServiceImpl implements WxCouponSendService {
pageInfo.setPageSize(sendPageInfo.getPageSize()); pageInfo.setPageSize(sendPageInfo.getPageSize());
pageInfo.setPages(sendPageInfo.getPages()); pageInfo.setPages(sendPageInfo.getPages());
pageInfo.setTotal(sendPageInfo.getTotal()); pageInfo.setTotal(sendPageInfo.getTotal());
pageInfo.setList(couponSendToVoList(record,sendPageInfo.getList(),false,true));
pageInfo.setList(couponSendToVoList(record,sendPageInfo.getList(),false,true,true));
} }
return pageInfo; return pageInfo;
} }
@@ -147,10 +147,10 @@ public class WxCouponSendServiceImpl implements WxCouponSendService {
@Override @Override
public List<WxCouponSendVo> findListVo(WxCouponSend record) { public List<WxCouponSendVo> findListVo(WxCouponSend record) {
List<WxCouponSend> couponSendList = wxCouponSendMapper.findList(record); List<WxCouponSend> couponSendList = wxCouponSendMapper.findList(record);
return couponSendToVoList(record,couponSendList,false,false);
return couponSendToVoList(record,couponSendList,false,false,false);
} }
private List<WxCouponSendVo> couponSendToVoList(TenantEntity tenantEntity,List<WxCouponSend> couponSendList,boolean setInventoryAndExpired,boolean setMerchantNameAndSendCount) {
private List<WxCouponSendVo> couponSendToVoList(TenantEntity tenantEntity,List<WxCouponSend> couponSendList,boolean setInventoryAndExpired,boolean setMerchantNameAndSendCount,boolean onlyOneMerchantCoupons) {
if (null != couponSendList) { if (null != couponSendList) {
List<Long> couponIdList = new ArrayList<>(); List<Long> couponIdList = new ArrayList<>();
List<Long> mallUserInfoIdList = new ArrayList<Long>(); List<Long> mallUserInfoIdList = new ArrayList<Long>();
@@ -199,7 +199,7 @@ public class WxCouponSendServiceImpl implements WxCouponSendService {
//couponMerchant //couponMerchant
Map<Long, String> couponMerchantMap = null; Map<Long, String> couponMerchantMap = null;
if (setMerchantNameAndSendCount) { if (setMerchantNameAndSendCount) {
couponMerchantMap = wxCouponService.getCouponMerchantMap(couponIdList,tenantEntity);
couponMerchantMap = wxCouponService.getCouponMerchantMap(couponIdList,tenantEntity,onlyOneMerchantCoupons);
} }
List<WxCouponSendVo> retList = new ArrayList<WxCouponSendVo>(); List<WxCouponSendVo> retList = new ArrayList<WxCouponSendVo>();
for (int i = 0 ; i <couponSendList.size() ; i++) { for (int i = 0 ; i <couponSendList.size() ; i++) {


+ 17
- 5
mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java Ver fichero

@@ -962,11 +962,18 @@ public class WxCouponServiceImpl implements WxCouponService {
} }


@Override @Override
public Map<Long, String> getCouponMerchantMap(List<Long> couponIds, TenantEntity tenantEntity) {
public Map<Long, String> getCouponMerchantMap(List<Long> couponIds, TenantEntity tenantEntity,boolean onlyOneMerchantCoupons) {
Map<Long,String> couponMerchantMap = new HashMap<Long,String>(); Map<Long,String> couponMerchantMap = new HashMap<Long,String>();
if(null != couponIds && couponIds.size() > 0){ if(null != couponIds && couponIds.size() > 0){
List<Long> merchantIds = wxCouponMerchantMapper.findMerchantByProductIds(tenantEntity.getTenantId(),couponIds);

List<Long> merchantIds = null;
if (onlyOneMerchantCoupons) {
merchantIds = wxCouponMerchantMapper.findOnlyMerchantByProductIds(tenantEntity.getTenantId(),couponIds);
}else {
merchantIds = wxCouponMerchantMapper.findMerchantByProductIds(tenantEntity.getTenantId(),couponIds);
}
if (null == merchantIds) {
return couponMerchantMap;
}
WxMerchant merchantQ = new WxMerchant(); WxMerchant merchantQ = new WxMerchant();
merchantQ.updateTenantInfo(tenantEntity); merchantQ.updateTenantInfo(tenantEntity);
merchantQ.setIds(merchantIds); merchantQ.setIds(merchantIds);
@@ -979,8 +986,13 @@ public class WxCouponServiceImpl implements WxCouponService {
} }
} }


List<WxMerchantProductVo> merchantProductVos = wxCouponMerchantMapper.findMerchantProduct(tenantEntity.getTenantId(), merchantIds);
if (null != merchantProductVos) {
List<WxMerchantProductVo> merchantProductVos = null;
if (onlyOneMerchantCoupons) {
merchantProductVos = wxCouponMerchantMapper.findOnlyMerchantProduct(tenantEntity.getTenantId(), merchantIds);
}else {
merchantProductVos = wxCouponMerchantMapper.findMerchantProduct(tenantEntity.getTenantId(), merchantIds);
}
if (null != merchantProductVos && merchantProductVos.size() > 0 ) {
for (int i = 0 ; i < merchantProductVos.size(); i ++) { for (int i = 0 ; i < merchantProductVos.size(); i ++) {
WxMerchantProductVo mp = merchantProductVos.get(i); WxMerchantProductVo mp = merchantProductVos.get(i);
if(couponIds.contains(mp.getProductId())){ if(couponIds.contains(mp.getProductId())){


+ 29
- 19
mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml Ver fichero

@@ -186,26 +186,48 @@
</if> </if>
</select> </select>


<select id = "findOneMerchantProductIds" parameterType="java.util.Map" resultType="Long">
SELECT wcm.product_id
<select id = "findMerchantByProductIds" parameterType="java.util.Map" resultType="Long">
SELECT distinct wcm.merchant_id
FROM wx_coupon_merchant wcm FROM wx_coupon_merchant wcm
WHERE wcm.STATUS = 0 WHERE wcm.STATUS = 0
<if test=" null != tenantId and '' != tenantId"> <if test=" null != tenantId and '' != tenantId">
and wcm.`tenant_id` = #{tenantId} and wcm.`tenant_id` = #{tenantId}
</if> </if>

<if test=" null != merchantId">
and wcm.merchant_id = #{merchantId}
<if test=" null != productIds">
and wcm.product_id in
<foreach collection="productIds" index="index" item="productIdItem" open="(" separator="," close=")">
#{productIdItem}
</foreach>
</if> </if>
</select> </select>

<select id = "findMerchantByProductIds" parameterType="java.util.Map" resultType="Long">
<select id = "findOnlyMerchantProduct" parameterType="java.util.Map" resultMap="MerchantProductVoResultMap">
SELECT wcm.product_id,wcm.merchant_id,COUNT(1) AS mc
FROM wx_coupon_merchant wcm
WHERE wcm.STATUS = 0
<if test=" null != tenantId and '' != tenantId">
and wcm.`tenant_id` = #{tenantId}
</if>
GROUP BY product_id
HAVING mc = 1
<if test=" null != merchantIdList">
and wcm.merchant_id in
<foreach collection="merchantIdList" index="index" item="merchantIdItem" open="(" separator="," close=")">
#{merchantIdItem}
</foreach>
</if>
</select>
<select id = "findOnlyMerchantByProductIds" parameterType="java.util.Map" resultType="Long">
SELECT distinct wcm.merchant_id SELECT distinct wcm.merchant_id
FROM wx_coupon_merchant wcm FROM wx_coupon_merchant wcm
WHERE wcm.STATUS = 0 WHERE wcm.STATUS = 0
<if test=" null != tenantId and '' != tenantId"> <if test=" null != tenantId and '' != tenantId">
and wcm.`tenant_id` = #{tenantId} and wcm.`tenant_id` = #{tenantId}
</if> </if>
GROUP BY product_id
HAVING COUNT(merchant_id) = 1
<if test=" null != productIds"> <if test=" null != productIds">
and wcm.product_id in and wcm.product_id in
<foreach collection="productIds" index="index" item="productIdItem" open="(" separator="," close=")"> <foreach collection="productIds" index="index" item="productIdItem" open="(" separator="," close=")">
@@ -213,17 +235,5 @@
</foreach> </foreach>
</if> </if>
</select> </select>

<select id = "findMerchantByProductId" parameterType="java.util.Map" resultType="Long">
SELECT merchant_id
FROM wx_coupon_merchant
WHERE STATUS = 0
<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != productId">
and product_id = #{productId}
</if>
</select>
</mapper> </mapper>

Cargando…
Cancelar
Guardar