Browse Source

暂存:售后管理

LuoDLeo 7 months ago
parent
commit
b72773cb1a
23 changed files with 237 additions and 290 deletions
  1. 2 0
      src/main/java/org/springblade/common/enums/AfterSalesTypeEnum.java
  2. 40 33
      src/main/java/org/springblade/modules/api/controller/ApiAfterSalesController.java
  3. 0 5
      src/main/java/org/springblade/modules/api/controller/ApiGrouponController.java
  4. 3 0
      src/main/java/org/springblade/modules/api/controller/ApiMerchantOrderController.java
  5. 22 5
      src/main/java/org/springblade/modules/api/request/AfterSalesRequest.java
  6. 0 1
      src/main/java/org/springblade/modules/api/response/GrouponOrderResponse.java
  7. 2 4
      src/main/java/org/springblade/modules/api/response/UserOrderResponse.java
  8. 0 3
      src/main/java/org/springblade/modules/api/service/SubmitOrderService.java
  9. 0 2
      src/main/java/org/springblade/modules/api/service/impl/GrouponOrderServiceImpl.java
  10. 13 23
      src/main/java/org/springblade/modules/finance/controller/AfterSalesController.java
  11. 2 2
      src/main/java/org/springblade/modules/finance/entity/AfterSales.java
  12. 16 0
      src/main/java/org/springblade/modules/finance/entity/OrderGoods.java
  13. 5 4
      src/main/java/org/springblade/modules/finance/mapper/AfterSalesGoodsMapper.java
  14. 1 1
      src/main/java/org/springblade/modules/finance/mapper/AfterSalesGoodsMapper.xml
  15. 4 4
      src/main/java/org/springblade/modules/finance/service/IAfterSalesGoodsService.java
  16. 0 9
      src/main/java/org/springblade/modules/finance/service/IOrderGrouponService.java
  17. 5 5
      src/main/java/org/springblade/modules/finance/service/impl/AfterSalesGoodsServiceImpl.java
  18. 54 59
      src/main/java/org/springblade/modules/finance/service/impl/AfterSalesServiceImpl.java
  19. 12 84
      src/main/java/org/springblade/modules/finance/service/impl/OrderGrouponServiceImpl.java
  20. 13 24
      src/main/java/org/springblade/modules/finance/service/impl/OrderServiceImpl.java
  21. 22 14
      src/main/java/org/springblade/modules/finance/vo/AfterSalesVO.java
  22. 21 0
      src/main/java/org/springblade/modules/finance/vo/OrderGoodsVO.java
  23. 0 8
      src/main/java/org/springblade/modules/groupon/controller/TzController.java

+ 2 - 0
src/main/java/org/springblade/common/enums/AfterSalesTypeEnum.java

@@ -7,10 +7,12 @@ import lombok.Getter;
  */
 @Getter
 public enum AfterSalesTypeEnum {
+
 	REFUND("全部退款", 1),
 	RETURN_GOODS("退货", 2),
 	PART_REFUND("部分退款", 3),
 	NOT_ARRIVE_REFUND("未到货退款", 4);
+
 	private String name;
 	private Integer value;
 

+ 40 - 33
src/main/java/org/springblade/modules/api/controller/ApiAfterSalesController.java

@@ -23,7 +23,10 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Author pangqijun
@@ -42,34 +45,46 @@ public class ApiAfterSalesController {
     @Resource
     private IAfterSalesReasonService afterSalesReasonService;
 
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "获取售后类型")
+    @GetMapping("getAfterType")
+    public R submit() {
+        List<Map<String, String>> result = new ArrayList<>();
+        for (AfterSalesTypeEnum value : AfterSalesTypeEnum.values()) {
+            if (value.equals(AfterSalesTypeEnum.REFUND)) {
+                continue;
+            }
+            Map<String, String> mapTemp = new HashMap<>();
+            mapTemp.put("label", value.getName());
+            mapTemp.put("value", value.getValue() + "");
+            result.add(mapTemp);
+        }
+        return R.data(result);
+    }
+
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "提交售后")
     @PostMapping("submit")
     public R submit(@Valid @RequestBody AfterSalesRequest request) {
-
-        request.setAfterSalesType(AfterSalesTypeEnum.RETURN_GOODS.getValue());
-        afterSalesService.submit(request);
+        if (AfterSalesTypeEnum.RETURN_GOODS.getValue().equals(request.getAfterSalesType())) {
+            afterSalesService.submit(request);
+        } else if (AfterSalesTypeEnum.PART_REFUND.getValue().equals(request.getAfterSalesType())) {
+            afterSalesService.refundSubmit(request);
+        } else if (AfterSalesTypeEnum.NOT_ARRIVE_REFUND.getValue().equals(request.getAfterSalesType())) {
+            afterSalesService.applyGrouponAfterRefund(request.getOrderId());
+        }
         return R.success("ok");
     }
 
-    @ApiOperationSupport(order = 1)
-    @ApiOperation(value = "提交部分退款售后")
-    @PostMapping("refundSubmit")
-    public R refundSubmit(@Valid @RequestBody AfterSalesRequest request) {
-        request.setAfterSalesType(AfterSalesTypeEnum.PART_REFUND.getValue());
-        afterSalesService.refundSubmit(request);
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "取消售后")
+    @PostMapping("cancel")
+    public R cancel(@RequestParam String afterSalesNo) {
+        afterSalesService.cancel(afterSalesNo);
         return R.success("ok");
     }
 
-    @ApiOperationSupport(order = 1)
-    @ApiOperation(value = "未到货退款")
-    @PostMapping("applyGrouponAfterRefund")
-    public R applyGrouponAfterRefund(@RequestParam Long orderId) {
-        afterSalesService.applyGrouponAfterRefund(orderId);
-        return R.success("申请成功");
-    }
-
-    @ApiOperationSupport(order = 1)
+    @ApiOperationSupport(order = 5)
     @ApiOperation(value = "重新提交售后")
     @PostMapping("reSubmit")
     public R reSubmit(@RequestParam Long id) {
@@ -80,7 +95,7 @@ public class ApiAfterSalesController {
         return R.success("ok");
     }
 
-    @ApiOperationSupport(order = 2)
+    @ApiOperationSupport(order = 6)
     @ApiOperation(value = "同意售后")
     @PostMapping("agree")
     public R agree(@RequestParam("afterSalesNo") String afterSalesNo) {
@@ -88,7 +103,7 @@ public class ApiAfterSalesController {
         return R.success("ok");
     }
 
-    @ApiOperationSupport(order = 2)
+    @ApiOperationSupport(order = 7)
     @ApiOperation(value = "驳回售后")
     @PostMapping("refuse")
     public R refuse(@RequestParam("afterSalesNo") String afterSalesNo, @RequestParam("refuseReason") String refuseReason) {
@@ -97,33 +112,25 @@ public class ApiAfterSalesController {
     }
 
     @GetMapping("/reason/list")
-    @ApiOperationSupport(order = 3)
+    @ApiOperationSupport(order = 8)
     @ApiOperation(value = "获取售后原因列表")
     public R<List<AfterSalesReason>> getAfterSalesReason() {
         List<AfterSalesReason> list = afterSalesReasonService.lambdaQuery().list();
         return R.data(list);
     }
 
-    @ApiOperationSupport(order = 4)
-    @ApiOperation(value = "绑定物流单号")
-    @PostMapping("bindLogisticsNo")
-    public R bindLogisticsNo(@RequestParam String afterSalesNo, @RequestParam String logisticsNo) {
-        Assert.notBlank(logisticsNo, "请输入物流编号");
-        afterSalesService.bindLogisticsNo(afterSalesNo, logisticsNo);
-        return R.success("ok");
-    }
-
     @PostMapping("/user/list")
-    @ApiOperationSupport(order = 5)
+    @ApiOperationSupport(order = 9)
     @ApiOperation(value = "获取用户售后列表")
     public R<IPage<AfterSalesVO>> getUserAfterSalesList(@RequestBody Query query, @RequestParam(name = "state") Integer state) {
-        return R.data(afterSalesService.getUserAfterSalesList(Condition.getPage(query) , AuthUtil.getUserId(), state));
+        return R.data(afterSalesService.getUserAfterSalesList(Condition.getPage(query), AuthUtil.getUserId(), state));
     }
 
     @GetMapping("/user/detail")
-    @ApiOperationSupport(order = 6)
+    @ApiOperationSupport(order = 10)
     @ApiOperation(value = "获取用户售后详情")
     public R<AfterSalesVO> getUserAfterSalesDetail(@RequestParam(name = "afterSalesId") Long afterSalesId) {
         return R.data(afterSalesService.getUserAfterSalesDetail(afterSalesId));
     }
+
 }

+ 0 - 5
src/main/java/org/springblade/modules/api/controller/ApiGrouponController.java

@@ -22,8 +22,6 @@ import org.springblade.modules.distribution.vo.AppointVO;
 import org.springblade.modules.distribution.wrapper.AppointWrapper;
 import org.springblade.modules.finance.entity.AppointGoods;
 import org.springblade.modules.finance.service.IAppointGoodsService;
-import org.springblade.modules.groupon.entity.Groupon;
-import org.springblade.modules.groupon.entity.GrouponGoods;
 import org.springblade.modules.groupon.entity.UserSelfTake;
 import org.springblade.modules.groupon.service.IGrouponGoodsService;
 import org.springblade.modules.groupon.service.IGrouponService;
@@ -31,10 +29,7 @@ import org.springblade.modules.groupon.service.ISelfTakeService;
 import org.springblade.modules.groupon.service.IUserSelfTakeService;
 import org.springblade.modules.groupon.vo.GrouponVO;
 import org.springblade.modules.groupon.vo.SelfTakeVO;
-import org.springblade.modules.mall.entity.GoodsInfo;
 import org.springblade.modules.mall.service.IGoodsInfoService;
-import org.springblade.modules.mall.vo.GoodsInfoVO;
-import org.springblade.modules.mall.wrapper.GoodsInfoWrapper;
 import org.springblade.modules.platform.service.UserAppService;
 import org.springblade.modules.system.entity.UserApp;
 import org.springframework.web.bind.annotation.*;

+ 3 - 0
src/main/java/org/springblade/modules/api/controller/ApiMerchantOrderController.java

@@ -20,6 +20,7 @@ import org.springblade.modules.finance.service.IOrderGoodsService;
 import org.springblade.modules.finance.service.IOrderService;
 import org.springblade.modules.finance.vo.MerchantDetailOrderVO;
 import org.springblade.modules.finance.vo.MerchantPageOrderVO;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -34,7 +35,9 @@ import org.springframework.web.bind.annotation.RestController;
 @Api(value = "商品订单接口-商家", tags = "商品订单接口-商家")
 public class ApiMerchantOrderController {
 
+    @Lazy
     private final IOrderGoodsService iOrderGoodsService;
+
     private final IOrderService iOrderService;
 
     @ApiLog("订单列表(订单管理)")

+ 22 - 5
src/main/java/org/springblade/modules/api/request/AfterSalesRequest.java

@@ -1,9 +1,9 @@
 package org.springblade.modules.api.request;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.springblade.modules.finance.entity.OrderGrouponGoods;
+import org.springblade.modules.finance.entity.OrderGoods;
 
-import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.util.List;
@@ -14,11 +14,28 @@ import java.util.List;
  * Description
  */
 @Data
-public class AfterSalesRequest {
-    private String reason;
+public class  AfterSalesRequest {
+
+    @ApiModelProperty("订单ID")
     @NotNull(message = "订单ID不能为空")
     private Long orderId;
+
+    @ApiModelProperty("售后原因")
+    @NotNull(message = "售后原因ID不能为空")
+    private Long reasonId;
+
+    @ApiModelProperty("售后类型")
+    @NotNull(message = "售后类型不能为空")
     private Integer afterSalesType;
+
+    @ApiModelProperty("售后商品")
     @NotEmpty(message = "请选择售后商品")
-    private List<OrderGrouponGoods> afterSalesGoodsList;
+    private List<OrderGoods> afterGoodsList;
+
+    @ApiModelProperty("售后原因")
+    private String reason;
+
+    @ApiModelProperty("售后商品图片")
+    private List<String> images;
+    
 }

+ 0 - 1
src/main/java/org/springblade/modules/api/response/GrouponOrderResponse.java

@@ -3,7 +3,6 @@ package org.springblade.modules.api.response;
 import lombok.Data;
 import org.springblade.modules.finance.entity.OrderGrouponGoods;
 import org.springblade.modules.groupon.vo.SelfTakeVO;
-import org.springblade.modules.mall.entity.GoodsInfo;
 
 import java.util.List;
 

+ 2 - 4
src/main/java/org/springblade/modules/api/response/UserOrderResponse.java

@@ -1,12 +1,10 @@
 package org.springblade.modules.api.response;
 
-import cn.hutool.core.date.DateUtil;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springblade.common.enums.OrderStateEnum;
-import org.springblade.common.enums.YesOrNoEnum;
-import org.springblade.modules.finance.entity.OrderGrouponGoods;
+import org.springblade.modules.finance.entity.OrderGoods;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
@@ -39,7 +37,7 @@ public class UserOrderResponse {
     private String qrCode;
     private String pickupCode;
     private Integer orderState;
-    private List<OrderGrouponGoods> goodsList;
+    private List<OrderGoods> goodsList;
     private String orderStateDesc;
     private Long grouponId;
     private Integer isArrive;

+ 0 - 3
src/main/java/org/springblade/modules/api/service/SubmitOrderService.java

@@ -1,14 +1,11 @@
 package org.springblade.modules.api.service;
 
-import io.swagger.annotations.ApiParam;
 import org.springblade.modules.api.request.SubmitOrderRequest;
 import org.springblade.modules.finance.entity.Order;
 import org.springblade.modules.finance.entity.OrderDetail;
 import org.springblade.modules.finance.entity.OrderGrouponGoods;
 import org.springblade.modules.platform.entity.UserAddress;
 
-import java.util.List;
-
 /**
  * Author pangqijun
  * Date 2023/5/29

+ 0 - 2
src/main/java/org/springblade/modules/api/service/impl/GrouponOrderServiceImpl.java

@@ -32,9 +32,7 @@ import org.springblade.modules.groupon.wrapper.SelfTakeWrapper;
 import org.springblade.modules.mall.entity.GoodsInfo;
 import org.springblade.modules.mall.service.IGoodsInfoService;
 import org.springblade.modules.platform.service.IMessageService;
-import org.springblade.modules.platform.service.UserAppService;
 import org.springblade.modules.system.entity.User;
-import org.springblade.modules.system.entity.UserApp;
 import org.springblade.modules.system.entity.UserWeChat;
 import org.springblade.modules.system.service.IUserService;
 import org.springblade.modules.system.service.IUserWeChatService;

+ 13 - 23
src/main/java/org/springblade/modules/finance/controller/AfterSalesController.java

@@ -16,42 +16,32 @@
  */
 package org.springblade.modules.finance.controller;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import lombok.AllArgsConstructor;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-
-import org.springblade.common.base.BaseEntity;
-import org.springblade.common.enums.*;
+import org.springblade.common.enums.AfterSalesStatusEnum;
+import org.springblade.common.enums.AfterSalesTypeEnum;
+import org.springblade.common.enums.YesOrNoEnum;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.modules.finance.entity.AfterSales;
 import org.springblade.modules.finance.entity.Order;
-import org.springblade.modules.finance.entity.OrderGrouponGoods;
-import org.springblade.modules.finance.entity.OrderRefund;
+import org.springblade.modules.finance.entity.OrderGoods;
 import org.springblade.modules.finance.service.*;
-import org.springblade.modules.finance.vo.OrderGrouponGoodsVO;
-import org.springblade.modules.finance.wrapper.OrderGrouponGoodsWrapper;
+import org.springblade.modules.finance.vo.AfterSalesVO;
+import org.springblade.modules.finance.wrapper.AfterSalesWrapper;
 import org.springblade.modules.mall.service.IStoreService;
 import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.RequestParam;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.modules.finance.entity.AfterSales;
-import org.springblade.modules.finance.vo.AfterSalesVO;
-import org.springblade.modules.finance.wrapper.AfterSalesWrapper;
-import org.springblade.core.boot.ctrl.BladeController;
 
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
+import javax.annotation.Resource;
+import javax.validation.Valid;
 
 /**
  * 售后表 控制器
@@ -85,7 +75,7 @@ public class AfterSalesController extends BladeController {
 		AfterSalesVO vo = afterSalesService.getUserAfterSalesDetail(afterSales.getId());
 		vo.setOrderNo(vo.getOrder().getOrderNo());
 		if (AfterSalesTypeEnum.RETURN_GOODS.getValue().equals(vo.getType())) {
-			for (OrderGrouponGoods goods : vo.getGoodsList()) {
+			for (OrderGoods goods : vo.getGoodsList()) {
 				goods.setGoodsNum(vo.getReturnGoodsNum());
 			}
 		}

+ 2 - 2
src/main/java/org/springblade/modules/finance/entity/AfterSales.java

@@ -58,8 +58,8 @@ public class AfterSales extends BaseEntity {
 	@ApiModelProperty("退货商品数量")
 	private Integer returnGoodsNum;
 
-	@ApiModelProperty("团购订单商品ID")
-	private Long orderGrouponGoodsId;
+	@ApiModelProperty("商品ID")
+	private Long orderGoodsId;
 
 	@ApiModelProperty("物流编号")
 	private String logisticsNo;

+ 16 - 0
src/main/java/org/springblade/modules/finance/entity/OrderGoods.java

@@ -107,5 +107,21 @@ public class OrderGoods extends BaseEntity {
 	@ApiModelProperty(value = "出货时间")
 	private LocalDateTime shippingTime;
 
+    //售后字段
+	@ApiModelProperty(value = "是否售后")
+	private Integer isAfterSales;
+
+	@ApiModelProperty(value = "售后商品数量")
+	private Integer afterSalesGoodsNum;
+
+	@ApiModelProperty(value = "退款商品总数量")
+	private Integer refundGoodsNumTotal;
+
+	@ApiModelProperty(value = "是否退款")
+	private Integer isRefund;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "售后数量")
+	private Integer refundGoodsNum;
 
 }

+ 5 - 4
src/main/java/org/springblade/modules/finance/mapper/AfterSalesGoodsMapper.java

@@ -16,11 +16,12 @@
  */
 package org.springblade.modules.finance.mapper;
 
-import org.springblade.modules.finance.entity.AfterSalesGoods;
-import org.springblade.modules.finance.entity.OrderGrouponGoods;
-import org.springblade.modules.finance.vo.AfterSalesGoodsVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.modules.finance.entity.AfterSalesGoods;
+import org.springblade.modules.finance.entity.OrderGoods;
+import org.springblade.modules.finance.vo.AfterSalesGoodsVO;
+
 import java.util.List;
 
 /**
@@ -40,5 +41,5 @@ public interface AfterSalesGoodsMapper extends BaseMapper<AfterSalesGoods> {
 	 */
 	List<AfterSalesGoodsVO> selectAfterSalesGoodsPage(IPage page, AfterSalesGoodsVO afterSalesGoods);
 
-    List<OrderGrouponGoods> selectGoodsByAfterSalesId(Long afterSalesId);
+    List<OrderGoods> selectGoodsByAfterSalesId(Long afterSalesId);
 }

+ 1 - 1
src/main/java/org/springblade/modules/finance/mapper/AfterSalesGoodsMapper.xml

@@ -20,7 +20,7 @@
         select * from t_after_sales_goods where is_delete = 0
     </select>
     <select id="selectGoodsByAfterSalesId"
-            resultType="org.springblade.modules.finance.entity.OrderGrouponGoods">
+            resultType="org.springblade.modules.finance.entity.OrderGoods">
         SELECT
             ogg.*,
 			asg.goods_num refundGoodsNum

+ 4 - 4
src/main/java/org/springblade/modules/finance/service/IAfterSalesGoodsService.java

@@ -16,11 +16,11 @@
  */
 package org.springblade.modules.finance.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.modules.finance.entity.AfterSalesGoods;
-import org.springblade.modules.finance.entity.OrderGrouponGoods;
+import org.springblade.modules.finance.entity.OrderGoods;
 import org.springblade.modules.finance.vo.AfterSalesGoodsVO;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.List;
 
@@ -41,6 +41,6 @@ public interface IAfterSalesGoodsService extends IService<AfterSalesGoods> {
 	 */
 	IPage<AfterSalesGoodsVO> selectAfterSalesGoodsPage(IPage<AfterSalesGoodsVO> page, AfterSalesGoodsVO afterSalesGoods);
 
-	List<OrderGrouponGoods> getGoodsByAfterSalesId(Long afterSalesId);
+	List<OrderGoods> getGoodsByAfterSalesId(Long afterSalesId);
 
 }

+ 0 - 9
src/main/java/org/springblade/modules/finance/service/IOrderGrouponService.java

@@ -53,15 +53,6 @@ public interface IOrderGrouponService extends IService<OrderGroupon> {
 	 */
 	IPage<GrouponVO> getCommanderOrder(IPage page, Long userId, Integer grouponState);
 
-	/**
-	 * 查询团长团购订单详情
-	 * @param grouponId 团购ID
-	 * @param queryType 查询类型 1-网点订单  2-全部订单
-	 * @param userId
-	 * @return
-	 */
-	GrouponVO getCommanderOrderDetail(Long grouponId, Integer queryType, Long userId, Integer state);
-
 	List<OrderGroupon> getByGrouponIds(List<Long> grouponIds);
 
 	/**

+ 5 - 5
src/main/java/org/springblade/modules/finance/service/impl/AfterSalesGoodsServiceImpl.java

@@ -16,14 +16,14 @@
  */
 package org.springblade.modules.finance.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.modules.finance.entity.AfterSalesGoods;
-import org.springblade.modules.finance.entity.OrderGrouponGoods;
-import org.springblade.modules.finance.vo.AfterSalesGoodsVO;
+import org.springblade.modules.finance.entity.OrderGoods;
 import org.springblade.modules.finance.mapper.AfterSalesGoodsMapper;
 import org.springblade.modules.finance.service.IAfterSalesGoodsService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.modules.finance.vo.AfterSalesGoodsVO;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.List;
 
@@ -37,7 +37,7 @@ import java.util.List;
 public class AfterSalesGoodsServiceImpl extends ServiceImpl<AfterSalesGoodsMapper, AfterSalesGoods> implements IAfterSalesGoodsService {
 
 	@Override
-	public List<OrderGrouponGoods> getGoodsByAfterSalesId(Long afterSalesId) {
+	public List<OrderGoods> getGoodsByAfterSalesId(Long afterSalesId) {
 		return this.baseMapper.selectGoodsByAfterSalesId(afterSalesId);
 	}
 

+ 54 - 59
src/main/java/org/springblade/modules/finance/service/impl/AfterSalesServiceImpl.java

@@ -17,7 +17,6 @@
 package org.springblade.modules.finance.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
 import org.springblade.common.base.BaseEntity;
 import org.springblade.common.cache.ParamCache;
 import org.springblade.common.constant.CacheBizConstant;
@@ -25,9 +24,7 @@ import org.springblade.common.enums.*;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.api.R;
 import org.springblade.modules.api.request.AfterSalesRequest;
-import org.springblade.modules.distribution.entity.DistributionConfig;
 import org.springblade.modules.distribution.service.ICommissionService;
 import org.springblade.modules.distribution.service.IDistributionConfigService;
 import org.springblade.modules.finance.entity.*;
@@ -40,9 +37,7 @@ import org.springblade.modules.finance.wrapper.AfterSalesWrapper;
 import org.springblade.modules.finance.wrapper.OrderWrapper;
 import org.springblade.modules.groupon.entity.Groupon;
 import org.springblade.modules.groupon.service.IGrouponService;
-import org.springblade.modules.mall.entity.Store;
 import org.springblade.modules.mall.service.IStoreService;
-import org.springblade.modules.mall.wrapper.StoreWrapper;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
@@ -68,7 +63,7 @@ import java.util.stream.Collectors;
 public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSales> implements IAfterSalesService {
 
 	@Resource
-	private IOrderGrouponGoodsService orderGrouponGoodsService;
+	private IOrderGoodsService orderGoodsService;
 	@Resource
 	private IOrderService orderService;
 	@Resource
@@ -110,8 +105,8 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 		afterSales.setGrouponId(orderGroupon.getGrouponId());
 		save(afterSales);
 
-		orderGrouponGoodsService.lambdaUpdate().set(OrderGrouponGoods::getIsAfterSales, YesOrNoEnum.YES.getValue())
-				.eq(OrderGrouponGoods::getOrderId, orderId).update();
+		orderGoodsService.lambdaUpdate().set(OrderGoods::getIsAfterSales, YesOrNoEnum.YES.getValue())
+				.eq(OrderGoods::getOrderId, orderId).update();
 	}
 
 	@Override
@@ -145,38 +140,38 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 		}
 
 		// 校验商品是否已经申请过售后
-		List<Long> collect = request.getAfterSalesGoodsList().stream().map(BaseEntity::getId).collect(Collectors.toList());
-		List<OrderGrouponGoods> list = orderGrouponGoodsService.lambdaQuery().in(BaseEntity::getId, collect).list();
-		for (OrderGrouponGoods orderGrouponGoods : list) {
-			if (YesOrNoEnum.YES.getValue().equals(orderGrouponGoods.getIsAfterSales())) {
-				throw new ServiceException("商品【"+orderGrouponGoods.getGoodsName()+"】已申请过售后");
+		List<Long> collect = request.getAfterGoodsList().stream().map(BaseEntity::getId).collect(Collectors.toList());
+		List<OrderGoods> list = orderGoodsService.lambdaQuery().in(BaseEntity::getId, collect).list();
+		for (OrderGoods orderGoods : list) {
+			if (YesOrNoEnum.YES.getValue().equals(orderGoods.getIsAfterSales())) {
+				throw new ServiceException("商品【"+orderGoods.getGoodsName()+"】已申请过售后");
 			}
-			orderGrouponGoods.setIsAfterSales(YesOrNoEnum.YES.getValue());
+			orderGoods.setIsAfterSales(YesOrNoEnum.YES.getValue());
 		}
 		// 更新售后状态
-		orderGrouponGoodsService.updateBatchById(list);
+		orderGoodsService.updateBatchById(list);
 
-		Map<Long, OrderGrouponGoods> map = request.getAfterSalesGoodsList().stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
+		Map<Long, OrderGoods> map = request.getAfterGoodsList().stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
 		List<AfterSales> afterSalesList = new ArrayList<>();
-		for (OrderGrouponGoods goods : list) {
+		for (OrderGoods goods : list) {
 			AfterSales afterSales = init();
 			afterSales.setOrderId(request.getOrderId());
 			afterSales.setReason(request.getReason());
 			afterSales.setType(request.getAfterSalesType());
-			afterSales.setOrderGrouponGoodsId(goods.getId());
+			afterSales.setOrderGoodsId(goods.getId());
 
-			OrderGrouponGoods o = map.get(goods.getId());
+			OrderGoods o = map.get(goods.getId());
 			afterSales.setReturnGoodsNum(o.getGoodsNum());
 			afterSales.setIsArrived(YesOrNoEnum.NO.getValue());
 			afterSales.setUserId(AuthUtil.getUserId());
-			afterSales.setStoreId(goods.getSupplierId());
+			afterSales.setStoreId(goods.getShopId());
 			afterSales.setGrouponId(orderGroupon.getGrouponId());
 			afterSalesList.add(afterSales);
 		}
 		saveBatch(afterSalesList);
 
-		// 将分销收益改为无效,所有售后结束后重新计算收益
-		commissionService.invalidCommission(order.getId());
+		// TODO: 2024/7/29   将分销收益改为无效,所有售后结束后重新计算收益
+		//commissionService.invalidCommission(order.getId());
 	}
 
 	@Override
@@ -209,9 +204,9 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 			Order order = orderService.getById(afterSales.getOrderId());
 			Assert.notNull(order, "订单数据不存在");
 			// 计算退款金额
-			List<OrderGrouponGoods> goods = afterSalesGoodsService.getGoodsByAfterSalesId(afterSales.getId());
+			List<OrderGoods> goods = afterSalesGoodsService.getGoodsByAfterSalesId(afterSales.getId());
 			BigDecimal refundAmount = new BigDecimal(0);
-			for (OrderGrouponGoods good : goods) {
+			for (OrderGoods good : goods) {
 				refundAmount = refundAmount.add(good.getGoodsPrice().multiply(BigDecimal.valueOf(good.getRefundGoodsNum())));
 			}
 			orderService.commonRefund(order.getOrderNo(), order.getId(), refundAmount, order.getTotalAmount(), afterSales.getId());
@@ -261,10 +256,10 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 
 		// 查询没有到货的商品
 		OrderGroupon orderGroupon = orderGrouponService.lambdaQuery().eq(OrderGroupon::getOrderId, order.getId()).one();
-		List<OrderGrouponGoods> list = orderGrouponGoodsService.lambdaQuery().eq(OrderGrouponGoods::getOrderId, order.getId()).list();
+		List<OrderGoods> list = orderGoodsService.lambdaQuery().eq(OrderGoods::getOrderId, order.getId()).list();
 		list = list.stream().filter(e -> e.getGoodsNum() - e.getRefundGoodsNumTotal() > 0).collect(Collectors.toList());
 		Assert.notEmpty(list, "没有可退的商品");
-		List<Long> goodsIds = list.stream().map(OrderGrouponGoods::getGoodsId).collect(Collectors.toList());
+		List<Long> goodsIds = list.stream().map(OrderGoods::getGoodsId).collect(Collectors.toList());
 		List<AppointGoodsVO> notArriveGoods = appointGoodsService.getNotArrive(orderGroupon.getGrouponId(), orderGroupon.getSelfTakeId(), goodsIds);
 		if (notArriveGoods.size() == 0) {
 			throw new ServiceException("没有未到货的商品");
@@ -282,7 +277,7 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 		this.save(afterSales);
 
 		List<AfterSalesGoods> salesGoodsList = new ArrayList<>();
-		for (OrderGrouponGoods e : list) {
+		for (OrderGoods e : list) {
 			int canRefundNum =  e.getGoodsNum() - e.getRefundGoodsNumTotal();
 			if (map.get(e.getGoodsId()) != null && canRefundNum > 0) {
 				AfterSalesGoods afterSalesGoods = new AfterSalesGoods();
@@ -291,7 +286,7 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 				afterSalesGoods.setGoodsNum(canRefundNum);
 				salesGoodsList.add(afterSalesGoods);
 				e.setIsAfterSales(YesOrNoEnum.YES.getValue());
-				orderGrouponGoodsService.updateById(e);
+				orderGoodsService.updateById(e);
 			}
 		}
 		Assert.notEmpty(salesGoodsList, "售后商品不能为空");
@@ -324,38 +319,38 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 		this.save(afterSales);
 
 
-		Map<Long, OrderGrouponGoods> map = request.getAfterSalesGoodsList().stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
+		Map<Long, OrderGoods> map = request.getAfterGoodsList().stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
 		// 校验商品是否已经申请过售后
-		List<Long> collect = request.getAfterSalesGoodsList().stream().map(BaseEntity::getId).collect(Collectors.toList());
-		List<OrderGrouponGoods> list = orderGrouponGoodsService.lambdaQuery().in(BaseEntity::getId, collect).list();
-		for (OrderGrouponGoods orderGrouponGoods : list) {
-			if (YesOrNoEnum.YES.getValue().equals(orderGrouponGoods.getIsAfterSales())) {
-				throw new ServiceException("商品【"+orderGrouponGoods.getGoodsName()+"】已申请过退款");
+		List<Long> collect = request.getAfterGoodsList().stream().map(BaseEntity::getId).collect(Collectors.toList());
+		List<OrderGoods> list = orderGoodsService.lambdaQuery().in(BaseEntity::getId, collect).list();
+		for (OrderGoods orderGoods : list) {
+			if (YesOrNoEnum.YES.getValue().equals(orderGoods.getIsAfterSales())) {
+				throw new ServiceException("商品【"+orderGoods.getGoodsName()+"】已申请过退款");
 			}
-			OrderGrouponGoods grouponGoods = map.get(orderGrouponGoods.getId());
-			orderGrouponGoods.setAfterSalesGoodsNum(orderGrouponGoods.getAfterSalesGoodsNum() + grouponGoods.getGoodsNum());
-			orderGrouponGoods.setRefundGoodsNumTotal(orderGrouponGoods.getRefundGoodsNumTotal() + grouponGoods.getGoodsNum());
-			orderGrouponGoods.setIsAfterSales(YesOrNoEnum.YES.getValue());
+			OrderGoods grouponGoods = map.get(orderGoods.getId());
+			orderGoods.setAfterSalesGoodsNum(orderGoods.getAfterSalesGoodsNum() + grouponGoods.getGoodsNum());
+			orderGoods.setRefundGoodsNumTotal(orderGoods.getRefundGoodsNumTotal() + grouponGoods.getGoodsNum());
+			orderGoods.setIsAfterSales(YesOrNoEnum.YES.getValue());
 		}
 		// 更新售后状态
-		orderGrouponGoodsService.updateBatchById(list);
+		orderGoodsService.updateBatchById(list);
 
 		List<AfterSalesGoods> salesGoodsList = new ArrayList<>();
-		for (OrderGrouponGoods orderGrouponGoods : request.getAfterSalesGoodsList()) {
+		for (OrderGoods orderGoods : request.getAfterGoodsList()) {
 			AfterSalesGoods afterSalesGoods = new AfterSalesGoods();
 			afterSalesGoods.setAfterSalesId(afterSales.getId());
-			afterSalesGoods.setOrderGrouponGoodsId(orderGrouponGoods.getId());
-			afterSalesGoods.setGoodsNum(orderGrouponGoods.getGoodsNum());
+			afterSalesGoods.setOrderGrouponGoodsId(orderGoods.getId());
+			afterSalesGoods.setGoodsNum(orderGoods.getGoodsNum());
 			salesGoodsList.add(afterSalesGoods);
 		}
 		afterSalesGoodsService.saveBatch(salesGoodsList);
 
 		// 查询改订单下的商品是否都已申请退款,如果是则吧状态更新为退款中
-		Integer count = orderGrouponGoodsService.lambdaQuery().eq(OrderGrouponGoods::getOrderId, order.getId())
-				.eq(OrderGrouponGoods::getIsAfterSales, YesOrNoEnum.NO.getValue()).count();
+		Integer count = orderGoodsService.lambdaQuery().eq(OrderGoods::getOrderId, order.getId())
+				.eq(OrderGoods::getIsAfterSales, YesOrNoEnum.NO.getValue()).count();
 		// 判断所有的商品是否都已申请退款
 		boolean flag = true;
-		for (OrderGrouponGoods goods : list) {
+		for (OrderGoods goods : list) {
 			if (goods.getGoodsNum() > goods.getAfterSalesGoodsNum()) {
 				flag = false;
 				break;
@@ -384,7 +379,7 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 		Order order = orderService.getById(orderId);
 		Assert.notNull(order, "订单数据不存在");
 
-		OrderGrouponGoods orderGrouponGoods = orderGrouponGoodsService.getById(afterSales.getOrderGrouponGoodsId());
+		OrderGoods orderGoods = orderGoodsService.getById(afterSales.getOrderGoodsId());
 		Assert.notNull(order, "orderGrouponGoods数据不存在");
 
 		OrderRefund orderRefund = orderRefundService.lambdaQuery().eq(OrderRefund::getAfterSalesId, afterSalesId).eq(OrderRefund::getRefundState, RefundStateEnum.ONLY_REFUND.getValue()).one();
@@ -392,7 +387,7 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 			throw new ServiceException("申请中,请勿重复操作");
 		}
 
-		BigDecimal refundPrice = orderGrouponGoods.getGoodsPrice().multiply(BigDecimal.valueOf(orderGrouponGoods.getGoodsNum()));
+		BigDecimal refundPrice = orderGoods.getGoodsPrice().multiply(BigDecimal.valueOf(orderGoods.getGoodsNum()));
 		orderService.commonRefund(order.getOrderNo(), order.getId(), refundPrice, order.getTotalAmount(), afterSalesId);
 
 		afterSales.setIsArrived(YesOrNoEnum.YES.getValue());
@@ -406,7 +401,7 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 		updateById(afterSales);
 
 		// 类型为售后的时候,查询该订单下是否还有未处理的售后,如果没有则重新计算收益
-		if (AfterSalesTypeEnum.RETURN_GOODS.getValue().equals(afterSales.getType())) {
+		if (AfterSalesTypeEnum.PART_REFUND.getValue().equals(afterSales.getType())) {
 			List<AfterSales> list = lambdaQuery().eq(AfterSales::getOrderId, afterSales.getOrderId()).list();
 			if (CollUtil.isNotEmpty(list)) {
 				List<AfterSales> collect = list.stream().filter(e -> AfterSalesStatusEnum.PROCESSED.getValue().equals(e.getStatus())).collect(Collectors.toList());
@@ -428,19 +423,19 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 				}
 			}
 		} else if (AfterSalesTypeEnum.PART_REFUND.getValue().equals(afterSales.getType())) {
-			List<OrderGrouponGoods> goods = afterSalesGoodsService.getGoodsByAfterSalesId(afterSales.getId());
-			for (OrderGrouponGoods good : goods) {
+			List<OrderGoods> goods = afterSalesGoodsService.getGoodsByAfterSalesId(afterSales.getId());
+			for (OrderGoods good : goods) {
 				good.setIsRefund(YesOrNoEnum.YES.getValue());
 			}
-			orderGrouponGoodsService.updateBatchById(goods);
+			orderGoodsService.updateBatchById(goods);
 
 			// 如果该订单下所有商品都已退款,则吧订单状态修改为已退款
-			Integer count = orderGrouponGoodsService.lambdaQuery().eq(OrderGrouponGoods::getOrderId, afterSales.getOrderId()).eq(OrderGrouponGoods::getIsRefund, YesOrNoEnum.NO.getValue())
+			Integer count = orderGoodsService.lambdaQuery().eq(OrderGoods::getOrderId, afterSales.getOrderId()).eq(OrderGoods::getIsRefund, YesOrNoEnum.NO.getValue())
 					.count();
 
 			// 判断所有的商品是否都已申请退款
 			boolean flag = true;
-			for (OrderGrouponGoods g : goods) {
+			for (OrderGoods g : goods) {
 				if (g.getGoodsNum() > g.getAfterSalesGoodsNum()) {
 					flag = false;
 					break;
@@ -462,10 +457,10 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 		AfterSales afterSales = getById(afterSalesId);
 		AfterSalesVO vo = AfterSalesWrapper.build().entityVO(afterSales);
 		if (AfterSalesTypeEnum.REFUND.getValue().equals(vo.getType())) {
-			List<OrderGrouponGoods> list = orderGrouponGoodsService.lambdaQuery().eq(OrderGrouponGoods::getOrderId, vo.getOrderId()).list();
+			List<OrderGoods> list = orderGoodsService.lambdaQuery().eq(OrderGoods::getOrderId, vo.getOrderId()).list();
 			vo.setGoodsList(list);
 		} else {
-			List<OrderGrouponGoods> list = orderGrouponGoodsService.lambdaQuery().eq(BaseEntity::getId, vo.getOrderGrouponGoodsId()).list();
+			List<OrderGoods> list = orderGoodsService.lambdaQuery().eq(BaseEntity::getId, vo.getOrderGoodsId()).list();
 			vo.setGoodsList(list);
 		}
 		Order order = orderService.getById(afterSales.getOrderId());
@@ -477,8 +472,8 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 		}
 
 //		if (!AfterSalesStatusEnum.WAIT.getValue().equals(afterSales.getStatus()) || !AfterSalesStatusEnum.REFUSE.getValue().equals(afterSales.getStatus())) {
-//			OrderGrouponGoods orderGrouponGoods = orderGrouponGoodsService.getById(afterSales.getOrderGrouponGoodsId());
-//			Store store = storeService.getById(orderGrouponGoods.getSupplierId());
+//			OrderGoods orderGoods = orderGrouponGoodsService.getById(afterSales.getOrderGrouponGoodsId());
+//			Store store = storeService.getById(orderGoods.getSupplierId());
 //			vo.setStore(StoreWrapper.build().entityVO(store));
 //		}
 
@@ -491,10 +486,10 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
 		if (CollUtil.isNotEmpty(afterSalesVOS)) {
 			for (AfterSalesVO vo : afterSalesVOS) {
 				if (AfterSalesTypeEnum.REFUND.getValue().equals(vo.getType())) {
-					List<OrderGrouponGoods> list = orderGrouponGoodsService.lambdaQuery().eq(OrderGrouponGoods::getOrderId, vo.getOrderId()).list();
+					List<OrderGoods> list = orderGoodsService.lambdaQuery().eq(OrderGoods::getOrderId, vo.getOrderId()).list();
 					vo.setGoodsList(list);
 				} else {
-					List<OrderGrouponGoods> list = orderGrouponGoodsService.lambdaQuery().eq(BaseEntity::getId, vo.getOrderGrouponGoodsId()).list();
+					List<OrderGoods> list = orderGoodsService.lambdaQuery().eq(BaseEntity::getId, vo.getOrderGoodsId()).list();
 					vo.setGoodsList(list);
 				}
 			}

+ 12 - 84
src/main/java/org/springblade/modules/finance/service/impl/OrderGrouponServiceImpl.java

@@ -18,19 +18,20 @@ package org.springblade.modules.finance.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.common.base.BaseEntity;
-import org.springblade.common.enums.*;
-import org.springblade.core.excel.util.ExcelUtil;
-import org.springblade.modules.api.response.GrouponOrderResponse;
-import org.springblade.modules.finance.entity.*;
+import org.springblade.common.enums.AuditStatusEnum;
+import org.springblade.common.enums.OrderStateEnum;
+import org.springblade.common.enums.StatusEnum;
+import org.springblade.modules.finance.entity.AfterSales;
+import org.springblade.modules.finance.entity.OrderGroupon;
+import org.springblade.modules.finance.entity.OrderGrouponGoods;
+import org.springblade.modules.finance.mapper.OrderGrouponMapper;
 import org.springblade.modules.finance.service.*;
 import org.springblade.modules.finance.vo.AfterSalesVO;
 import org.springblade.modules.finance.vo.OrderGrouponVO;
-import org.springblade.modules.finance.mapper.OrderGrouponMapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.modules.groupon.entity.Groupon;
-import org.springblade.modules.groupon.entity.SelfTake;
 import org.springblade.modules.groupon.entity.UserSelfTake;
 import org.springblade.modules.groupon.service.IGrouponService;
 import org.springblade.modules.groupon.service.ISelfTakeService;
@@ -40,18 +41,17 @@ import org.springblade.modules.groupon.vo.ExportAppointmentVO;
 import org.springblade.modules.groupon.vo.ExportPickUpAppointmentVO;
 import org.springblade.modules.groupon.vo.GrouponVO;
 import org.springblade.modules.groupon.wrapper.GrouponWrapper;
-import org.springblade.modules.groupon.wrapper.SelfTakeWrapper;
 import org.springblade.modules.platform.entity.UserAddress;
 import org.springblade.modules.platform.service.IUserAddressService;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.util.Assert;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -134,78 +134,6 @@ public class OrderGrouponServiceImpl extends ServiceImpl<OrderGrouponMapper, Ord
 		return page.setRecords(grouponVOS);
 	}
 
-	@Override
-	public GrouponVO getCommanderOrderDetail(Long grouponId, Integer queryType, Long userId, Integer state) {
-		Groupon groupon = grouponService.getById(grouponId);
-		Assert.notNull(groupon, "团购数据不存在");
-		GrouponVO grouponVO = GrouponWrapper.build().entityVO(groupon);
-
-		Long selfTakeId = null;
-		if (queryType == 1) {
-			// 查询团长负责的自提点
-			UserSelfTake selfTake = userSelfTakeService.lambdaQuery().eq(UserSelfTake::getUserId, userId).one();
-			Assert.notNull(selfTake, "团长未绑定自提点");
-			selfTakeId = selfTake.getSelfTakeId();
-		}
-		if (!OrderStateEnum.AFTER_SALES.getValue().equals(state)) {
-			List<OrderGroupon> list = baseMapper.getByGrouponId(grouponId, selfTakeId, state);
-			if (CollUtil.isNotEmpty(list)) {
-				List<Long> orderIds = list.stream().map(OrderGroupon::getOrderId).collect(Collectors.toList());
-				List<Long> selfTakeIds = list.stream().map(OrderGroupon::getSelfTakeId).collect(Collectors.toList());
-				List<SelfTake> selfTakes = selfTakeService.lambdaQuery().in(BaseEntity::getId, selfTakeIds).list();
-				// 查询订单信息
-				List<Order> orderList = orderService.lambdaQuery().ge(Order::getOrderState, OrderStateEnum.WAIT_PAY.getValue()).in(BaseEntity::getId, orderIds).list();
-				// 查询订单商品数据
-				List<OrderGrouponGoods> grouponGoodsList = orderGrouponGoodsService.lambdaQuery().in(OrderGrouponGoods::getOrderId, orderIds).list();
-				Map<Long, Order> orderMap = orderList.stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
-				Map<Long, List<OrderGrouponGoods>> goodsMap = grouponGoodsList.stream().collect(Collectors.groupingBy(OrderGrouponGoods::getOrderId));
-				Map<Long, SelfTake> selfTakeMap = selfTakes.stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
-				List<GrouponOrderResponse> grouponOrderList = new ArrayList<>();
-				for (OrderGroupon orderGroupon : list) {
-					GrouponOrderResponse r = new GrouponOrderResponse();
-					r.setGoodsList(goodsMap.get(orderGroupon.getOrderId()));
-					r.setSelfTake(SelfTakeWrapper.build().entityVO(selfTakeMap.get(orderGroupon.getSelfTakeId())));
-					Order order = orderMap.get(orderGroupon.getOrderId());
-					r.setOrderNo(order.getOrderNo());
-					r.setOrderStateDesc(OrderStateEnum.getNameByValue(order.getOrderState()));
-					grouponOrderList.add(r);
-				}
-				grouponVO.setGrouponOrderList(grouponOrderList);
-			}
-		} else {
-			List<AfterSalesVO> salesVOS = afterSalesService.getByGrouponId(groupon.getId(), selfTakeId);
-			if (CollUtil.isNotEmpty(salesVOS)) {
-				List<Long> selfTakeIds = salesVOS.stream().map(AfterSalesVO::getSelfTakeId).collect(Collectors.toList());
-				List<SelfTake> selfTakes = selfTakeService.lambdaQuery().in(BaseEntity::getId, selfTakeIds).list();
-				Map<Long, SelfTake> selfTakeMap = selfTakes.stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
-				List<GrouponOrderResponse> grouponOrderList = new ArrayList<>();
-				for (AfterSalesVO vo : salesVOS) {
-					List<OrderGrouponGoods> list = null;
-					if (AfterSalesTypeEnum.REFUND.getValue().equals(vo.getType())) {
-						list = orderGrouponGoodsService.lambdaQuery().eq(OrderGrouponGoods::getOrderId, vo.getOrderId()).list();
-					} else if (AfterSalesTypeEnum.RETURN_GOODS.getValue().equals(vo.getType())){
-						list = orderGrouponGoodsService.lambdaQuery().eq(BaseEntity::getId, vo.getOrderGrouponGoodsId()).list();
-					} else if (AfterSalesTypeEnum.PART_REFUND.getValue().equals(vo.getType())
-							|| AfterSalesTypeEnum.NOT_ARRIVE_REFUND.getValue().equals(vo.getType())) {
-						list = afterSalesGoodsService.getGoodsByAfterSalesId(vo.getId());
-						for (OrderGrouponGoods orderGrouponGoods : list) {
-							orderGrouponGoods.setGoodsNum(orderGrouponGoods.getRefundGoodsNum());
-						}
-					}
-					GrouponOrderResponse r = new GrouponOrderResponse();
-					r.setGoodsList(list);
-					r.setSelfTake(SelfTakeWrapper.build().entityVO(selfTakeMap.get(vo.getSelfTakeId())));
-					r.setOrderNo(vo.getAfterSalesNo());
-					r.setOrderStateDesc(AfterSalesStatusEnum.getNameByValue(vo.getStatus()));
-					grouponOrderList.add(r);
-				}
-				grouponVO.setGrouponOrderList(grouponOrderList);
-			}
-		}
-
-		return grouponVO;
-	}
-
 	@Override
 	public IPage<AppointmentVO> getPickUpAppointment(IPage page, Long userId, Integer state, Long salfTakeId) {
 		return page.setRecords(baseMapper.selectPickUpAppointment(page, userId, state, salfTakeId));

+ 13 - 24
src/main/java/org/springblade/modules/finance/service/impl/OrderServiceImpl.java

@@ -2,7 +2,6 @@ package org.springblade.modules.finance.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.LocalDateTimeUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.common.base.BaseEntity;
@@ -11,17 +10,14 @@ import org.springblade.common.constant.CacheBizConstant;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.enums.*;
 import org.springblade.common.utils.CommonUtil;
-import org.springblade.common.utils.DistanceUtils;
 import org.springblade.common.utils.SpringUtils;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.log.logger.BladeLogger;
 import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.tool.api.R;
 import org.springblade.modules.api.response.UserOrderDetailResponse;
 import org.springblade.modules.api.response.UserOrderResponse;
 import org.springblade.modules.api.service.SubmitOrderService;
 import org.springblade.modules.api.vo.LogisticVO;
-import org.springblade.modules.distribution.entity.DistributionConfig;
 import org.springblade.modules.distribution.service.ICommissionService;
 import org.springblade.modules.distribution.service.IDistributionConfigService;
 import org.springblade.modules.finance.entity.*;
@@ -29,9 +25,7 @@ import org.springblade.modules.finance.service.*;
 import org.springblade.modules.finance.vo.OrderVO;
 import org.springblade.modules.finance.mapper.OrderMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.modules.mall.entity.Store;
 import org.springblade.modules.mall.service.IStoreService;
-import org.springblade.modules.mall.wrapper.StoreWrapper;
 import org.springblade.modules.platform.service.IMessageService;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.scheduling.annotation.Async;
@@ -43,10 +37,6 @@ import org.springframework.util.Assert;
 import javax.annotation.Resource;
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -76,10 +66,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	private IOrderRefundService orderRefundService;
 	@Resource
 	private ITransactionFlowService transactionFlowService;
+	@Lazy
 	@Resource
-	private IOrderGrouponGoodsService orderGrouponGoodsService;
-	@Resource
-	private IOrderGrouponService orderGrouponService;
+	private IOrderGoodsService orderGoodsService;
 	@Resource
 	private OrderTimeoutService timeoutService;
 	@Resource
@@ -213,8 +202,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			list = baseMapper.getUserOrder(page, userId, orderState);
 			if (CollUtil.isNotEmpty(list)) {
 				List<Long> collect = list.stream().map(UserOrderResponse::getOrderId).collect(Collectors.toList());
-				List<OrderGrouponGoods> goodsList = orderGrouponGoodsService.lambdaQuery().in(OrderGrouponGoods::getOrderId, collect).list();
-				Map<Long, List<OrderGrouponGoods>> map = goodsList.stream().collect(Collectors.groupingBy(OrderGrouponGoods::getOrderId));
+				List<OrderGoods> goodsList = orderGoodsService.lambdaQuery().in(OrderGoods::getOrderId, collect).list();
+				Map<Long, List<OrderGoods>> map = goodsList.stream().collect(Collectors.groupingBy(OrderGoods::getOrderId));
 				for (UserOrderResponse response : list) {
 					response.setGoodsList(map.get(response.getOrderId()));
 					response.setCanReturnGoods(this.getCanReturnGoods(response));
@@ -226,16 +215,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			list = baseMapper.getUserAfterSalesOrder(page, userId, orderState);
 			if (CollUtil.isNotEmpty(list)) {
 				for (UserOrderResponse r : list) {
-					List<OrderGrouponGoods> grouponGoods = null;
+					List<OrderGoods> grouponGoods = null;
 					if (AfterSalesTypeEnum.REFUND.getValue().equals(r.getType())) {
-						grouponGoods = orderGrouponGoodsService.lambdaQuery().eq(OrderGrouponGoods::getOrderId, r.getOrderId()).list();
+						grouponGoods = orderGoodsService.lambdaQuery().eq(OrderGoods::getOrderId, r.getOrderId()).list();
 					} else if (AfterSalesTypeEnum.RETURN_GOODS.getValue().equals(r.getType())) {
-						grouponGoods = orderGrouponGoodsService.lambdaQuery().eq(BaseEntity::getId, r.getOrderGrouponGoodsId()).list();
+						grouponGoods = orderGoodsService.lambdaQuery().eq(BaseEntity::getId, r.getOrderGrouponGoodsId()).list();
 					} else if (AfterSalesTypeEnum.PART_REFUND.getValue().equals(r.getType()) ||
 							AfterSalesTypeEnum.NOT_ARRIVE_REFUND.getValue().equals(r.getType())) {
 						grouponGoods = afterSalesGoodsService.getGoodsByAfterSalesId(r.getAfterSalesId());
-						for (OrderGrouponGoods orderGrouponGoods : grouponGoods) {
-							orderGrouponGoods.setGoodsNum(orderGrouponGoods.getRefundGoodsNum());
+						for (OrderGoods orderGoods : grouponGoods) {
+							orderGoods.setGoodsNum(orderGoods.getRefundGoodsNum());
 						}
 					}
 					r.setGoodsList(grouponGoods);
@@ -264,9 +253,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		boolean flag = false;
 		// 团购结束前可以申请部分退款
 		if (OrderStateEnum.WAIT_DELIVERY.getValue().equals(response.getOrderState()) && DateUtil.date().before(response.getGrouponEndTime())) {
-			for (OrderGrouponGoods orderGrouponGoods : response.getGoodsList()) {
+			for (OrderGoods orderGoods : response.getGoodsList()) {
 				// 判断是否有未申请售后的
-				if (YesOrNoEnum.NO.getValue().equals(orderGrouponGoods.getIsAfterSales())) {
+				if (YesOrNoEnum.NO.getValue().equals(orderGoods.getIsAfterSales())) {
 					flag = true;
 					break;
 				}
@@ -278,8 +267,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	private boolean getCanReturnGoods(UserOrderResponse response) {
 		boolean flag = false;
 		if (CollUtil.isNotEmpty(response.getGoodsList())) {
-			for (OrderGrouponGoods orderGrouponGoods : response.getGoodsList()) {
-				if (YesOrNoEnum.NO.getValue().equals(orderGrouponGoods.getIsAfterSales())) {
+			for (OrderGoods orderGoods : response.getGoodsList()) {
+				if (YesOrNoEnum.NO.getValue().equals(orderGoods.getIsAfterSales())) {
 					flag = true;
 					break;
 				}

+ 22 - 14
src/main/java/org/springblade/modules/finance/vo/AfterSalesVO.java

@@ -16,18 +16,17 @@
  */
 package org.springblade.modules.finance.vo;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 import org.springblade.common.enums.AfterSalesStatusEnum;
 import org.springblade.common.enums.AfterSalesTypeEnum;
 import org.springblade.modules.finance.entity.AfterSales;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import io.swagger.annotations.ApiModel;
-import org.springblade.modules.finance.entity.OrderGrouponGoods;
+import org.springblade.modules.finance.entity.OrderGoods;
 import org.springblade.modules.finance.entity.OrderRefund;
 import org.springblade.modules.mall.vo.StoreVO;
 
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -42,25 +41,33 @@ import java.util.List;
 public class AfterSalesVO extends AfterSales {
 	private static final long serialVersionUID = 1L;
 
-	@JsonFormat(pattern = "MM/dd HH:mm")
-	private Date grouponStartTime;
-	@JsonFormat(pattern = "MM/dd HH:mm")
-	private Date grouponEndTime;
-	private String mainTitle;
+	@ApiModelProperty(value = "售后类型")
 	private String typeDesc;
+
+	@ApiModelProperty(value = "售后状态")
 	private String statusDesc;
-	private List<OrderGrouponGoods> goodsList;
-	private List<OrderGrouponGoodsVO> refundGoodsList;
-	private Long selfTakeId;
 
+	@ApiModelProperty(value = "订单商品信息")
+	private List<OrderGoods> goodsList;
+
+	@ApiModelProperty(value = "退款商品信息")
+	private List<OrderGoodsVO> refundGoodsList;
+
+	@ApiModelProperty(value = "退款信息")
 	private OrderRefund refund;
 
+	@ApiModelProperty(value = "订单信息")
 	private OrderVO order;
 
+	@ApiModelProperty(value = "商家信息")
 	private StoreVO store;
 
+	@ApiModelProperty(value = "订单编号")
 	private String orderNo;
 
+	@ApiModelProperty(value = "自提点id",hidden = true)
+	private Long selfTakeId;
+
 	public String getStatusDesc() {
 		return AfterSalesStatusEnum.getNameByValue(getStatus());
 	}
@@ -68,4 +75,5 @@ public class AfterSalesVO extends AfterSales {
 	public String getTypeDesc() {
 		return AfterSalesTypeEnum.getNameByValue(getType());
 	}
+
 }

+ 21 - 0
src/main/java/org/springblade/modules/finance/vo/OrderGoodsVO.java

@@ -37,28 +37,48 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = true)
 @ApiModel(value = "OrderGoodsVO对象", description = "商品订单表")
 public class OrderGoodsVO extends OrderGoods {
+
 	private static final long serialVersionUID = 1L;
 
 	@ApiModelProperty(value = "订单状态")
 	private Integer orderState;
+
 	@ApiModelProperty(value = "订单状态描述")
 	private String orderStateDesc;
+
+	@ApiModelProperty(value = "订单编号")
 	private String orderNo;
+
+	@ApiModelProperty(value = "客户电话")
 	private String phone;
+
+	@ApiModelProperty(value = "客户昵称")
 	private String nickname;
+
+	@ApiModelProperty(value = "开始时间")
 	private Date startTime;
+
+	@ApiModelProperty(value = "结束时间")
 	private Date endTime;
+
+	@ApiModelProperty(value = "支付方式")
 	private String payModeDesc;
+
 	@ApiModelProperty(value = "支付金额")
 	private BigDecimal paymentAmount;
+
 	@ApiModelProperty(value = "支付方式")
 	private String paymentMode;
+
 	@ApiModelProperty(value = "支付时间")
 	private Date paymentTime;
+
 	@ApiModelProperty(value = "支付状态;1-未支付 2-已支付 3-已退款")
 	private Integer paymentState;
+
 	@ApiModelProperty(value = "总金额")
 	private BigDecimal totalAmount;
+
 	@ApiModelProperty(value = "优惠金额")
 	private BigDecimal discountAmount;
 
@@ -69,4 +89,5 @@ public class OrderGoodsVO extends OrderGoods {
 	public String getOrderStateDesc() {
 		return OrderStateEnum.getNameByValue(orderState);
 	}
+
 }

+ 0 - 8
src/main/java/org/springblade/modules/groupon/controller/TzController.java

@@ -105,14 +105,6 @@ public class TzController {
         return R.data(orderGrouponService.getCommanderOrder(Condition.getPage(query), AuthUtil.getUserId(), grouponState));
     }
 
-    @GetMapping("/commander/detail")
-    @ApiOperationSupport(order = 7)
-    @ApiOperation(value = "获取团长团购订单详情")
-    public R<GrouponVO> getCommanderOrderDetail(@ApiParam("团购ID") Long grouponId, @ApiParam("查询类型 1-网点订单  2-全部订单") Integer queryType,
-                                                @ApiParam("团购ID") Integer state) {
-        return R.data(orderGrouponService.getCommanderOrderDetail(grouponId, queryType, AuthUtil.getUserId(), state));
-    }
-
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "同意售后")
     @PostMapping("/after-sales/agree")