From 1482c90ec996bb994200aba63a235a3820621f21 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 23 Sep 2021 15:47:07 +0800 Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/xc-mall --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 110 +++++++++++ sql/xc_mall.sql | 33 +++ src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundOperationMapper.java | 7 src/main/java/cc/mrbird/febs/mall/dto/DelCartGoodsDto.java | 20 ++ src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java | 2 src/main/java/cc/mrbird/febs/common/enumerates/OrderRefundStatusEnum.java | 42 ++++ src/main/resources/mapper/modules/MallShoppingCartMapper.xml | 5 src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefund.java | 33 +++ src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java | 2 src/main/java/cc/mrbird/febs/mall/dto/GoodsCntDto.java | 25 ++ src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java | 24 ++ src/main/java/cc/mrbird/febs/mall/vo/OrderRefundVo.java | 32 +++ src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundMapper.java | 10 + src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefundOperation.java | 20 ++ src/main/resources/mapper/modules/MallOrderInfoMapper.xml | 1 src/main/java/cc/mrbird/febs/mall/conversion/MallOrderRefundConversion.java | 17 + src/main/java/cc/mrbird/febs/mall/dto/RefundExpressDto.java | 24 ++ src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java | 24 ++ src/main/java/cc/mrbird/febs/common/enumerates/OrderStatusEnum.java | 2 src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java | 10 src/main/java/cc/mrbird/febs/common/utils/AppContants.java | 4 src/main/resources/mapper/modules/MallOrderRefundOperationMapper.xml | 5 src/main/java/cc/mrbird/febs/mall/dto/AddRefundDto.java | 23 ++ src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java | 3 src/main/resources/mapper/modules/MallOrderRefundMapper.xml | 8 25 files changed, 467 insertions(+), 19 deletions(-) diff --git a/sql/xc_mall.sql b/sql/xc_mall.sql index 89585f9..5f99d0f 100644 --- a/sql/xc_mall.sql +++ b/sql/xc_mall.sql @@ -243,3 +243,36 @@ alter table mall_order_info add receiving_time datetime null comment '收货时间'; +DROP TABLE IF EXISTS mall_order_refund; +CREATE TABLE mall_order_refund( + REVISION INT COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) COMMENT '创建人' , + CREATED_TIME DATETIME COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) COMMENT '更新人' , + UPDATED_TIME DATETIME COMMENT '更新时间' , + ID BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键' , + member_id BIGINT COMMENT '用户ID' , + order_id BIGINT COMMENT '订单ID' , + reason VARCHAR(255) COMMENT '退款原因' , + desp TEXT COMMENT '描述' , + remark TEXT COMMENT '备注' , + status INT COMMENT '状态;1-已申请2-同意退款3-驳回退款4-已提交物流信息5-已退款' , + express_no VARCHAR(255) COMMENT '物流单号' , + express_com VARCHAR(255) COMMENT '物流公司' , + PRIMARY KEY (ID) +) COMMENT = '订单退款'; + +DROP TABLE IF EXISTS mall_order_refund_operation; +CREATE TABLE mall_order_refund_operation( + REVISION INT COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) COMMENT '创建人' , + CREATED_TIME DATETIME COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) COMMENT '更新人' , + UPDATED_TIME DATETIME COMMENT '更新时间' , + ID BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键' , + refund_id BIGINT COMMENT '退款ID' , + order_id BIGINT COMMENT '订单ID' , + content TEXT COMMENT '操作内容' , + PRIMARY KEY (ID) +) COMMENT = '退款操作明细'; + diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/OrderRefundStatusEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/OrderRefundStatusEnum.java new file mode 100644 index 0000000..60e36fc --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/enumerates/OrderRefundStatusEnum.java @@ -0,0 +1,42 @@ +package cc.mrbird.febs.common.enumerates; + +import lombok.Getter; + +/** + * @author wzy + * @date 2021-09-23 + **/ +@Getter +public enum OrderRefundStatusEnum { + + /** + * 退款已提交 + */ + REFUND_APPLY(1), + /** + * 同意退款 + */ + AGREE(2), + /** + * 驳回退款 + */ + DISAGREE(3), + /** + * 物流信息已提交 + */ + EXPRESS_SUBMIT(4), + /** + * 已退款 + */ + FINISH(5), + /** + * 已取消 + */ + CANCEL(6); + + private final Integer value; + + OrderRefundStatusEnum(int value) { + this.value = value; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/OrderStatusEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/OrderStatusEnum.java index a03318e..96cf5b7 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/OrderStatusEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/OrderStatusEnum.java @@ -26,7 +26,7 @@ */ REFUNDING(5), /** - * 已退款 + * 退款处理完成 */ REFUNDED(6), /** diff --git a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java index 4d0dd5b..c8af7fd 100644 --- a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java +++ b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java @@ -58,5 +58,9 @@ public static final String TIME_OUT = "time_out"; + public static final int DEL_FLAG_Y = 1; + + public static final int DEL_FLAG_N = 2; + } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java index 4902ff1..3005441 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java @@ -1,9 +1,7 @@ package cc.mrbird.febs.mall.controller; import cc.mrbird.febs.common.entity.FebsResponse; -import cc.mrbird.febs.mall.dto.AddOrderDto; -import cc.mrbird.febs.mall.dto.OrderListDto; -import cc.mrbird.febs.mall.dto.PayOrderDto; +import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.service.IApiMallOrderInfoService; import cc.mrbird.febs.mall.vo.OrderDetailVo; import cc.mrbird.febs.mall.vo.OrderListVo; @@ -85,4 +83,24 @@ return new FebsResponse().success().message("确认成功"); } + @ApiOperation(value = "删除订单", notes = "删除订单") + @PostMapping(value = "/delOrder/{id}") + public FebsResponse delOrder(@PathVariable("id") Long id) { + mallOrderInfoService.delOrder(id); + return new FebsResponse().success().message("删除成功"); + } + + @ApiOperation(value = "提交退款申请", notes = "提交退款申请") + @PostMapping(value = "/applyRefund") + public FebsResponse applyRefund(@RequestBody AddRefundDto addRefundDto) { + mallOrderInfoService.applyRefund(addRefundDto); + return new FebsResponse().success().message("提交成功"); + } + + @ApiOperation(value = "提交退款物流信息", notes = "提交退款物流信息") + @PostMapping(value = "/refundExpress") + public FebsResponse refundExpress(@RequestBody RefundExpressDto refundExpressDto) { + mallOrderInfoService.refundExpress(refundExpressDto); + return new FebsResponse().success().message("提交成功"); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java index a2d4ae7..d057459 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java @@ -2,8 +2,12 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.dto.AddCartDto; +import cc.mrbird.febs.mall.dto.DelCartGoodsDto; +import cc.mrbird.febs.mall.dto.GoodsCntDto; +import cc.mrbird.febs.mall.entity.MallShoppingCart; import cc.mrbird.febs.mall.service.IApiMallShoppingCartService; import cc.mrbird.febs.mall.vo.ShoppingCartGoodsVo; +import cn.hutool.core.util.StrUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; @@ -12,6 +16,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * @author wzy @@ -44,9 +50,21 @@ } @ApiOperation(value = "从购物车中删除商品", notes = "从购物车中删除商品") - @PostMapping(value = "/delGoods/{id}") - public FebsResponse delGoods(@PathVariable("id") Long id) { - mallShoppingCartService.removeById(id); + @PostMapping(value = "/delGoods") + public FebsResponse delGoods(@RequestBody DelCartGoodsDto delCartGoodsDto) { + List<String> ids = StrUtil.split(delCartGoodsDto.getIds(), ','); + mallShoppingCartService.removeByIds(ids); return new FebsResponse().success().data("删除成功"); } + + @ApiOperation(value = "修改购物车商品数量", notes = "修改购物车商品数量") + @PostMapping(value = "/goodsCnt") + public FebsResponse goodsCnt(@RequestBody GoodsCntDto goodsCntDto) { + MallShoppingCart shoppingCart = new MallShoppingCart(); + shoppingCart.setId(goodsCntDto.getId()); + shoppingCart.setCnt(goodsCntDto.getCnt()); + + mallShoppingCartService.updateById(shoppingCart); + return new FebsResponse().success(); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/MallOrderRefundConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/MallOrderRefundConversion.java new file mode 100644 index 0000000..5eaaa0f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/conversion/MallOrderRefundConversion.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.conversion; + +import cc.mrbird.febs.mall.entity.MallOrderRefund; +import cc.mrbird.febs.mall.vo.OrderRefundVo; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * @author wzy + * @date 2021-09-23 + **/ +@Mapper +public abstract class MallOrderRefundConversion { + public static final MallOrderRefundConversion INSTANCE = Mappers.getMapper(MallOrderRefundConversion.class); + + public abstract OrderRefundVo entityToVo(MallOrderRefund orderRefund); +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddRefundDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddRefundDto.java new file mode 100644 index 0000000..1b0071f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/AddRefundDto.java @@ -0,0 +1,23 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wzy + * @date 2021-09-23 + **/ +@Data +@ApiModel(value = "AddRefundDto", description = "提交退款申请参数接收类") +public class AddRefundDto { + + @ApiModelProperty(value = "订单ID", example = "1") + private Long id; + + @ApiModelProperty(value = "退款原因", example = "太差了") + private String reason; + + @ApiModelProperty(value = "描述", example = "描述") + private String desp; +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/DelCartGoodsDto.java b/src/main/java/cc/mrbird/febs/mall/dto/DelCartGoodsDto.java new file mode 100644 index 0000000..0cd3c0a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/DelCartGoodsDto.java @@ -0,0 +1,20 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author wzy + * @date 2021-09-23 + **/ +@Data +@ApiModel(value = "DelCartGoodsDto", description = "删除购物车商品接口接收参数类") +public class DelCartGoodsDto { + + @NotBlank(message = "参数不能为空") + @ApiModelProperty(value = "逗号隔开id", example = "1,2,3") + private String ids; +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/GoodsCntDto.java b/src/main/java/cc/mrbird/febs/mall/dto/GoodsCntDto.java new file mode 100644 index 0000000..ed26674 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/GoodsCntDto.java @@ -0,0 +1,25 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * @author wzy + * @date 2021-09-23 + **/ +@Data +@ApiModel(value = "GoodsCntDto", description = "修改购物车数量参数接收类") +public class GoodsCntDto { + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "购物车ID", example = "1") + private Long id; + + @Min(1) + @ApiModelProperty(value = "数量", example = "12") + private Integer cnt; +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/RefundExpressDto.java b/src/main/java/cc/mrbird/febs/mall/dto/RefundExpressDto.java new file mode 100644 index 0000000..94e5948 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/RefundExpressDto.java @@ -0,0 +1,24 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wzy + * @date 2021-09-23 + **/ +@Data +@ApiModel(value = "RefundExpressDto", description = "退款订单物流接收参数类") +public class RefundExpressDto { + + @ApiModelProperty(value = "订单ID", example = "1") + private Long id; + + @ApiModelProperty(value = "物流单号", example = "123") + private String expressNo; + + @ApiModelProperty(value = "物流公司", example = "中通") + private String expressCom; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefund.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefund.java new file mode 100644 index 0000000..dd56255 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefund.java @@ -0,0 +1,33 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @author wzy + * @date 2021-09-23 + **/ +@Data +@TableName("mall_order_refund") +public class MallOrderRefund extends BaseEntity { + + private Long memberId; + + private Long orderId; + + private String reason; + + private String desp; + + private String remark; + + /** + * 1-已申请 2-同意退款 3-驳回退款 4-已提交物流信息 5-已退款 6-已取消 + */ + private Integer status; + + private String expressNo; + + private String expressCom; +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefundOperation.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefundOperation.java new file mode 100644 index 0000000..de05e22 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefundOperation.java @@ -0,0 +1,20 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @author wzy + * @date 2021-09-23 + **/ +@Data +@TableName("mall_order_refund_operation") +public class MallOrderRefundOperation extends BaseEntity { + + private Long refundId; + + private Long orderId; + + private String content; +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundMapper.java new file mode 100644 index 0000000..c99e4ee --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundMapper.java @@ -0,0 +1,10 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.entity.MallOrderRefund; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +public interface MallOrderRefundMapper extends BaseMapper<MallOrderRefund> { + + MallOrderRefund selectOrderRefundByOrderId(@Param("orderId") Long orderId); +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundOperationMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundOperationMapper.java new file mode 100644 index 0000000..8ce4622 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundOperationMapper.java @@ -0,0 +1,7 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.entity.MallOrderRefundOperation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface MallOrderRefundOperationMapper extends BaseMapper<MallOrderRefundOperation> { +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java index 8b79d93..c90781a 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java @@ -15,4 +15,6 @@ List<MallShoppingCart> selectCartGoodsList(@Param("memberId") Long memberId); MallShoppingCart selectCartGoodsBySkuId(@Param("skuId") Long skuId, @Param("memberId") Long memberId); + + int delBySkuId(@Param("skuId") Long skuId, @Param("memberId") Long memberId); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java index fc62ef8..bfefbbc 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java @@ -1,8 +1,6 @@ package cc.mrbird.febs.mall.service; -import cc.mrbird.febs.mall.dto.AddOrderDto; -import cc.mrbird.febs.mall.dto.OrderListDto; -import cc.mrbird.febs.mall.dto.PayOrderDto; +import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.MallOrderInfo; import cc.mrbird.febs.mall.vo.OrderDetailVo; import cc.mrbird.febs.mall.vo.OrderListVo; @@ -23,4 +21,10 @@ OrderDetailVo findOrderDetailsById(Long id); void confirmOrder(Long id); + + void delOrder(Long id); + + void applyRefund(AddRefundDto addRefundDto); + + void refundExpress(RefundExpressDto refundExpressDto); } 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 5ccdcba..e66a8cd 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 @@ -1,20 +1,21 @@ package cc.mrbird.febs.mall.service.impl; +import cc.mrbird.febs.common.enumerates.OrderRefundStatusEnum; import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.MallUtils; import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion; -import cc.mrbird.febs.mall.dto.AddOrderDto; -import cc.mrbird.febs.mall.dto.AddOrderItemDto; -import cc.mrbird.febs.mall.dto.OrderListDto; -import cc.mrbird.febs.mall.dto.PayOrderDto; +import cc.mrbird.febs.mall.conversion.MallOrderRefundConversion; +import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IApiMallOrderInfoService; import cc.mrbird.febs.mall.vo.OrderDetailVo; import cc.mrbird.febs.mall.vo.OrderListVo; +import cc.mrbird.febs.mall.vo.OrderRefundVo; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; @@ -48,6 +49,9 @@ private final MallMemberMapper memberMapper; private final IApiMallMemberWalletService memberWalletService; private final MallExpressInfoMapper expressInfoMapper; + private final MallOrderRefundMapper mallOrderRefundMapper; + private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper; + private final MallShoppingCartMapper mallShoppingCartMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -106,6 +110,10 @@ sku.setStock(sku.getStock() - item.getCnt()); mallGoodsSkuMapper.updateById(sku); + + if (addOrderDto.getType() == 1) { + mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId()); + } } orderInfo.setAmount(total); @@ -119,7 +127,7 @@ public void cancelOrder(Long id) { MallMember member = LoginUserUtil.getLoginUser(); MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); - if (orderInfo == null) { + if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { throw new FebsException("订单不存在"); } @@ -137,7 +145,7 @@ public String payOrder(PayOrderDto payOrderDto) { MallMember member = LoginUserUtil.getLoginUser(); MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), payOrderDto.getId()); - if (orderInfo == null) { + if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { throw new FebsException("订单不存在"); } @@ -186,7 +194,7 @@ @Override public OrderDetailVo findOrderDetailsById(Long id) { MallOrderInfo orderInfo = this.baseMapper.selectOrderDetailsById(id); - if (orderInfo == null) { + if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { throw new FebsException("订单不存在"); } @@ -197,6 +205,12 @@ orderDetailVo.setExpressNo(expressInfo.getExpressNo()); orderDetailVo.setExpressCom(expressInfo.getExpressCom()); } + + if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue() || orderInfo.getStatus() == OrderStatusEnum.REFUNDED.getValue()) { + MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId()); + OrderRefundVo orderRefundVo = MallOrderRefundConversion.INSTANCE.entityToVo(orderRefund); + orderDetailVo.setOrderRefund(orderRefundVo); + } return orderDetailVo; } @@ -205,12 +219,92 @@ public void confirmOrder(Long id) { MallMember member = LoginUserUtil.getLoginUser(); MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); - if (orderInfo == null) { + if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { throw new FebsException("订单不存在"); + } + + if (orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) { + throw new FebsException("该状态不能确认收货"); } orderInfo.setStatus(OrderStatusEnum.FINISH.getValue()); orderInfo.setReceivingTime(new Date()); this.baseMapper.updateById(orderInfo); } + + @Override + public void delOrder(Long id) { + MallMember member = LoginUserUtil.getLoginUser(); + MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); + if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { + throw new FebsException("订单不存在"); + } + + orderInfo.setDelFlag(AppContants.DEL_FLAG_Y); + this.baseMapper.updateById(orderInfo); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void applyRefund(AddRefundDto addRefundDto) { + MallOrderInfo orderInfo = this.baseMapper.selectById(addRefundDto.getId()); + if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { + throw new FebsException("订单不存在"); + } + + if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue()) { + throw new FebsException("已提交退款, 请勿重复提交"); + } + + if (orderInfo.getStatus() == OrderStatusEnum.WAIT_PAY.getValue()) { + throw new FebsException("该订单不能退款"); + } + + MallMember member = LoginUserUtil.getLoginUser(); + orderInfo.setStatus(OrderStatusEnum.REFUNDING.getValue()); + this.baseMapper.updateById(orderInfo); + + MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId()); + if (orderRefund == null) { + orderRefund = new MallOrderRefund(); + orderRefund.setOrderId(orderInfo.getId()); + orderRefund.setMemberId(member.getId()); + orderRefund.setDesp(addRefundDto.getDesp()); + orderRefund.setReason(addRefundDto.getReason()); + orderRefund.setStatus(OrderRefundStatusEnum.REFUND_APPLY.getValue()); + mallOrderRefundMapper.insert(orderRefund); + } else { + orderRefund.setDesp(addRefundDto.getDesp()); + orderRefund.setReason(addRefundDto.getReason()); + orderRefund.setStatus(OrderRefundStatusEnum.REFUND_APPLY.getValue()); + mallOrderRefundMapper.updateById(orderRefund); + } + + + MallOrderRefundOperation operation = new MallOrderRefundOperation(); + operation.setOrderId(orderInfo.getId()); + operation.setRefundId(orderRefund.getId()); + operation.setContent(StrUtil.format("用户:{}提交退款申请", member.getName())); + mallOrderRefundOperationMapper.insert(operation); + } + + @Override + public void refundExpress(RefundExpressDto refundExpressDto) { + MallMember member = LoginUserUtil.getLoginUser(); + + MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(refundExpressDto.getId()); + if (!OrderRefundStatusEnum.AGREE.getValue().equals(orderRefund.getStatus())) { + throw new FebsException("暂不能提交物流信息"); + } + + orderRefund.setExpressNo(refundExpressDto.getExpressNo()); + orderRefund.setExpressCom(refundExpressDto.getExpressCom()); + mallOrderRefundMapper.updateById(orderRefund); + + MallOrderRefundOperation operation = new MallOrderRefundOperation(); + operation.setOrderId(refundExpressDto.getId()); + operation.setRefundId(orderRefund.getId()); + operation.setContent(StrUtil.format("用户:{}提交物流信息,快递公司:{},单号:{}", member.getName(), refundExpressDto.getExpressCom(), refundExpressDto.getExpressNo())); + mallOrderRefundOperationMapper.insert(operation); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java index 36d8f8e..f18c329 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java @@ -51,4 +51,7 @@ @ApiModelProperty(value = "订单明细") private List<OrderItemVo> items; + + @ApiModelProperty(value = "订单退款信息") + private OrderRefundVo orderRefund; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java index 24b70e1..85089a9 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java @@ -25,7 +25,7 @@ @ApiModelProperty(value = "下单时间") private Date orderTime; - @ApiModelProperty(value = "状态 1-待支付2-待发货3-待收货4-已完成5-退款中6-已退款7-已取消") + @ApiModelProperty(value = "状态 1-待支付 2-待发货 3-待收货 4-已完成 5-退款中 6-退款处理完成 7-已取消") private Integer status; @ApiModelProperty(value = "订单金额") diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderRefundVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderRefundVo.java new file mode 100644 index 0000000..c320147 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderRefundVo.java @@ -0,0 +1,32 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wzy + * @date 2021-09-23 + **/ +@Data +@ApiModel(value = "OrderRefundVo", description = "订单退款详情返回参数类") +public class OrderRefundVo { + + @ApiModelProperty(value = "退款ID") + private Long id; + + @ApiModelProperty(value = "退款理由") + private String reason; + + @ApiModelProperty(value = "描述") + private String desp; + + @ApiModelProperty(value = "退款状态 1-已申请 2-同意退款 3-驳回退款 4-已提交物流信息 5-已退款 6-已取消") + private Integer status; + + @ApiModelProperty(value = "物流单号") + private String expressNo; + + @ApiModelProperty(value = "物流公司") + private String expressCom; +} diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml index cf66ff2..a519661 100644 --- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml +++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml @@ -53,6 +53,7 @@ <result column="longitude" property="longitude" /> <result column="latitude" property="latitude" /> <result column="remark" property="remark" /> + <result column="del_flag" property="delFlag" /> <collection property="items" ofType="cc.mrbird.febs.mall.entity.MallOrderItem"> <id property="id" column="item_id" /> <result property="orderId" column="order_id" /> diff --git a/src/main/resources/mapper/modules/MallOrderRefundMapper.xml b/src/main/resources/mapper/modules/MallOrderRefundMapper.xml new file mode 100644 index 0000000..383920b --- /dev/null +++ b/src/main/resources/mapper/modules/MallOrderRefundMapper.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cc.mrbird.febs.mall.mapper.MallOrderRefundMapper"> + + <select id="selectOrderRefundByOrderId" resultType="cc.mrbird.febs.mall.entity.MallOrderRefund"> + select * from mall_order_refund where order_id=#{orderId} + </select> +</mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallOrderRefundOperationMapper.xml b/src/main/resources/mapper/modules/MallOrderRefundOperationMapper.xml new file mode 100644 index 0000000..e136417 --- /dev/null +++ b/src/main/resources/mapper/modules/MallOrderRefundOperationMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cc.mrbird.febs.mall.mapper.MallOrderRefundOperationMapper"> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallShoppingCartMapper.xml b/src/main/resources/mapper/modules/MallShoppingCartMapper.xml index 1dd5d8d..353e3ff 100644 --- a/src/main/resources/mapper/modules/MallShoppingCartMapper.xml +++ b/src/main/resources/mapper/modules/MallShoppingCartMapper.xml @@ -20,4 +20,9 @@ select * from mall_shopping_cart where member_id=#{memberId} and sku_id=#{skuId} </select> + + <delete id="delBySkuId"> + delete from mall_shopping_cart + where member_id=#{memberId} and sku_id=#{skuId} + </delete> </mapper> \ No newline at end of file -- Gitblit v1.9.1