diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java index 1f1aba28a..248f165bc 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java @@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode; import java.util.Date; +import java.util.List; import java.util.UUID; @TableName(value = "wx_merchant_b_user") @@ -24,6 +25,8 @@ public class WxMerchantBUser extends TenantEntity { private String userPwd; @io.swagger.annotations.ApiModelProperty(value = "商户id", name = "merchantId") private Long merchantId; + @TableField(exist = false) + private List merchantIds; @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate") private Date createDate; @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateDate") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantShop.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantShop.java index 386ff1bfd..0bc57b848 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantShop.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantShop.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_merchant_shop") @Data @@ -18,6 +20,9 @@ public class WxMerchantShop extends TenantEntity { private Long merchantId; @io.swagger.annotations.ApiModelProperty(value="商铺ID",name="shopId") private Long shopId; + @TableField(exist = false) + private List shopIdList; + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java index f30bab040..ed08029e8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java @@ -55,6 +55,9 @@ public class WxCouponOrderBVo extends WxCouponOrder { @Excel(name = "会员手机号", width = 20, orderNum = "13") @io.swagger.annotations.ApiModelProperty(value="c用户绑定的手机号",name="cUserPhone") private String cUserPhone; + @io.swagger.annotations.ApiModelProperty(value="c用户编号",name="cUserId") + @TableField(exist = false) + private Long cUserId; @Excel(name = "微信昵称", width = 20, orderNum = "14") @io.swagger.annotations.ApiModelProperty(value="微信昵称",name="userNickName") @@ -141,7 +144,8 @@ public class WxCouponOrderBVo extends WxCouponOrder { @Excel(name = "所属商户", width = 50, orderNum = "3") @io.swagger.annotations.ApiModelProperty(value="使用券商户名",name="merchantName") private String merchantName; - + @TableField(exist = false) + private List bUserIdList; @Excel(name = "发券商户(商户注券)", width = 50, orderNum = "3") @io.swagger.annotations.ApiModelProperty(value="发券商户(商户注券)",name="sendMerchantName") @@ -192,6 +196,8 @@ public class WxCouponOrderBVo extends WxCouponOrder { @TableField(exist = false) private Long couponId; + @TableField(exist = false) + private List couponIds; @Excel(name = "类型", width = 50, orderNum = "16", replace = {"满减券_1", "代金券_2", "团购券_3", "礼品券_4", "停车券_5", "通用券_6", "砍价券_8", "团购券_9", "预购商品_10", "可配送商品_11", "券礼包_12", "积分券_50", "积分停车券_51", "消费卡_100"}) @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantProductVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantProductVo.java new file mode 100644 index 000000000..4ea56653d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantProductVo.java @@ -0,0 +1,31 @@ +package com.iformall.domain.vo; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; +import java.util.List; + +@JsonIgnoreProperties(value = {"handler"}) +@Data +@EqualsAndHashCode(callSuper = true) +public class WxMerchantProductVo extends TenantEntity { + + /** + * + */ + private static final long serialVersionUID = -367003237067255221L; + + + @io.swagger.annotations.ApiModelProperty(value = "券编码", name = "productId") + private Long productId; + + @io.swagger.annotations.ApiModelProperty(value = "商户编码", name = "merchantId") + private Long merchantId; + + @io.swagger.annotations.ApiModelProperty(value = "商户数", name = "merchantId") + private Integer mc; + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java index 104d13c02..2e8305f96 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java @@ -15,6 +15,7 @@ public interface WxCouponMapper extends CommonMapper { List findCountData(@Param("tenantEntitys")List tenantEntitys, @Param("wxCoupon")WxCoupon wxCoupon); List findList(WxCoupon wxCoupon); + List findIdList(WxCoupon wxCoupon); List findCouponList(WxCoupon wxCoupon); WxCoupon selectById(@Param("id")Long id,@Param("tenantId")String tenantId); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java index bf3ed8705..aabbde2b4 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.vo.WxMerchantProductVo; import com.iformall.domain.vo.WxMerchantVo; import java.util.List; @@ -16,4 +17,6 @@ public interface WxCouponMerchantMapper extends CommonMapper findMerchantVoList(@Param("productId")Long productId,@Param("tenantId")String tenantId); List findMerchantNameList(@Param("productId")Long productId,@Param("tenantId")String tenantId); List findMerchantBaseList(@Param("productId")Long productId,@Param("tenantId")String tenantId); + List findMerchantProduct(@Param("tenantId")String tenantId,@Param("merchantIdList")List merchantIdList); + List findMerchantProductIds(@Param("tenantId")String tenantId,@Param("merchantIdList")List merchantIdList); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantBUserMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantBUserMapper.java index a0c92529f..03b1a391d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantBUserMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantBUserMapper.java @@ -8,6 +8,7 @@ import com.iformall.domain.vo.WxMerchantBuInfoVo; public interface WxMerchantBUserMapper extends CommonMapper { List findList(WxMerchantBUser wxMerchantBUser); + List findIdList(WxMerchantBUser wxMerchantBUser); List findSelMerchantList(WxMerchantBUser wxMerchantBUser); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java index 09d66f79c..c52a0277d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java @@ -16,6 +16,8 @@ import java.util.Map; public interface WxMerchantMapper extends CommonMapper { List findList(WxMerchant wxMerchant); + List findIdList(WxMerchant wxMerchant); + List findIdNameList(WxMerchant wxMerchant); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantShopMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantShopMapper.java index e8ec02083..e5680673a 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantShopMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantShopMapper.java @@ -11,6 +11,8 @@ public interface WxMerchantShopMapper extends CommonMapper findList(WxMerchantShop wxMerchantShop); + List findMerchantIdList(WxMerchantShop wxMerchantShop); + List findShopIds(@Param("merchantId") Long merchantId); void delShops(@Param("merchantId") Long merchantId,@Param("shopList") List shopIds); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxShopMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxShopMapper.java index a99b1fcd0..f990f8937 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxShopMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxShopMapper.java @@ -16,6 +16,8 @@ import java.util.Map; public interface WxShopMapper extends CommonMapper { List findList(WxShop wxShop); + + List findIdList(WxShop wxShop); List> findListMap(WxShop record); 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 7bbdc6eaf..445aabce8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -171,6 +171,11 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { SysConfigService sysConfigService; @Autowired WxMerchantBUserService wxMerchantBUserService; + + @Autowired + WxShopMapper wxShopMapper; + @Autowired + WxMerchantShopMapper wxMerchantShopMapper; private final SimpleDateFormat mydateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -335,6 +340,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override public ResultData listAdminAsPage(WxCouponOrderBVo wxCouponOrderBVo, Integer pageIndex, Integer pageSize) { + handleWxCouponOrderBVoQueryParam(wxCouponOrderBVo); PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findListOfAdmin(wxCouponOrderBVo)); return new ResultData(pageInfo); } @@ -348,6 +354,131 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { return new ResultData(wxCouponOrderBVo); } + private List getMerchantIdsQueryParam(WxCouponOrderBVo wxCouponOrder) { + + List retMerchantIdList = new ArrayList(); + boolean isConditiondQquery = false; + //根据名称查询商户 + String merchantName = StringUtils.trimToNull(wxCouponOrder.getMerchantName()); + if (null != merchantName) { + WxMerchant merchantQ1 = new WxMerchant(); + merchantQ1.updateTenantInfo(wxCouponOrder); + merchantQ1.setName(merchantName); + List merchantIdList = wxMerchantMapper.findIdList(merchantQ1); + if (null == merchantIdList || merchantIdList.size() <= 0) { + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"商户名称查询不到商户。"); + } + retMerchantIdList.addAll(merchantIdList); + isConditiondQquery = true; + } + + //楼层楼座查询商户 + if (null != wxCouponOrder.getBuilding() || null != wxCouponOrder.getFloor()) { + WxShop shopQ = new WxShop(); + shopQ.updateTenantInfo(wxCouponOrder); + shopQ.setBuilding(Long.parseLong(String.valueOf(wxCouponOrder.getBuilding()))); + shopQ.setFloor(Long.parseLong(String.valueOf(wxCouponOrder.getFloor()))); + List shopIds = wxShopMapper.findIdList(shopQ); + if (null == shopIds || shopIds.size() <= 0 ){ + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"楼座楼层提交查询不到店铺信息."); + } + + WxMerchantShop wxMerchantShopQ = new WxMerchantShop(); + wxMerchantShopQ.updateTenantInfo(wxCouponOrder); + wxMerchantShopQ.setShopIdList(shopIds); + wxMerchantShopQ.setIsDel(0); + List buildMerchantIdList = wxMerchantShopMapper.findMerchantIdList(wxMerchantShopQ); + if (null == buildMerchantIdList || buildMerchantIdList.size() <= 0 ){ + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"楼座楼层对应店铺无商户绑定记录."); + } + retMerchantIdList.retainAll(buildMerchantIdList); + isConditiondQquery = true; + } + + if (isConditiondQquery) { + if (null == retMerchantIdList || retMerchantIdList.size() <= 0 ) { + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"根据条件交集未查询到商户记录."); + }else { + return retMerchantIdList; + } + }else { + return null; + } + + } + + private void handleWxCouponOrderBVoQueryParam(WxCouponOrderBVo wxCouponOrder) { + String cuserPhone = StringUtils.trimToNull(wxCouponOrder.getcuserPhone()); + if (null != cuserPhone) { + WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(wxCouponOrder, cuserPhone); + if (null != basicInfo) { + wxCouponOrder.setCUserId(basicInfo.getId()); + }else { + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"手机号查询不到会员信息。"); + } + } + + List merchantIdListQueryParam = getMerchantIdsQueryParam(wxCouponOrder); + List merchantProductIds = null; + if (null != merchantIdListQueryParam) { + //查询商户券 + merchantProductIds = wxCouponMerchantMapper.findMerchantProductIds(wxCouponOrder.getTenantId(), merchantIdListQueryParam); + if (null == merchantProductIds || merchantProductIds.size() <= 0) { + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"商户下查询不到券信息。"); + } + } + + + List couponIds = null; + String title = StringUtils.trimToNull(wxCouponOrder.getTitle()); + if (null != title || null != wxCouponOrder.getType() || null != wxCouponOrder.getBusiness() || null != wxCouponOrder.getSourceType()) { + WxCoupon wxCouponQuery = new WxCoupon(); + wxCouponQuery.updateTenantInfo(wxCouponOrder); + wxCouponQuery.setTitle(title); + wxCouponQuery.setType(wxCouponOrder.getType()); + wxCouponQuery.setBusiness(wxCouponOrder.getBusiness()); + wxCouponQuery.setSourceType(wxCouponOrder.getSourceType()); + couponIds = wxCouponMapper.findIdList(wxCouponQuery); + if (null == couponIds || couponIds.size() <= 0) { + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"根据券条件搜索不到券信息。"); + } + } + + //merchantProducts 和 couponIds 取交集 + if (null != merchantProductIds) { + if (null != couponIds) { + //取交集 + merchantProductIds.retainAll(couponIds); + } + wxCouponOrder.setCouponIds(merchantProductIds); + }else { + if (null != couponIds) { + wxCouponOrder.setCouponIds(couponIds); + } + } + + //核销商户 + String verifyMerchantName = StringUtils.trimToNull(wxCouponOrder.getVerifyMerchantName()); + if (null != verifyMerchantName) { + WxMerchant merchantQ2 = new WxMerchant(); + merchantQ2.updateTenantInfo(wxCouponOrder); + merchantQ2.setName(verifyMerchantName); + List merchantIds = wxMerchantMapper.findIdList(merchantQ2); + if (null == merchantIds || merchantIds.size() <= 0 ){ + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"核销商户名称查询不到商户记录."); + } + + WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); + merchantBUserQ.setMerchantIds(merchantIds); + List bUserIdList = wxMerchantBUserMapper.findIdList(merchantBUserQ); + if (null == bUserIdList || bUserIdList.size() <= 0 ){ + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"核销商户下查询不到员工信息."); + } + wxCouponOrder.setBUserIdList(bUserIdList); + } + + } + @Override public void exportData(WxCouponOrderBVo wxCouponOrder, HttpServletRequest request, HttpServletResponse response) { String filename = "券订单"; @@ -364,6 +495,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { }); } + handleWxCouponOrderBVoQueryParam(wxCouponOrder); + List list = wxCouponOrderMapper.findListOfAdmin(wxCouponOrder); list.parallelStream().forEach(c -> { if (c.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode())) { diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index e8c6f1de1..043ad0f5b 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -323,6 +323,12 @@ from wx_coupon c + + update wx_coupon diff --git a/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml index acd6114ca..8bbf5af78 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml @@ -133,6 +133,43 @@ where cm.status = 0 and cm.product_id = #{productId} and cm.tenant_id = #{tenantId} - + + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index cc1143960..950b1cd6b 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -872,34 +872,6 @@ - - - - co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.expired_time,co.coupon_order_status,co.order_id, - co.create_date,co.update_date,co.coupon_price, co.verify_type, co.verify_remark,co.pay_vendor, - co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`, - c.title,c.sale_price,c.use_price,c.price, - co.send_merchant_id,c.unit,c.auto_refund,c.business,c.subsidy_type,c.source_type,ms.subsidy subsidy_num, - (CASE WHEN couc.mc = 1 THEN m1.name ELSE '[多商户通用]' END) AS merchant_name, - (CASE WHEN couc.mc = 1 THEN m1.id ELSE 0 END) AS merchant_id, - cu.phone,cu.nick_name,m2.name AS verify_merchant_name,cal.channel_type - - co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id, co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark, co.pay_vendor, @@ -911,23 +883,10 @@ + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxShopMapper.xml b/mallinkService/src/main/resources/mapper/WxShopMapper.xml index 8cb2f3b55..07462c90f 100644 --- a/mallinkService/src/main/resources/mapper/WxShopMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxShopMapper.xml @@ -145,6 +145,12 @@ from wx_shop + +