diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponCar.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponCar.java index 28222f54c..4a30b7d84 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponCar.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponCar.java @@ -28,4 +28,5 @@ public class WxCouponCar extends TenantEntity { @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value = "审批流参数", name = "flowParams") private Map flowParams; + } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderCarCVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderCarCVo.java index c8bd8b505..24f822cbf 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderCarCVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderCarCVo.java @@ -13,9 +13,6 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) public class WxCouponOrderCarCVo extends WxCouponOrderCVo { - @io.swagger.annotations.ApiModelProperty(value="couponFreeId",name="couponFreeId") - private Integer couponFreeId; - @io.swagger.annotations.ApiModelProperty(value="车场厂商相关信息",name="vendorParams") private String vendorParams; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index f4e76458b..904108788 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -41,7 +41,7 @@ public interface WxCouponOrderMapper extends CommonMapper { //统一额度统计接口 int queryPriceTotal(WxCouponOrder wxCouponOrder); - List findCarListOfCUser(WxCouponOrder wxCouponOrder); + List findCarListOfCUser(WxCouponOrder wxCouponOrder); List findListOfOrderedByDateForBUser(Map dateMap); List findListOfVerifiedByDateForBUser(Map dateMap); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index fedff01db..a8715a766 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -222,4 +222,6 @@ public interface WxCouponOrderService { /// POS接口 List findAvailCouponOrder(TenantEntity tenantEntity,Long cUserId,Long merchantId,Long posOrderId); + + } 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 b198e2818..358d7d587 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -190,6 +190,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxShopMapper wxShopMapper; @Autowired WxMerchantShopMapper wxMerchantShopMapper; + + @Autowired + WxCouponCarMapper wxCouponCarMapper; private final SimpleDateFormat mydateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -664,13 +667,126 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override public ResultData carListCUserVoAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { - return new ResultData(PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findCarListOfCUser(record))); + return new ResultData(findCarListOfCUser(record,pageIndex,pageSize)); } @Override public List carListCUserVo(WxCouponOrder record) { - return wxCouponOrderMapper.findCarListOfCUser(record); + return findCarListOfCUser(record,1,10).getList(); } + + private PageInfo findCarListOfCUser(WxCouponOrder wxCouponOrder,Integer pageIndex, Integer pageSize){ + WxCoupon couponQ = new WxCoupon(); + couponQ.updateTenantInfo(wxCouponOrder); + List types = new ArrayList(); + types.add(5); + types.add(51); + couponQ.setTypes(types); + List couponIdList = wxCouponMapper.findIdList(couponQ); + if (null == couponIdList || couponIdList.size() <= 0 ) { + return null; + } + wxCouponOrder.setCouponIds(couponIdList); + PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findCarListOfCUser(wxCouponOrder)); + PageInfo retPageInfo = new PageInfo(); + retPageInfo.setPageNum(pageInfo.getPageNum()); + retPageInfo.setPageSize(pageInfo.getPageSize()); + retPageInfo.setList(couponOrderListToCarVoList(wxCouponOrder,pageInfo.getList())); + return retPageInfo; + } + + + private List couponOrderListToCarVoList(TenantEntity tenantEntity,List couponOrderList) { + if (null != couponOrderList) { + //查询coupon + List couponIds = new ArrayList(); + for (int i = 0 ; i < couponOrderList.size(); i++){ + WxCouponOrder co = couponOrderList.get(i); + Long couponId = co.getCouponId(); + if (null != couponId && (!couponIds.contains(couponId))) { + couponIds.add(couponId); + } + } + WxCoupon couponQ = new WxCoupon(); + couponQ.updateTenantInfo(tenantEntity); + if (couponIds.size() > 0 ) { + couponQ.setIds(couponIds); + } + List couponList = wxCouponMapper.findTenantSimpleList(couponQ); + Map couponMap = new HashMap(); + if (null != couponList) { + for (int i = 0 ; i < couponList.size(); i++ ) { + WxCoupon c = couponList.get(i); + if (null != c) { + couponMap.put(c.getId(), c); + } + } + } + + WxCouponCar couponCarQ = new WxCouponCar(); + couponCarQ.updateTenantInfo(tenantEntity); + if (couponIds.size() > 0 ) { + couponCarQ.setIds(couponIds); + } + List couponCarList = wxCouponCarMapper.findList(couponCarQ); + Map couponCarMap = new HashMap(); + if (null != couponCarList) { + for (int i = 0 ; i < couponCarList.size(); i++ ) { + WxCouponCar cc = couponCarList.get(i); + if (null != cc) { + couponCarMap.put(cc.getId(), cc); + } + } + } + + List volist = new ArrayList(); + for (int i = 0 ; i < couponOrderList.size(); i++){ + WxCouponOrder co = couponOrderList.get(i); + WxCouponOrderCarCVo cvo = getCouponOrderCarVo(co,couponMap,couponCarMap); + if (null != cvo) { + volist.add(cvo); + } + + } + return volist; + } + return null; + } + + private WxCouponOrderCarCVo getCouponOrderCarVo(WxCouponOrder co,Map couponMap,Map couponCarMap) { + if (null == co) { + return null; + } + try { + WxCouponOrderCarCVo cvo = new WxCouponOrderCarCVo(); + BeanUtils.copyProperties(cvo, co); + WxCoupon coupon = couponMap.get(cvo.getCouponId()); + if (null != coupon) { + cvo.setType(coupon.getType()); + cvo.setCoverImg(coupon.getCoverImg()); + cvo.setTitle(coupon.getTitle()); + cvo.setSubTitle(coupon.getSubTitle()); + cvo.setSalePrice(coupon.getSalePrice()); + cvo.setUsePrice(coupon.getUsePrice()); + cvo.setPrice(coupon.getPrice()); + cvo.setUnit(coupon.getUnit()); + cvo.setValidType(coupon.getValidType()); + cvo.setValidStartDate(coupon.getValidStartDate()); + cvo.setValidEndDate(coupon.getValidEndDate()); + cvo.setAutoRefund(coupon.getAutoRefund()); + } + WxCouponCar couponCar= couponCarMap.get(cvo.getCouponId()); + if (null != couponCar) { + cvo.setVendorParams(couponCar.getVendorParams()); + } + return cvo; + } catch (IllegalAccessException | InvocationTargetException e) { + logger.error("getCouponOrderCarVo error.",e); + } + return null; + } + + @Override public ResultData listAdminAsPage(WxCouponOrderBVo wxCouponOrderBVo, Integer pageIndex, Integer pageSize) { 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 6c194f7fc..c326a17aa 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 @@ -371,8 +371,13 @@ public class EtcpHelper { String ret = ""; try { + + String couponFreeId = couponFreeIdFromJson(userCar.getVendorParams()); + if (StringUtils.isBlank(couponFreeId)) { + return new ResultData(ErrorCode.DB_FAIL.getCode(), "vendorParams解析错误"); + } ret = etcp.bCouponRecord(url, merchantNo, merchantKey, version, - etcpToken, park.getParkId(), businessId, carNumber, String.valueOf(userCar.getCouponFreeId())); + etcpToken, park.getParkId(), businessId, carNumber, couponFreeId); } catch (MallinkException e) { logger.error("ETCP failed: " + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); @@ -392,6 +397,20 @@ public class EtcpHelper { } } + private String couponFreeIdFromJson(String json) { + if (StringUtils.isBlank(json)) { + return null; + } + JSONObject object = JSON.parseObject(json); + if (null != object) { + Integer id = object.getInteger("id"); + if (null != id) { + return String.valueOf(id); + } + } + return null; + } + public void updateWxCouponOrderUsed(WxCouponOrderCarCVo userCar,WxPark park) throws Exception { // 券状态设为已使用 WxCouponOrder couponOrder = new WxCouponOrder(); diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 0aeb866cf..64fb43cad 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -303,8 +303,8 @@ and type not in - - #{typeItem} + + #{ntypeItem} @@ -314,6 +314,13 @@ #{statusItem} + + + and type in + + #{typeItem} + + order by ${sortColumns} @@ -332,6 +339,12 @@ #{idItem} + + and type in + + #{typeItem} + + select 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, - co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info` from wx_coupon_order co where co.id = #{id} and co.tenant_id = #{tenantId} @@ -988,78 +988,32 @@ - - co.id,co.tenant_id,co.parent_tenant_id,co.coupon_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, - c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.unit, - json_extract(car.vendor_params,'$.id') as coupon_free_id,car.vendor_params - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + select + co.id,co.tenant_id,co.parent_tenant_id,co.coupon_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 + from wx_coupon_order co + where co.c_user_id = #{cUserId} + + and co.id = #{id} + and co.`tenant_id` = #{tenantId} and co.`parent_tenant_id` = #{parentTenantId} - - and co.id = #{id} - AND ( co.coupon_order_status = #{couponOrderStatus} OR co.coupon_order_status = 100 ) AND co.coupon_order_status = #{couponOrderStatus} + + and co.coupon_id in + + #{couponIdItem} + + order by ${sortColumns}