Administrator
2025-05-26 24ef276642d829c8a0cf0c03d1469f0ced9147da
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -16,6 +16,7 @@
import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.mall.vo.*;
import cc.mrbird.febs.mall.vo.activity.ApiCheckOrderVo;
import cc.mrbird.febs.pay.model.OrderStateDto;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.util.WeixinServiceUtil;
@@ -26,6 +27,7 @@
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -420,11 +422,13 @@
            //退款退款金额
            BigDecimal refundAmount = mallRefundEntity.getAmount();
//            refundAmount = refundAmount.add(mallOrderInfo.getCarriage());
            BigDecimal bb = new BigDecimal(100);
            int refundMoney = refundAmount.multiply(bb).intValue();
            //余额支付退款
            if(mallRefundEntity.getType() == 3){
                log.info("余额支付退款");
                //更新订单详情
                mallOrderItem.setState(3);
                mallOrderItemMapper.updateById(mallOrderItem);
@@ -440,7 +444,6 @@
                mallRefundEntity.setState(1);
                mallRefundEntity.setUpdatedTime(DateUtil.date());
                mallRefundMapper.updateById(mallRefundEntity);
                mallMoneyFlowService.addMoneyFlow(mallOrderInfo.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额退款",2);
                List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByNotInStateAndOrderId(3,orderId);
                if(CollUtil.isEmpty(mallOrderItemList)){
@@ -448,19 +451,38 @@
                    mallOrderRefund.setStatus(6);
                    mallOrderInfoMapper.updateById(mallOrderRefund);
                }
                memberWalletService.add(refundAmount, mallOrderInfo.getMemberId(), "balance");
                if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
                    memberWalletService.add(refundAmount, mallOrderInfo.getMemberId(), "balance");
                    mallMoneyFlowService.addMoneyFlow(
                            mallOrderInfo.getMemberId(),
                            refundAmount,
                            ScoreFlowTypeEnum.REFUND.getValue(),
                            mallOrderInfo.getOrderNo(),
                            FlowTypeEnum.BALANCE.getValue(),
                            StrUtil.format(ScoreFlowTypeEnum.REFUND.getDesc(),refundAmount),
                            2
                    );
                }
                return new FebsResponse().success().message("退款成功");
            }
            Boolean flag = false;
            Boolean debug = xcxProperties.getDebug();
            if (debug) {
                boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, 1, 1, null);
                flag = b;
                if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
                    boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, 1, 1, null);
                    flag = b;
                }else{
                    flag = true;
                }
            } else {
                log.info("开始调用退款接口。。。退款编号为{}", refundNo);
                boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null);
                flag = b;
                if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
                    log.info("开始调用退款接口。。。退款编号为{}", refundNo);
                    boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null);
                    flag = b;
                }else{
                    flag = true;
                }
            }
            if(flag){
@@ -482,7 +504,17 @@
                mallRefundEntity.setState(1);
                mallRefundEntity.setUpdatedTime(DateUtil.date());
                mallRefundMapper.updateById(mallRefundEntity);
                mallMoneyFlowService.addMoneyFlow(mallOrderInfo.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"微信退款",2);
                if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
                    mallMoneyFlowService.addMoneyFlow(
                            mallOrderInfo.getMemberId(),
                            refundAmount,
                            ScoreFlowTypeEnum.WECHAT_REFUND.getValue(),
                            mallOrderInfo.getOrderNo(),
                            FlowTypeEnum.BALANCE.getValue(),
                            StrUtil.format(ScoreFlowTypeEnum.WECHAT_REFUND.getDesc(),refundAmount),
                            2
                    );
                }
                List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByNotInStateAndOrderId(3,orderId);
                if(CollUtil.isEmpty(mallOrderItemList)){
@@ -628,4 +660,116 @@
        return new FebsResponse().success().data(apiLeaderInfoVo);
    }
    @Override
    public FebsResponse happyLeaderList(ApiHappyLeaderInfoDto dto) {
        // 创建分页对象,传入当前页和每页大小
        Page<ApiHappyLeaderInfoVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
        // 调用Mapper方法获取活动分页数据
        Page<ApiHappyLeaderInfoVo> mallTeamLeaderPage = this.baseMapper.selectApiLeaderInfoInPage(page, dto);
        return new FebsResponse().success().data(mallTeamLeaderPage);
    }
    @Override
    public FebsResponse checkOrder(ApiHappyOrderLeaderDto dto) {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        MallMember mallMember = mallMemberMapper.selectById(memberId);
        if(StateUpDownEnum.UP.getCode() != mallMember.getCheckLeader()){
            throw new FebsException("您不是订单核销员!");
        }
        String takeCode = dto.getTakeCode();
        List<Integer> orderStates = Arrays.asList(
                OrderStatusEnum.WAIT_SHIPPING.getValue(),
                OrderStatusEnum.WAIT_FINISH.getValue(),
                OrderStatusEnum.FINISH.getValue()
        );
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOne(
                new LambdaQueryWrapper<MallOrderInfo>()
                        .eq(MallOrderInfo::getTakeCode, takeCode)
                        .in(MallOrderInfo::getStatus, orderStates)
                        .last("limit 1")
        );
        if(mallOrderInfo == null){
            throw new FebsException("自提码不存在!");
        }
        MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(mallOrderInfo.getTakeUniqueCode());
        if(mallTeamLeader==null){
            throw new FebsException("自提点不存在!");
        }
        ArrayList<ApiHappyOrderLeaderVo> apiHappyOrderLeaderVos = new ArrayList<>();
        List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectList(
                new LambdaQueryWrapper<MallOrderItem>()
                        .eq(MallOrderItem::getOrderId, mallOrderInfo.getId())
                        .eq(MallOrderItem::getLeaderState, StateUpDownEnum.DOWN.getCode())
                );
        if(CollUtil.isNotEmpty(mallOrderItems)){
            for(MallOrderItem item : mallOrderItems){
                ApiHappyOrderLeaderVo apiHappyOrderLeaderVo = new ApiHappyOrderLeaderVo();
                apiHappyOrderLeaderVo.setAddressArea(mallTeamLeader.getAddressArea());
                apiHappyOrderLeaderVo.setName(mallTeamLeader.getName());
                apiHappyOrderLeaderVo.setPhone(mallTeamLeader.getPhone());
                apiHappyOrderLeaderVo.setOrderId(mallOrderInfo.getId());
                apiHappyOrderLeaderVo.setOrderState(mallOrderInfo.getStatus());
                apiHappyOrderLeaderVo.setTakeCode(takeCode);
                apiHappyOrderLeaderVo.setGoodsName(item.getGoodsName());
                apiHappyOrderLeaderVo.setGoodsSku(item.getSkuName());
                apiHappyOrderLeaderVo.setGoodsCnt(item.getCnt());
                apiHappyOrderLeaderVo.setGoodsPrice(item.getPrice());
                apiHappyOrderLeaderVo.setLeaderState(item.getLeaderState());
                apiHappyOrderLeaderVos.add(apiHappyOrderLeaderVo);
            }
        }
        return new FebsResponse().success().data(apiHappyOrderLeaderVos);
    }
    @Override
    public FebsResponse insureOrder(ApiHappyOrderLeaderInsureDto dto) {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        MallMember mallMember = mallMemberMapper.selectById(memberId);
        if(StateUpDownEnum.UP.getCode() != mallMember.getCheckLeader()){
            throw new FebsException("您不是订单核销员!");
        }
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(dto.getOrderId());
        if(mallOrderInfo == null){
            throw new FebsException("订单不存在!");
        }
        MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(mallOrderInfo.getTakeUniqueCode());
        if(mallTeamLeader==null){
            throw new FebsException("自提点不存在!");
        }
        MallOrderItem mallOrderItem = mallOrderItemMapper.selectById(dto.getItemId());
        if(mallOrderItem==null){
            throw new FebsException("订单不存在!");
        }
        if(mallOrderItem.getLeaderState()==1){
            throw new FebsException("订单已自提!");
        }
        mallOrderItem.setLeaderState(1);
        mallOrderItemMapper.updateById(mallOrderItem);
        return new FebsResponse().success().message("操作成功");
    }
}