From 0d520631715ce7918a3da8cecd4ef8461a9aae66 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Fri, 23 May 2025 15:53:46 +0800 Subject: [PATCH] feat(mall): 新增自提点核销功能 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java | 181 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 173 insertions(+), 8 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java index ea14883..13e72cc 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java +++ b/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()); 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()); + 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,137 @@ return new FebsResponse().success().data(apiLeaderInfoVo); } + @Override + public FebsResponse happyLeaderList() { + ArrayList<ApiHappyLeaderInfoVo> apiHappyLeaderInfoVos = new ArrayList<>(); + + List<MallTeamLeader> mallTeamLeaders = this.baseMapper.selectList( + new LambdaQueryWrapper<MallTeamLeader>() + .select( + MallTeamLeader::getId, + MallTeamLeader::getName, + MallTeamLeader::getPhone, + MallTeamLeader::getUniqueCode, + MallTeamLeader::getAddressPic, + MallTeamLeader::getAddressArea, + MallTeamLeader::getDetailAddress, + MallTeamLeader::getLongitude, + MallTeamLeader::getLatitude) + .eq(MallTeamLeader::getState, 1) + .eq(MallTeamLeader::getOnlineState,1) + ); + if(CollUtil.isNotEmpty(mallTeamLeaders)){ + for (MallTeamLeader mallTeamLeader : mallTeamLeaders){ + ApiHappyLeaderInfoVo apiHappyLeaderInfoVo = new ApiHappyLeaderInfoVo(); + apiHappyLeaderInfoVo.setId(mallTeamLeader.getId()); + apiHappyLeaderInfoVo.setName(mallTeamLeader.getName()); + apiHappyLeaderInfoVo.setPhone(mallTeamLeader.getPhone()); + apiHappyLeaderInfoVo.setTakeUniqueCode(mallTeamLeader.getUniqueCode()); + apiHappyLeaderInfoVo.setAddressPic(mallTeamLeader.getAddressPic()); + apiHappyLeaderInfoVo.setAddressArea(mallTeamLeader.getAddressArea()); + apiHappyLeaderInfoVo.setDetailAddress(mallTeamLeader.getDetailAddress()); + apiHappyLeaderInfoVo.setLongitude(mallTeamLeader.getLongitude()); + apiHappyLeaderInfoVo.setLatitude(mallTeamLeader.getLatitude()); + apiHappyLeaderInfoVos.add(apiHappyLeaderInfoVo); + } + } + + return new FebsResponse().success().data(apiHappyLeaderInfoVos); + } + + @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(); + + MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOne( + new LambdaQueryWrapper<MallOrderInfo>() + .eq(MallOrderInfo::getTakeCode, takeCode) + .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("操作成功"); + } + } -- Gitblit v1.9.1