From 9fb0b7d623078e90747ac4a64283f29d4b4d51d6 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 13 Apr 2021 15:11:08 +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/WxShopLogisticsQueryServiceImpl.java | 144 ++++++++-------- zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java | 29 +++ zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java | 9 zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java | 8 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java | 2 zq-erp/src/main/resources/config/db/increment/推广员.sql | 4 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java | 197 +++++++++++++++++---- zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java | 23 ++ zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java | 32 +-- zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml | 40 +--- zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java | 2 11 files changed, 318 insertions(+), 172 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java index d1ad6a3..02099a7 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java @@ -1,30 +1,43 @@ package com.matrix.system.shopXcx.api.action; -import com.matrix.system.hive.bean.SysVipInfo; +import com.matrix.component.rabbitmq.RabiitMqTemplate; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData; -import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil; +import com.matrix.config.RabbitMqConfig; import com.matrix.core.constance.SystemErrorCode; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; +import com.matrix.core.tools.LogUtil; +import com.matrix.system.common.constance.AppConstance; +import com.matrix.system.hive.bean.MoneyCardUse; +import com.matrix.system.hive.bean.MoneyCardUseFlow; +import com.matrix.system.hive.bean.SysVipInfo; +import com.matrix.system.hive.dao.MoneyCardUseDao; +import com.matrix.system.hive.dao.MoneyCardUseFlowDao; 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.pojo.OrderInfoQueryPOJO; import com.matrix.system.shopXcx.api.pojo.ShopOrderDto; import com.matrix.system.shopXcx.api.service.OrderCouponGroupService; 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.bean.ShopActivitiesGroupJoin; +import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoinUser; import com.matrix.system.shopXcx.bean.ShopOrder; +import com.matrix.system.shopXcx.bean.ShopPayLog; import com.matrix.system.shopXcx.dao.*; +import com.matrix.system.shopXcx.mqTask.MQTaskRouting; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; +import java.util.*; /** @@ -42,16 +55,10 @@ @Autowired WxShopCouponService wxShopCouponService; - @Autowired - private ShopReceiveAddressDao shopReceiveAddressDao; @Autowired ShoppingCartService shoppingCartService; - @Autowired - private ShopCouponDao shopCouponDao; - @Autowired - private WxShopCouponUtil wxShopCouponUtil; @Autowired private RedisUserLoginUtils redisUserLoginUtils; @@ -64,20 +71,39 @@ @Autowired ShopProductDao shopProductDao; - @Autowired - private WxShopOrderUtil wxShopOrderUtil; - - @Autowired - private ShopOrderDetailsDao shopOrderDetailsDao; @Autowired OrderCouponGroupService orderCouponGroupService; + + @Autowired + private ShopPayLogDao shopPayLogDao; @Autowired ShopOrderDao shopOrderDao; @Autowired SysVipInfoDao sysVipInfoDao; + + @Autowired + private ShopActivitiesGroupJoinUserDao shopActivitiesGroupJoinUserDao; + + @Autowired + private ShopActivitiesGroupJoinDao shopActivitiesGroupJoinDao; + + @Autowired + private RabiitMqTemplate rabiitMqTemplate; + + @Autowired + ShoppingGoodsDao shoppingGoodsDao; + + @Autowired + MoneyCardUseFlowDao moneyCardUseFlowDao; + + @Autowired + MoneyCardUseDao moneyCardUseDao; + + @Value("${evn}") + private String evn; /** * 计算购物车订单价格 @@ -90,17 +116,15 @@ public @ResponseBody AjaxResult calculationCartOrder(@RequestBody ShopOrderDto shopOrderDto) throws Exception { - - return shopOrderService.buildDiscountExplain(shopOrderDto); } @Autowired - ShoppingGoodsDao shoppingGoodsDao; + private ScoreVipDetailDao scoreVipDetailDao; /** - * 新增订单 + * 新增微信支付订单 * * @param shopOrderDto * @return @@ -108,43 +132,128 @@ @PostMapping(value = "/addShopOrder") public @ResponseBody - AjaxResult addShopOrder(@RequestBody ShopOrderDto shopOrderDto) throws Exception { - return shopOrderService.createShopOrder(shopOrderDto); + AjaxResult addShopOrder(@RequestBody @Validated ShopOrderDto shopOrderDto) throws Exception { + + ShopOrder shopOrder = shopOrderService.createShopOrder(shopOrderDto); + AjaxResult result = AjaxResult.buildSuccessInstance("订单创建成功"); + result.putInMap("orderId", shopOrder.getId()); + if (shopOrderDto.getPayMethod().equals(ShopOrder.SHOP_ORDER_PAY_METHOD_WX)) { + BrandWCPayRequestData payData = shopOrderService.startPayment(shopOrder); + result.setRows(Arrays.asList(payData)); + } + return result; } - @Value("${wx_pay_debug_onoff}") - private boolean isDebug; - @Autowired - private WeixinServiceUtil weixinServiceUtil; - /** - * 开始付款 + * 余额支付确认 * - * @param shopOrder + * @param orderId * @return * @throws Exception */ - public BrandWCPayRequestData startPayment(ShopOrder shopOrder) throws Exception { - BigDecimal unit = new BigDecimal("100"); - BigDecimal money = new BigDecimal(shopOrder.getOrderMoney().toString()); - BrandWCPayRequestData payData; - String productNames = wxShopOrderUtil.getProductNames(shopOrder.getUserId(), shopOrder.getId()); - SysVipInfo vipInfo = sysVipInfoDao.selectById(shopOrder.getUserId()); + @PostMapping(value = "/moneyCardPay/{orderId}") + @ResponseBody + @Transactional + public AjaxResult moneyCardPay(@PathVariable Integer orderId) throws Exception { - if (isDebug) { - payData = weixinServiceUtil.createOrder("[测试]" + productNames, shopOrder.getOrderNo(), - 1, vipInfo.getOpenId(), String.valueOf(shopOrder.getId())); + ShopOrder order = shopOrderDao.selectById(orderId); + if (order != null + && ShopOrder.SHOP_ORDER_PAY_METHOD_VIPCARD == order.getPayMethod() + && ShopOrder.ORDER_PAY_STATUS_WAIT == order.getPayStatus()) { + + MoneyCardUse moneyCardUse = moneyCardUseDao.selectVipCard(order.getUserId()); + Double balance=moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney(); + if(balance>=order.getOrderMoney().doubleValue()){ + //扣减会员卡余额 + if(moneyCardUse.getRealMoney()>=order.getOrderMoney().doubleValue()){ + moneyCardUse.setRealMoney(moneyCardUse.getRealMoney()-order.getOrderMoney().doubleValue()); + }else{ + moneyCardUse.setGiftMoney(moneyCardUse.getGiftMoney()-(order.getOrderMoney().doubleValue()- moneyCardUse.getRealMoney() )); + moneyCardUse.setRealMoney(0D); + } + moneyCardUseDao.update(moneyCardUse); + //插入扣减记录 + MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow(); + moneyCardUseFlow.setTotal(order.getOrderMoney().doubleValue()); + moneyCardUseFlow.setCarUseId(moneyCardUse.getId()); + moneyCardUseFlow.setVipId(order.getUserId()); + moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER); + moneyCardUseFlow.setOrderNo(order.getOrderNo()); + moneyCardUseFlow.setCreateTime(new Date()); + moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney()+moneyCardUse.getRealMoney()); + moneyCardUseFlow.setCardName(moneyCardUse.getCardName()); + moneyCardUseFlowDao.insert(moneyCardUseFlow); + + //构建需要修改订单信息Map + Map<String, Object> modifyMap = new HashMap<>(); + modifyMap.put("id", order.getId()); + //设置微信支付状态为已支付 + modifyMap.put("payResult", ShopOrder.ORDER_WX_STATUS_PAY_SUCCESS); + //设置支付状态为支付成功 + modifyMap.put("payStatus", ShopOrder.ORDER_PAY_STATUS_SUCCESS); + //如果是商品订单则进入待发货 + modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_WAIT_SEND); + shopOrderDao.updateByMap(modifyMap); + + // 判断该订单是否为拼团产生的订单 + ShopActivitiesGroupJoinUser joinUser = shopActivitiesGroupJoinUserDao.selectGroupJoinUserByOrderId(order.getId().longValue()); + if (joinUser != null) { + joinUser.setIsHasPay(ShopActivitiesGroupJoinUser.IS_HAS_PAY_Y); + shopActivitiesGroupJoinUserDao.updateByModel(joinUser); + + ShopActivitiesGroupJoin groupJoin = shopActivitiesGroupJoinDao.selectGroupAndPriceById(joinUser.getGjId()); + List<ShopActivitiesGroupJoinUser> joinUserList = shopActivitiesGroupJoinUserDao.selectGroupJoinUserListByGjId(joinUser.getGjId()); + LogUtil.info("#当前已支付完成:{}#", joinUserList.size()); + // 若拼团中已支付的数量等于几人团预设值,则更新拼团状态为拼团成功 + if (groupJoin.getGroupPrice().getGpCount() == joinUserList.size()) { + groupJoin.setGjStatus(ShopActivitiesGroupJoin.ACTIVITIES_JOIN_SUCCESS); + } else { + if (joinUser.getUserId().equals(groupJoin.getGjHeadId())) { + groupJoin.setGjStatus(ShopActivitiesGroupJoin.ACTIVITIES_JOIN_ING); + } + } + shopActivitiesGroupJoinDao.updateByModel(groupJoin); + + SysVipInfo sysVipInfo = sysVipInfoDao.selectByPhone(order.getUserTel()); + if (sysVipInfo != null) { + sysVipInfo.setIsDeal(SysVipInfo.DEAL_VIP); + sysVipInfoDao.update(sysVipInfo); + } + } + + // 根据订单类型创建不同的处理任务 + rabiitMqTemplate.sendTopicMsg(RabbitMqConfig.MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.CREATE_ORDER + evn, orderId + ""); + //支付记录 + recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), order.getOrderMoney(), "会员卡余额支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS); + + return AjaxResult.buildSuccessInstance("支付成功"); + + }else{ + return AjaxResult.buildFailInstance("会员卡余额不足"); + } + } else { - payData = weixinServiceUtil.createOrder(productNames, shopOrder.getOrderNo(), - unit.multiply(money).intValue(), vipInfo.getOpenId(), String.valueOf(shopOrder.getId())); + LogUtil.info("订单状态不为待付款,order status=", order.getOrderStatus()); + return AjaxResult.buildFailInstance("订单不支持本次结算"); } - ShopOrder updateParam = new ShopOrder(); - updateParam.setId(shopOrder.getId()); - updateParam.setWxOrderNo(payData.getPrepay_id()); - shopOrderDao.updateByModel(updateParam); - return payData; + + } + + + private void recordPayLog(Integer orderId, Integer type, String orderNo, BigDecimal payMoney, String payRemark, int payStatus) { + //设置支付类型为收款 + ShopPayLog payLog = new ShopPayLog(); + payLog.setPayType(type); + payLog.setJoinId(orderId); + payLog.setPayMoney(payMoney); + payLog.setPayOrderNo(orderNo); + payLog.setPayRemark(payRemark); + payLog.setPayStatus(payStatus); + payLog.setCreateBy(AppConstance.SYSTEM_USER); + payLog.setUpdateBy(AppConstance.SYSTEM_USER); + shopPayLogDao.insert(payLog); } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java index d36a21e..b54a0bc 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java @@ -204,7 +204,7 @@ resXml = AppConstance.RESULT_XML_SUCCESS; //支付记录 - recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), payMoney, payLog, "支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS); + recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), payMoney, "支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS); } else { @@ -306,7 +306,7 @@ BigDecimal.ROUND_HALF_DOWN).doubleValue(); if (moneyCardUseFlow.getCarUseId()==null) { - ShopPayLog payLog = new ShopPayLog(); + if(payMoney.equals(moneyCardUseFlow.getTotal())){ threadResult.putInMap("status", "success"); resXml = AppConstance.RESULT_XML_SUCCESS; @@ -321,7 +321,7 @@ moneyCardUseDao.update(moneyCardUse); //充值记录 - recordPayLog(Integer.valueOf(moneyCardUseFlowId),2,moneyCardUseFlow.getPayNo(),new BigDecimal(payMoney), payLog, "充值成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS); + recordPayLog(Integer.valueOf(moneyCardUseFlowId),2,moneyCardUseFlow.getPayNo(),new BigDecimal(payMoney), "充值成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS); }else{ LogUtil.debug("支付金额不一致,检查支付金额payMoney={},order.getPayMoney()={}", payMoney, moneyCardUseFlow.getTotal()); threadResult.putInMap("status", "err"); @@ -367,8 +367,9 @@ - private void recordPayLog(Integer orderId, Integer type,String orderNo, BigDecimal payMoney, ShopPayLog payLog, String payRemark, int payStatus) { + private void recordPayLog(Integer orderId, Integer type,String orderNo, BigDecimal payMoney, String payRemark, int payStatus) { //设置支付类型为收款 + ShopPayLog payLog=new ShopPayLog(); payLog.setPayType(type); payLog.setJoinId(orderId); payLog.setPayMoney(payMoney); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java index 2b18016..be20797 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java @@ -58,6 +58,26 @@ @Autowired CodeService codeService; + + + + @ApiOperation(value = "查询会员主卡", notes = "") + @PostMapping(value = "/getUserVipCard") + @ApiResponses({ + @ApiResponse(code = 200, message = "ok", response = WxMoneyCardUseVO.class) + }) + public AjaxResult getUserVipCard() { + SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("vip_id", sysVipInfo.getId()); + queryWrapper.eq("is_vip_car","Y"); + MoneyCardUse moneyCardUse = moneyCardUseV2Dao.selectOne(queryWrapper); + WxMoneyCardUseVO vo = new WxMoneyCardUseVO(); + BeanUtils.copyProperties(moneyCardUse, vo); + return AjaxResult.buildSuccessInstance(vo); + } + + @ApiOperation(value = "查询会员储值卡", notes = "") @PostMapping(value = "/getUserMoneyCardUseList") @ApiResponses({ @@ -77,6 +97,9 @@ return AjaxResult.buildSuccessInstance(rows); } + + + @ApiOperation(value = "创建储值卡充值预付单", notes = "传入参数 {rechargeAmount:10} 最少充值1元,最多2位小数 ") @PostMapping(value = "/createRechargeOrder") @ApiResponses({ diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java index bf3e8a1..c77ba64 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java @@ -68,6 +68,8 @@ } logisticsInfo.put("isShipments",AppConstance.IS_SHIPMENTS); logisticsInfo.put("logisticsStatus",shopDeliveryInfo.getLogisticsStatus()==null?"0":String.valueOf(shopDeliveryInfo.getLogisticsStatus())); + logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany()); + logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo()); logisticsInfo.put("describe",describe); result.setStatus(AjaxResult.STATUS_SUCCESS); result.putInMap("logisticsInfo",logisticsInfo); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java index ad131b4..a5fa5e3 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java @@ -2,6 +2,7 @@ import lombok.Data; +import javax.validation.constraints.NotNull; import java.util.List; /** @@ -15,6 +16,7 @@ /** * 收货地址ID */ + @NotNull(message = "请选择正确的收获地址") private Integer receiveAddrId; /** @@ -37,7 +39,11 @@ */ private Integer joinActive; - + /** + * 支付方式1微信,2 vipCard余额 + */ + @NotNull(message = "请选择支付方式") + private Integer payMethod; /** * 订单备注 diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java index da0f5e4..8430dc5 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java @@ -23,7 +23,7 @@ * @return * @throws Exception */ - AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception; + ShopOrder createShopOrder(ShopOrderDto shopOrderDto) throws Exception; /** * 订单结算 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 e702535..7e20e42 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,6 @@ 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.component.tools.WxUtils; @@ -17,6 +16,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 +29,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,8 +54,6 @@ @Autowired private WxShopOrderUtil wxShopOrderUtil; @Autowired - private WxShopCouponUtil wxShopCouponUtil; - @Autowired private RedisUserLoginUtils redisUserLoginUtils; @Autowired private WeixinServiceUtil weixinServiceUtil; @@ -68,8 +65,6 @@ private ShopOrderDao shopOrderDao; @Autowired private ShopOrderDetailsDao shopOrderDetailsDao; - @Autowired - private ShopCouponDao shopCouponDao; @Autowired private ShopProductDao shopProductDao; @Autowired @@ -131,27 +126,25 @@ */ @Transactional(rollbackFor = Exception.class) @Override - public AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception { + public ShopOrder createShopOrder(ShopOrderDto shopOrderDto) throws Exception { SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); - //校验收货地址 + 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()); @@ -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 @@ -392,11 +382,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){ diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java index 92cf088..d5fc4b5 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java @@ -79,76 +79,72 @@ List<ShopLogisticsInfo> shopLogisticsList = new ArrayList<ShopLogisticsInfo>(); AjaxResult result = new AjaxResult(); Map<String, String> logisticsInfo = new HashMap<String, String>(); - try { - if (shopDeliveryInfo == null) { - return new AjaxResult(AjaxResult.STATUS_FAIL, "找不到发货信息"); - } - if (!StringUtils.isNotBlank(shopDeliveryInfo.getWaybillNo()) || !StringUtils.isNotBlank(shopDeliveryInfo.getLogisticsCompanyCode())) { - return new AjaxResult(AjaxResult.STATUS_FAIL, "物流公司信息为空"); - } - logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany()); - logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo()); - //如果已经签收直接查数据库 - if (AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR.equals(shopDeliveryInfo.getLogisticsStatus())) { - - List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId()); - logisticsInfo.put("logisticsStatus", String.valueOf(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR)); - result.setStatus(AjaxResult.STATUS_SUCCESS); - result.setRows(shopLogisticsInfos); - result.putInMap("logisticsInfo", logisticsInfo); - return result; - } - Map<String, String> param = new HashMap<String, String>(); - param.put("ShipperCode", shopDeliveryInfo.getLogisticsCompanyCode()); - param.put("LogisticCode", shopDeliveryInfo.getWaybillNo()); - Map<String, String> paramsUrl = getparams(param); - LogUtil.info("物流查询参数" + paramsUrl); - String logisticsResult = HttpCurlUtil.sendPost(logisticsUrl, paramsUrl); - LogUtil.info("查询物流返回信息" + logisticsResult); - LogisticsInfoVo logisticsInfoVo = JSON.parseObject(logisticsResult, LogisticsInfoVo.class); - if (logisticsInfoVo.isSuccess()) { - ShopDeliveryInfo shopDelivery = new ShopDeliveryInfo(); - shopDelivery.setLogisticsStatus(Integer.valueOf(logisticsInfoVo.getState())); - shopDelivery.setId(shopDeliveryInfo.getId()); - logisticsInfo.put("logisticsStatus", logisticsInfoVo.getState()); - //更新物流状态 - shopDeliveryInfoDao.updateByModel(shopDelivery); - if (CollectionUtils.isNotEmpty(logisticsInfoVo.getTraces())) { - List<Map<String, String>> mapTraces = logisticsInfoVo.getTraces(); - for (int i = 0; i < mapTraces.size(); i++) { - ShopLogisticsInfo shopLogisticsInfo = new ShopLogisticsInfo(); - shopLogisticsInfo.setCreateBy(AppConstance.SYSTEM_USER); - shopLogisticsInfo.setUpdateBy(AppConstance.SYSTEM_USER); - shopLogisticsInfo.setLogisticsTime(mapTraces.get(i).get("AcceptTime")); - String acceptStation = mapTraces.get(i).get("AcceptStation"); - shopLogisticsInfo.setDescribe(acceptStation); - shopLogisticsInfo.setDelieryId(shopDeliveryInfo.getId()); - if (acceptStation.indexOf(AppConstance.KDN_IS_SIGN) != -1) { - shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR); - } else if (acceptStation.indexOf(AppConstance.KDN_IS_RECEIVE) != -1) { - shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_RECEIVE); - } else if (acceptStation.indexOf(AppConstance.KDN_IS_ON_WAY) != -1) { - shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_ON_WAY); - } else if (acceptStation.indexOf(AppConstance.KDN_IS_MISTAKE) != -1) { - shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_MISTAKE); - } else { - shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_NONE); - } - shopLogisticsList.add(shopLogisticsInfo); - } - shopLogisticsInfoDao.deleteByDelieryId(shopDeliveryInfo.getId()); - if (CollectionUtils.isNotEmpty(shopLogisticsList)) { - shopLogisticsInfoDao.batchInsert(shopLogisticsList); - } - } - } else { - throw new GlobleException(logisticsInfoVo.getReason()); - } - - } catch (Exception e) { - throw new GlobleException("物流信息查询失败"); + if (shopDeliveryInfo == null) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "找不到发货信息"); } + if (!StringUtils.isNotBlank(shopDeliveryInfo.getWaybillNo()) || !StringUtils.isNotBlank(shopDeliveryInfo.getLogisticsCompanyCode())) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "物流公司信息为空"); + } + logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany()); + logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo()); + + //如果已经签收直接查数据库 + if (AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR.equals(shopDeliveryInfo.getLogisticsStatus())) { + + List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId()); + logisticsInfo.put("logisticsStatus", String.valueOf(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR)); + result.setStatus(AjaxResult.STATUS_SUCCESS); + result.setRows(shopLogisticsInfos); + result.putInMap("logisticsInfo", logisticsInfo); + return result; + } + Map<String, String> param = new HashMap<String, String>(); + param.put("ShipperCode", shopDeliveryInfo.getLogisticsCompanyCode()); + param.put("LogisticCode", shopDeliveryInfo.getWaybillNo()); + Map<String, String> paramsUrl = getparams(param); + LogUtil.info("物流查询参数" + paramsUrl); + String logisticsResult = HttpCurlUtil.sendPost(logisticsUrl, paramsUrl); + LogUtil.info("查询物流返回信息" + logisticsResult); + LogisticsInfoVo logisticsInfoVo = JSON.parseObject(logisticsResult, LogisticsInfoVo.class); + if (logisticsInfoVo.isSuccess()) { + ShopDeliveryInfo shopDelivery = new ShopDeliveryInfo(); + shopDelivery.setLogisticsStatus(Integer.valueOf(logisticsInfoVo.getState())); + shopDelivery.setId(shopDeliveryInfo.getId()); + logisticsInfo.put("logisticsStatus", logisticsInfoVo.getState()); + //更新物流状态 + shopDeliveryInfoDao.updateByModel(shopDelivery); + if (CollectionUtils.isNotEmpty(logisticsInfoVo.getTraces())) { + List<Map<String, String>> mapTraces = logisticsInfoVo.getTraces(); + for (int i = 0; i < mapTraces.size(); i++) { + ShopLogisticsInfo shopLogisticsInfo = new ShopLogisticsInfo(); + shopLogisticsInfo.setCreateBy(AppConstance.SYSTEM_USER); + shopLogisticsInfo.setUpdateBy(AppConstance.SYSTEM_USER); + shopLogisticsInfo.setLogisticsTime(mapTraces.get(i).get("AcceptTime")); + String acceptStation = mapTraces.get(i).get("AcceptStation"); + shopLogisticsInfo.setDescribe(acceptStation); + shopLogisticsInfo.setDelieryId(shopDeliveryInfo.getId()); + if (acceptStation.indexOf(AppConstance.KDN_IS_SIGN) != -1) { + shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR); + } else if (acceptStation.indexOf(AppConstance.KDN_IS_RECEIVE) != -1) { + shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_RECEIVE); + } else if (acceptStation.indexOf(AppConstance.KDN_IS_ON_WAY) != -1) { + shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_ON_WAY); + } else if (acceptStation.indexOf(AppConstance.KDN_IS_MISTAKE) != -1) { + shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_MISTAKE); + } else { + shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_NONE); + } + shopLogisticsList.add(shopLogisticsInfo); + } + shopLogisticsInfoDao.deleteByDelieryId(shopDeliveryInfo.getId()); + if (CollectionUtils.isNotEmpty(shopLogisticsList)) { + shopLogisticsInfoDao.batchInsert(shopLogisticsList); + } + } + } + + List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId()); result.setStatus(AjaxResult.STATUS_SUCCESS); result.setRows(shopLogisticsInfos); @@ -187,14 +183,18 @@ * @param map * @return */ - private Map<String, String> getparams(Map<String, String> map) throws Exception { + private Map<String, String> getparams(Map<String, String> map) { String params = JSON.toJSONString(map); Map<String, String> paramsUrl = new HashMap<String, String>(); - paramsUrl.put("RequestData", URLEncoder.encode(params, "UTF-8")); + try { + paramsUrl.put("RequestData", URLEncoder.encode(params, "UTF-8")); + String dataSign = encrypt(params, appKey, "UTF-8"); + paramsUrl.put("DataSign", URLEncoder.encode(dataSign, "UTF-8")); + } catch (Exception e) { + throw new GlobleException(e.getMessage()); + } paramsUrl.put("EBusinessID", eBusinessID); paramsUrl.put("RequestType", requestType); - String dataSign = encrypt(params, appKey, "UTF-8"); - paramsUrl.put("DataSign", URLEncoder.encode(dataSign, "UTF-8")); paramsUrl.put("DataType", AppConstance.DATATYPE); return paramsUrl; } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java index e3003fe..f82f46d 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java @@ -17,9 +17,22 @@ public class ShopOrder extends EntityDTO { /** + * 支付方式-微信支付 + */ + public static final int SHOP_ORDER_PAY_METHOD_WX = 1; + + /** + * 支付方式-vip会籍卡 + */ + public static final int SHOP_ORDER_PAY_METHOD_VIPCARD = 2; + + + + /** * 订单微信支付状态(待支付) */ public static final int ORDER_WX_STATUS_WAIT_PAY = 1; + /** * 订单微信支付状态(支付成功) */ @@ -162,7 +175,10 @@ * 支付状态(1=待支付,2=支付成功,3=支付失败) */ private Integer payStatus; - + /** + * 支付方式1微信,2 vipCard余额 + */ + private Integer payMethod; /** * 优惠说明 @@ -491,10 +507,21 @@ this.delFlag = delFlag; } + + public Integer getPayMethod() { + return payMethod; + } + + public void setPayMethod(Integer payMethod) { + this.payMethod = payMethod; + } + public String getWxOrderNo() { return wxOrderNo; } + + public void setWxOrderNo(String wxOrderNo) { this.wxOrderNo = wxOrderNo; } diff --git "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" index d29024c..36a5ba5 100644 --- "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" +++ "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" @@ -227,7 +227,9 @@ ADD COLUMN `pay_no` varchar(32) NULL COMMENT '微信充值订单号'; - +ALTER TABLE `shop_order` + ADD COLUMN `pay_method` int(2) NULL COMMENT '支付方式1微信,2 vipCard余额'; +update shop_order set pay_method=1; ALTER TABLE `sys_vip_info` ADD COLUMN `fenxiao_state` int(11) NULL DEFAULT NULL COMMENT '分销审核状态' AFTER `recommend_id`, diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml index e25f4a8..b044a72 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml @@ -34,6 +34,7 @@ <result property="orderType" column="order_type" /> <result property="applyStatus" column="apply_status" /> <result property="scorePay" column="score_pay" /> + <result property="payMethod" column="pay_method" /> <result property="companyId" column="company_id" /> <!--返回详情列表--> <collection property="details" column="{orderId=id}" @@ -48,6 +49,7 @@ <result property="createTime" column="create_time" /> <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> + <result property="payMethod" column="pay_method" /> <result property="orderNo" column="order_no" /> <result property="orderMoney" column="order_money" /> <result property="commodityPrice" column="commodity_price" /> @@ -133,6 +135,8 @@ order_type, activity_type, score_pay, + + pay_method, company_id </sql> @@ -166,6 +170,7 @@ #{item.orderType}, #{item.activityType}, #{item.scorePay}, + #{item.payMethod}, #{item.companyId} </sql> @@ -242,6 +247,7 @@ <if test="(record.companyId!=null and record.companyId!='') or (record.companyId!='' and record.companyId==0) "> and company_id = #{record.companyId} </if> + </if> </sql> @@ -544,35 +550,8 @@ <!-- 分页查询 --> <select id="selectInPageByQuery" resultMap="ShopOrderMap"> select - o.create_by, - o.create_time, - o.update_by, - o.update_time, - o.id, - o.order_no, - o.order_money, - o.commodity_price, - o.user_id, - o.order_time, - o.pay_status, - o.discount_explain, - o.discount_amount, - o.order_status, - o.refund_charge, - o.user_name, - o.user_tel, - o.remarks, - o.shipping_method, - o.store_id, - o.purchase_quantity, - o.del_flag, - o.wx_order_no, - o.pay_result, - o.postage, - s.shop_name, - o.order_type, - o.score_pay, - o.apply_status + o.*, + s.shop_name from shop_order o INNER JOIN sys_shop_info s on o.store_id = s.ID where del_flag = 2 and o.company_id = #{record.companyId} @@ -601,6 +580,8 @@ <if test="(record.shopId!=null and record.shopId!='')"> and o.store_id=#{record.shopId} </if> + + </if> <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> <if test="pageVo.sort !=null and pageVo.order !=null"> @@ -642,6 +623,7 @@ o.wx_order_no, o.pay_result, o.postage, + o.pay_method s.shop_name, o.order_type from shop_order o -- Gitblit v1.9.1