fix
Helius
2021-11-02 1bb79a70a9e4f0046a66a72ec399fa66bc07af02
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.system.hive.bean.SysVipInfo;
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,6 +15,7 @@
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;
@@ -29,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.*;
@@ -55,9 +53,7 @@
    @Autowired
    private WxShopOrderUtil wxShopOrderUtil;
    @Autowired
    private WxShopCouponUtil wxShopCouponUtil;
    @Autowired
    private RedisUserLoginUtils redisUserLoginUtils;
    private UserCacheManager userCacheManager;
    @Autowired
    private WeixinServiceUtil weixinServiceUtil;
    @Autowired
@@ -68,8 +64,6 @@
    private ShopOrderDao shopOrderDao;
    @Autowired
    private ShopOrderDetailsDao shopOrderDetailsDao;
    @Autowired
    private ShopCouponDao shopCouponDao;
    @Autowired
    private ShopProductDao shopProductDao;
    @Autowired
@@ -131,27 +125,25 @@
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception {
        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.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);
        DiscountExplain discountExplain= (DiscountExplain) caculateResult.getMapInfo().get("discountExplain");
        if(discountExplain.getScorePay()!=null){
            //校验用户积分是否够用
            int score=scoreVipDetailDao.selectUserTotalScore(sysVipInfo.getId());
            if(score<discountExplain.getScorePay()){
                return  AjaxResult.buildFailInstance("积分不足");
                throw new GlobleException("积分不足");
            }
        }
        ShopOrder shopOrder = new ShopOrder();
        shopOrder.setCompanyId(sysVipInfo.getCompanyId());
@@ -200,6 +192,7 @@
        shopOrder.setUserId(sysVipInfo.getId());
        shopOrder.setCreateBy("微信小程序生成");
        shopOrder.setUpdateBy("微信小程序生成");
        shopOrder.setPayMethod(shopOrderDto.getPayMethod());
        shopOrder.setCommodityPrice(discountExplain.getBillPrice());
        shopOrder.setPurchaseQuantity(orderCount);
        shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS);
@@ -256,11 +249,8 @@
        BrandWCPayRequestData payData = startPayment(shopOrder);
        AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(payData));
        result.putInMap("orderId", shopOrder.getId());
        return result;
        return shopOrder;
    }
    @Override
@@ -281,7 +271,7 @@
        //支付总积分
        Integer scoreCount=0;
        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
        //计算购物车中物品的优惠信息
        List<OrderItemDto> orderItemDtos = shopOrderDto.getOrderItemList()
@@ -327,7 +317,7 @@
        List<CouponReceiveInfoVO> usefulCoupon = new ArrayList<>();
        CouponReceiveInfoVO shopCoupon = new CouponReceiveInfoVO();
        //满足店铺活动的订单不能使用优惠券
        if (conditionsGroupCount > 0) {
        if (conditionsGroupCount <= 0) {
            //计算可用优惠券
            usefulCoupon = wxShopCouponService.getCartVoCouponList(sysVipInfo.getCompanyId(), orderItemDtos);
            //获取用户使用的优惠券
@@ -355,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()));
@@ -392,11 +384,15 @@
    @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){
@@ -451,7 +447,7 @@
     */
    @Override
    public AjaxResult getMyOrderInfo(OrderInfoQueryPOJO orderInfoQueryPOJO) {
        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
        orderInfoQueryPOJO.setSort("update_time");
        if (orderInfoQueryPOJO.getOffset() >= 1) {
            orderInfoQueryPOJO.setOffset((orderInfoQueryPOJO.getOffset() - 1) * orderInfoQueryPOJO.getLimit());
@@ -468,7 +464,7 @@
     */
    @Override
    public AjaxResult getOrderInfoById(Integer orderId) {
        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
        ShopOrder shopOrder = shopOrderDao.selectOrderInfoById(sysVipInfo.getId(), orderId);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(shopOrder));
    }
@@ -490,7 +486,7 @@
        }
        if (shopOrder.getDiscountAmount() != null && shopOrder.getDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
            ShopCouponRecord shopCouponRecord = new ShopCouponRecord();
            SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
            SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
            shopCouponRecord.setUserId(sysVipInfo.getId());
            shopCouponRecord.setOrderId(orderId);
            List<ShopCouponRecord> recordList = shopCouponRecordDao.selectByModel(shopCouponRecord);
@@ -616,8 +612,6 @@
     * @param orderId
     * @return
     */
    @Autowired
    RabiitMqTemplate rabiitMqTemplate;
    @Override
    public AjaxResult findOrderPayStatus(Integer orderId) {