xiaoyong931011
2021-04-12 a13a93a493e7e94e28b2225c26e7e13b52d3288c
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesSecKillServiceImpl.java
@@ -2,7 +2,7 @@
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.matrix.biz.bean.BizUser;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.component.tools.WxUtils;
import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData;
@@ -61,7 +61,7 @@
    @Override
    public AjaxResult createSecKillOrder(CreateSecKillDTO secKillDTO) throws Exception {
        BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        ShopActivitiesSeckillInfo seckillInfo = shopActivitiesSeckillInfoDao.selectById(secKillDTO.getId());
        if (seckillInfo == null) {
            return AjaxResult.buildFailInstance("秒杀不存在");
@@ -86,7 +86,7 @@
                return AjaxResult.buildFailInstance("购买数量超过最大限购数量");
            }
            int count = shopActivitiesSeckillRecordDao.selectCountSecKill(seckillInfo.getId(), bizUser.getOpenId());
            int count = shopActivitiesSeckillRecordDao.selectCountSecKill(seckillInfo.getId(), sysVipInfo.getOpenId());
            if (secKillDTO.getCount() + count > seckillInfo.getSiLimitCnt()) {
                return AjaxResult.buildFailInstance("购买数量超过最大限购数量");
            }
@@ -94,15 +94,15 @@
        secKillDTO.setPrice(seckillInfo.getSiPrice());
        secKillDTO.setGoodsId(seckillInfo.getGoodsId().intValue());
        secKillDTO.setOpenId(bizUser.getOpenId());
        secKillDTO.setOpenId(sysVipInfo.getOpenId());
        ShopOrder shopOrder = createOrder(secKillDTO);
        ShopActivitiesSeckillRecord seckillRecord = new ShopActivitiesSeckillRecord();
        seckillRecord.setOrderId(shopOrder.getId().longValue());
        seckillRecord.setSiId(seckillInfo.getId());
        seckillRecord.setUserId(bizUser.getOpenId());
        seckillRecord.setCreateBy(bizUser.getNickName() == null ? "游客" : bizUser.getNickName());
        seckillRecord.setUpdateBy(bizUser.getNickName() == null ? "游客" : bizUser.getNickName());
        seckillRecord.setUserId(sysVipInfo.getId());
        seckillRecord.setCreateBy(sysVipInfo.getNickName() == null ? "游客" : sysVipInfo.getNickName());
        seckillRecord.setUpdateBy(sysVipInfo.getNickName() == null ? "游客" : sysVipInfo.getNickName());
        seckillRecord.setCompanyId(seckillInfo.getCompanyId());
        // 同步锁
@@ -126,7 +126,7 @@
    }
    private ShopOrder createOrder(CreateSecKillDTO secKillDTO) {
        BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        ShopReceiveAddress shopReceiveAddress = shopReceiveAddressDao.selectById(secKillDTO.getAddressId());
        if (shopReceiveAddress == null) {
            throw new GlobleException("请选择正确的收获地址");
@@ -173,12 +173,12 @@
        //TODO 更新库存和销量 更新库存和销量[考虑和erp库存联动]
        wxShopOrderUtil.updateProductAndSkuInfo(details);
        shopOrder.setUserId(secKillDTO.getOpenId());
        shopOrder.setUserId(secKillDTO.getId());
        shopOrder.setCreateBy("微信小程序生成");
        shopOrder.setUpdateBy("微信小程序生成");
        shopOrder.setCommodityPrice(secKillDTO.getPrice());
        shopOrder.setPurchaseQuantity(1);
        shopOrder.setCompanyId(bizUser.getCompanyId());
        shopOrder.setCompanyId(sysVipInfo.getCompanyId());
        //购买方式
        shopOrder.setShippingMethod(secKillDTO.getShippingMethod());
        //生成订单号
@@ -203,15 +203,15 @@
        shopOrder.setPayResult(ShopOrder.ORDER_WX_STATUS_WAIT_PAY);
        //如果没有提交购买方式或配送方式不是物流
        //获取邮费
        BigDecimal postPrice = wxShopOrderService.calculationPostage(secKillDTO.getPrice(),bizUser.getCompanyId());
        BigDecimal postPrice = wxShopOrderService.calculationPostage(secKillDTO.getPrice(),sysVipInfo.getCompanyId());
        shopOrder.setPostage(postPrice);
        BigDecimal payPrice = secKillDTO.getPrice().multiply(BigDecimal.valueOf(secKillDTO.getCount())).add(shopOrder.getPostage());
        shopOrder.setOrderMoney(payPrice);
        DiscountExplain discountExplain = new DiscountExplain();
        discountExplain.setPayPrice(payPrice);
        discountExplain.setPostage(postPrice);
        discountExplain.setActivity(BigDecimal.ZERO);
        discountExplain.setCoupon(BigDecimal.ZERO);
        discountExplain.setActivityPrice(BigDecimal.ZERO);
        discountExplain.setCouponPrice(BigDecimal.ZERO);
        discountExplain.setBillPrice(payPrice);
        Gson g = new GsonBuilder().create();
        shopOrder.setDiscountExplain(g.toJson(discountExplain));