From 66d2da225aff8d3ca59c857659e4f6766009545a Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 17 Nov 2021 11:49:37 +0800
Subject: [PATCH] Merge branch 'score_shop' of http://120.27.238.55:7000/r/beauty-erp into score_shop
---
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java | 123 +++++++++++++++++++++++------------------
1 files changed, 69 insertions(+), 54 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..7982cf2 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,9 +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.component.rabbitmq.RabiitMqTemplate;
-import com.matrix.component.redis.RedisUserLoginUtils;
+import com.matrix.system.common.init.UserCacheManager;
import com.matrix.component.tools.WxUtils;
import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData;
import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
@@ -17,7 +15,10 @@
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
import com.matrix.system.common.interceptor.HostInterceptor;
+import com.matrix.system.hive.bean.SysVipInfo;
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;
@@ -27,7 +28,6 @@
import com.matrix.system.shopXcx.api.service.ShoppingCartService;
import com.matrix.system.shopXcx.api.service.WXShopOrderService;
import com.matrix.system.shopXcx.api.service.WxShopCouponService;
-import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil;
import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil;
import com.matrix.system.shopXcx.api.vo.CouponReceiveInfoVO;
import com.matrix.system.shopXcx.bean.*;
@@ -53,9 +53,7 @@
@Autowired
private WxShopOrderUtil wxShopOrderUtil;
@Autowired
- private WxShopCouponUtil wxShopCouponUtil;
- @Autowired
- private RedisUserLoginUtils redisUserLoginUtils;
+ private UserCacheManager userCacheManager;
@Autowired
private WeixinServiceUtil weixinServiceUtil;
@Autowired
@@ -66,8 +64,6 @@
private ShopOrderDao shopOrderDao;
@Autowired
private ShopOrderDetailsDao shopOrderDetailsDao;
- @Autowired
- private ShopCouponDao shopCouponDao;
@Autowired
private ShopProductDao shopProductDao;
@Autowired
@@ -100,6 +96,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;
@@ -123,38 +125,34 @@
*/
@Transactional(rollbackFor = Exception.class)
@Override
- public AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception {
- BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
+ public ShopOrder createShopOrder(ShopOrderDto shopOrderDto) throws Exception {
+ SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
- //校验收货地址
+
ShopReceiveAddress shopReceiveAddress = shopReceiveAddressDao.selectById(shopOrderDto.getReceiveAddrId());
- if (shopReceiveAddress == null) {
- 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()){
+ throw new GlobleException("积分不足");
+ }
+ }
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 +176,25 @@
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.setPayMethod(shopOrderDto.getPayMethod());
shopOrder.setCommodityPrice(discountExplain.getBillPrice());
- shopOrder.setPurchaseQuantity(cartCount);
+ shopOrder.setPurchaseQuantity(orderCount);
shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS);
//购买方式
shopOrder.setShippingMethod(shopOrderDto.getDeliverySelect());
@@ -219,6 +223,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,15 +247,10 @@
shopCouponRecordDao.updateByModel(record);
}
- //删除用户购物车选中的产品
- shoppingCartDao.deleteUserSelectCart(bizUser.getOpenId());
- BrandWCPayRequestData payData = startPayment(shopOrder);
- AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(payData));
- result.putInMap("orderId", shopOrder.getId());
- return result;
+ return shopOrder;
}
@Override
@@ -271,7 +271,7 @@
//支付总积分
Integer scoreCount=0;
- BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
+ SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
//计算购物车中物品的优惠信息
List<OrderItemDto> orderItemDtos = shopOrderDto.getOrderItemList()
@@ -317,9 +317,9 @@
List<CouponReceiveInfoVO> usefulCoupon = new ArrayList<>();
CouponReceiveInfoVO shopCoupon = new CouponReceiveInfoVO();
//满足店铺活动的订单不能使用优惠券
- if (conditionsGroupCount > 0) {
+ if (conditionsGroupCount <= 0) {
//计算可用优惠券
- usefulCoupon = wxShopCouponService.getCartVoCouponList(bizUser.getCompanyId(), orderItemDtos);
+ usefulCoupon = wxShopCouponService.getCartVoCouponList(sysVipInfo.getCompanyId(), orderItemDtos);
//获取用户使用的优惠券
if (shopOrderDto.getCouponReceiveId() == null) {
//如果用户没有选择优惠券则默认选优惠金额最高的
@@ -345,9 +345,11 @@
//计算运费
- discountExplain.setPostage(calculationPostage(discountExplain.getPayPrice(), HostInterceptor.getCompanyId()));
-
-
+ if(ShopOrder.SHIPPING_METHOD_WL==shopOrderDto.getDeliverySelect()){
+ discountExplain.setPostage(calculationPostage(billPrice, HostInterceptor.getCompanyId()));
+ }else{
+ discountExplain.setPostage(BigDecimal.ZERO);
+ }
//账单总金额
discountExplain.setBillPrice(billPrice.add(discountExplain.getPostage()));
@@ -382,12 +384,25 @@
@Override
public AjaxResult orderSettlement(int orderId) throws Exception {
ShopOrder shopOrder = shopOrderDao.selectById(orderId);
+
if (shopOrder == null) {
- throw new GlobleException("订单不存在!");
+ return AjaxResult.buildFailInstance("订单不存在!");
+ }
+ if (ShopOrder.SHOP_ORDER_PAY_METHOD_WX != shopOrder.getPayMethod()) {
+ return AjaxResult.buildFailInstance("支付方式错误");
}
if (!shopOrder.getPayResult().equals(ShopOrder.ORDER_PAY_STATUS_WAIT)) {
- throw new GlobleException("该订单不是待支付状态!");
+ return AjaxResult.buildFailInstance("该订单不是待支付状态!");
}
+
+ 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 +422,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 +447,12 @@
*/
@Override
public AjaxResult getMyOrderInfo(OrderInfoQueryPOJO orderInfoQueryPOJO) {
- BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
+ SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
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 +464,8 @@
*/
@Override
public AjaxResult getOrderInfoById(Integer orderId) {
- BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
- ShopOrder shopOrder = shopOrderDao.selectOrderInfoById(bizUser.getOpenId(), orderId);
+ SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
+ ShopOrder shopOrder = shopOrderDao.selectOrderInfoById(sysVipInfo.getId(), orderId);
return new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(shopOrder));
}
@@ -469,8 +486,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 = userCacheManager.getLoginUser();
+ shopCouponRecord.setUserId(sysVipInfo.getId());
shopCouponRecord.setOrderId(orderId);
List<ShopCouponRecord> recordList = shopCouponRecordDao.selectByModel(shopCouponRecord);
if (CollectionUtils.isNotEmpty(recordList)) {
@@ -595,8 +612,6 @@
* @param orderId
* @return
*/
- @Autowired
- RabiitMqTemplate rabiitMqTemplate;
@Override
public AjaxResult findOrderPayStatus(Integer orderId) {
--
Gitblit v1.9.1