Browse Source

用户兑换订单导出

cup 3 years ago
parent
commit
cb1baf2183

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

@@ -1,23 +1,35 @@
 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.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
@@ -35,6 +47,9 @@ public class UserExchangeOrderMgrController extends BaseApiController {
 
     @PostMapping("/list")
     @ApiOperation("用户兑换订单列表")
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "成功", response = UserExchangeOrderVO.class)
+    )
     public TableDataInfo list(@RequestBody UserExchangeOrderQueryParam userExchangeOrderQueryParam) {
 
         startPage();
@@ -64,4 +79,54 @@ public class UserExchangeOrderMgrController extends BaseApiController {
 
         return getDataTable(list);
     }
+
+    @PostMapping("/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);
+    }
 }

+ 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;
+
+
+}
+

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

@@ -30,4 +30,11 @@ public interface UserExchangeOrderMapper extends BaseMapper<UserExchangeOrder> {
      * @return
      */
     List<UserExchangeOrderVO> listUserExchangeOrderByWrapper(@Param(Constants.WRAPPER) QueryWrapper<UserExchangeOrder> queryWrapper);
+
+    /**
+     * 根据条件获取用户兑奖列表数量
+     * @param queryWrapper
+     * @return
+     */
+    int countUserExchangeOrderByWrapper(@Param(Constants.WRAPPER) QueryWrapper<UserExchangeOrder> queryWrapper);
 }

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

@@ -40,4 +40,12 @@ public interface IUserExchangeOrderService extends IService<UserExchangeOrder> {
    * @return
    */
   List<UserExchangeOrderVO> listUserExchangeOrderByWrapper(QueryWrapper<UserExchangeOrder> queryWrapper);
+
+  /**
+   * 根据条件统计用户兑奖记录数量
+   * @param queryWrapper
+   * @return
+   */
+  int countUserExchangeOrderByWrapper(QueryWrapper<UserExchangeOrder> queryWrapper);
+
 }

+ 5 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserExchangeOrderServiceImpl.java

@@ -56,6 +56,11 @@ 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);

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

@@ -45,4 +45,13 @@
                  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>