jiangqs
2023-07-05 32bd52ec49d25021b6a35d8ee5f32c70df788165
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -354,7 +354,7 @@
        order.setOrderId(orderId);
        order.setDelFlag(0);
        //为对接支付 直接付款成功
        order.setOrderStatus(2);
        order.setOrderStatus(1);
        order.setOrderNo(orderNo);
        order.setOrderFrom(1);
        order.setShopId(appPlaceOrderDto.getShopId());
@@ -364,6 +364,7 @@
        order.setDiscountMoney(couponDiscount);
        order.setReceivableMoney(orderPayMoney);
        order.setReceivableDeposit(orderPayDeposit);
        order.setChangeReceivableMoney(orderPayMoney);
        order.setPayType(appPlaceOrderDto.getPayType());
        if (order.getPayType() == 1) {
            order.setPayMoney(orderPayMoney);
@@ -528,11 +529,17 @@
     * @return
     */
    @Override
    public MerVerifyOrderVo verifyOrder(String orderId) {
    public MerVerifyOrderVo verifyOrder(String orderId,Long shopId) {
        // 创建返回对象
        MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
        // 根据订单ID获取订单信息
        Order order = this.getById(orderId);
        if(order.getOrderStatus()!=2){
            throw new ServiceException(AppErrorConstant.VERIFY_USED);
        }
        if(!order.getShopId().equals(shopId)){
            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
        }
        // 根据订单ID获取订单商品列表
        List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
        // 设置返回对象的属性值
@@ -573,13 +580,17 @@
        Date nowTime = new Date();
        //更新订单信息
        Order order = this.getById(orderId);
        if(order.getOrderStatus()!=2){
            throw new ServiceException(AppErrorConstant.VERIFY_USED);
        }
        order.setOrderStatus(3);
        order.setUseTime(nowTime);
        order.setUseUserId(merVerifyOrderDto.getUserId());
        order.setOfflinePayMoney(relPayMoney);
        order.setOffPayTime(nowTime);
        order.setPayMoney(relReceiveMoney.add(relPayMoney));
        order.setPayMoney(order.getPayMoney().add(relPayMoney));
        order.setCloseFlag(1);
        order.setChangeReceivableMoney(relReceiveMoney);
        this.saveOrUpdate(order);
        //创建服务商品
        List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
@@ -853,7 +864,6 @@
        if (null != appMemberCouponVoList) {
            appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
        }
        AppMemberCouponVo appMemberCouponVo;
        Integer couponType;
        BigDecimal moneyThreshold;
@@ -972,15 +982,15 @@
        order.setReceivableMoney(orderPayMoney);
        order.setReceivableDeposit(new BigDecimal("0.00"));
        order.setPayType(1);
        if (order.getPayType() == 1) {
            order.setPayMoney(orderPayMoney);
            order.setOnlinePayMoney(orderPayMoney);
            order.setCloseFlag(1);
        } else if (order.getPayType() == 2) {
            order.setPayMoney(orderPayDeposit);
            order.setOnlinePayMoney(orderPayDeposit);
            order.setCloseFlag(0);
        if(merNewOrderDto.getChangeMoney()!=null){
            order.setChangeReceivableMoney(merNewOrderDto.getChangeMoney());
        }else{
            order.setChangeReceivableMoney(orderPayMoney);
        }
        order.setPayMoney(orderPayMoney);
        order.setOnlinePayMoney(new BigDecimal("0.00"));
        order.setOfflinePayMoney(orderPayMoney);
        order.setCloseFlag(1);
        order.setOrderRemark(merNewOrderDto.getOrderRemark());
        order.setGoodsNum(goodsNum);
        order.setCreateTime(nowTime);
@@ -1347,6 +1357,16 @@
                }
                BigDecimal unPaidMoney = mgtShopOrderPageVo.getReceivableMoney().subtract(mgtShopOrderPageVo.getPayMoney());
                mgtShopOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney);
            }
            //处理商品信息
            List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList;
            String goodsString;
            for(MgtShopOrderPageVo entity : shopOrderPageVoList){
                mgtOrderGoodsVoList = entity.getMgtOrderGoodsPageVoList();
                goodsString = mgtOrderGoodsVoList.stream()
                        .map(goods -> goods.getGoodsName() + "*" + goods.getBuyNum())
                        .collect(Collectors.joining(";"));
                entity.setGoodsInfo(goodsString);
            }
        }
        return shopOrderPageVoList;
@@ -1999,11 +2019,24 @@
     * @date 2023/6/27 11:10
     */
    @Override
    public MerVerifyCouponVo verifyCoupon(String verifyCode) {
    public MerVerifyCouponVo verifyCoupon(String verifyCode,Long shopId) {
        // 创建MerVerifyCouponVo对象
        MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
        // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象
        MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(verifyCode).getData();
        MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
        // 检查优惠券状态
        int couponStatus = memberCoupon.getCouponStatus();
        if (couponStatus == 0) {
            throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
        } else if (couponStatus == 2) {
            throw new ServiceException(AppErrorConstant.COUPON_USED);
        } else if (couponStatus != 0) {
            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
        }
        if(!memberCoupon.getShopId().equals(shopId)){
            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
        }
        List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
        Long userId = verifyCouponGetVo.getUserId();
        // 调用remoteMemberService的getMember方法获取Member对象
@@ -2230,4 +2263,67 @@
        }
        return merOrderFromRankVo;
    }
    /**
     * @description  商户端订单管理统计
     * @author  jqs
     * @date    2023/7/4 16:27
     * @param merBaseDto
     * @return  MerTotalOrderVo
     */
    @Override
    public MerTotalOrderVo totalMerOrder(MerBaseDto merBaseDto){
        return orderMapper.totalMerOrder(merBaseDto.getShopId());
    }
    /**
     * @description  平台获取商户订单记录
     * @author  jqs
     * @date    2023/7/5 20:17
     * @param page
     * @param mgtShopAllOrderPageDto
     * @return  List<MgtShopAllOrderPageVo>
     */
    @Override
    public List<MgtShopAllOrderPageVo> pageMgtShopAllOrder(Page page, MgtShopAllOrderPageDto mgtShopAllOrderPageDto){
        List<MgtShopAllOrderPageVo> shopAllOrderPageVoList = orderMapper.pageMgtShopAllOrder(page, mgtShopAllOrderPageDto);
        if(!shopAllOrderPageVoList.isEmpty()){
            // 定义变量
            HashSet<Long> userIdSet = new HashSet<>();
            BigDecimal zeroBig = new BigDecimal("0.00");
            // 遍历列表,获取店铺 ID 和用户 ID
            for (MgtShopAllOrderPageVo mgtShopOrderPageVo : shopAllOrderPageVoList) {
                userIdSet.add(mgtShopOrderPageVo.getUserId());
            }
            // 从远程服务获取店铺和用户信息
            Map<Long, MgtSimpleMemberVo> userMap = null;
            if (userIdSet != null && !userIdSet.isEmpty()) {
                String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList()));
                MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
                mgtBaseBathDto.setIds(userJoinedString);
                List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
                userMap = simpleMemberVoList.stream()
                        .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
            }
            // 遍历列表,设置店铺名称、用户名称和未支付金额
            for (MgtShopAllOrderPageVo mgtShopOrderPageVo : shopAllOrderPageVoList) {
                if (userMap != null && !userMap.isEmpty()) {
                    if (userMap.get(mgtShopOrderPageVo.getUserId()) != null) {
                        mgtShopOrderPageVo.setUserInfo(userMap.get(mgtShopOrderPageVo.getUserId()).getNickName()+"("+userMap.get(mgtShopOrderPageVo.getUserId()).getUserMobile()+")");
                    }
                }
            }
            //处理商品信息
            List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList;
            String goodsString;
            for(MgtShopAllOrderPageVo entity : shopAllOrderPageVoList){
                mgtOrderGoodsVoList = entity.getMgtOrderGoodsPageVoList();
                goodsString = mgtOrderGoodsVoList.stream()
                        .map(goods -> goods.getGoodsName() + "*" + goods.getBuyNum())
                        .collect(Collectors.joining(";"));
                entity.setGoodsInfo(goodsString);
            }
        }
        return shopAllOrderPageVoList;
    }
}