| | |
| | | |
| | | 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; |
| | |
| | | |
| | | @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("秒杀不存在"); |
| | |
| | | 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("购买数量超过最大限购数量"); |
| | | } |
| | |
| | | |
| | | 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()); |
| | | |
| | | // 同步锁 |
| | |
| | | } |
| | | |
| | | 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("请选择正确的收获地址"); |
| | |
| | | //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()); |
| | | //生成订单号 |
| | |
| | | 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)); |