| @@ -0,0 +1,100 @@ | |||
| create table order_snapshot_0 like order_snapshot; | |||
| create table order_snapshot_1 like order_snapshot; | |||
| create table order_snapshot_2 like order_snapshot; | |||
| create table order_snapshot_3 like order_snapshot; | |||
| create table order_snapshot_4 like order_snapshot; | |||
| create table order_snapshot_5 like order_snapshot; | |||
| create table order_snapshot_6 like order_snapshot; | |||
| create table order_snapshot_7 like order_snapshot; | |||
| create table order_snapshot_8 like order_snapshot; | |||
| create table order_snapshot_9 like order_snapshot; | |||
| create table order_snapshot_10 like order_snapshot; | |||
| create table order_snapshot_11 like order_snapshot; | |||
| create table order_snapshot_12 like order_snapshot; | |||
| create table order_snapshot_13 like order_snapshot; | |||
| create table order_snapshot_14 like order_snapshot; | |||
| create table order_snapshot_15 like order_snapshot; | |||
| create table order_snapshot_16 like order_snapshot; | |||
| create table order_snapshot_17 like order_snapshot; | |||
| create table order_snapshot_18 like order_snapshot; | |||
| create table order_snapshot_19 like order_snapshot; | |||
| create table order_snapshot_20 like order_snapshot; | |||
| create table order_snapshot_21 like order_snapshot; | |||
| create table order_snapshot_22 like order_snapshot; | |||
| create table order_snapshot_23 like order_snapshot; | |||
| create table order_snapshot_24 like order_snapshot; | |||
| create table order_snapshot_25 like order_snapshot; | |||
| create table order_snapshot_26 like order_snapshot; | |||
| create table order_snapshot_27 like order_snapshot; | |||
| create table order_snapshot_28 like order_snapshot; | |||
| create table order_snapshot_29 like order_snapshot; | |||
| create table order_snapshot_30 like order_snapshot; | |||
| create table order_snapshot_31 like order_snapshot; | |||
| create table order_snapshot_32 like order_snapshot; | |||
| create table order_snapshot_33 like order_snapshot; | |||
| create table order_snapshot_34 like order_snapshot; | |||
| create table order_snapshot_35 like order_snapshot; | |||
| create table order_snapshot_36 like order_snapshot; | |||
| create table order_snapshot_37 like order_snapshot; | |||
| create table order_snapshot_38 like order_snapshot; | |||
| create table order_snapshot_39 like order_snapshot; | |||
| create table order_snapshot_40 like order_snapshot; | |||
| create table order_snapshot_41 like order_snapshot; | |||
| create table order_snapshot_42 like order_snapshot; | |||
| create table order_snapshot_43 like order_snapshot; | |||
| create table order_snapshot_44 like order_snapshot; | |||
| create table order_snapshot_45 like order_snapshot; | |||
| create table order_snapshot_46 like order_snapshot; | |||
| create table order_snapshot_47 like order_snapshot; | |||
| create table order_snapshot_48 like order_snapshot; | |||
| create table order_snapshot_49 like order_snapshot; | |||
| create table order_snapshot_50 like order_snapshot; | |||
| create table order_snapshot_51 like order_snapshot; | |||
| create table order_snapshot_52 like order_snapshot; | |||
| create table order_snapshot_53 like order_snapshot; | |||
| create table order_snapshot_54 like order_snapshot; | |||
| create table order_snapshot_55 like order_snapshot; | |||
| create table order_snapshot_56 like order_snapshot; | |||
| create table order_snapshot_57 like order_snapshot; | |||
| create table order_snapshot_58 like order_snapshot; | |||
| create table order_snapshot_59 like order_snapshot; | |||
| create table order_snapshot_60 like order_snapshot; | |||
| create table order_snapshot_61 like order_snapshot; | |||
| create table order_snapshot_62 like order_snapshot; | |||
| create table order_snapshot_63 like order_snapshot; | |||
| create table order_snapshot_64 like order_snapshot; | |||
| create table order_snapshot_65 like order_snapshot; | |||
| create table order_snapshot_66 like order_snapshot; | |||
| create table order_snapshot_67 like order_snapshot; | |||
| create table order_snapshot_68 like order_snapshot; | |||
| create table order_snapshot_69 like order_snapshot; | |||
| create table order_snapshot_70 like order_snapshot; | |||
| create table order_snapshot_71 like order_snapshot; | |||
| create table order_snapshot_72 like order_snapshot; | |||
| create table order_snapshot_73 like order_snapshot; | |||
| create table order_snapshot_74 like order_snapshot; | |||
| create table order_snapshot_75 like order_snapshot; | |||
| create table order_snapshot_76 like order_snapshot; | |||
| create table order_snapshot_77 like order_snapshot; | |||
| create table order_snapshot_78 like order_snapshot; | |||
| create table order_snapshot_79 like order_snapshot; | |||
| create table order_snapshot_80 like order_snapshot; | |||
| create table order_snapshot_81 like order_snapshot; | |||
| create table order_snapshot_82 like order_snapshot; | |||
| create table order_snapshot_83 like order_snapshot; | |||
| create table order_snapshot_84 like order_snapshot; | |||
| create table order_snapshot_85 like order_snapshot; | |||
| create table order_snapshot_86 like order_snapshot; | |||
| create table order_snapshot_87 like order_snapshot; | |||
| create table order_snapshot_88 like order_snapshot; | |||
| create table order_snapshot_89 like order_snapshot; | |||
| create table order_snapshot_90 like order_snapshot; | |||
| create table order_snapshot_91 like order_snapshot; | |||
| create table order_snapshot_92 like order_snapshot; | |||
| create table order_snapshot_93 like order_snapshot; | |||
| create table order_snapshot_94 like order_snapshot; | |||
| create table order_snapshot_95 like order_snapshot; | |||
| create table order_snapshot_96 like order_snapshot; | |||
| create table order_snapshot_97 like order_snapshot; | |||
| create table order_snapshot_98 like order_snapshot; | |||
| create table order_snapshot_99 like order_snapshot; | |||
| @@ -151,6 +151,13 @@ public class BaseMyBatisConfiguration { | |||
| wxOrderSharding.setCount(100); | |||
| wxOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxOrderSharding); | |||
| ShardingSphere orderSnapshotSharding = new ShardingSphere(); | |||
| orderSnapshotSharding.setColumn("tenant_id"); | |||
| orderSnapshotSharding.setTableName("order_snapshot"); | |||
| orderSnapshotSharding.setCount(100); | |||
| orderSnapshotSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(orderSnapshotSharding); | |||
| ShardingSphere wxPayOrderSharding = new ShardingSphere(); | |||
| wxPayOrderSharding.setColumn("tenant_id"); | |||
| @@ -94,8 +94,7 @@ public class OrderSnapshot extends TenantEntity { | |||
| @io.swagger.annotations.ApiModelProperty(value="购买须知",name="remark") | |||
| private String remark; | |||
| @io.swagger.annotations.ApiModelProperty(value="EnumCouponStatus 状态(-1:全部,0:草稿/待生效,1:已生效,2:已失效,3:已作废)",name="status") | |||
| private Integer status; | |||
| @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") | |||
| private Date createDate; | |||
| @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") | |||
| @@ -336,5 +335,50 @@ public class OrderSnapshot extends TenantEntity { | |||
| } | |||
| return valid_date; | |||
| } | |||
| public void initByCoupon(WxCoupon c) { | |||
| this.setType(c.getType()); | |||
| this.setCoverImg(c.getCoverImg()); | |||
| this.setCoverPicture(c.getCoverPicture()); | |||
| this.setDetailPicture(c.getDetailPicture()); | |||
| this.setTitle(c.getTitle()); | |||
| this.setSubTitle(c.getSubTitle()); | |||
| this.setItemGroup(c.getItemGroup()); | |||
| this.setSalePrice(c.getSalePrice()); | |||
| this.setUsePrice(c.getUsePrice()); | |||
| this.setPrice(c.getPrice()); | |||
| this.setTailPrice(c.getTailPrice()); | |||
| this.setOrigPrice(c.getOrigPrice()); | |||
| this.setFreightPrice(c.getFreightPrice()); | |||
| this.setUnit(c.getUnit()); | |||
| this.setUseLimitRule(c.getUseLimitRule()); | |||
| this.setUseLimitQuantity(c.getUseLimitQuantity()); | |||
| this.setSendType(c.getSendType()); | |||
| this.setValidType(c.getValidType()); | |||
| this.setValidDays(c.getValidDays()); | |||
| this.setValidStartDate(c.getValidStartDate()); | |||
| this.setValidEndDate(c.getValidEndDate()); | |||
| this.setPickStartDate(c.getPickStartDate()); | |||
| this.setPickEndDate(c.getPickEndDate()); | |||
| this.setBusiness(c.getBusiness()); | |||
| this.setSubBusiness(c.getSubBusiness()); | |||
| this.setContentType(c.getContentType()); | |||
| this.setDetail(c.getDetail()); | |||
| this.setRemark(c.getRemark()); | |||
| this.setHtml(c.getHtml()); | |||
| this.setSupportTransfer(c.getSupportTransfer()); | |||
| this.setSubsidyNum(c.getSubsidyNum()); | |||
| this.setSubsidyType(c.getSubsidyType()); | |||
| this.setAutoRefund(c.getAutoRefund()); | |||
| this.setPressLimitNum(c.getPressLimitNum()); | |||
| this.setPressLimitHours(c.getPressLimitHours()); | |||
| this.setCreditPrice(c.getCreditPrice()); | |||
| this.setCreditRefund(c.getCreditRefund()); | |||
| this.setConditions(c.getConditions()); | |||
| this.setPasswordSupport(c.getPasswordSupport()); | |||
| this.setSourceType(c.getSourceType()); | |||
| } | |||
| } | |||
| @@ -11,6 +11,6 @@ public interface OrderSnapshotService { | |||
| ResultData getOrderSnapshotByComposeOrderId(TenantEntity tenantEntity,Long composeOrderId); | |||
| int saveOrderSnapshot(WxOrder order); | |||
| void saveOrderSnapshot(WxOrder order); | |||
| } | |||
| @@ -1,10 +1,17 @@ | |||
| package com.iformall.service.impl; | |||
| import com.alibaba.fastjson.JSON; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.domain.vo.WxMerchantVo; | |||
| import com.iformall.enums.EnumCouponType; | |||
| import com.iformall.enums.EnumMerchantStatus; | |||
| import com.iformall.mapper.OrderSnapshotMapper; | |||
| import com.iformall.mapper.WxCouponMapper; | |||
| import com.iformall.mapper.WxOrderMapper; | |||
| import com.iformall.service.*; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| @@ -12,7 +19,11 @@ import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.scheduling.annotation.Async; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.ArrayList; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| import java.util.stream.Collectors; | |||
| @Service | |||
| @@ -23,6 +34,15 @@ public class OrderSnapshotServiceImpl implements OrderSnapshotService { | |||
| @Autowired | |||
| OrderSnapshotMapper orderSnapshotMapper; | |||
| @Autowired | |||
| WxOrderMapper wxOrderMapper; | |||
| @Autowired | |||
| WxCouponMapper wxCouponMapper; | |||
| @Autowired | |||
| WxMerchantService wxMerchantService; | |||
| @Override | |||
| public ResultData getOrderSnapshotByOrderId(TenantEntity tenantEntity, Long orderId) { | |||
| OrderSnapshot os = new OrderSnapshot(); | |||
| @@ -49,13 +69,55 @@ public class OrderSnapshotServiceImpl implements OrderSnapshotService { | |||
| @Async | |||
| @Override | |||
| public int saveOrderSnapshot(WxOrder order) { | |||
| public void saveOrderSnapshot(WxOrder order) { | |||
| try{ | |||
| WxOrder wxOrder = wxOrderMapper.selectById(order.getId(), order.getTenantId()); | |||
| if(wxOrder == null){ | |||
| logger.error("同步订单快照异常---未找到订单数据"); | |||
| return ; | |||
| } | |||
| WxCoupon wxCoupon = wxCouponMapper.selectById(order.getProductId(),order.getTenantId()); | |||
| if(wxCoupon == null){ | |||
| logger.error("同步订单快照异常---未找到商品数据"); | |||
| return ; | |||
| } | |||
| OrderSnapshot snapshot = new OrderSnapshot(); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| Date now = new Date(); | |||
| snapshot.updateTenantInfo(wxCoupon); | |||
| snapshot.setId(idWorker.nextId()); | |||
| snapshot.setComposeOrderId(wxOrder.getComposeOrderId()); | |||
| snapshot.setOrderId(wxOrder.getId()); | |||
| snapshot.initByCoupon(wxCoupon); | |||
| List<Long> couponIdList = new ArrayList<Long>(); | |||
| couponIdList.add(wxCoupon.getId()); | |||
| Map<Long, List<WxMerchantVo>> couponMerchantVoMap = wxMerchantService.findCouponMerchantVoList(couponIdList, wxCoupon,true); | |||
| List<WxMerchantVo> merchantList = couponMerchantVoMap.get(wxCoupon.getId()); | |||
| if (merchantList != null) { | |||
| merchantList = merchantList.stream().filter( | |||
| m->m.getMerchantStatus().equals(EnumMerchantStatus.VALID.getCode())) | |||
| .collect(Collectors.toList()); | |||
| } | |||
| snapshot.setMerchasntList(JSON.toJSONString(merchantList)); | |||
| if(EnumCouponType.COUPON_GIFT.getCode().equals(wxCoupon.getType())){ | |||
| WxCoupon coupon = new WxCoupon(); | |||
| coupon.updateTenantInfo(wxCoupon); | |||
| List<Long> longs = JSON.parseArray(wxCoupon.getGiftList(), Long.class); | |||
| if(longs != null && longs.size() > 0){ | |||
| coupon.setIds(longs); | |||
| List<WxCoupon> giftList = wxCouponMapper.findList(coupon); | |||
| snapshot.setGiftList(JSON.toJSONString(giftList)); | |||
| } | |||
| } | |||
| snapshot.setCreateDate(now); | |||
| snapshot.setUpdateDate(now); | |||
| orderSnapshotMapper.insert(snapshot); | |||
| }catch(Exception e){ | |||
| logger.error("同步订单快照异常"+e.getMessage()); | |||
| } | |||
| return 0; | |||
| return ; | |||
| } | |||
| } | |||
| @@ -935,8 +935,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||
| } | |||
| } | |||
| //订单快照 | |||
| orderSnapshotService.saveOrderSnapshot(order); | |||
| try{ | |||
| orderSnapshotService.saveOrderSnapshot(order); | |||
| }catch(Exception e){ | |||
| logger.error("订单快照 error"+e.getMessage()); | |||
| } | |||
| } | |||
| } | |||
| @@ -32,7 +32,6 @@ | |||
| <result column="orig_price" jdbcType="INTEGER" property="origPrice"/> | |||
| <result column="unit" jdbcType="INTEGER" property="unit"/> | |||
| <result column="remark" jdbcType="VARCHAR" property="remark"/> | |||
| <result column="status" jdbcType="INTEGER" property="status"/> | |||
| <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> | |||
| <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> | |||
| <result column="business" jdbcType="INTEGER" property="business"/> | |||
| @@ -59,7 +58,7 @@ | |||
| `id`,`tenant_id`,`parent_tenant_id`,`order_id`,`compose_order_id`,`type`,`cover_img`,`cover_picture`,`detail_picture`, | |||
| `title`,`sub_title`,`item_group`,`sale_price`,`freight_price`,`use_price`,`use_limit_rule`,`use_limit_quantity`,`send_type`, | |||
| `valid_type`,`valid_start_date`,`valid_end_date`,pick_start_date,pick_end_date,`valid_days`,`detail`,`price`,tail_price,orig_price,`unit`, | |||
| `remark`,`status`,`create_date`,`update_date`,`business`,`sub_business`,`support_transfer`,`subsidy_num`,`subsidy_type`, | |||
| `remark`,`create_date`,`update_date`,`business`,`sub_business`,`support_transfer`,`subsidy_num`,`subsidy_type`, | |||
| `press_limit_num`, `press_limit_hours`, `auto_refund`,`credit_price`,`credit_refund`, | |||
| `conditions`,content_type,source_type,password_support,gift_list,merchant_list | |||
| </sql> | |||