Przeglądaj źródła

Merge branch 'mp-server-test' into 'master'

Mp server test

See merge request quanshu/mp-server!506
zhong chunping 3 lat temu
rodzic
commit
794997d433
49 zmienionych plików z 1021 dodań i 141 usunięć
  1. 2 1
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelOrderMgrController.java
  2. 14 3
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/CouponMgrController.java
  3. 110 0
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/SupplierMgrController.java
  4. 9 1
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserDeliverOrderMgrController.java
  5. 135 0
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserExchangeOrderMgrController.java
  6. 13 1
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserTicketOrderMgrController.java
  7. 1 1
      mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelOrderController.java
  8. 2 2
      mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserDeliverOrderController.java
  9. 2 1
      mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserExchangeController.java
  10. 3 3
      mp-quartz/src/main/java/com/qs/mp/quartz/task/DayStatTask.java
  11. 1 1
      mp-quartz/src/main/java/com/qs/mp/quartz/task/OperateToolTask.java
  12. 13 0
      mp-quartz/src/main/java/com/qs/mp/quartz/task/TicketPkgDataTask.java
  13. 18 0
      mp-service/src/main/java/com/qs/mp/admin/domain/Coupon.java
  14. 8 0
      mp-service/src/main/java/com/qs/mp/admin/domain/Goods.java
  15. 88 0
      mp-service/src/main/java/com/qs/mp/admin/domain/Supplier.java
  16. 45 0
      mp-service/src/main/java/com/qs/mp/admin/domain/excel/UserExchangeOrderExcel.java
  17. 4 3
      mp-service/src/main/java/com/qs/mp/admin/domain/excel/UserTicketOrderExcel.java
  18. 6 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/CouponParam.java
  19. 6 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/GoodsParam.java
  20. 45 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/SupplierCreateParam.java
  21. 15 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/SupplierParam.java
  22. 18 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/SupplierQueryParam.java
  23. 47 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/SupplierUpdateParam.java
  24. 35 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/UserExchangeOrderQueryParam.java
  25. 6 0
      mp-service/src/main/java/com/qs/mp/admin/domain/vo/GoodsVO.java
  26. 45 0
      mp-service/src/main/java/com/qs/mp/admin/domain/vo/UserExchangeOrderVO.java
  27. 13 0
      mp-service/src/main/java/com/qs/mp/admin/mapper/SupplierMapper.java
  28. 16 0
      mp-service/src/main/java/com/qs/mp/admin/service/ISupplierService.java
  29. 20 0
      mp-service/src/main/java/com/qs/mp/admin/service/impl/SupplierServiceImpl.java
  30. 4 0
      mp-service/src/main/java/com/qs/mp/channel/domain/ChannelOrder.java
  31. 3 0
      mp-service/src/main/java/com/qs/mp/channel/domain/excel/ChannelOrderExcel.java
  32. 5 15
      mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelOrderServiceImpl.java
  33. 6 7
      mp-service/src/main/java/com/qs/mp/pay/service/IWalletService.java
  34. 33 29
      mp-service/src/main/java/com/qs/mp/pay/service/impl/WalletServiceImpl.java
  35. 4 0
      mp-service/src/main/java/com/qs/mp/user/domain/UserDeliverOrder.java
  36. 8 0
      mp-service/src/main/java/com/qs/mp/user/domain/UserDeliverOrderItem.java
  37. 15 0
      mp-service/src/main/java/com/qs/mp/user/domain/UserExchangeOrder.java
  38. 4 0
      mp-service/src/main/java/com/qs/mp/user/domain/UserTicketOrder.java
  39. 83 67
      mp-service/src/main/java/com/qs/mp/user/domain/excel/DeliverOrderExcel.java
  40. 3 0
      mp-service/src/main/java/com/qs/mp/user/domain/vo/UserDeliverOrderItemVO.java
  41. 15 0
      mp-service/src/main/java/com/qs/mp/user/mapper/UserExchangeOrderMapper.java
  42. 1 1
      mp-service/src/main/java/com/qs/mp/user/service/IUserDeliverOrderService.java
  43. 16 0
      mp-service/src/main/java/com/qs/mp/user/service/IUserExchangeOrderService.java
  44. 15 3
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserDeliverOrderServiceImpl.java
  45. 13 1
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserExchangeOrderServiceImpl.java
  46. 3 0
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java
  47. 22 0
      mp-service/src/main/resources/mapper/admin/SupplierMapper.xml
  48. 2 1
      mp-service/src/main/resources/mapper/user/UserDeliverOrderItemMapper.xml
  49. 26 0
      mp-service/src/main/resources/mapper/user/UserExchangeOrderMapper.xml

+ 2 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelOrderMgrController.java

@@ -423,6 +423,7 @@ public class ChannelOrderMgrController extends BaseApiController {
 							channelOrderExcel.setCreatedTime(channelOrder.getCreatedTime());
 							channelOrderExcel.setItemStatus(channelOrder.getStatus().getValue() > 1 ? "已发货" : "未发货");
 							channelOrderExcel.setOrderId(channelOrder.getOrderId());
+							channelOrderExcel.setMemo(channelOrder.getMemo());
 							channelOrderExcel.setStatus(channelOrder.getStatus().getDesc());
 							channelOrderExcel.setChannelName(channelOrder.getChannelName());
 							channelOrderExcel.setParentName(channelOrder.getParentName());
@@ -438,6 +439,6 @@ public class ChannelOrderMgrController extends BaseApiController {
 			}
 		}
 		ExcelUtil<ChannelOrderExcel> util = new ExcelUtil<ChannelOrderExcel>(ChannelOrderExcel.class);
-		return util.exportExcel(excelList, "经销商订单导出", false);
+		return util.exportExcel(excelList, "经销商盲票订单导出", false);
 	}
 }

+ 14 - 3
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/CouponMgrController.java

@@ -33,6 +33,8 @@ import com.qs.mp.system.service.ISysUserService;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import ma.glasnost.orika.MapperFacade;
 
 import java.math.BigDecimal;
@@ -48,6 +50,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -59,10 +62,9 @@ import org.springframework.web.bind.annotation.RestController;
  * @create 2022-03-09 23:45:48
  * @describe 代金券管理前端控制器
  */
-@Api("代金券管理API")
+@Api(tags = "代金券管理API")
 @RestController
 @RequestMapping("/api/v1/mp/admin/coupon/*")
-@Component
 public class CouponMgrController extends BaseApiController {
 
 	@Autowired
@@ -93,13 +95,18 @@ public class CouponMgrController extends BaseApiController {
 	 */
 	@PostMapping("/list")
 	@PreAuthorize("@ss.hasPermi('business:coupon:list')")
-	public TableDataInfo listCoupon(@RequestBody Coupon coupon) {
+	@ApiOperation("获取代金券列表信息,支持翻页")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "成功", response = Coupon.class)
+	)
+	public TableDataInfo listCoupon(@RequestBody CouponParam coupon) {
 		List<Coupon> list = new ArrayList<Coupon>();
 		startPage();
 		QueryWrapper<Coupon> queryWrapper = new QueryWrapper<Coupon>();
 		queryWrapper.lambda().like(null != coupon && StringUtils.isNotBlank(coupon.getTitle()), Coupon::getTitle, coupon.getTitle());
 		queryWrapper.lambda().eq(null != coupon && null != coupon.getStatus(), Coupon::getStatus, coupon.getStatus());
 		queryWrapper.lambda().eq(null != coupon && null != coupon.getType(), Coupon::getType, coupon.getType());
+		queryWrapper.lambda().notIn(null != coupon && !CollectionUtils.isEmpty(coupon.getExcludeCouponIds()), Coupon::getCouponId, coupon.getExcludeCouponIds());
 		queryWrapper.lambda().eq(Coupon::getIsDeleted, 0);
 		queryWrapper.orderByAsc("FIELD(`status`, 'init', 'on', 'off')");
 		queryWrapper.lambda().orderByDesc(Coupon::getCouponId);
@@ -116,6 +123,10 @@ public class CouponMgrController extends BaseApiController {
 	 */
 	@PostMapping(value = "/detail")
 	@PreAuthorize("@ss.hasPermi('business:coupon:query')")
+	@ApiOperation("获取代金券详情信息")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "操作成功", response = CouponVO.class)
+	)
 	public AjaxResult getCouponDetail(@RequestBody JSONObject jsonObject) {
 		String couponId = jsonObject.getString("couponId");
 		if (StringUtils.isBlank(couponId)){

+ 110 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/SupplierMgrController.java

@@ -0,0 +1,110 @@
+package com.qs.mp.web.controller.api.admin;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.qs.mp.admin.domain.Goods;
+import com.qs.mp.admin.domain.Supplier;
+import com.qs.mp.admin.domain.param.SupplierCreateParam;
+import com.qs.mp.admin.domain.param.SupplierQueryParam;
+import com.qs.mp.admin.domain.param.SupplierUpdateParam;
+import com.qs.mp.admin.service.IGoodsService;
+import com.qs.mp.admin.service.ISupplierService;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.core.page.TableDataInfo;
+import com.qs.mp.web.controller.common.BaseApiController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 供应商管理API
+ *
+ * @author Cup
+ * @date 2022/5/10
+ */
+@Api(tags = "供应商管理API")
+@RestController
+@RequestMapping("/api/v1/mp/admin/supplier/*")
+public class SupplierMgrController extends BaseApiController {
+
+    @Autowired
+    private ISupplierService supplierService;
+
+    @Autowired
+    private IGoodsService goodsService;
+
+
+    @PostMapping("/create")
+    @PreAuthorize("@ss.hasPermi('business:supplier:add')")
+    @ApiOperation("添加供应商")
+    public AjaxResult createSupplier(@RequestBody @Validated SupplierCreateParam supplierCreateParam) {
+        int count = supplierService.count(new LambdaQueryWrapper<Supplier>().eq(Supplier::getName, supplierCreateParam.getName()));
+        if (count != 0) {
+            return AjaxResult.error("供应商名称已存在");
+        }
+        Supplier supplier = new Supplier();
+        BeanUtils.copyProperties(supplierCreateParam, supplier);
+        return AjaxResult.success(supplierService.save(supplier));
+    }
+
+    @PostMapping("/update")
+    @PreAuthorize("@ss.hasPermi('business:supplier:edit')")
+    @ApiOperation("编辑供应商")
+    public AjaxResult updateSupplier(@RequestBody @Validated SupplierUpdateParam supplierUpdateParam) {
+        int count = supplierService.count(new LambdaQueryWrapper<Supplier>().eq(Supplier::getName, supplierUpdateParam.getName()).notIn(Supplier::getId, supplierUpdateParam.getId()));
+        if (count != 0) {
+            return AjaxResult.error("供应商名称已存在");
+        }
+        Supplier supplier = new Supplier();
+        BeanUtils.copyProperties(supplierUpdateParam, supplier);
+        return AjaxResult.success(supplierService.updateById(supplier));
+    }
+
+    @PostMapping("/list")
+    @PreAuthorize("@ss.hasPermi('business:supplier:list')")
+    @ApiOperation("供应商列表")
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "供应商列表", response = Supplier.class)
+    )
+    public TableDataInfo list(@RequestBody SupplierQueryParam supplierQueryParam) {
+        startPage();
+
+        LambdaQueryWrapper<Supplier> queryWrapper = new LambdaQueryWrapper<>();
+        if (StringUtils.isNotBlank(supplierQueryParam.getName())) {
+            queryWrapper.like(Supplier::getName, supplierQueryParam.getName());
+        }
+
+        queryWrapper.orderByDesc(Supplier::getId);
+
+        return getDataTable(supplierService.list(queryWrapper));
+    }
+
+    @PostMapping("/detail/{id}")
+    @PreAuthorize("@ss.hasPermi('business:supplier:query')")
+    @ApiOperation("供应商详情")
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "供应商详情", response = Supplier.class)
+    )
+    public AjaxResult detail(@PathVariable("id") Long id) {
+        return AjaxResult.success(supplierService.getById(id));
+    }
+
+    @PostMapping("/delete/{id}")
+    @PreAuthorize("@ss.hasPermi('business:supplier:remove')")
+    @ApiOperation("删除供应商")
+    public AjaxResult delete(@PathVariable("id") Long id) {
+        int count = goodsService.count(new LambdaQueryWrapper<Goods>().eq(Goods::getSupplierId, id));
+        if (count != 0) {
+            return AjaxResult.error("该供应商下有商品,不能删除");
+        }
+        return AjaxResult.success(supplierService.removeById(id));
+    }
+
+}

+ 9 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserDeliverOrderMgrController.java

@@ -3,8 +3,10 @@ package com.qs.mp.web.controller.api.admin;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.qs.mp.admin.domain.Supplier;
 import com.qs.mp.admin.domain.param.UserDeliverOrderQueryParam;
 import com.qs.mp.admin.domain.param.UserDeliverOrderShipParam;
+import com.qs.mp.admin.service.ISupplierService;
 import com.qs.mp.common.annotation.Log;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
@@ -53,6 +55,9 @@ public class UserDeliverOrderMgrController extends BaseApiController {
 	@Autowired
 	private IUserDeliverOrderItemService userDeliverOrderItemService;
 
+	@Autowired
+	private ISupplierService supplierService;
+
 //	@Autowired
 //	private IUserPrizeStorageService userPrizeStorageService;
 //
@@ -289,6 +294,9 @@ public class UserDeliverOrderMgrController extends BaseApiController {
 							deliverOrderExcel.setGoodsNum(userDeliverOrderItem.getGoodsNum());
 							deliverOrderExcel.setCreatedTime(deliverOrder.getCreatedTime());
 							deliverOrderExcel.setOrderId(deliverOrder.getOrderId());
+							deliverOrderExcel.setMemo(deliverOrder.getMemo());
+							deliverOrderExcel.setSupplierName(userDeliverOrderItem.getSupplierName());
+							deliverOrderExcel.setShoppingLink(userDeliverOrderItem.getShoppingLink());
 							deliverOrderExcel.setReceiver(deliverOrder.getReceiver());
 							deliverOrderExcel.setTel(deliverOrder.getTel());
 							String address = deliverOrder.getProvince() + deliverOrder.getCity()
@@ -304,6 +312,6 @@ public class UserDeliverOrderMgrController extends BaseApiController {
 			}
 		}
 		ExcelUtil<DeliverOrderExcel> util = new ExcelUtil<DeliverOrderExcel>(DeliverOrderExcel.class);
-		return util.exportExcel(excelList, "用户提货订单导出", false);
+		return util.exportExcel(excelList, "商品提货订单导出", false);
 	}
 }

+ 135 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserExchangeOrderMgrController.java

@@ -0,0 +1,135 @@
+package com.qs.mp.web.controller.api.admin;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.qs.mp.admin.domain.excel.UserExchangeOrderExcel;
+import com.qs.mp.admin.domain.excel.UserTicketOrderExcel;
+import com.qs.mp.admin.domain.param.UserExchangeOrderQueryParam;
+import com.qs.mp.admin.domain.vo.UserExchangeOrderVO;
+import com.qs.mp.admin.domain.vo.UserTicketOrderListVO;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.core.page.TableDataInfo;
+import com.qs.mp.user.domain.UserExchangeOrder;
+import com.qs.mp.user.domain.UserTicketOrder;
+import com.qs.mp.user.service.IUserExchangeOrderService;
+import com.qs.mp.utils.ExcelUtil;
+import com.qs.mp.web.controller.common.BaseApiController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 用户兑换订单管理相关API
+ * @author Cup
+ * @date 2022/5/10
+ */
+@Api(tags = "用户兑换订单管理相关API")
+@RestController
+@RequestMapping("/api/v1/mp/admin/exchange/order/*")
+public class UserExchangeOrderMgrController extends BaseApiController {
+
+
+    @Autowired
+    private IUserExchangeOrderService userExchangeOrderService;
+
+    @PostMapping("/list")
+    @ApiOperation("用户兑换订单列表")
+    @PreAuthorize("@ss.hasPermi('order:exchange:list')")
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "成功", response = UserExchangeOrderVO.class)
+    )
+    public TableDataInfo list(@RequestBody UserExchangeOrderQueryParam userExchangeOrderQueryParam) {
+
+        startPage();
+
+        QueryWrapper<UserExchangeOrder> queryWrapper = new QueryWrapper<>();
+
+        // 封装条件
+        if (StringUtils.isNotBlank(userExchangeOrderQueryParam.getGoodsName())) {
+            queryWrapper.like("t2.title", userExchangeOrderQueryParam.getGoodsName());
+        }
+
+        if (StringUtils.isNotBlank(userExchangeOrderQueryParam.getPhone())) {
+            queryWrapper.eq("t4.phonenumber", userExchangeOrderQueryParam.getPhone());
+        }
+
+        if (Objects.nonNull(userExchangeOrderQueryParam.getMinExchangePrice()) && Objects.nonNull(userExchangeOrderQueryParam.getMaxExchangePrice())) {
+            queryWrapper.between("t1.order_coin", userExchangeOrderQueryParam.getMinExchangePrice(), userExchangeOrderQueryParam.getMaxExchangePrice());
+        }
+
+        if (Objects.nonNull(userExchangeOrderQueryParam.getStartTime()) && Objects.nonNull(userExchangeOrderQueryParam.getEndTime())) {
+            queryWrapper.between("t1.created_time", userExchangeOrderQueryParam.getStartTime(), userExchangeOrderQueryParam.getEndTime());
+        }
+
+        queryWrapper.orderByDesc("t1.created_time");
+
+        List<UserExchangeOrderVO> list =  userExchangeOrderService.listUserExchangeOrderByWrapper(queryWrapper);
+
+        return getDataTable(list);
+    }
+
+    @PostMapping("/export")
+    @PreAuthorize("@ss.hasPermi('order:exchange:export')")
+    @ApiOperation("用户兑换订单导出")
+    public AjaxResult export(@RequestBody UserExchangeOrderQueryParam userExchangeOrderQueryParam) {
+        QueryWrapper<UserExchangeOrder> queryWrapper = new QueryWrapper<>();
+
+        // 封装条件
+        if (StringUtils.isNotBlank(userExchangeOrderQueryParam.getGoodsName())) {
+            queryWrapper.like("t2.title", userExchangeOrderQueryParam.getGoodsName());
+        }
+
+        if (StringUtils.isNotBlank(userExchangeOrderQueryParam.getPhone())) {
+            queryWrapper.eq("t4.phonenumber", userExchangeOrderQueryParam.getPhone());
+        }
+
+        if (Objects.nonNull(userExchangeOrderQueryParam.getMinExchangePrice()) && Objects.nonNull(userExchangeOrderQueryParam.getMaxExchangePrice())) {
+            queryWrapper.between("t2.exchange_price", userExchangeOrderQueryParam.getMinExchangePrice(), userExchangeOrderQueryParam.getMaxExchangePrice());
+        }
+
+        if (Objects.nonNull(userExchangeOrderQueryParam.getStartTime()) && Objects.nonNull(userExchangeOrderQueryParam.getEndTime())) {
+            queryWrapper.between("t1.created_time", userExchangeOrderQueryParam.getStartTime(), userExchangeOrderQueryParam.getEndTime());
+        }
+        queryWrapper.orderByDesc("t1.created_time");
+        int totalSize = userExchangeOrderService.countUserExchangeOrderByWrapper(queryWrapper);
+        if (totalSize == 0) {
+            return AjaxResult.error("没有符合条件的用户订单");
+        }
+        int pageSize = 2000;
+        List<UserExchangeOrderVO> userExchangeOrderVOList = new ArrayList<>();
+        if (totalSize > pageSize) {
+            int totalPage = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1;
+            for (int i = 0; i < totalPage; i++) {
+                queryWrapper.last("limit " + (i * pageSize) + ", " + pageSize);
+                List<UserExchangeOrderVO> list = userExchangeOrderService.listUserExchangeOrderByWrapper(queryWrapper);
+                if (CollectionUtils.isNotEmpty(list)) {
+                    userExchangeOrderVOList.addAll(list);
+                }
+            }
+        } else {
+            userExchangeOrderVOList = userExchangeOrderService.listUserExchangeOrderByWrapper(queryWrapper);
+        }
+        List<UserExchangeOrderExcel> excelList = userExchangeOrderVOList.stream().map(userExchangeOrderVO -> {
+            UserExchangeOrderExcel userExchangeOrderExcel = new UserExchangeOrderExcel();
+            BeanUtils.copyProperties(userExchangeOrderVO, userExchangeOrderExcel);
+            return userExchangeOrderExcel;
+        }).collect(Collectors.toList());
+
+        ExcelUtil<UserExchangeOrderExcel> util = new ExcelUtil<>(UserExchangeOrderExcel.class);
+        return util.exportExcel(excelList, "用户兑换订单导出", false);
+    }
+}

+ 13 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserTicketOrderMgrController.java

@@ -29,6 +29,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -132,6 +134,16 @@ public class UserTicketOrderMgrController extends BaseApiController {
         List<UserTicketOrderExcel> excelList = userTicketOrderListVOList.stream().map(userTicketOrderListVO -> {
             UserTicketOrderExcel userTicketOrderExcel = new UserTicketOrderExcel();
             BeanUtils.copyProperties(userTicketOrderListVO, userTicketOrderExcel);
+            if (Objects.nonNull(userTicketOrderListVO.getSalePrice())) {
+                userTicketOrderExcel.setSalePrice(new BigDecimal(userTicketOrderListVO.getSalePrice()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
+            }
+            if (Objects.nonNull(userTicketOrderListVO.getDiscountAmt())) {
+                userTicketOrderExcel.setDiscountAmt(new BigDecimal(userTicketOrderListVO.getDiscountAmt()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
+            }
+            if (Objects.nonNull(userTicketOrderListVO.getPayAmt())) {
+                userTicketOrderExcel.setPayAmt(new BigDecimal(userTicketOrderListVO.getPayAmt()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
+            }
+
             if (Objects.nonNull(userTicketOrderListVO.getStatus())) {
                 userTicketOrderExcel.setStatus(userTicketOrderListVO.getStatus().getDesc());
             }
@@ -142,7 +154,7 @@ public class UserTicketOrderMgrController extends BaseApiController {
         }).collect(Collectors.toList());
 
         ExcelUtil<UserTicketOrderExcel> util = new ExcelUtil<>(UserTicketOrderExcel.class);
-        return util.exportExcel(excelList, "用户盲票订单导出", false);
+        return util.exportExcel(excelList, "盲票销售订单导出", false);
     }
 
 

+ 1 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelOrderController.java

@@ -159,7 +159,7 @@ public class ChannelOrderController extends BaseApiController {
     // 设置自动确认收货的时间;
     if (channelOrderVO != null && Objects.nonNull(channelOrderVO.getDeliveryTime())) {
       Date deliveryTime = channelOrderVO.getDeliveryTime();
-      LocalDateTime autoConfirmTime = LocalDateTimeUtil.of(deliveryTime).plusDays(10);
+      LocalDateTime autoConfirmTime = LocalDateTimeUtil.of(deliveryTime).plusDays(15);
       Duration between = LocalDateTimeUtil.between(LocalDateTime.now(), autoConfirmTime);
       long hours = between.toHours();
       long day = hours / 24;

+ 2 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserDeliverOrderController.java

@@ -136,7 +136,7 @@ public class UserDeliverOrderController extends BaseApiController {
     // 设置自动确认收货时间
     if (deliverOrder != null && !Objects.isNull(deliverOrder.getDeliveryTime())) {
       Date deliveryTime = deliverOrder.getDeliveryTime();
-      LocalDateTime autoConfirmTime = LocalDateTimeUtil.of(deliveryTime).plusDays(10);
+      LocalDateTime autoConfirmTime = LocalDateTimeUtil.of(deliveryTime).plusDays(15);
       Duration between = LocalDateTimeUtil.between(LocalDateTime.now(), autoConfirmTime);
       long hours = between.toHours();
       long day = hours / 24;
@@ -225,7 +225,7 @@ public class UserDeliverOrderController extends BaseApiController {
     if (null == orderSettleVO.getAddr()) {
       return AjaxResult.error("请填写收货地址");
     }
-    String orderId = userDeliverOrderService.submitOrder(userId, orderSettleVO);
+    String orderId = userDeliverOrderService.submitOrder(userId,order.getMemo(), orderSettleVO);
     JSONObject jsonObject = new JSONObject();
     jsonObject.put("orderId", orderId);
     if (orderSettleVO.getPayAmt() > 0) {

+ 2 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserExchangeController.java

@@ -114,7 +114,8 @@ public class UserExchangeController extends BaseApiController {
         .eq(Goods::getStatus, GoodsStatusEnum.PUT_ON)
         .eq(Goods::getExchangeShow, 1)
         .in(!CollectionUtils.isEmpty(goodsIds), Goods::getGoodsId, goodsIds)
-        .orderByDesc(Goods::getSortWeight));
+        .orderByDesc(Goods::getSortWeight)
+        .orderByAsc(Goods::getExchangePrice));
     List<GoodsListVO> goodsListVOList = mapperFacade.mapAsList(goodsList, GoodsListVO.class);
     TableDataInfo rspData = getDataTable(goodsList);
     rspData.setRows(goodsListVOList);

+ 3 - 3
mp-quartz/src/main/java/com/qs/mp/quartz/task/DayStatTask.java

@@ -139,8 +139,8 @@ public class DayStatTask {
                 .select("IFNULL(sum(pay_amt) ,0) as orderAmt")
                 .lambda().eq(UserTicketOrder::getBoxId, ticketBox.getBoxId())
                 .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.FINISHED)
-                .ge(UserTicketOrder::getUpdatedTime, bizDay)
-                .lt(UserTicketOrder::getUpdatedTime, DateUtils.addDays(bizDay, 1)));
+                .ge(UserTicketOrder::getPayTime, bizDay)
+                .lt(UserTicketOrder::getPayTime, DateUtils.addDays(bizDay, 1)));
         if (null != orderMap) {
           BigDecimal orderAmt = new BigDecimal(
               Integer.valueOf(String.valueOf(orderMap.get("orderAmt")))).divide(new BigDecimal(100),
@@ -152,7 +152,7 @@ public class DayStatTask {
                   .select("IFNULL(sum(pay_amt) ,0) as orderAmt")
                   .lambda().eq(UserTicketOrder::getBoxId, ticketBox.getBoxId())
                   .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.FINISHED)
-                  .lt(UserTicketOrder::getUpdatedTime, DateUtils.addDays(bizDay, 1)));
+                  .lt(UserTicketOrder::getPayTime, DateUtils.addDays(bizDay, 1)));
           BigDecimal allOrderAmt = new BigDecimal(
               Integer.valueOf(String.valueOf(allOrderMap.get("orderAmt")))).divide(new BigDecimal(100),
               2, RoundingMode.DOWN);

+ 1 - 1
mp-quartz/src/main/java/com/qs/mp/quartz/task/OperateToolTask.java

@@ -50,7 +50,7 @@ public class OperateToolTask {
   public void refund(String orderNo, Integer refundAmount){
     LogUtil.info(logger, "...退款任务开始...");
 
-    walletService.refundByUser(orderNo, refundAmount, "后台人工操作");
+    walletService.refund(orderNo, refundAmount, "后台人工操作");
 
     LogUtil.info(logger, "...退款任务结束...");
 

+ 13 - 0
mp-quartz/src/main/java/com/qs/mp/quartz/task/TicketPkgDataTask.java

@@ -15,6 +15,7 @@ import com.qs.mp.channel.service.IChannelOrderService;
 import com.qs.mp.common.enums.ChannelOrderStatusEnum;
 import com.qs.mp.common.enums.TicketPkgSaleStatusEnum;
 import com.qs.mp.common.enums.TicketStatusEnum;
+import com.qs.mp.common.enums.TicketTypeEnum;
 import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.common.utils.LogUtil;
 import java.time.LocalDateTime;
@@ -74,6 +75,18 @@ public class TicketPkgDataTask {
           .set(TicketPackage::getSaleStatus, saleStatusEnum)
           .eq(TicketPackage::getPkgId, ticketPackage.getPkgId()));
     }
+
+    List<TicketBox> ticketBoxList = ticketBoxService.list(new LambdaQueryWrapper<TicketBox>()
+        .eq(TicketBox::getType, TicketTypeEnum.OFFLINE));
+
+    for (TicketBox ticketBox : ticketBoxList) {
+      int saleQty = ticketService.count(new LambdaQueryWrapper<Ticket>()
+          .eq(Ticket::getBoxId, ticketBox.getBoxId())
+          .gt(Ticket::getStatus, TicketStatusEnum.NOT_PAY));
+      ticketBoxService.update(new LambdaUpdateWrapper<TicketBox>()
+          .set(TicketBox::getSaleQty, saleQty)
+          .eq(TicketBox::getBoxId, ticketBox.getBoxId()));
+    }
     LogUtil.info(logger, "...票包销售数量更新任务结束...");
   }
 }

+ 18 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/Coupon.java

@@ -14,6 +14,9 @@ import com.qs.mp.common.enums.CouponTypeEnum;
 import com.qs.mp.common.enums.CouponUseAreaEnum;
 import java.io.Serializable;
 import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -23,6 +26,7 @@ import lombok.Data;
  */
 @TableName("mp_coupon")
 @Data
+@ApiModel("优惠券实体类")
 public class Coupon implements Serializable {
 
   private static final long serialVersionUID = 1L;
@@ -30,18 +34,21 @@ public class Coupon implements Serializable {
   /**
    * 主键
    */
+  @ApiModelProperty("优惠券id")
   @TableId(value = "coupon_id", type = IdType.AUTO)
   private Long couponId;
 
   /**
    * 标题
    */
+  @ApiModelProperty("标题")
   @TableField("title")
   private String title;
 
   /**
    * 类型;1用户盲票购买优惠券、2用户门店消费优惠券、3经销商盲票采购优惠券
    */
+  @ApiModelProperty("类型;1用户盲票购买优惠券、2用户门店消费优惠券、3经销商盲票采购优惠券")
   @TableField("type")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
   private CouponTypeEnum type;
@@ -49,18 +56,21 @@ public class Coupon implements Serializable {
   /**
    * 图片
    */
+  @ApiModelProperty("图片")
   @TableField("pic_url")
   private String picUrl;
 
   /**
    * 使用说明
    */
+  @ApiModelProperty("使用说明")
   @TableField("description")
   private String description;
 
   /**
    * 优惠类型;1代金券、2折扣券、3兑换券
    */
+  @ApiModelProperty("优惠类型;1代金券、2折扣券、3兑换券")
   @TableField("discount_type")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
   private CouponDiscountTypeEnum discountType;
@@ -68,18 +78,21 @@ public class Coupon implements Serializable {
   /**
    * 优惠金额(比例)
    */
+  @ApiModelProperty("优惠金额(比例)")
   @TableField("discount")
   private Integer discount;
 
   /**
    * 最低消费金额
    */
+  @ApiModelProperty("最低消费金额")
   @TableField("min_order_amt")
   private Integer minOrderAmt;
 
   /**
    * 渠道代金券,渠道承担比例
    */
+  @ApiModelProperty("渠道代金券,渠道承担比例")
   @TableField("channel_shared_rate")
   private Integer channelSharedRate;
 
@@ -87,6 +100,7 @@ public class Coupon implements Serializable {
   /**
    * 状态;off下架 on正常
    */
+  @ApiModelProperty("状态;off下架 on正常")
   @TableField("status")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
   private CouponStatusEnum status;
@@ -96,6 +110,7 @@ public class Coupon implements Serializable {
    *         0:进票门店  1、指定盲票  2:所有门票
    *
    */
+  @ApiModelProperty("使用范围;0通用 1生成券时指定范围 2发放时动态指定范围")
   @TableField("use_area")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
   private CouponUseAreaEnum useArea;
@@ -103,6 +118,7 @@ public class Coupon implements Serializable {
   /**
    * 发放方式;1系统发放 2用户主动领取
    */
+  @ApiModelProperty("发放方式;1系统发放 2用户主动领取")
   @TableField("distribute_type")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
   private CouponDistributeTypeEnum distributeType;
@@ -110,12 +126,14 @@ public class Coupon implements Serializable {
   /**
    * 叠加使用;0不允许 1允许
    */
+  @ApiModelProperty("叠加使用;0不允许 1允许")
   @TableField("composite_use")
   private Integer compositeUse;
 
   /**
    * 有效期天数;从领券后开始多少天有效,0则使用绝对有效期
    */
+  @ApiModelProperty("有效期天数;从领券后开始多少天有效,0则使用绝对有效期")
   @TableField("due_days")
   private Integer dueDays;
 

+ 8 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/Goods.java

@@ -129,6 +129,14 @@ public class Goods implements Serializable {
   @TableField("merchant_info")
   private String merchantInfo;
 
+  @ApiModelProperty("供应商ID")
+  @TableField("supplier_id")
+  private Long supplierId;
+
+  @ApiModelProperty("采购链接")
+  @TableField("shopping_link")
+  private String shoppingLink;
+
 
   @ApiModelProperty("排序权重,越大越靠前")
   @TableField("sort_weight")

+ 88 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/Supplier.java

@@ -0,0 +1,88 @@
+package com.qs.mp.admin.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableField;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @describe 供应商表实体类
+ * @auther quanshu
+ * @create 2022-05-10 10:22:34
+ */
+@ApiModel("供应商实体类")
+@TableName("mp_supplier")
+@Data
+public class Supplier implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 供应商ID
+     */
+    @ApiModelProperty("供应商ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 供应商名称
+     */
+    @ApiModelProperty("供应商名称")
+    @TableField("name")
+    private String name;
+
+    /**
+     * 联系人
+     */
+    @ApiModelProperty("联系人")
+    @TableField("contact")
+    private String contact;
+
+    /**
+     * 手机号
+     */
+    @ApiModelProperty("手机号")
+    @TableField("phone")
+    private String phone;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty("备注")
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 逻辑删除标识
+     */
+    @ApiModelProperty("逻辑删除标识")
+    @TableField("is_deleted")
+    @TableLogic
+    private Integer isDeleted;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @TableField("created_time")
+    private Date createdTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    @TableField("updated_time")
+    private Date updatedTime;
+
+
+}

+ 45 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/excel/UserExchangeOrderExcel.java

@@ -0,0 +1,45 @@
+package com.qs.mp.admin.domain.excel;
+
+import com.qs.mp.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 用户兑换订单导出类
+ * @author Cup
+ * @date 2022/5/10
+ */
+@ApiModel("用户兑换订单导出类")
+@Data
+public class UserExchangeOrderExcel {
+
+    @Excel(name = "兑换时间")
+    private Date createdTime;
+
+    @Excel(name = "商品名称")
+    private String goodsName;
+
+    @Excel(name = "商品规格")
+    private String sku;
+
+    @Excel(name = "商品单价")
+    private Integer exchangePrice;
+
+    @Excel(name = "兑换数量")
+    private Integer num;
+
+    @Excel(name = "支付盲豆数量")
+    private Integer payPrice;
+
+    @Excel(name = "用户昵称")
+    private String nickName;
+
+    @Excel(name = "用户手机号")
+    private String phone;
+
+
+}
+

+ 4 - 3
mp-service/src/main/java/com/qs/mp/admin/domain/excel/UserTicketOrderExcel.java

@@ -8,6 +8,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -32,7 +33,7 @@ public class UserTicketOrderExcel {
     private String boxType;
 
     @Excel(name = "盲票售价")
-    private Integer salePrice;
+    private BigDecimal salePrice;
 
     @Excel(name = "购买数量")
     private Integer ticketNum;
@@ -41,10 +42,10 @@ public class UserTicketOrderExcel {
     private String status;
 
     @Excel(name = "优惠金额")
-    private Integer discountAmt;
+    private BigDecimal discountAmt;
 
     @Excel(name = "实付金额")
-    private Integer payAmt;
+    private BigDecimal payAmt;
 
     @Excel(name = "用户昵称")
     private String nickName;

+ 6 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/CouponParam.java

@@ -10,6 +10,8 @@ import io.swagger.annotations.ApiModelProperty;
 import javax.validation.constraints.NotNull;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @describe 优惠券实体类
  * @auther quanshu
@@ -111,4 +113,8 @@ public class CouponParam {
   private String boxIds;
 
 
+  @ApiModelProperty("排除的优惠券id列表")
+  private List<Long> excludeCouponIds;
+
+
 }

+ 6 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/GoodsParam.java

@@ -120,5 +120,11 @@ public class GoodsParam {
 	@ApiModelProperty("商家信息")
 	private String merchantInfo;
 
+	@ApiModelProperty("供应商ID")
+	private Long supplierId;
+
+	@ApiModelProperty("采购链接")
+	private String shoppingLink;
+
 
 }

+ 45 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/SupplierCreateParam.java

@@ -0,0 +1,45 @@
+package com.qs.mp.admin.domain.param;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qs.mp.admin.domain.Supplier;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 供应商创建入参类
+ * @author Cup
+ * @date 2022/5/10
+ */
+@ApiModel("供应商创建入参类")
+@Data
+public class SupplierCreateParam{
+
+    /**
+     * 供应商名称
+     */
+    @NotBlank(message = "供应商名称不能为空")
+    @ApiModelProperty(value = "供应商名称",required = true)
+    private String name;
+
+    /**
+     * 联系人
+     */
+    @ApiModelProperty("联系人")
+    private String contact;
+
+    /**
+     * 手机号
+     */
+    @ApiModelProperty("手机号")
+    private String phone;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty("备注")
+    private String remark;
+}

+ 15 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/SupplierParam.java

@@ -0,0 +1,15 @@
+package com.qs.mp.admin.domain.param;
+
+import com.qs.mp.admin.domain.Supplier;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 供应商入参类
+ * @author Cup
+ * @date 2022/5/10
+ */
+@ApiModel("供应商入参类")
+@Data
+public class SupplierParam extends Supplier {
+}

+ 18 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/SupplierQueryParam.java

@@ -0,0 +1,18 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 供应商查询入参类
+ * @author Cup
+ * @date 2022/5/10
+ */
+@ApiModel("供应商查询入参类")
+@Data
+public class SupplierQueryParam{
+
+    @ApiModelProperty("供应商名称")
+    private String name;
+}

+ 47 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/SupplierUpdateParam.java

@@ -0,0 +1,47 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 供应商更新入参类
+ * @author Cup
+ * @date 2022/5/10
+ */
+@ApiModel("供应商更新入参类")
+@Data
+public class SupplierUpdateParam {
+
+    @NotNull(message = "供应商id不能为空")
+    @ApiModelProperty("供应商id")
+    private Long id;
+
+    /**
+     * 供应商名称
+     */
+    @NotBlank(message = "供应商名称不能为空")
+    @ApiModelProperty(value = "供应商名称",required = true)
+    private String name;
+
+    /**
+     * 联系人
+     */
+    @ApiModelProperty("联系人")
+    private String contact;
+
+    /**
+     * 手机号
+     */
+    @ApiModelProperty("手机号")
+    private String phone;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty("备注")
+    private String remark;
+}

+ 35 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/UserExchangeOrderQueryParam.java

@@ -0,0 +1,35 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 用户兑换订单查询入参类
+ * @author Cup
+ * @date 2022/5/10
+ */
+@ApiModel("用户兑换订单查询入参类")
+@Data
+public class UserExchangeOrderQueryParam {
+
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+
+    @ApiModelProperty("手机号")
+    private String phone;
+
+    @ApiModelProperty("最低价值")
+    private Integer minExchangePrice;
+
+    @ApiModelProperty("最高价值")
+    private Integer maxExchangePrice;
+
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+}

+ 6 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/GoodsVO.java

@@ -135,6 +135,12 @@ public class GoodsVO {
 	@ApiModelProperty("商家信息")
 	private String merchantInfo;
 
+	@ApiModelProperty("供应商ID")
+	private Long supplierId;
+
+	@ApiModelProperty("采购链接")
+	private String shoppingLink;
+
 
 	/**
 	 * 创建时间

+ 45 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/UserExchangeOrderVO.java

@@ -0,0 +1,45 @@
+package com.qs.mp.admin.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 用户兑换订单出参类
+ * @author Cup
+ * @date 2022/5/10
+ */
+@ApiModel("用户兑换订单出参类")
+@Data
+public class UserExchangeOrderVO {
+
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+
+    @ApiModelProperty("商品主图")
+    private String picUrl;
+
+    @ApiModelProperty("商品规格")
+    private String sku;
+
+    @ApiModelProperty("单价(盲豆)")
+    private Integer exchangePrice;
+
+    @ApiModelProperty("兑换数量")
+    private Integer num;
+
+    @ApiModelProperty("支付盲豆数")
+    private Integer payPrice;
+
+    @ApiModelProperty("用户昵称")
+    private String nickName;
+
+    @ApiModelProperty("手机号")
+    private String phone;
+
+    @ApiModelProperty("兑换时间")
+    private Date createdTime;
+
+}

+ 13 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/SupplierMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.admin.mapper;
+
+import com.qs.mp.admin.domain.Supplier;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @auther quanshu
+ * @create 2022-05-10 10:22:34
+ * @describe 供应商表mapper类
+ */
+public interface SupplierMapper extends BaseMapper<Supplier> {
+
+}

+ 16 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ISupplierService.java

@@ -0,0 +1,16 @@
+package com.qs.mp.admin.service;
+
+import com.qs.mp.admin.domain.Supplier;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 供应商表 服务类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-10
+ */
+public interface ISupplierService extends IService<Supplier> {
+
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/SupplierServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qs.mp.admin.service.impl;
+
+import com.qs.mp.admin.domain.Supplier;
+import com.qs.mp.admin.mapper.SupplierMapper;
+import com.qs.mp.admin.service.ISupplierService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 供应商表 服务实现类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-10
+ */
+@Service
+public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> implements ISupplierService {
+
+}

+ 4 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/ChannelOrder.java

@@ -165,6 +165,10 @@ public class ChannelOrder implements Serializable {
   @ApiModelProperty("确认收货时间")
   private Date confirmTime;
 
+  @ApiModelProperty("支付时间")
+  @TableField("pay_time")
+  private Date payTime;
+
   /**
    * 创建时间
    */

+ 3 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/excel/ChannelOrderExcel.java

@@ -63,4 +63,7 @@ public class ChannelOrderExcel {
 	@Excel(name = "收货地址")
 	private String address;
 
+	@Excel(name = "买家留言")
+	private String memo;
+
 }

+ 5 - 15
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelOrderServiceImpl.java

@@ -13,6 +13,7 @@ import com.qs.mp.admin.domain.param.ChannelOrderCancelParam;
 import com.qs.mp.admin.service.ITicketBoxService;
 import com.qs.mp.admin.service.ITicketPackageService;
 import com.qs.mp.common.enums.PayOrderStatusEnum;
+import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.pay.service.IPayOrderService;
 import com.qs.mp.pay.service.IWalletService;
 import com.qs.mp.user.domain.UserAddr;
@@ -36,6 +37,7 @@ import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.system.service.id.BizIdGenerator;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -224,22 +226,9 @@ public class ChannelOrderServiceImpl extends
             }
         }
 
-        // 获取支付成功的订单号
-        PayOrder payOrder = payOrderService.getOne(new LambdaQueryWrapper<PayOrder>()
-                .eq(PayOrder::getBizId, channelOrder.getOrderId())
-                .eq(PayOrder::getOrderStatus, PayOrderStatusEnum.SUCCESS));
-        if (Objects.isNull(payOrder)) {
-            throw new ServiceException("支付订单不存在");
-        }
-
-        // 更新支付表订单状态
-        PayOrder payOrderParam = new PayOrder();
-        payOrderParam.setOrderId(payOrder.getOrderId());
-        payOrderParam.setOrderStatus(PayOrderStatusEnum.REFUND.getValue());
-        payOrderService.updateById(payOrderParam);
 
-        // 退款
-        walletService.refundByChannel(payOrder.getOrderId(), channelOrder.getPayAmt(),"经销商取消订单");
+        //退款
+        walletService.refund(channelOrder.getOrderId(), channelOrder.getPayAmt(),"经销商取消订单");
 
         return true;
     }
@@ -272,6 +261,7 @@ public class ChannelOrderServiceImpl extends
     boolean rst = update(
         new LambdaUpdateWrapper<ChannelOrder>().set(ChannelOrder::getStatus,
                 ChannelOrderStatusEnum.NOT_DELIVER)
+                .set(ChannelOrder::getPayTime, DateUtils.parseDate(payOrder.getCompleteDate()))
             .eq(ChannelOrder::getOrderId, channelOrder.getOrderId())
             .eq(ChannelOrder::getStatus, ChannelOrderStatusEnum.NOT_PAY));
     if (!rst) {

+ 6 - 7
mp-service/src/main/java/com/qs/mp/pay/service/IWalletService.java

@@ -23,17 +23,16 @@ public interface IWalletService {
   JSONObject pay(BizTypeEnum bizType, String bizId, String openId, int money,
       String orderRemark);
 
-  /**
-   * 用户订单退款
-   * @return
-   */
-  boolean refundByUser(String orderNo, Integer refundAmount, String remark);
 
   /**
-   * 经销商订单退款
+   * 订单退款
+   * @param bizId
+   * @param refundAmount
+   * @param remark
    * @return
    */
-  boolean refundByChannel(String orderNo, Integer refundAmount, String remark);
+  boolean refund(String bizId, Integer refundAmount, String remark);
+
 
   /**
    *

+ 33 - 29
mp-service/src/main/java/com/qs/mp/pay/service/impl/WalletServiceImpl.java

@@ -1,9 +1,12 @@
 package com.qs.mp.pay.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.channel.service.IChannelOrderService;
 import com.qs.mp.common.enums.BizTypeEnum;
 import com.qs.mp.common.enums.MqTopicType;
+import com.qs.mp.common.enums.PayOrderStatusEnum;
 import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.pulsar.PulsarClientService;
 import com.qs.mp.common.utils.DateUtils;
@@ -23,6 +26,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.util.Objects;
+
 /**
  * @auther duota
  * @create 2021 2021/9/4 1:59 下午
@@ -122,52 +127,51 @@ public class WalletServiceImpl implements IWalletService {
   }
 
   @Override
-  public boolean refundByUser(String orderNo, Integer refundAmount, String remark) {
+  public boolean refund(String bizId, Integer refundAmount, String remark) {
+    // 获取支付成功的订单号
+    PayOrder payOrder = payOrderService.getOne(new LambdaQueryWrapper<PayOrder>()
+            .eq(PayOrder::getBizId, bizId)
+            .eq(PayOrder::getOrderStatus, PayOrderStatusEnum.SUCCESS));
+    if (Objects.isNull(payOrder)) {
+      throw new ServiceException("支付订单不存在");
+    }
 
     String reqUrl = baseUrl + "/pay/refundOrder";
-
     JSONObject sendData = new JSONObject();
-    sendData.put("shop_no", userPayShopNo);
+
+    if (BizTypeEnum.CHANNEL_ORDER.equals(payOrder.getBizType())) {
+      sendData.put("shop_no", channelPayShopNo);
+      sendData.put("sign",channelPaySign);
+    } else {
+      sendData.put("shop_no", userPayShopNo);
+      sendData.put("sign",userPaySign);
+    }
     sendData.put("timestamp",System.currentTimeMillis());
-    sendData.put("order_no",orderNo);
+    sendData.put("order_no",payOrder.getOrderId());
     sendData.put("refund_amount", refundAmount);
     sendData.put("order_remark", remark);
     sendData.put("type","sno");
-    sendData.put("sign",userPaySign);
     String result = OkHttpUtil.postJsonParams(reqUrl, sendData.toJSONString());
     JSONObject jsonObject = JSONObject.parseObject(result);
     String code = jsonObject.getString("code");
     logger.info("用户订单退款 -> request params:" + sendData.toJSONString() + "  result:" + result);
+    // 退款成功,更新订单状态
     if ("R0001".equals(code)) {
-      return true;
-    }
-    throw new ServiceException(jsonObject.getString("result"));
-  }
-
+      boolean ret = payOrderService.update(new LambdaUpdateWrapper<PayOrder>()
+              .set(PayOrder::getOrderStatus, PayOrderStatusEnum.REFUND.getValue())
+              .eq(PayOrder::getOrderId, payOrder.getOrderId())
+              .eq(PayOrder::getOrderStatus, PayOrderStatusEnum.SUCCESS.getValue()));
 
-  @Override
-  public boolean refundByChannel(String orderNo, Integer refundAmount, String remark) {
-
-    String reqUrl = baseUrl + "/pay/refundOrder";
-
-    JSONObject sendData = new JSONObject();
-    sendData.put("shop_no", channelPayShopNo);
-    sendData.put("timestamp",System.currentTimeMillis());
-    sendData.put("order_no",orderNo);
-    sendData.put("refund_amount", refundAmount);
-    sendData.put("order_remark", remark);
-    sendData.put("type","sno");
-    sendData.put("sign",channelPaySign);
-    String result = OkHttpUtil.postJsonParams(reqUrl, sendData.toJSONString());
-    JSONObject jsonObject = JSONObject.parseObject(result);
-    String code = jsonObject.getString("code");
-    logger.info("经销商订单退款 -> request params:" + sendData.toJSONString() + "  result:" + result);
-    if ("R0001".equals(code)) {
+      if (!ret) {
+        LogUtil.error(logger, "订单退款状态数据库更新失败, BizId:" + bizId);
+      }
       return true;
     }
-    throw new ServiceException(jsonObject.getString("result"));
+    LogUtil.error(logger, "订单退款失败,code:" + code);
+    throw new ServiceException("订单退款失败");
   }
 
+
   @Override
   public void payOrderStatusHandle(PayOrder payOrder) {
     String orderNo = payOrder.getOrderId();

+ 4 - 0
mp-service/src/main/java/com/qs/mp/user/domain/UserDeliverOrder.java

@@ -127,6 +127,10 @@ public class UserDeliverOrder implements Serializable {
   @ApiModelProperty("确认收货时间")
   private Date confirmTime;
 
+  @ApiModelProperty("支付时间")
+  @TableField("pay_time")
+  private Date payTime;
+
   /**
    * 创建时间
    */

+ 8 - 0
mp-service/src/main/java/com/qs/mp/user/domain/UserDeliverOrderItem.java

@@ -86,6 +86,14 @@ public class UserDeliverOrderItem implements Serializable {
   @TableField("goods_num")
   private Integer goodsNum;
 
+  @ApiModelProperty("供应商ID")
+  @TableField("supplier_id")
+  private Long supplierId;
+
+  @ApiModelProperty("采购链接")
+  @TableField("shopping_link")
+  private String shoppingLink;
+
   /**
    * 物流公司ID
    */

+ 15 - 0
mp-service/src/main/java/com/qs/mp/user/domain/UserExchangeOrder.java

@@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -15,6 +18,7 @@ import lombok.Data;
  */
 @TableName("mp_user_exchange_order")
 @Data
+@ApiModel("用户盲豆兑换订单实体类")
 public class UserExchangeOrder implements Serializable {
 
   private static final long serialVersionUID = 1L;
@@ -22,42 +26,53 @@ public class UserExchangeOrder implements Serializable {
   /**
    * 主键
    */
+  @ApiModelProperty("订单id")
   @TableId(value = "order_id", type = IdType.INPUT)
   private String orderId;
 
   /**
    * 用户ID
    */
+  @ApiModelProperty("用户id")
   @TableField("user_id")
   private Long userId;
 
   /**
    * 商品ID
    */
+  @ApiModelProperty("商品id")
   @TableField("goods_id")
   private Long goodsId;
 
   /**
    * sku ID
    */
+  @ApiModelProperty("sku id")
   @TableField("sku_id")
   private Long skuId;
 
+  @ApiModelProperty("兑换数量")
+  @TableField("num")
+  private Integer num;
+
   /**
    * 消耗代币数
    */
+  @ApiModelProperty("消耗代币数")
   @TableField("order_coin")
   private Integer orderCoin;
 
   /**
    * 创建时间
    */
+  @ApiModelProperty("创建时间")
   @TableField("created_time")
   private Date createdTime;
 
   /**
    * 更新时间
    */
+  @ApiModelProperty("更新时间")
   @TableField("updated_time")
   private Date updatedTime;
 

+ 4 - 0
mp-service/src/main/java/com/qs/mp/user/domain/UserTicketOrder.java

@@ -147,6 +147,10 @@ public class UserTicketOrder implements Serializable {
   @TableField("channel_id")
   private Long channelId;
 
+  @ApiModelProperty("支付时间")
+  @TableField("pay_time")
+  private Date payTime;
+
   /**
    * 创建时间
    */

+ 83 - 67
mp-service/src/main/java/com/qs/mp/user/domain/excel/DeliverOrderExcel.java

@@ -1,7 +1,11 @@
 package com.qs.mp.user.domain.excel;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.qs.mp.common.annotation.Excel;
+
 import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -11,71 +15,83 @@ import lombok.Data;
 @Data
 public class DeliverOrderExcel {
 
-	@Excel(name = "商品ID")
-	private Long goodsId;
-
-	@Excel(name = "商品编码")
-	private String code;
-
- 
-	/**
-	   * 商品标题
-	   */
-	  @Excel(name = "商品名称")
-	  private String title;
-
-	  
-	  /**
-	   * sku 属性
-	   */
-	  @Excel(name = "规格")
-	  private String properties;
-
-
-	  /**
-	   * 商品数量
-	   */
-	  @Excel(name = "数量")
-	  private Integer goodsNum;
-	  
-	  /**
-	   * 创建时间
-	   */
-	  @Excel(name = "下单时间")
-	  private Date createdTime;
-	  
-	  @Excel(name = "订单编号")
-	  private String orderId;
-	  
-	  /**
-	   * 收货人
-	   */
-	  @Excel(name = "收货人")
-	  private String receiver;
-
-	  /**
-	   * 收货人电话
-	   */
-	  @Excel(name = "联系电话")
-	  private String tel;
-
-	  /**
-	   * (省-市-区-详细地址)
-	   */
-	  @Excel(name = "收货地址")
-	  private String address;
-	  
-
-	  /**
-	   * 订单状态
-	   */
-	  @Excel(name = "订单状态")
-	  private String status;
-	  
-	  
-	  /**
-	   * 商品发货状态, 有物流单号默认为已发货
-	   */
-	  @Excel(name = "商品发货状态")
-	  private String itemStatus;
+    @Excel(name = "商品ID")
+    private Long goodsId;
+
+    @Excel(name = "商品编码")
+    private String code;
+
+
+    /**
+     * 商品标题
+     */
+    @Excel(name = "商品名称")
+    private String title;
+
+
+    /**
+     * sku 属性
+     */
+    @Excel(name = "规格")
+    private String properties;
+
+
+    /**
+     * 商品数量
+     */
+    @Excel(name = "数量")
+    private Integer goodsNum;
+
+    @Excel(name = "供应商名称")
+    private String supplierName;
+
+    @Excel(name = "商品采购链接")
+    private String shoppingLink;
+
+    /**
+     * 创建时间
+     */
+    @Excel(name = "下单时间")
+    private Date createdTime;
+
+    @Excel(name = "订单编号")
+    private String orderId;
+
+    /**
+     * 收货人
+     */
+    @Excel(name = "收货人")
+    private String receiver;
+
+    /**
+     * 收货人电话
+     */
+    @Excel(name = "联系电话")
+    private String tel;
+
+    /**
+     * (省-市-区-详细地址)
+     */
+    @Excel(name = "收货地址")
+    private String address;
+
+
+    /**
+     * 订单状态
+     */
+    @Excel(name = "订单状态")
+    private String status;
+
+
+    /**
+     * 商品发货状态, 有物流单号默认为已发货
+     */
+    @Excel(name = "商品发货状态")
+    private String itemStatus;
+
+
+    @Excel(name = "买家留言")
+    private String memo;
+
+
 }

+ 3 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/UserDeliverOrderItemVO.java

@@ -20,6 +20,9 @@ public class UserDeliverOrderItemVO  extends UserDeliverOrderItem {
 	@ApiModelProperty("sku编号")
 	private String skuCode;
 
+	@ApiModelProperty("供应商名称")
+	private String supplierName;
+
 	  // 物流公司名称
 	@ApiModelProperty("物流公司名称")
 	  private  String companyName;

+ 15 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/UserExchangeOrderMapper.java

@@ -2,6 +2,7 @@ package com.qs.mp.user.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.qs.mp.admin.domain.vo.UserExchangeOrderVO;
 import com.qs.mp.user.domain.UserExchangeOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO;
@@ -22,4 +23,18 @@ public interface UserExchangeOrderMapper extends BaseMapper<UserExchangeOrder> {
      * @return
      */
     List<TicketHitPrizeBarrageVO> listByWrapper(@Param(Constants.WRAPPER) QueryWrapper<TicketHitPrizeBarrageVO> queryWrapper);
+
+    /**
+     * 根据条件获取用户兑奖列表
+     * @param queryWrapper
+     * @return
+     */
+    List<UserExchangeOrderVO> listUserExchangeOrderByWrapper(@Param(Constants.WRAPPER) QueryWrapper<UserExchangeOrder> queryWrapper);
+
+    /**
+     * 根据条件获取用户兑奖列表数量
+     * @param queryWrapper
+     * @return
+     */
+    int countUserExchangeOrderByWrapper(@Param(Constants.WRAPPER) QueryWrapper<UserExchangeOrder> queryWrapper);
 }

+ 1 - 1
mp-service/src/main/java/com/qs/mp/user/service/IUserDeliverOrderService.java

@@ -32,7 +32,7 @@ public interface IUserDeliverOrderService extends IService<UserDeliverOrder> {
 	 * @param orderSettleVO
 	 * @return
 	 */
-	String submitOrder(Long userId, DeliverOrderSettleVO orderSettleVO);
+	String submitOrder(Long userId,String memo, DeliverOrderSettleVO orderSettleVO);
 
 	/**
 	 * 取消订单

+ 16 - 0
mp-service/src/main/java/com/qs/mp/user/service/IUserExchangeOrderService.java

@@ -1,6 +1,7 @@
 package com.qs.mp.user.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.vo.UserExchangeOrderVO;
 import com.qs.mp.user.domain.UserExchangeOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO;
@@ -32,4 +33,19 @@ public interface IUserExchangeOrderService extends IService<UserExchangeOrder> {
    * @return
    */
   List<TicketHitPrizeBarrageVO> listByWrapper(QueryWrapper<TicketHitPrizeBarrageVO> queryWrapper);
+
+  /**
+   * 根据条件获取用户兑奖记录列表
+   * @param queryWrapper  查询条件
+   * @return
+   */
+  List<UserExchangeOrderVO> listUserExchangeOrderByWrapper(QueryWrapper<UserExchangeOrder> queryWrapper);
+
+  /**
+   * 根据条件统计用户兑奖记录数量
+   * @param queryWrapper
+   * @return
+   */
+  int countUserExchangeOrderByWrapper(QueryWrapper<UserExchangeOrder> queryWrapper);
+
 }

+ 15 - 3
mp-service/src/main/java/com/qs/mp/user/service/impl/UserDeliverOrderServiceImpl.java

@@ -4,12 +4,15 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.qs.mp.admin.domain.Goods;
 import com.qs.mp.admin.domain.param.UserDeliverOrderShipParam;
+import com.qs.mp.admin.service.IGoodsService;
 import com.qs.mp.common.enums.DeliverOrderStatusEnum;
 import com.qs.mp.common.enums.DeliverTypeEnum;
 import com.qs.mp.common.enums.PrizeStorageStatusEnum;
 import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
 import com.qs.mp.common.exception.ServiceException;
+import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.system.service.id.BizIdGenerator;
@@ -60,9 +63,12 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
   @Autowired
   private IUserPrizeStorageService userPrizeStorageService;
 
+  @Autowired
+  private IGoodsService goodsService;
+
   @Override
   @Transactional
-  public String submitOrder(Long userId, DeliverOrderSettleVO orderSettleVO) {
+  public String submitOrder(Long userId, String memo, DeliverOrderSettleVO orderSettleVO) {
     UserDeliverOrder userDeliverOrder = new UserDeliverOrder();
     userDeliverOrder.setOrderId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
     userDeliverOrder.setUserId(userId);
@@ -76,7 +82,7 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
     userDeliverOrder.setOrderNum(orderSettleVO.getPrizeList().stream().mapToInt(UserPrizeStorage::getGoodsNum).sum());
     userDeliverOrder.setPayAmt(orderSettleVO.getPayAmt());
     userDeliverOrder.setFreightAmt(orderSettleVO.getFreightAmt());
-    userDeliverOrder.setMemo(null);
+    userDeliverOrder.setMemo(memo);
     if (orderSettleVO.getPayAmt() > 0) {
       userDeliverOrder.setStatus(DeliverOrderStatusEnum.NOT_PAY);
     } else {
@@ -95,7 +101,12 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
       orderItem.setTitle(prizeStorage.getTitle());
       orderItem.setPicUrl(prizeStorage.getPicUrl());
       orderItem.setGoodsNum(prizeStorage.getGoodsNum());
-      userDeliverOrderItemService.save(orderItem);
+      // 设置供应商id和采购链接
+      Goods goods = goodsService.getById(prizeStorage.getGoodsId());
+      orderItem.setSupplierId(goods.getSupplierId());
+      orderItem.setShoppingLink(goods.getShoppingLink());
+
+        userDeliverOrderItemService.save(orderItem);
       boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
                 .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED)
                 .eq(UserPrizeStorage::getStorageId, prizeStorage.getStorageId()));
@@ -141,6 +152,7 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
       throw new ServiceException("支付回调用户提货订单处理,订单状态异常,不是待支付。orderId:" + payOrder.getBizId());
     }
     deliverOrder.setStatus(DeliverOrderStatusEnum.NOT_DELIVER);
+      deliverOrder.setPayTime(DateUtils.parseDate(payOrder.getCompleteDate()));
     boolean rst = updateById(deliverOrder);
     Assert.isTrue(rst, "支付回调用户提货订单处理,更新订单状态失败,orderId:" + deliverOrder.getOrderId());
     return false;

+ 13 - 1
mp-service/src/main/java/com/qs/mp/user/service/impl/UserExchangeOrderServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.admin.domain.Goods;
 import com.qs.mp.admin.domain.GoodsSku;
+import com.qs.mp.admin.domain.vo.UserExchangeOrderVO;
 import com.qs.mp.admin.service.IGoodsService;
 import com.qs.mp.admin.service.IGoodsSkuService;
 import com.qs.mp.common.enums.ErrorCodeEnum;
@@ -55,13 +56,23 @@ public class UserExchangeOrderServiceImpl extends ServiceImpl<UserExchangeOrderM
   @Autowired
   private BizIdGenerator bizIdGenerator;
 
+  @Override
+  public int countUserExchangeOrderByWrapper(QueryWrapper<UserExchangeOrder> queryWrapper) {
+    return getBaseMapper().countUserExchangeOrderByWrapper(queryWrapper);
+  }
+
+  @Override
+  public List<UserExchangeOrderVO> listUserExchangeOrderByWrapper(QueryWrapper<UserExchangeOrder> queryWrapper) {
+    return getBaseMapper().listUserExchangeOrderByWrapper(queryWrapper);
+  }
+
   @Override
   public List<TicketHitPrizeBarrageVO> listByWrapper(QueryWrapper<TicketHitPrizeBarrageVO> queryWrapper) {
     return getBaseMapper().listByWrapper(queryWrapper);
   }
 
   @Override
-  @Transactional
+  @Transactional(rollbackFor = Exception.class)
   public boolean exchange(Long userId, Long goodsId, Long skuId, int orderNum) {
     int orderAmt = 0;
     Goods goods = goodsService.getById(goodsId);
@@ -92,6 +103,7 @@ public class UserExchangeOrderServiceImpl extends ServiceImpl<UserExchangeOrderM
     exchangeOrder.setUserId(userId);
     exchangeOrder.setGoodsId(goodsId);
     exchangeOrder.setSkuId(skuId);
+    exchangeOrder.setNum(orderNum);
     exchangeOrder.setOrderCoin(orderAmt);
     save(exchangeOrder);
 

+ 3 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -35,6 +35,7 @@ import com.qs.mp.common.enums.TicketTypeEnum;
 import com.qs.mp.common.enums.UserCouponStatusEnum;
 import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
 import com.qs.mp.common.exception.ServiceException;
+import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.common.utils.RSAUtil;
 import com.qs.mp.common.utils.StringUtils;
@@ -386,6 +387,7 @@ public class UserTicketOrderServiceImpl extends
           JSONObject.toJSONString(payOrder), JSONObject.toJSONString(ticketOrder));
       throw new ServiceException("支付回调用户购票订单处理,订单状态异常,不是待支付。orderId:" + payOrder.getBizId());
     }
+    ticketOrder.setPayTime(DateUtils.parseDate(payOrder.getCompleteDate()));
     return processTicketOrder(ticketOrder);
   }
 
@@ -420,6 +422,7 @@ public class UserTicketOrderServiceImpl extends
     boolean updateRst = update(
         new LambdaUpdateWrapper<UserTicketOrder>().set(UserTicketOrder::getStatus,
                 UserTicketOrderStatusEnum.FINISHED)
+            .set(UserTicketOrder::getPayTime, ticketOrder.getPayTime())
             .eq(UserTicketOrder::getOrderId, ticketOrder.getOrderId())
             .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY));
     Assert.isTrue(updateRst, "支付回调用户购票订单处理,更新订单状态失败,orderId:" + ticketOrder.getOrderId());

+ 22 - 0
mp-service/src/main/resources/mapper/admin/SupplierMapper.xml

@@ -0,0 +1,22 @@
+<?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="com.qs.mp.admin.mapper.SupplierMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qs.mp.admin.domain.Supplier">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="contact" property="contact" />
+        <result column="phone" property="phone" />
+        <result column="remark" property="remark" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, name, contact, phone, remark, is_deleted, created_time, updated_time
+    </sql>
+
+</mapper>

+ 2 - 1
mp-service/src/main/resources/mapper/user/UserDeliverOrderItemMapper.xml

@@ -36,11 +36,12 @@
 	
 	 <!-- 查询用户订单明细列表 -->
     <select id="selectUserDeliverOrderItemVOList" resultType="com.qs.mp.user.domain.vo.UserDeliverOrderItemVO">
-		select t1.*, t2.company_name ,t2.company_home_url ,t2.query_url,t3.goods_code,t4.sku_code
+		select t1.*, t2.company_name ,t2.company_home_url ,t2.query_url,t3.goods_code,t4.sku_code,t5.name supplierName
 		from mp_user_deliver_order_item t1
 		left join mp_delivery_company t2 on t1.delivery_id = t2.delivery_id
         left join mp_goods t3 on t1.goods_id = t3.goods_id
         LEFT JOIN mp_goods_sku t4 on t1.sku_id = t4.sku_id
+        LEFT JOIN mp_supplier t5 on t1.supplier_id = t5.id
 		where t1.order_id = #{orderId}
 	</select>
 

+ 26 - 0
mp-service/src/main/resources/mapper/user/UserExchangeOrderMapper.xml

@@ -28,4 +28,30 @@
          left join mp_goods t3 on t1.goods_id = t3.goods_id
          ${ew.customSqlSegment}
     </select>
+
+    <select id="listUserExchangeOrderByWrapper" resultType="com.qs.mp.admin.domain.vo.UserExchangeOrderVO">
+        select t1.created_time,
+               t1.order_coin payPrice,
+               t2.pic_url,
+               t2.title goodsName,
+               t2.exchange_price,
+               t3.name sku,
+               t4.nick_name,
+               t4.phonenumber phone,
+                t1.num
+        from mp_user_exchange_order t1
+                 left join mp_goods t2 on t1.goods_id = t2.goods_id
+                 left join mp_goods_sku t3 on t1.sku_id = t3.sku_id
+                 left join sys_user t4 on t1.user_id = t4.user_id
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="countUserExchangeOrderByWrapper" resultType="int">
+        select count(*)
+        from mp_user_exchange_order t1
+        left join mp_goods t2 on t1.goods_id = t2.goods_id
+        left join mp_goods_sku t3 on t1.sku_id = t3.sku_id
+        left join sys_user t4 on t1.user_id = t4.user_id
+        ${ew.customSqlSegment}
+    </select>
 </mapper>