From a13a93a493e7e94e28b2225c26e7e13b52d3288c Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 12 Apr 2021 19:48:45 +0800 Subject: [PATCH] 20210412 tqq环境 --- zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java | 81 +++++++++++++++++++++++++--------------- 1 files changed, 51 insertions(+), 30 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java index d4a5664..e702535 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java @@ -3,7 +3,7 @@ import cn.hutool.core.collection.CollUtil; 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.rabbitmq.RabiitMqTemplate; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.component.tools.WxUtils; @@ -18,6 +18,8 @@ import com.matrix.system.common.dao.CustomerDataDictionaryDao; import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.hive.dao.ShoppingGoodsDao; +import com.matrix.system.hive.dao.SysVipInfoDao; +import com.matrix.system.score.dao.ScoreVipDetailDao; import com.matrix.system.shopXcx.api.action.PayThreadPool; import com.matrix.system.shopXcx.api.pojo.OrderCouponGroup; import com.matrix.system.shopXcx.api.pojo.OrderInfoQueryPOJO; @@ -100,6 +102,12 @@ @Autowired private BusParameterSettingsDao busParameterSettingsDao; + @Autowired + private ScoreVipDetailDao scoreVipDetailDao; + + + @Autowired + private SysVipInfoDao sysVipInfoDao; @Override public BigDecimal calculationPostage(BigDecimal payPrice, Long companyId) { BigDecimal postage = BigDecimal.ZERO; @@ -124,7 +132,7 @@ @Transactional(rollbackFor = Exception.class) @Override public AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception { - BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); + SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); //校验收货地址 @@ -133,28 +141,26 @@ return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择正确的收获地址"); } - AjaxResult caculateResult= buildDiscountExplain(shopOrderDto); - - //计算订单优惠信息 + AjaxResult caculateResult= buildDiscountExplain(shopOrderDto); DiscountExplain discountExplain= (DiscountExplain) caculateResult.getMapInfo().get("discountExplain"); - - - //取出购物车中选中的产品 - List<ShopShoppingCart> buyCart = new ArrayList<>(); - //取出购物车中没有参加店铺活动的产品,和参加了店铺活动但是活动没有达到标准的产品,用来计算是否可以使用优惠券 - List<ShopShoppingCart> notCouponuyCart = new ArrayList<>(); - + if(discountExplain.getScorePay()!=null){ + //校验用户积分是否够用 + int score=scoreVipDetailDao.selectUserTotalScore(sysVipInfo.getId()); + if(score<discountExplain.getScorePay()){ + return AjaxResult.buildFailInstance("积分不足"); + } + } ShopOrder shopOrder = new ShopOrder(); - shopOrder.setCompanyId(bizUser.getCompanyId()); + shopOrder.setCompanyId(sysVipInfo.getCompanyId()); shopOrder.setStoreId(Integer.parseInt(shopOrderDto.getShopId().toString())); //默认设置为产品类型 shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); List<ShopOrderDetails> details = new ArrayList<>(); - Integer cartCount = 0; + Integer orderCount = 0; for (OrderItemDto orderItemDto : shopOrderDto.getOrderItemList()) { ShopOrderDetails shopOrderDetails = new ShopOrderDetails(); shopOrderDetails.setCreateBy(AppConstance.SYSTEM_USER); @@ -178,19 +184,24 @@ shopOrderDetails.setDiscountAmount(BigDecimal.ZERO); details.add(shopOrderDetails); - cartCount += shopOrderDetails.getCount(); + orderCount += shopOrderDetails.getCount(); + if(orderItemDto.getCartId()!=null){ + //删除用户购物车选中的产品 + shoppingCartDao.deleteById(orderItemDto.getCartId()); + } + } //校验商品是否限购 - wxShopOrderUtil.verifyProductLimitInfo(details, bizUser.getOpenId()); + wxShopOrderUtil.verifyProductLimitInfo(details, sysVipInfo.getOpenId()); //TODO 更新库存和销量 更新库存和销量[考虑和erp库存联动] wxShopOrderUtil.updateProductAndSkuInfo(details); //用户openId - shopOrder.setUserId(bizUser.getOpenId()); + shopOrder.setUserId(sysVipInfo.getId()); shopOrder.setCreateBy("微信小程序生成"); shopOrder.setUpdateBy("微信小程序生成"); shopOrder.setCommodityPrice(discountExplain.getBillPrice()); - shopOrder.setPurchaseQuantity(cartCount); + shopOrder.setPurchaseQuantity(orderCount); shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); //购买方式 shopOrder.setShippingMethod(shopOrderDto.getDeliverySelect()); @@ -219,6 +230,7 @@ //获取邮费 shopOrder.setPostage(discountExplain.getPostage()); shopOrder.setOrderMoney(discountExplain.getPayPrice()); + shopOrder.setScorePay(discountExplain.getScorePay()); Gson g = new GsonBuilder().create(); shopOrder.setDiscountExplain(g.toJson(discountExplain)); shopOrder.setDiscountAmount(discountExplain.getActivityPrice().add(discountExplain.getCouponPrice())); @@ -242,8 +254,6 @@ shopCouponRecordDao.updateByModel(record); } - //删除用户购物车选中的产品 - shoppingCartDao.deleteUserSelectCart(bizUser.getOpenId()); BrandWCPayRequestData payData = startPayment(shopOrder); @@ -271,7 +281,7 @@ //支付总积分 Integer scoreCount=0; - BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); + SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); //计算购物车中物品的优惠信息 List<OrderItemDto> orderItemDtos = shopOrderDto.getOrderItemList() @@ -319,7 +329,7 @@ //满足店铺活动的订单不能使用优惠券 if (conditionsGroupCount > 0) { //计算可用优惠券 - usefulCoupon = wxShopCouponService.getCartVoCouponList(bizUser.getCompanyId(), orderItemDtos); + usefulCoupon = wxShopCouponService.getCartVoCouponList(sysVipInfo.getCompanyId(), orderItemDtos); //获取用户使用的优惠券 if (shopOrderDto.getCouponReceiveId() == null) { //如果用户没有选择优惠券则默认选优惠金额最高的 @@ -388,6 +398,15 @@ if (!shopOrder.getPayResult().equals(ShopOrder.ORDER_PAY_STATUS_WAIT)) { throw new GlobleException("该订单不是待支付状态!"); } + + if(shopOrder.getScorePay()!=null){ + //校验用户积分是否够用 + int score=scoreVipDetailDao.selectUserTotalScore(shopOrder.getUserId()); + if(score<shopOrder.getScorePay()){ + return AjaxResult.buildFailInstance("积分不足"); + } + } + BrandWCPayRequestData payData = startPayment(shopOrder); AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(payData)); result.putInMap("orderId", shopOrder.getId()); @@ -407,13 +426,15 @@ BigDecimal money = new BigDecimal(shopOrder.getOrderMoney().toString()); BrandWCPayRequestData payData; String productNames = wxShopOrderUtil.getProductNames(shopOrder.getUserId(), shopOrder.getId()); + SysVipInfo vipInfo=sysVipInfoDao.selectById(shopOrder.getUserId()); + LogUtil.debug(String.valueOf(isDebug)); if (isDebug) { payData = weixinServiceUtil.createOrder("[测试]" + productNames, shopOrder.getOrderNo(), - 1, shopOrder.getUserId(), String.valueOf(shopOrder.getId())); + 1, vipInfo.getOpenId(), String.valueOf(shopOrder.getId())); } else { payData = weixinServiceUtil.createOrder(productNames, shopOrder.getOrderNo(), - unit.multiply(money).intValue(), shopOrder.getUserId(), String.valueOf(shopOrder.getId())); + unit.multiply(money).intValue(),vipInfo.getOpenId(), String.valueOf(shopOrder.getId())); } ShopOrder updateParam = new ShopOrder(); updateParam.setId(shopOrder.getId()); @@ -430,12 +451,12 @@ */ @Override public AjaxResult getMyOrderInfo(OrderInfoQueryPOJO orderInfoQueryPOJO) { - BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); + SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); orderInfoQueryPOJO.setSort("update_time"); if (orderInfoQueryPOJO.getOffset() >= 1) { orderInfoQueryPOJO.setOffset((orderInfoQueryPOJO.getOffset() - 1) * orderInfoQueryPOJO.getLimit()); } - List<ShopOrder> result = shopOrderDao.selectMyOrderByStatus(bizUser.getOpenId(), orderInfoQueryPOJO); + List<ShopOrder> result = shopOrderDao.selectMyOrderByStatus(sysVipInfo.getId(), orderInfoQueryPOJO); return new AjaxResult(AjaxResult.STATUS_SUCCESS, result); } @@ -447,8 +468,8 @@ */ @Override public AjaxResult getOrderInfoById(Integer orderId) { - BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); - ShopOrder shopOrder = shopOrderDao.selectOrderInfoById(bizUser.getOpenId(), orderId); + SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); + ShopOrder shopOrder = shopOrderDao.selectOrderInfoById(sysVipInfo.getId(), orderId); return new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(shopOrder)); } @@ -469,8 +490,8 @@ } if (shopOrder.getDiscountAmount() != null && shopOrder.getDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { ShopCouponRecord shopCouponRecord = new ShopCouponRecord(); - BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); - shopCouponRecord.setUserId(bizUser.getOpenId()); + SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); + shopCouponRecord.setUserId(sysVipInfo.getId()); shopCouponRecord.setOrderId(orderId); List<ShopCouponRecord> recordList = shopCouponRecordDao.selectByModel(shopCouponRecord); if (CollectionUtils.isNotEmpty(recordList)) { -- Gitblit v1.9.1