Эх сурвалжийг харах

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

Dev

See merge request quanshu/mp-server!491
zhong chunping 3 жил өмнө
parent
commit
e8b71905e8

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

@@ -19,6 +19,7 @@ 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.*;
 
@@ -41,6 +42,7 @@ public class SupplierMgrController extends BaseApiController {
 
 
     @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()));
@@ -53,6 +55,7 @@ public class SupplierMgrController extends BaseApiController {
     }
 
     @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()));
@@ -65,6 +68,7 @@ public class SupplierMgrController extends BaseApiController {
     }
 
     @PostMapping("/list")
+    @PreAuthorize("@ss.hasPermi('business:supplier:list')")
     @ApiOperation("供应商列表")
     @ApiResponses(
             @ApiResponse(code = 200, message = "供应商列表", response = Supplier.class)
@@ -83,6 +87,7 @@ public class SupplierMgrController extends BaseApiController {
     }
 
     @PostMapping("/detail/{id}")
+    @PreAuthorize("@ss.hasPermi('business:supplier:query')")
     @ApiOperation("供应商详情")
     @ApiResponses(
             @ApiResponse(code = 200, message = "供应商详情", response = Supplier.class)
@@ -92,6 +97,7 @@ public class SupplierMgrController extends BaseApiController {
     }
 
     @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::getSupplerId, id));

+ 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("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");
+
+        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);
+    }
+}

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

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

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

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

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

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

+ 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,
+               1 as 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>