diff --git a/DB/2024-1-5.sql b/DB/2024-1-5.sql new file mode 100644 index 00000000..5fc249aa --- /dev/null +++ b/DB/2024-1-5.sql @@ -0,0 +1,10 @@ + +/** + 交易唤醒表,增加交易流水详情 + */ +ALTER TABLE li_order_item ADD `is_refund` varchar(255) DEFAULT NULL COMMENT '是否退款'; + +/** + 交易表增加订单状态字段 + */ +ALTER TABLE li_order_item ADD `refund_price` decimal(10,2) DEFAULT NULL COMMENT '退款金额'; diff --git a/common-api/src/main/java/cn/lili/controller/common/FileDirectoryController.java b/common-api/src/main/java/cn/lili/controller/common/FileDirectoryController.java index 0057887f..fd82a9c3 100644 --- a/common-api/src/main/java/cn/lili/controller/common/FileDirectoryController.java +++ b/common-api/src/main/java/cn/lili/controller/common/FileDirectoryController.java @@ -12,6 +12,7 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; import java.util.List; /** @@ -37,16 +38,18 @@ public class FileDirectoryController { @ApiOperation(value = "添加文件目录") @PostMapping - public ResultMessage addSceneFileList(@RequestBody FileDirectory fileDirectory) { + public ResultMessage addSceneFileList(@RequestBody @Valid FileDirectory fileDirectory) { fileDirectory.setDirectoryType(UserContext.getCurrentUser().getRole().name()); + fileDirectory.setOwnerId(UserContext.getCurrentUser().getId()); fileDirectoryService.save(fileDirectory); return ResultUtil.data(fileDirectory); } @ApiOperation(value = "修改文件目录") @PutMapping - public ResultMessage editSceneFileList(@RequestBody FileDirectory fileDirectory) { + public ResultMessage editSceneFileList(@RequestBody @Valid FileDirectory fileDirectory) { fileDirectory.setDirectoryType(UserContext.getCurrentUser().getRole().name()); + fileDirectory.setOwnerId(UserContext.getCurrentUser().getId()); fileDirectoryService.updateById(fileDirectory); return ResultUtil.data(fileDirectory); } diff --git a/config/application.yml b/config/application.yml index 9590836f..4f70246c 100644 --- a/config/application.yml +++ b/config/application.yml @@ -24,12 +24,12 @@ spring: boot: admin: client: - url: http://192.168.0.108:8000 + url: http://127.0.0.1:8000 cache: type: redis # Redis redis: - host: 192.168.31.108 + host: 192.168.31.100 port: 30379 password: lilishop lettuce: @@ -60,7 +60,7 @@ spring: default-datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://192.168.31.108:30306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://192.168.31.100:30306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: lilishop maxActive: 50 @@ -241,16 +241,16 @@ lili: sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6 #域名 domain: - pc: http://192.168.0.108:8888 - wap: http://192.168.0.108:8888 - seller: http://192.168.0.108:8888 - admin: http://192.168.0.108:8888 + pc: http://127.0.0.1:8888 + wap: http://127.0.0.1:8888 + seller: http://127.0.0.1:8888 + admin: http://127.0.0.1:8888 #api地址 api: buyer: https://z171l91606.51mypc.cn - base: http://192.168.0.108:8888 - manager: http://192.168.0.108:8888 - seller: http://192.168.0.108:8888 + base: http://127.0.0.1:8888 + manager: http://127.0.0.1:8888 + seller: http://127.0.0.1:8888 # jwt 细节设定 jwt-setting: @@ -269,7 +269,7 @@ lili: data: elasticsearch: cluster-name: elasticsearch - cluster-nodes: 192.168.31.108:30920 + cluster-nodes: 192.168.31.100:30920 index: number-of-replicas: 0 number-of-shards: 3 @@ -280,7 +280,7 @@ lili: # password: LiLiShopES logstash: - server: 127.0.0.1:4560 + server: 192.168.31.100:30560 rocketmq: promotion-topic: shop_lili_promotion_topic promotion-group: shop_lili_promotion_group @@ -301,7 +301,7 @@ lili: after-sale-topic: shop_lili_after_sale_topic after-sale-group: shop_lili_after_sale_group rocketmq: - name-server: 192.168.31.108:30876 + name-server: 192.168.31.100:30876 isVIPChannel: false producer: group: lili_group @@ -310,7 +310,7 @@ rocketmq: xxl: job: admin: - addresses: http://192.168.31.108:30001/xxl-job-admin + addresses: http://192.168.31.100:30001/xxl-job-admin executor: appname: xxl-job-executor-lilishop address: diff --git a/consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java b/consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java index d6bb11e4..54beb2e5 100644 --- a/consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java @@ -1,10 +1,13 @@ package cn.lili.event.impl; +import cn.lili.common.utils.CurrencyUtil; import cn.lili.event.AfterSaleStatusChangeEvent; import cn.lili.event.TradeEvent; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.cart.entity.dto.TradeDTO; +import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderItem; +import cn.lili.modules.order.order.entity.enums.RefundStatusEnum; import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.TradeService; @@ -43,16 +46,27 @@ public class OrderStatusHandlerExecute implements TradeEvent, AfterSaleStatusCha @Override public void afterSaleStatusChange(AfterSale afterSale) { + Order order = orderService.getBySn(afterSale.getOrderSn()); + OrderItem orderItem = orderItemService.getBySn(afterSale.getOrderItemSn()); + if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) { + if (orderItem.getReturnGoodsNumber().equals(orderItem.getNum())) { + orderItem.setIsRefund(RefundStatusEnum.ALL_REFUND.name()); + } else { + orderItem.setIsRefund(RefundStatusEnum.PART_REFUND.name()); + } + orderItem.setRefundPrice(CurrencyUtil.add(afterSale.getActualRefundPrice(), orderItem.getRefundPrice())); + orderItemService.updateByAfterSale(orderItem); + //循环订单货物,判断是否已经全部售后 List orderItems = orderItemService.getByOrderSn(afterSale.getOrderSn()); // 总退货数量 int returnCount = 0; // 总购买数量 int deliverCount = 0; - for (OrderItem orderItem : orderItems) { - returnCount += orderItem.getReturnGoodsNumber(); - deliverCount += orderItem.getNum(); + for (OrderItem item : orderItems) { + returnCount += item.getReturnGoodsNumber(); + deliverCount += item.getNum(); } if (returnCount == deliverCount) { orderService.systemCancel(afterSale.getOrderSn(),"订单货物全部退款",false); diff --git a/framework/src/main/java/cn/lili/common/utils/CommonUtil.java b/framework/src/main/java/cn/lili/common/utils/CommonUtil.java index 61e7ebe9..c764f895 100644 --- a/framework/src/main/java/cn/lili/common/utils/CommonUtil.java +++ b/framework/src/main/java/cn/lili/common/utils/CommonUtil.java @@ -34,4 +34,11 @@ public class CommonUtil { return sb.toString(); } + /** + * 获取特定字符 + 6位随机数 + * @return + */ + public static String getSpecialStr(String value) { + return value + getRandomNum(); + } } diff --git a/framework/src/main/java/cn/lili/modules/file/entity/FileDirectory.java b/framework/src/main/java/cn/lili/modules/file/entity/FileDirectory.java index 807db5ce..c9e888dd 100644 --- a/framework/src/main/java/cn/lili/modules/file/entity/FileDirectory.java +++ b/framework/src/main/java/cn/lili/modules/file/entity/FileDirectory.java @@ -9,6 +9,7 @@ import lombok.Data; import javax.validation.constraints.Max; import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; @Data @TableName("li_file_directory") @@ -26,7 +27,9 @@ public class FileDirectory extends BaseEntity { private String ownerId; @ApiModelProperty(value = "父分类ID") private String parentId; + @ApiModelProperty(value = "层级") + @NotNull(message = "层级不能为空") @Min(value = 0, message = "层级最小为0") @Max(value = 2, message = "层级最大为2") private Integer level; diff --git a/framework/src/main/java/cn/lili/modules/file/serviceimpl/FileDirectoryServiceImpl.java b/framework/src/main/java/cn/lili/modules/file/serviceimpl/FileDirectoryServiceImpl.java index 4ba07bc7..01500951 100644 --- a/framework/src/main/java/cn/lili/modules/file/serviceimpl/FileDirectoryServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/file/serviceimpl/FileDirectoryServiceImpl.java @@ -1,10 +1,12 @@ package cn.lili.modules.file.serviceimpl; import cn.lili.common.security.enums.UserEnums; +import cn.lili.modules.distribution.entity.dos.DistributionOrder; import cn.lili.modules.file.entity.FileDirectory; import cn.lili.modules.file.entity.dto.FileDirectoryDTO; import cn.lili.modules.file.mapper.FileDirectoryMapper; import cn.lili.modules.file.service.FileDirectoryService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -34,8 +36,7 @@ public class FileDirectoryServiceImpl extends ServiceImpl getFileDirectoryList(String scene) { - - List fileDirectoryList = this.list(); + List fileDirectoryList = this.list(new LambdaQueryWrapper().eq(FileDirectory::getOwnerId, scene)); List fileDirectoryDTOList = new ArrayList<>(); fileDirectoryList.forEach(item -> { diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index bab90070..106e43e4 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -33,6 +33,7 @@ import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.vos.StoreVO; import cn.lili.modules.store.service.FreightTemplateService; import cn.lili.modules.store.service.StoreService; +import cn.lili.modules.system.aspect.annotation.SystemLogPoint; import cn.lili.modules.system.entity.dos.Setting; import cn.lili.modules.system.entity.dto.GoodsSetting; import cn.lili.modules.system.entity.enums.SettingEnum; @@ -165,6 +166,7 @@ public class GoodsServiceImpl extends ServiceImpl implements @Override @Transactional(rollbackFor = Exception.class) + @SystemLogPoint(description = "添加商品", customerLog = "'新增商品名称:['+#goodsOperationDTO.goodsName+']'") public void addGoods(GoodsOperationDTO goodsOperationDTO) { Goods goods = new Goods(goodsOperationDTO); //检查商品 @@ -192,6 +194,7 @@ public class GoodsServiceImpl extends ServiceImpl implements @Override @Transactional(rollbackFor = Exception.class) + @SystemLogPoint(description = "修改商品", customerLog = "'操作的商品ID:['+#goodsId+']'") public void editGoods(GoodsOperationDTO goodsOperationDTO, String goodsId) { Goods goods = new Goods(goodsOperationDTO); goods.setId(goodsId); @@ -290,6 +293,7 @@ public class GoodsServiceImpl extends ServiceImpl implements } @Override + @SystemLogPoint(description = "审核商品", customerLog = "'操作的商品ID:['+#goodsIds+']', '操作后商品状态:['+#goodsAuthEnum+']'") @Transactional(rollbackFor = Exception.class) public boolean auditGoods(List goodsIds, GoodsAuthEnum goodsAuthEnum) { List goodsCacheKeys = new ArrayList<>(); @@ -312,6 +316,7 @@ public class GoodsServiceImpl extends ServiceImpl implements @Override @Transactional(rollbackFor = Exception.class) + @SystemLogPoint(description = "商品状态操作", customerLog = "'操作类型:['+#goodsStatusEnum+']', 操作对象:['+#goodsIds+']', 操作原因:['+#underReason+']'") public Boolean updateGoodsMarketAble(List goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason) { boolean result; @@ -343,6 +348,7 @@ public class GoodsServiceImpl extends ServiceImpl implements * @return 更新结果 */ @Override + @SystemLogPoint(description = "店铺关闭下架商品", customerLog = "'操作类型:['+#goodsStatusEnum+']', 操作对象:['+#storeId+']', 操作原因:['+#underReason+']'") public Boolean updateGoodsMarketAbleByStoreId(String storeId, GoodsStatusEnum goodsStatusEnum, String underReason) { @@ -358,6 +364,7 @@ public class GoodsServiceImpl extends ServiceImpl implements } @Override + @SystemLogPoint(description = "管理员关闭下架商品", customerLog = "'操作类型:['+#goodsStatusEnum+']', 操作对象:['+#goodsIds+']', 操作原因:['+#underReason+']'") @Transactional(rollbackFor = Exception.class) public Boolean managerUpdateGoodsMarketAble(List goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason) { boolean result; @@ -386,6 +393,7 @@ public class GoodsServiceImpl extends ServiceImpl implements @Override @Transactional(rollbackFor = Exception.class) + @SystemLogPoint(description = "删除商品", customerLog = "操作对象:['+#goodsIds+']'") public Boolean deleteGoods(List goodsIds) { LambdaUpdateWrapper updateWrapper = this.getUpdateWrapperByStoreAuthority(); @@ -432,6 +440,7 @@ public class GoodsServiceImpl extends ServiceImpl implements } @Override + @SystemLogPoint(description = "修改商品库存", customerLog = "操作的商品ID:['+#goodsId+']', 修改后的库存:['+#quantity+']'") public void updateStock(String goodsId, Integer quantity) { LambdaUpdateWrapper lambdaUpdateWrapper = Wrappers.lambdaUpdate(); lambdaUpdateWrapper.set(Goods::getQuantity, quantity); diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java b/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java index b39565fc..8027050a 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java +++ b/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java @@ -3,6 +3,7 @@ package cn.lili.modules.member.entity.dos; import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.security.sensitive.Sensitive; import cn.lili.common.security.sensitive.enums.SensitiveStrategy; +import cn.lili.common.utils.CommonUtil; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; @@ -101,7 +102,7 @@ public class Member extends BaseEntity { this.username = username; this.password = password; this.mobile = mobile; - this.nickName = "临时昵称"; + this.nickName = CommonUtil.getSpecialStr("用户"); this.disabled = true; this.haveStore = false; this.sex = 0; diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 6be25351..c64773f8 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -241,7 +241,7 @@ public class MemberServiceImpl extends ServiceImpl impleme public Member autoRegister(ConnectAuthUser authUser) { if (CharSequenceUtil.isEmpty(authUser.getNickname())) { - authUser.setNickname("临时昵称"); + authUser.setNickname(CommonUtil.getSpecialStr("用户")); } if (CharSequenceUtil.isEmpty(authUser.getAvatar())) { authUser.setAvatar("https://i.loli.net/2020/11/19/LyN6JF7zZRskdIe.png"); @@ -841,4 +841,5 @@ public class MemberServiceImpl extends ServiceImpl impleme throw new ServiceException(ResultCode.USER_EXIST); } } + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java index 70bfab19..d1b4b55e 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java @@ -2,6 +2,7 @@ package cn.lili.modules.order.aftersale.serviceimpl; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; @@ -22,10 +23,7 @@ import cn.lili.modules.order.aftersale.mapper.AfterSaleMapper; import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderItem; -import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; -import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; -import cn.lili.modules.order.order.entity.enums.OrderTypeEnum; -import cn.lili.modules.order.order.entity.enums.PayStatusEnum; +import cn.lili.modules.order.order.entity.enums.*; import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.trade.entity.enums.AfterSaleRefundWayEnum; @@ -217,7 +215,7 @@ public class AfterSaleServiceImpl extends ServiceImpl() + + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper() .eq(OrderItem::getSn, orderItem.getSn()) .set(OrderItem::getAfterSaleStatus, orderItem.getAfterSaleStatus()) - .set(OrderItem::getReturnGoodsNumber, orderItem.getReturnGoodsNumber())); + .set(OrderItem::getReturnGoodsNumber, orderItem.getReturnGoodsNumber()); + + if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) { + if (orderItem.getReturnGoodsNumber().equals(orderItem.getNum())) { + lambdaUpdateWrapper.set(OrderItem::getIsRefund, RefundStatusEnum.ALL_REFUND.name()); + } else { + lambdaUpdateWrapper.set(OrderItem::getIsRefund, RefundStatusEnum.PART_REFUND.name()); + } + } else if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.APPLY.name())) { + lambdaUpdateWrapper.set(OrderItem::getIsRefund, RefundStatusEnum.REFUNDING.name()); + } else if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.REFUSE.name()) || + afterSale.getServiceStatus().equals(AfterSaleStatusEnum.BUYER_CANCEL.name()) || + afterSale.getServiceStatus().equals(AfterSaleStatusEnum.SELLER_TERMINATION.name())) { + lambdaUpdateWrapper.set(OrderItem::getIsRefund, RefundStatusEnum.NO_REFUND.name()); + } + + orderItemService.update(lambdaUpdateWrapper); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java index 5a0eb4a2..d14dc7b3 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java @@ -11,6 +11,7 @@ import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.order.order.entity.enums.CommentStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; +import cn.lili.modules.order.order.entity.enums.RefundStatusEnum; import cn.lili.modules.promotion.entity.vos.PromotionSkuVO; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; @@ -115,6 +116,15 @@ public class OrderItem extends BaseEntity { @ApiModelProperty(value = "退货商品数量") private Integer returnGoodsNumber; + /** + * @see cn.lili.modules.order.order.entity.enums.RefundStatusEnum + */ + @ApiModelProperty(value = "退款状态") + private String isRefund; + + @ApiModelProperty(value = "退款金额") + private Double refundPrice; + @ApiModelProperty(value = "已发货数量") private Integer deliverNumber; @@ -155,6 +165,13 @@ public class OrderItem extends BaseEntity { } + public String getIsRefund() { + if (isRefund == null) { + return RefundStatusEnum.NO_REFUND.name(); + } + return isRefund; + } + public PriceDetailDTO getPriceDetailDTO() { return JSONUtil.toBean(priceDetail, PriceDetailDTO.class); } diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/OrderStatusEnum.java b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/OrderStatusEnum.java index 8edcaccf..8c3b7f89 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/OrderStatusEnum.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/OrderStatusEnum.java @@ -21,7 +21,7 @@ public enum OrderStatusEnum { * 虚拟订单需要核验商品 */ TAKE("待核验"), - CANCELLED("已取消"); + CANCELLED("已关闭"); private final String description; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/RefundStatusEnum.java b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/RefundStatusEnum.java new file mode 100644 index 00000000..a64f52b9 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/RefundStatusEnum.java @@ -0,0 +1,34 @@ +package cn.lili.modules.order.order.entity.enums; + +/** + * 退款状态枚举 + * + * @author Lele + * @since 2024-1-5 10:59:22 + */ +public enum RefundStatusEnum { + + /** + * 退款状态 + */ + ALL_REFUND("全部退款"), + PART_REFUND("部分退款"), + NO_REFUND("未退款"), + REFUNDING("退款中"); + + private final String description; + + RefundStatusEnum(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + public String description() { + return this.description; + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderItemVO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderItemVO.java index 5ab18dcf..66134c9f 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderItemVO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderItemVO.java @@ -56,6 +56,14 @@ public class OrderItemVO { @ApiModelProperty(value = "评论状态:未评论(UNFINISHED),待追评(WAIT_CHASE),评论完成(FINISHED),") private String commentStatus; + /** + * @see cn.lili.modules.order.order.entity.enums.RefundStatusEnum + */ + @ApiModelProperty(value = "退款状态") + private String isRefund; + + @ApiModelProperty(value = "退款金额") + private String refundPrice; public void setSn(String sn) { this.sn = sn; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderSimpleVO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderSimpleVO.java index 23a66b09..b378d856 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderSimpleVO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderSimpleVO.java @@ -142,6 +142,12 @@ public class OrderSimpleVO { @ApiModelProperty(value = "订单促销类型") private String orderPromotionType; + @ApiModelProperty(value = "是否退款") + private String groupIsRefund; + + @ApiModelProperty(value = "退款金额") + private String groupRefundPrice; + public List getOrderItems() { if (CharSequenceUtil.isEmpty(groupGoodsId)) { return new ArrayList<>(); @@ -188,6 +194,12 @@ public class OrderSimpleVO { if (CharSequenceUtil.isNotEmpty(groupGoodsPrice) && groupGoodsPrice.split(",").length == groupGoodsId.split(",").length) { orderItemVO.setGoodsPrice(Double.parseDouble(groupGoodsPrice.split(",")[i])); } + if (CharSequenceUtil.isNotEmpty(groupIsRefund) && groupIsRefund.split(",").length == groupGoodsId.split(",").length) { + orderItemVO.setIsRefund(groupIsRefund.split(",")[i]); + } + if (CharSequenceUtil.isNotEmpty(groupRefundPrice) && groupRefundPrice.split(",").length == groupGoodsId.split(",").length) { + orderItemVO.setRefundPrice(groupRefundPrice.split(",")[i]); + } return orderItemVO; } diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java index 03bf771d..b21ccff4 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java @@ -71,6 +71,8 @@ public interface OrderMapper extends BaseMapper { ",GROUP_CONCAT(oi.comment_status) as group_comment_status" + ",GROUP_CONCAT(oi.sn) as group_order_items_sn " + ",GROUP_CONCAT(oi.goods_price) as group_goods_price " + + ",GROUP_CONCAT(oi.is_refund) as group_is_refund " + + ",GROUP_CONCAT(oi.refund_price) as group_refund_price " + " FROM li_order o LEFT JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") IPage queryByParams(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java index c40a2d84..703c85af 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java @@ -33,6 +33,12 @@ public interface OrderItemService extends IService { */ void updateAfterSaleStatus(String orderItemSn, OrderItemAfterSaleStatusEnum orderItemAfterSaleStatusEnum); + /** + * 更新售后状态 + * @param orderItem + */ + void updateByAfterSale(OrderItem orderItem); + /** * 更新订单可投诉状态 * diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java index bc03843b..e4841bd8 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java @@ -44,6 +44,15 @@ public class OrderItemServiceImpl extends ServiceImpl lambdaUpdateWrapper = new LambdaUpdateWrapper() + .eq(OrderItem::getSn, orderItem.getSn()) + .set(OrderItem::getIsRefund, orderItem.getIsRefund()) + .set(OrderItem::getRefundPrice, orderItem.getRefundPrice()); + this.update(lambdaUpdateWrapper); + } + /** * 更新订单可投诉状态 * diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java index ee4e41d5..1225e623 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java @@ -26,6 +26,7 @@ import cn.lili.modules.promotion.service.SeckillApplyService; import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsIndexService; +import cn.lili.modules.system.aspect.annotation.SystemLogPoint; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -273,6 +274,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(PromotionGoods::getSkuId, skuId); diff --git a/manager-api/src/main/java/cn/lili/controller/passport/MemberManagerController.java b/manager-api/src/main/java/cn/lili/controller/passport/MemberManagerController.java index b64308d7..aad8564f 100644 --- a/manager-api/src/main/java/cn/lili/controller/passport/MemberManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/passport/MemberManagerController.java @@ -11,6 +11,7 @@ import cn.lili.modules.member.entity.dto.MemberAddDTO; import cn.lili.modules.member.entity.vo.MemberSearchVO; import cn.lili.modules.member.entity.vo.MemberVO; import cn.lili.modules.member.service.MemberService; +import cn.lili.modules.system.aspect.annotation.SystemLogPoint; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -51,6 +52,7 @@ public class MemberManagerController { } @ApiOperation(value = "添加会员") + @SystemLogPoint(description = "添加会员", customerLog = "'新增会员名称: ['+#member.username+']'") @PostMapping public ResultMessage save(@Valid MemberAddDTO member) { @@ -59,6 +61,7 @@ public class MemberManagerController { @DemoSite @PreventDuplicateSubmissions + @SystemLogPoint(description = "修改会员信息", customerLog = "'修改的会员名称: ['+#managerMemberEditDTO.username+']'") @ApiOperation(value = "修改会员基本信息") @PutMapping public ResultMessage update(@Valid ManagerMemberEditDTO managerMemberEditDTO) { @@ -67,6 +70,7 @@ public class MemberManagerController { @DemoSite @PreventDuplicateSubmissions + @SystemLogPoint(description = "修改会员状态", customerLog = "'修改的会员名称: ['+#memberIds+']', '是否开启: ['+#disabled+']'") @ApiOperation(value = "修改会员状态,开启关闭会员") @ApiImplicitParams({ @ApiImplicitParam(name = "memberIds", value = "会员ID", required = true, dataType = "String", allowMultiple = true, paramType = "query"),