Переглянути джерело

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

Dev

See merge request quanshu/mp-server!574
jiang hao 3 роки тому
батько
коміт
5612cb7a9c

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

@@ -24,6 +24,7 @@ import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.enums.GoodsStatusEnum;
 import com.qs.mp.common.utils.StringUtils;
+import com.qs.mp.user.domain.param.ExchangeGoodsListQueryParam;
 import com.qs.mp.user.domain.param.ExchangeOrderParam;
 import com.qs.mp.user.service.IUserExchangeOrderService;
 import com.qs.mp.utils.SecurityUtils;
@@ -118,39 +119,25 @@ public class UserExchangeController extends BaseApiController {
    */
   @PostMapping("/goods/list")
   @ApiOperation(value = "商品列表", notes = "获取所有可兑换商品")
-  @DynamicParameters(properties = {
-          @DynamicParameter(name = "categoryId",value = "分类id",dataTypeClass = Long.class),
-          @DynamicParameter(name = "tagIds",value = "标签id",dataTypeClass = String.class),
-          @DynamicParameter(name = "startPrice",value = "开始价格",dataTypeClass = Integer.class),
-          @DynamicParameter(name = "endPrice",value = "结束价格",dataTypeClass = Integer.class),
-          @DynamicParameter(name = "categoryIdList",value = "分类id列表",dataTypeClass = List.class),
-          @DynamicParameter(name = "goodsName",value = "商品名称",dataTypeClass = String.class),
-  })
   @ApiResponses(
           @ApiResponse(code = 200, message = "success" , response = GoodsListVO.class)
   )
-  public TableDataInfo list(@RequestBody JSONObject param) {
-    Long categoryId = param.getLong("categoryId");
-    String tagIds = param.getString("tagIds");
-    Integer startPrice = param.getInteger("startPrice");
-    Integer endPrice = param.getInteger("endPrice");
-    List<Long> categoryIdList = param.getJSONArray("categoryIdList").toJavaList(Long.class);
-    String goodsName = param.getString("goodsName");
+  public TableDataInfo list(@RequestBody ExchangeGoodsListQueryParam param) {
 
     List<Long> goodsIds = new ArrayList<>();
-    if (StringUtils.isNotBlank(tagIds)) {
+    if (StringUtils.isNotBlank(param.getTagIds())) {
       List<GoodsTagRel> goodsTagRelList = goodsTagRelService.list(
           new LambdaQueryWrapper<GoodsTagRel>()
-              .in(GoodsTagRel::getTagId, Arrays.asList(tagIds.split(","))));
+              .in(GoodsTagRel::getTagId, Arrays.asList(param.getTagIds().split(","))));
       goodsIds = goodsTagRelList.stream().map(GoodsTagRel::getGoodsId).collect(Collectors.toList());
     }
     startPage();
     List<Goods> goodsList = goodsService.list(new LambdaQueryWrapper<Goods>()
-        .eq(null != categoryId && 0 != categoryId, Goods::getCategoryId, categoryId)
-        .ge(null != startPrice && 0 != startPrice, Goods::getExchangePrice, startPrice)
-        .le(null != endPrice && 0 != endPrice, Goods::getExchangePrice, endPrice)
-        .in(!CollectionUtils.isEmpty(goodsIds), Goods::getCategoryId, categoryIdList)
-        .like(StringUtils.isNotBlank(goodsName), Goods::getTitle, goodsName)
+        .eq(null != param.getCategoryId() && 0 != param.getCategoryId(), Goods::getCategoryId, param.getCategoryIdList())
+        .ge(null != param.getStartPrice() && 0 != param.getStartPrice(), Goods::getExchangePrice, param.getStartPrice())
+        .le(null != param.getEndPrice() && 0 != param.getEndPrice(), Goods::getExchangePrice, param.getEndPrice())
+        .in(!CollectionUtils.isEmpty(param.getCategoryIdList()), Goods::getCategoryId, param.getCategoryIdList())
+        .like(StringUtils.isNotBlank(param.getGoodsName()), Goods::getTitle, param.getGoodsName())
         .eq(Goods::getStatus, GoodsStatusEnum.PUT_ON)
         .eq(Goods::getExchangeShow, 1)
         .in(!CollectionUtils.isEmpty(goodsIds), Goods::getGoodsId, goodsIds)

+ 34 - 7
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserMineController.java

@@ -3,8 +3,10 @@ package com.qs.mp.web.controller.api.user;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.Goods;
 import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.vo.TicketListVO;
+import com.qs.mp.admin.service.IGoodsService;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.enums.PrizeStorageStatusEnum;
@@ -17,7 +19,9 @@ import com.qs.mp.user.domain.UserCoin;
 import com.qs.mp.user.domain.UserCoinLog;
 import com.qs.mp.user.domain.UserCoupon;
 import com.qs.mp.user.domain.UserPrizeStorage;
+import com.qs.mp.user.domain.param.UserPrizeStorageQueryParam;
 import com.qs.mp.user.domain.vo.UserCouponVO;
+import com.qs.mp.user.domain.vo.UserPrizeStorageVO;
 import com.qs.mp.user.service.IUserCoinLogService;
 import com.qs.mp.user.service.IUserCoinService;
 import com.qs.mp.user.service.IUserCouponService;
@@ -27,6 +31,10 @@ import com.qs.mp.utils.SecurityUtils;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -34,6 +42,7 @@ import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import lombok.AllArgsConstructor;
 import ma.glasnost.orika.MapperFacade;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -67,6 +76,9 @@ public class UserMineController extends BaseApiController {
   @Autowired
   private MapperFacade mapperFacade;
 
+  @Autowired
+  private IGoodsService goodsService;
+
   /**
    * 我的票包
    */
@@ -144,18 +156,33 @@ public class UserMineController extends BaseApiController {
    */
   @PostMapping("/prize/list")
   @ApiOperation(value = "我的实物奖品库", notes = "获取我的实物奖品库")
-  public TableDataInfo listPrize(@RequestBody JSONObject param) {
+  public TableDataInfo listPrize(@RequestBody UserPrizeStorageQueryParam userPrizeStorageQueryParam) {
     Long userId = SecurityUtils.getLoginUser().getUserId();
     startPage();
-    List<UserPrizeStorage> userPrizeStorageList = userPrizeStorageService.list(
-        new LambdaQueryWrapper<UserPrizeStorage>()
+    LambdaQueryWrapper<UserPrizeStorage> queryWrapper = new LambdaQueryWrapper<UserPrizeStorage>()
             .eq(UserPrizeStorage::getUserId, userId)
-            .eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED)
-            .orderByDesc(UserPrizeStorage::getCreatedTime));
-    return getDataTable(userPrizeStorageList);
+            .orderByDesc(UserPrizeStorage::getCreatedTime);
+    if (userPrizeStorageQueryParam.getStatus() != null && PrizeStorageStatusEnum.RECOVERY.getValue().equals(userPrizeStorageQueryParam.getStatus())) {
+      queryWrapper.eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.RECOVERY);
+    }else {
+      queryWrapper.eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED);
+    }
+    List<UserPrizeStorage> userPrizeStorageList = userPrizeStorageService.list(queryWrapper);
+    List<UserPrizeStorageVO> userPrizeStorageVOS = new ArrayList<>();
+    if (!CollectionUtils.isEmpty(userPrizeStorageList)) {
+      for (UserPrizeStorage userPrizeStorage : userPrizeStorageList) {
+        UserPrizeStorageVO userPrizeStorageVO = new UserPrizeStorageVO();
+        BeanUtils.copyProperties(userPrizeStorage,userPrizeStorageVO);
+        Goods goods = goodsService.getById(userPrizeStorage.getGoodsId());
+        userPrizeStorageVO.setDiscountRate(goods.getDiscountRate());
+        int refundNum = BigDecimal.valueOf(goods.getExchangePrice()).multiply(goods.getDiscountRate()).divide(BigDecimal.valueOf(100),1, RoundingMode.HALF_UP).intValue();
+        userPrizeStorageVO.setReturnCoin(refundNum);
+        userPrizeStorageVOS.add(userPrizeStorageVO);
+      }
+    }
+    return getDataTable(userPrizeStorageVOS);
   }
 
-
   /**
    * 我的
    */

+ 3 - 3
mp-service/src/main/java/com/qs/mp/user/domain/UserPrizeStorage.java

@@ -84,7 +84,7 @@ public class UserPrizeStorage implements Serializable {
   private Integer goodsNum;
 
   /**
-   * 入库类型;1盲票兑奖、2盲豆兑换
+   * 入库类型;1盲票兑奖、2盲豆兑换、3营销活动
    */
   @TableField("in_type")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
@@ -99,11 +99,11 @@ public class UserPrizeStorage implements Serializable {
   private String refId;
 
   /**
-   * 状态;1待提货、2已提货
+   * 状态;1待提货、2已提货,3已回收
    */
   @TableField("status")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
-  @ApiModelProperty("状态;1待提货、2已提货")
+  @ApiModelProperty("状态;1待提货、2已提货,3已回收")
   private PrizeStorageStatusEnum status;
 
   /**

+ 36 - 0
mp-service/src/main/java/com/qs/mp/user/domain/param/ExchangeGoodsListQueryParam.java

@@ -0,0 +1,36 @@
+package com.qs.mp.user.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 兑换大厅商品列表查询入参类
+ * @author Cup
+ * @date 2022/5/25
+ */
+@ApiModel("兑换大厅商品列表查询入参类")
+@Data
+public class ExchangeGoodsListQueryParam {
+
+    @ApiModelProperty("分类id")
+    private Long categoryId;
+
+    @ApiModelProperty("标签id")
+    private String tagIds;
+
+    @ApiModelProperty("开始价格")
+    private Integer startPrice;
+
+    @ApiModelProperty("结束价格")
+    private Integer endPrice;
+
+    @ApiModelProperty("分类id列表")
+    private List<Long> categoryIdList;
+
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+
+}

+ 24 - 0
mp-service/src/main/java/com/qs/mp/user/domain/param/UserPrizeStorageQueryParam.java

@@ -0,0 +1,24 @@
+package com.qs.mp.user.domain.param;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qs.mp.common.enums.PrizeStorageInTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 用户实物奖品库查询入参类
+ * @author Cup
+ * @date 2022/5/24
+ */
+@ApiModel("用户实物奖品库查询入参类")
+@Data
+public class UserPrizeStorageQueryParam {
+
+    @ApiModelProperty("状态;1待提货、2已提货,3已回收")
+    private Integer status;
+
+
+}

+ 25 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/UserPrizeStorageVO.java

@@ -0,0 +1,25 @@
+package com.qs.mp.user.domain.vo;
+
+import com.qs.mp.user.domain.UserPrizeStorage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 用户实物奖品库出参类
+ * @author Cup
+ * @date 2022/5/24
+ */
+@ApiModel("用户事务奖品库出参类")
+@Data
+public class UserPrizeStorageVO extends UserPrizeStorage {
+
+    @ApiModelProperty("回收折扣")
+    private BigDecimal discountRate;
+
+    @ApiModelProperty("回收返还盲豆数")
+    private Integer returnCoin;
+
+}