From 832c911439b27f96596aff9d0e67ddc1e0ce2cf3 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 29 Aug 2022 17:15:58 +0800 Subject: [PATCH] 20220822 --- src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java | 2 + src/main/resources/mapper/modules/MallTeamLeaderMapper.xml | 2 src/main/java/cc/mrbird/febs/mall/dto/ApiLeaderRefundOrderDto.java | 17 ++++++++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java | 77 +++++++++++++++++++++++++++++++++++--- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 13 +++++- src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java | 7 +++ src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java | 2 + 7 files changed, 109 insertions(+), 11 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java index 55b80d4..59fe2e6 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java @@ -96,6 +96,13 @@ return iApiMallTeamLeaderService.leaderOrderConfirm(apiLeaderOrderConfirmDto); } + + @ApiOperation(value = "团长点击用户退款", notes = "团长点击用户退款") + @PostMapping(value = "/leaderRefundOrder") + public FebsResponse leaderRefundOrder(@RequestBody ApiLeaderRefundOrderDto apiLeaderRefundOrderDto) { + return iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto); + } + /** * 商品列表页的团长信息 * 有团长特征码直接显示该团长, diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiLeaderRefundOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiLeaderRefundOrderDto.java new file mode 100644 index 0000000..a7071dc --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiLeaderRefundOrderDto.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiLeaderRefundOrderDto", description = "参数接收类") +public class ApiLeaderRefundOrderDto { + + @ApiModelProperty(value = "订单ID", example = "1") + private Long orderId; + + @ApiModelProperty(value = "订单详情ID", example = "1") + private Long ItemId; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java index 833a188..a273b60 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java @@ -42,4 +42,6 @@ * 是否结清 */ private Integer hasSettle; + //1:正常 2:退款中3:已退 + private Integer state; } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java index 55de473..3ce5be0 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java @@ -26,4 +26,6 @@ FebsResponse leaderTitle(ApiLeaderTitleDto apiLeaderTitleDto); FebsResponse findTeamOrderMarkCnt(); + + FebsResponse leaderRefundOrder(ApiLeaderRefundOrderDto apiLeaderRefundOrderDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index b213d54..e30df3b 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -749,9 +749,17 @@ return new FebsResponse().fail().message("该订单无法申请退款"); } - MallOrderItem mallOrderItem = mallOrderItemMapper.selectById(itemId); MallRefundEntity mallRefundEntity = new MallRefundEntity(); - mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_RITEM"+itemId); + MallOrderItem mallOrderItem = mallOrderItemMapper.selectById(itemId); + if(ObjectUtil.isNotEmpty(mallOrderItem)){ + mallOrderItem.setState(2); + mallOrderItemMapper.updateById(mallOrderItem); + mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_RITEM"+itemId); + mallRefundEntity.setItemId(itemId); + }else{ + + mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_R"+orderId); + } mallRefundEntity.setRefundReason(applyRefundOrderDto.getRefundReason()); mallRefundEntity.setRefundRemark(applyRefundOrderDto.getRefundRemark()); mallRefundEntity.setRefundPic(applyRefundOrderDto.getRefundPic()); @@ -759,7 +767,6 @@ mallRefundEntity.setState(3); mallRefundEntity.setType(1); mallRefundEntity.setOrderId(orderId); - mallRefundEntity.setItemId(itemId); mallRefundEntity.setAmount(mallOrderItem.getAmount()); mallRefundMapper.insert(mallRefundEntity); return new FebsResponse().success().message("已申请"); 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 9f9a6e4..12322cb 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 @@ -1,9 +1,8 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; -import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; -import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum; -import cc.mrbird.febs.common.enumerates.OrderStatusEnum; +import cc.mrbird.febs.common.enumerates.*; +import cc.mrbird.febs.common.properties.XcxProperties; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.ShareCodeUtil; import cc.mrbird.febs.common.utils.SpringContextHolder; @@ -11,12 +10,10 @@ import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; -import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; -import cc.mrbird.febs.mall.mapper.MallMemberMapper; -import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; -import cc.mrbird.febs.mall.mapper.MallTeamLeaderMapper; +import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IAdminMallOrderService; import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService; +import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.mall.vo.ApiLeaderInfoVo; import cc.mrbird.febs.mall.vo.ApiLeaderListVo; import cc.mrbird.febs.mall.vo.ApiMallleaderStateVo; @@ -24,6 +21,7 @@ import cc.mrbird.febs.pay.model.OrderStateDto; import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.pay.util.WechatConfigure; +import cc.mrbird.febs.pay.util.WeixinServiceUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -33,9 +31,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -53,6 +53,8 @@ private final IXcxPayService iXcxPayService; private final SpringContextHolder springContextHolder; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; + private final MallOrderItemMapper mallOrderItemMapper; + private final MallRefundMapper mallRefundMapper; @Override @Transactional @@ -269,4 +271,65 @@ return new FebsResponse().success().data(result); } + + + @Autowired + private WeixinServiceUtil weixinServiceUtil; + private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class); + private final IMallMoneyFlowService mallMoneyFlowService; + + @Override + @Transactional + public FebsResponse leaderRefundOrder(ApiLeaderRefundOrderDto apiLeaderRefundOrderDto) { + //获取退款订单信息 + Long orderId = apiLeaderRefundOrderDto.getOrderId(); + Long itemId = apiLeaderRefundOrderDto.getItemId(); + MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId); + MallOrderItem mallOrderItem = mallOrderItemMapper.selectById(itemId); + List<MallRefundEntity> mallRefundEntities = mallRefundMapper.selectByItemIdAndOrderIdAndState(itemId, orderId, 3); + if(CollUtil.isEmpty(mallRefundEntities)){ + return new FebsResponse().fail().message("退款失败,请联系客服人员"); + } + MallRefundEntity mallRefundEntity = mallRefundEntities.get(0); + //退款订单编号 + String orderNo = mallOrderInfo.getOrderNo(); + //退款退款编号 + String refundNo = mallRefundEntity.getRefundNo(); + //退款订单金额 + BigDecimal orderAmount = mallOrderInfo.getAmount(); + BigDecimal aa = new BigDecimal(100); + int orderMoney = orderAmount.multiply(aa).intValue(); + + //退款退款金额 + BigDecimal refundAmount = mallRefundEntity.getAmount(); + BigDecimal bb = new BigDecimal(100); + int refundMoney = refundAmount.multiply(bb).intValue(); + + Boolean flag = false; + Boolean debug = xcxProperties.getDebug(); + if (debug) { + boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, 1, 1, null); + flag = b; + } else { + log.info("开始调用退款接口。。。退款编号为{}", refundNo); + boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null); + flag = b; + } + + if(flag){ + //更新订单详情 + mallOrderItem.setState(3); + mallOrderItemMapper.updateById(mallOrderItem); + //更新退款订单 + mallRefundEntity.setState(1); + mallRefundMapper.updateById(mallRefundEntity); + mallMoneyFlowService.addMoneyFlow(mallOrderInfo.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); + }else{ + mallRefundEntity.setState(2); + mallRefundMapper.updateById(mallRefundEntity); + return new FebsResponse().fail().message("退款失败,请联系客服人员"); + } + return new FebsResponse().success().message("退款成功"); + } + } diff --git a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml index 72ac793..a563110 100644 --- a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml +++ b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml @@ -124,7 +124,7 @@ and a.status = #{record.status} </if> <if test="record.status == 5"> - and a.status = 7 + and (a.status = 6 or b.state = 2) </if> <if test="record.status == 1"> and a.status = 2 -- Gitblit v1.9.1