Ver Fonte

Merge branch 'dev_v1.3.4_20220902' of http://git.dayaedu.com/yonge/cooleshow into dev_v1.3.4_20220902

liujunchi há 2 anos atrás
pai
commit
f9f1864e69

+ 2 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/coupon/CouponInfoController.java

@@ -60,7 +60,7 @@ public class CouponInfoController extends BaseController {
      * @return HttpResponseResult<PageInfo<CouponInfoVO.ResponseInfo>>
      */
     @PostMapping(value = "/page", consumes="application/json", produces="application/json")
-    @ApiOperation(value = "查询优惠券分页", notes = "传入CouponInfoVO.PageRequest")
+    @ApiOperation(value = "查询优惠券分页", notes = "CouponInfoVO.PageRequest")
     public HttpResponseResult<PageInfo<CouponInfoVO.CouponPageInfo>> queryCouponPageInfo(@RequestBody CouponInfoVO.PageRequest request) {
 
         // 优惠券信息
@@ -160,7 +160,7 @@ public class CouponInfoController extends BaseController {
      * @return HttpResponseResult<PageInfo<CouponInventoryVO.PageInfo>>
      */
     @PostMapping(value = "/inventory/page", consumes="application/json", produces="application/json")
-    @ApiOperation(value = "查询库存量调整分页信息", notes = "传入CouponInventoryVO.PageRequest")
+    @ApiOperation(value = "查询库存量调整分页信息", notes = "CouponInventoryVO.PageRequest")
     public HttpResponseResult<PageInfo<CouponInventoryVO.PageInfo>> queryCouponInventoryPageInfo(@RequestBody CouponInventoryVO.PageRequest request) {
 
         // 校验请求参数

+ 15 - 6
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/io/request/coupon/CouponInfoVO.java

@@ -90,7 +90,7 @@ public class CouponInfoVO {
         @ApiModelProperty("优惠券类型: FULL_DISCOUNT(满减券) VOUCHER(代金券) ")
         private String couponType;
 
-        @ApiModelProperty("可以库存")
+        @ApiModelProperty("当前库存量")
         private Integer inventory;
 
         @ApiModelProperty("领取次数限制")
@@ -108,11 +108,22 @@ public class CouponInfoVO {
         @ApiModelProperty("最后更新人")
         private String updatedUser;
 
-        @ApiModelProperty("最后更新时间")
+        @ApiModelProperty(value = "最后更新时间", hidden = true)
         private Long updateTime;
 
+        @ApiModelProperty("最后更新时间")
+        private Date updatedTime;
+
         @ApiModelProperty("创建时间")
         private Date createdTime;
+
+        public Date getUpdatedTime() {
+
+            if (Optional.ofNullable(getUpdateTime()).orElse(0L) > 0) {
+                return new DateTime(getUpdateTime()).toDate();
+            }
+            return updatedTime;
+        }
     }
 
     /**
@@ -289,11 +300,9 @@ public class CouponInfoVO {
                 }
 
                 this.createdBy(userId).initSaveParam();
-            } else {
-
-                // 更新参数
-                this.updatedBy(userId).setUpdateTime(DateTime.now().getMillis());
             }
+            // 更新用户参数
+            this.updatedBy(userId).setUpdateTime(DateTime.now().getMillis());
 
             return false;
         }

+ 3 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/io/request/coupon/CouponInventoryVO.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.io.request.coupon;
 
 import com.alibaba.fastjson.JSON;
+import com.yonge.cooleshow.biz.dal.enums.MK;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponInventoryEnum;
 import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.toolset.base.exception.BizException;
@@ -76,14 +77,14 @@ public class CouponInventoryVO {
 
         public Long getStartTime() {
             if (StringUtils.isNotEmpty(getStartQueryTime())) {
-                return DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime(getStartQueryTime()).getMillis() / 1000;
+                return DateTimeFormat.forPattern(MK.TIME_FORMAT).parseDateTime(getStartQueryTime()).getMillis() / 1000;
             }
             return startTime;
         }
 
         public Long getEndTime() {
             if (StringUtils.isNotEmpty(getEndQueryTime())) {
-                return DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime(getEndQueryTime()).getMillis() / 1000;
+                return DateTimeFormat.forPattern(MK.TIME_FORMAT).parseDateTime(getEndQueryTime()).getMillis() / 1000;
             }
             return endTime;
         }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityReward.java

@@ -45,6 +45,11 @@ public class ActivityReward implements Serializable {
     @TableField(value = "reward_type_")
     @NotNull(message = "奖品类型不能为空")
     private RewardTypeEnum rewardType;
+
+    @ApiModelProperty("关联优惠券ID ")
+    @TableField(value = "coupon_id_")
+    private Long couponId;
+
     @ApiModelProperty("奖品描述 ")
     @TableField(value = "reward_describe_")
     private String rewardDescribe;

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/CouponInfoMapper.java

@@ -48,4 +48,11 @@ public interface CouponInfoMapper extends BaseMapper<CouponInfo> {
      * @return List<CouponInventoryWrapper>
      */
     List<CouponInventoryWrapper> selectCouponInventoryPageInfo(@Param("page") IPage<CouponInventoryWrapper> page, @Param("record") CouponInventoryQuery query);
+
+    /**
+     * 活动优惠券统计
+     * @param couponIds 优惠券ID
+     * @return List<StatGroupWrapper>
+     */
+    List<StatGroupWrapper> selectActivityCouponStatInfo(@Param("couponIds") List<Long> couponIds);
 }

+ 13 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CouponInfoServiceImp.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
@@ -74,7 +75,9 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
                                 .useState(CouponUseStateEnum.USABLE).build()).stream()
                 .collect(Collectors.toMap(StatGroupWrapper::getId, StatGroupWrapper::getTotal, (o, n) -> n));
 
-        // TODO:关联奖品数
+        // 关联奖品数
+        Map<Long, Integer> rewardNumMap = getBaseMapper().selectActivityCouponStatInfo(couponIds).stream()
+                .collect(Collectors.toMap(StatGroupWrapper::getId, StatGroupWrapper::getTotal, (o, n) -> n));
 
         // 更新用户信息
         List<Long> userIds = wrappers.stream().map(CouponInfoWrapper::getUpdatedBy).distinct().collect(Collectors.toList());
@@ -90,8 +93,8 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
 
         for (CouponInfoWrapper item : wrappers) {
 
-            item.rewardNum(0)
-                    .updateUser(userNameMap.getOrDefault(item.getUpdatedBy(), ""))
+            item.rewardNum(rewardNumMap.getOrDefault(item.getId(), 0))
+                    .updatedUser(userNameMap.getOrDefault(item.getUpdatedBy(), ""))
                     .setIssueNum(issueNumMap.getOrDefault(item.getId(), 0));
         }
 
@@ -200,10 +203,13 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
         }
 
         // 调整优惠券库存量信息
-        CouponInfo updateInfo = new CouponInfo();
-        updateInfo.setId(couponInfo.getId());
-        updateInfo.setInventory(ret);
-        getBaseMapper().updateById(updateInfo);
+        CouponInfoWrapper wrapper = CouponInfoWrapper.builder()
+                .id(couponInfo.getId())
+                .inventory(ret)
+                .updatedBy(inventory.getUserId())
+                .updateTime(DateTime.now().getMillis())
+                .build();
+        getBaseMapper().updateById(JSON.parseObject(wrapper.jsonString(), CouponInfo.class));
 
         // 新增优惠券库存量记录
         return couponInventoryMapper.insert(inventory);

+ 8 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/coupon/CouponInfoWrapper.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.vo.coupon;
 
+import com.alibaba.fastjson.JSON;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -23,6 +24,7 @@ public class CouponInfoWrapper implements Serializable {
     private String clientType;
     private String category;
     private String couponType;
+    private Integer inventory;
     private Integer status;
     private Long updatedBy;
     private Long updateTime;
@@ -34,16 +36,19 @@ public class CouponInfoWrapper implements Serializable {
     // 关联奖品数
     private Integer rewardNum;
     // 更新用户
-    private String updateUser;
+    private String updatedUser;
 
+    public String jsonString() {
+        return JSON.toJSONString(this);
+    }
 
     public CouponInfoWrapper rewardNum(Integer rewardNum) {
         this.rewardNum = rewardNum;
         return this;
     }
 
-    public CouponInfoWrapper updateUser(String updateUser) {
-        this.updateUser = updateUser;
+    public CouponInfoWrapper updatedUser(String updateUser) {
+        this.updatedUser = updateUser;
         return this;
     }
 }

+ 15 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/CouponInfoMapper.xml

@@ -60,9 +60,10 @@
                 AND t1.use_state_ = #{record.useState}
             </if>
             <if test="record.timestamp != null">
-                AND t1.start_time_ &lt;= #{record.timestamp} AND #{record.timestamp} &lt;= t1.end_time_ GROUP BY t1.coupon_id_
+                AND (t1.start_time_ &lt;= #{record.timestamp} AND #{record.timestamp} &lt;= t1.end_time_)
             </if>
         </where>
+        GROUP BY t1.coupon_id_
     </select>
     <!--优惠券分页查询-->
 
@@ -99,4 +100,17 @@
         <if test="record.groupByUser != null">GROUP BY t1.user_id_</if>
     </select>
     <!--优惠券库存调整信息-->
+
+    <!--活动优惠券统计-->
+    <select id="selectActivityCouponStatInfo"
+            resultType="com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper">
+        SELECT t1.coupon_id_ AS id, COUNT(DISTINCT t1.id_) AS total FROM activity_reward t1
+        <where>
+            <if test="couponIds != null">
+                AND t1.coupon_id_ IN (<foreach collection="couponIds" separator="," item="item">#{item}</foreach>)
+            </if>
+        </where>
+        GROUP BY t1.coupon_id_
+    </select>
+    <!--活动优惠券统计-->
 </mapper>