记得上下班打卡 | git大法好,push需谨慎

Commit 4c872b0f authored by jiangxiulong's avatar jiangxiulong

Merge remote-tracking branch 'origin/jxl_2262_exchange_ext' into pre

parents cb73e80b 7156bc99
...@@ -91,11 +91,17 @@ public class GoblinNftExActivityVo implements Serializable, Cloneable { ...@@ -91,11 +91,17 @@ public class GoblinNftExActivityVo implements Serializable, Cloneable {
/** /**
* * 是否展示生效中
*/ */
@ApiModelProperty(position = 18, required = true, value = "是否展示生效中 0:否 1:是") @ApiModelProperty(position = 18, required = true, value = "是否展示生效中 0:否 1:是")
private Integer isDisplay; private Integer isDisplay;
/**
* 是否展示延期按钮
*/
@ApiModelProperty(position = 19, required = true, value = "是否展示延期按钮 0不展示 1展示")
private Integer isDelay;
private final static GoblinNftExActivityVo obj = new GoblinNftExActivityVo(); private final static GoblinNftExActivityVo obj = new GoblinNftExActivityVo();
......
package com.liquidnet.service.goblin.param;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
@ApiModel(value = "GoblinNftExActivityDelayParam", description = "该活动下兑换码延期入参")
@Data
public class GoblinNftExActivityDelayParam implements Serializable {
private static final long serialVersionUID = 5608646910502058970L;
@ApiModelProperty(position = 10, required = true, value = "老的活动id")
@NotBlank(message = "老的活动i不能为空")
private String activityId;
@ApiModelProperty(position = 11, required = true, value = "活动标题", example = "")
@NotBlank(message = "活动标题不能为空")
private String title;
@ApiModelProperty(position = 12, required = true, value = "用户id", example = "")
@NotBlank(message = "用户id不能为空")
private String uid;
@ApiModelProperty(position = 12, required = true, value = "开始时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@NotNull(message = "开始时间不能为空")
private LocalDateTime startTime;
@ApiModelProperty(position = 13, required = true, value = "结束时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@NotNull(message = "结束时间不能为空")
private LocalDateTime endTime;
}
...@@ -7,32 +7,31 @@ import io.swagger.annotations.ApiModel; ...@@ -7,32 +7,31 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ApiModel(value ="GoblinNftExActivityParam",description = "添加方法入参") @ApiModel(value = "GoblinNftExActivityParam", description = "添加方法入参")
@Data @Data
public class GoblinNftExActivityParam implements Serializable { public class GoblinNftExActivityParam implements Serializable {
@ApiModelProperty(position = 10,required = false,value = "nft活动id") @ApiModelProperty(position = 10, required = false, value = "nft活动id")
private String activityId; private String activityId;
@ApiModelProperty(position = 11,required = true,value = "活动标题" ,example = "草莓音乐节") @ApiModelProperty(position = 11, required = true, value = "活动标题", example = "")
private String title; private String title;
@ApiModelProperty(position = 12,required = true,value = "用户id",example = "用户id") @ApiModelProperty(position = 12, required = true, value = "用户id", example = "")
private String uid; private String uid;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 12,required = false,value = "开始时间") @ApiModelProperty(position = 12, required = false, value = "开始时间")
private LocalDateTime startTime; private LocalDateTime startTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 13,required = false,value = "结束时间") @ApiModelProperty(position = 13, required = false, value = "结束时间")
private LocalDateTime endTime; private LocalDateTime endTime;
@ApiModelProperty(position = 14,required = true,value = "当前页(查询时传入)") @ApiModelProperty(position = 14, required = true, value = "当前页(查询时传入)", example = "1")
private Integer pageNum; private Integer pageNum;
} }
......
...@@ -5,6 +5,7 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -5,6 +5,7 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinNftExActivityVo; import com.liquidnet.service.goblin.dto.vo.GoblinNftExActivityVo;
import com.liquidnet.service.goblin.dto.vo.GoblinNftSkuVo; import com.liquidnet.service.goblin.dto.vo.GoblinNftSkuVo;
import com.liquidnet.service.goblin.dto.vo.PageInfoVo; import com.liquidnet.service.goblin.dto.vo.PageInfoVo;
import com.liquidnet.service.goblin.param.GoblinNftExActivityDelayParam;
import com.liquidnet.service.goblin.param.GoblinNftExActivityParam; import com.liquidnet.service.goblin.param.GoblinNftExActivityParam;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -43,4 +44,6 @@ public interface IGoblinNftExActivityService { ...@@ -43,4 +44,6 @@ public interface IGoblinNftExActivityService {
* @param goblinNftExActivityParam * @param goblinNftExActivityParam
*/ */
void excel(HttpServletResponse httpServletResponse, GoblinNftExActivityParam goblinNftExActivityParam); void excel(HttpServletResponse httpServletResponse, GoblinNftExActivityParam goblinNftExActivityParam);
ResponseDto delay(GoblinNftExActivityDelayParam goblinNftExActivityDelayParam);
} }
package com.liquidnet.service.goblin.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class GoblinNftExCodeNumDto {
private String activityId;
private String storeId;
private String spuId;
private String skuId;
private String unbox;
private LocalDateTime exStartTime;
private LocalDateTime exStopTime;
private Integer num;
private String boxSkuId;
}
...@@ -37,6 +37,11 @@ public class GoblinNftExActivity implements Serializable,Cloneable { ...@@ -37,6 +37,11 @@ public class GoblinNftExActivity implements Serializable,Cloneable {
*/ */
private String title; private String title;
/**
* 延期后的新活动id
*/
private String newActivityId;
/** /**
* 创建时间 * 创建时间
*/ */
......
...@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serializable; import java.io.Serializable;
import com.liquidnet.service.goblin.dto.GoblinNftExCodeNumDto;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -60,6 +62,23 @@ public class GoblinNftExCodeTask implements Serializable { ...@@ -60,6 +62,23 @@ public class GoblinNftExCodeTask implements Serializable {
} }
} }
public GoblinNftExCodeTask copy(GoblinNftExCodeNumDto vo) {
if (null == vo) return this;
this.setActivityId(vo.getActivityId());
this.setStoreId(vo.getStoreId());
this.setSpuId(vo.getSpuId());
this.setSkuId(vo.getSkuId());
this.setUnbox(vo.getUnbox());
this.setExStock(vo.getNum());
this.setExLimit(0);
this.setExStartTime(vo.getExStartTime());
this.setExStopTime(vo.getExStopTime());
this.setTyp(1);
return this;
}
} }
package com.liquidnet.service.goblin.mapper; package com.liquidnet.service.goblin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.goblin.dto.GoblinNftExCodeNumDto;
import com.liquidnet.service.goblin.entity.GoblinNftExSku; import com.liquidnet.service.goblin.entity.GoblinNftExSku;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -32,4 +33,8 @@ public interface GoblinNftExSkuMapper extends BaseMapper<GoblinNftExSku> { ...@@ -32,4 +33,8 @@ public interface GoblinNftExSkuMapper extends BaseMapper<GoblinNftExSku> {
* @return * @return
*/ */
List<GoblinNftExSku> selectGoblinNftExSkuByActivityIds(@Param("activityIds")String activityIds); List<GoblinNftExSku> selectGoblinNftExSkuByActivityIds(@Param("activityIds")String activityIds);
List<GoblinNftExCodeNumDto> selectExCodeNumAll(@Param("oldActivityId") String oldActivityId);
List<GoblinNftExCodeNumDto> selectExCodeNumBox(@Param("oldActivityId") String oldActivityId, @Param("skuId") String skuId);
} }
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<result column="activity_id" property="activityId" jdbcType="VARCHAR"/> <result column="activity_id" property="activityId" jdbcType="VARCHAR"/>
<result column="uid" property="uid" jdbcType="VARCHAR"/> <result column="uid" property="uid" jdbcType="VARCHAR"/>
<result column="title" property="title" jdbcType="VARCHAR"/> <result column="title" property="title" jdbcType="VARCHAR"/>
<result column="new_activity_id" property="newActivityId" jdbcType="VARCHAR"/>
<result column="created_at" property="createdAt" jdbcType="TIMESTAMP"/> <result column="created_at" property="createdAt" jdbcType="TIMESTAMP"/>
<result column="updated_at" property="updatedAt" jdbcType="TIMESTAMP"/> <result column="updated_at" property="updatedAt" jdbcType="TIMESTAMP"/>
</resultMap> </resultMap>
...@@ -17,7 +18,7 @@ ...@@ -17,7 +18,7 @@
</select> </select>
<select id="selectPageList" resultMap="BaseResult"> <select id="selectPageList" resultMap="BaseResult">
select activity_id,uid,title,created_at from goblin_nft_ex_activity select activity_id,uid,title,created_at,new_activity_id from goblin_nft_ex_activity
<where> <where>
<if test="uid != null and uid != ''"> <if test="uid != null and uid != ''">
and uid = #{uid,jdbcType=VARCHAR} and uid = #{uid,jdbcType=VARCHAR}
...@@ -37,7 +38,7 @@ ...@@ -37,7 +38,7 @@
</select> </select>
<select id="selectByActivityId" resultMap="BaseResult"> <select id="selectByActivityId" resultMap="BaseResult">
select activity_id, title, created_at select activity_id, title, new_activity_id,created_at
from goblin_nft_ex_activity from goblin_nft_ex_activity
where activity_id = #{activityId,jdbcType=VARCHAR} where activity_id = #{activityId,jdbcType=VARCHAR}
</select> </select>
......
...@@ -17,14 +17,39 @@ ...@@ -17,14 +17,39 @@
<select id="selectGoblinNftExSkuByActivityIds" resultMap="BaseResult"> <select id="selectGoblinNftExSkuByActivityIds" resultMap="BaseResult">
select activity_id,sku_id,unbox,store_id,ex_start_time,ex_stop_time from goblin_nft_ex_sku where select activity_id,sku_id,unbox,store_id,ex_start_time,ex_stop_time from goblin_nft_ex_sku where
activity_id in activity_id in
<foreach collection="activityIds.split(',')" item="activityId" open="(" separator="," close=")" > <foreach collection="activityIds.split(',')" item="activityId" open="(" separator="," close=")">
#{activityId,jdbcType=VARCHAR} #{activityId,jdbcType=VARCHAR}
</foreach> </foreach>
</select>
<select id="selectExCodeNumAll" resultType="com.liquidnet.service.goblin.dto.GoblinNftExCodeNumDto">
select gnes.activity_id, gnes.store_id, gnes.spu_id, gnes.sku_id, gnes.unbox, gnes.ex_start_time, gnes.ex_stop_time, count(*) as num, gnec.box_sku_id
from goblin_nft_ex_sku as gnes
left join goblin_nft_ex_code as gnec on gnes.activity_id = gnec.activity_id and gnes.sku_id =
gnec.sku_id
<where>
gnes.activity_id = #{oldActivityId}
and (gnec.state = 3 or (gnec.state = 1 and gnes.ex_stop_time <![CDATA[<]]> NOW()))
group by gnes.sku_id
</where>
</select>
<select id="selectExCodeNumBox" resultType="com.liquidnet.service.goblin.dto.GoblinNftExCodeNumDto">
select gnes.activity_id, gnes.store_id, gnes.spu_id, gnes.sku_id, gnes.unbox, gnes.ex_start_time, gnes.ex_stop_time, count(*) as num, gnec.box_sku_id
from goblin_nft_ex_sku as gnes
left join goblin_nft_ex_code as gnec on gnes.activity_id = gnec.activity_id and gnes.sku_id =
gnec.sku_id
<where>
gnes.activity_id = #{oldActivityId}
and gnes.sku_id = #{skuId}
and (gnec.state = 3 or (gnec.state = 1 and gnes.ex_stop_time <![CDATA[<]]> NOW()))
and gnes.unbox = '1'
group by gnec.box_sku_id
</where>
</select> </select>
<insert id="addGoblinNftExSkus"> <insert id="addGoblinNftExSkus">
insert into goblin_nft_ex_sku (activity_id,spu_id,sku_id,store_id,unbox,ex_stock,ex_limit,ex_start_time,ex_stop_time,created_at) insert into goblin_nft_ex_sku
(activity_id,spu_id,sku_id,store_id,unbox,ex_stock,ex_limit,ex_start_time,ex_stop_time,created_at)
values values
<foreach collection="goblinNftExSkus" item="goblinNftExSku" separator=","> <foreach collection="goblinNftExSkus" item="goblinNftExSku" separator=",">
( (
......
...@@ -38,6 +38,8 @@ CREATE TABLE `goblin_nft_ex_activity` ...@@ -38,6 +38,8 @@ CREATE TABLE `goblin_nft_ex_activity`
PRIMARY KEY (`mid`) USING BTREE, PRIMARY KEY (`mid`) USING BTREE,
INDEX `idx_nft_activity_id`(`activity_id`) USING BTREE INDEX `idx_nft_activity_id`(`activity_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'NFT兑换活动表' ROW_FORMAT = Dynamic; ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'NFT兑换活动表' ROW_FORMAT = Dynamic;
ALTER TABLE `goblin_nft_ex_activity` ADD `new_activity_id` varchar(64) NOT NULL DEFAULT '' COMMENT '延期后的新活动id' after title;
......
package com.liquidnet.service.platform.controller.goblin.activity; package com.liquidnet.service.platform.controller.goblin.activity;
import com.github.pagehelper.PageInfo;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinNftExActivityVo;
import com.liquidnet.service.goblin.dto.vo.GoblinNftSkuVo; import com.liquidnet.service.goblin.dto.vo.GoblinNftSkuVo;
import com.liquidnet.service.goblin.dto.vo.PageInfoVo; import com.liquidnet.service.goblin.dto.vo.PageInfoVo;
import com.liquidnet.service.goblin.param.GoblinNftExActivityDelayParam;
import com.liquidnet.service.goblin.param.GoblinNftExActivityParam; import com.liquidnet.service.goblin.param.GoblinNftExActivityParam;
import com.liquidnet.service.goblin.service.IGoblinNftExActivityService; import com.liquidnet.service.goblin.service.IGoblinNftExActivityService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -64,4 +63,11 @@ public class GoblinNftExActivityController { ...@@ -64,4 +63,11 @@ public class GoblinNftExActivityController {
iGoblinNftExActivityService.excel(httpServletResponse, goblinNftExActivityParam); iGoblinNftExActivityService.excel(httpServletResponse, goblinNftExActivityParam);
} }
@ApiOperationSupport(order = 5)
@ApiOperation(value = "该活动下兑换码延期")
@PutMapping("delay")
public ResponseDto delay(@Valid @RequestBody GoblinNftExActivityDelayParam goblinNftExActivityDelayParam) {
return iGoblinNftExActivityService.delay(goblinNftExActivityDelayParam);
}
} }
...@@ -4,15 +4,17 @@ import com.alibaba.excel.EasyExcel; ...@@ -4,15 +4,17 @@ import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.style.WriteCellStyle; import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil; import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.GoblinNftExCodeNumDto;
import com.liquidnet.service.goblin.dto.vo.*; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.entity.*; import com.liquidnet.service.goblin.entity.*;
import com.liquidnet.service.goblin.mapper.*; import com.liquidnet.service.goblin.mapper.*;
import com.liquidnet.service.goblin.param.GoblinNftExActivityDelayParam;
import com.liquidnet.service.goblin.param.GoblinNftExActivityParam; import com.liquidnet.service.goblin.param.GoblinNftExActivityParam;
import com.liquidnet.service.goblin.service.IGoblinNftExActivityService; import com.liquidnet.service.goblin.service.IGoblinNftExActivityService;
import com.liquidnet.service.platform.utils.ObjectUtil; import com.liquidnet.service.platform.utils.ObjectUtil;
...@@ -21,13 +23,15 @@ import org.apache.poi.ss.usermodel.HorizontalAlignment; ...@@ -21,13 +23,15 @@ import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.ArrayList;
import java.util.List;
/** /**
* @Author: wll * @Author: wll
...@@ -50,6 +54,8 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi ...@@ -50,6 +54,8 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi
private GoblinGoodsSkuMapper goblinGoodsSkuMapper; private GoblinGoodsSkuMapper goblinGoodsSkuMapper;
@Autowired @Autowired
GoblinNftExCodeTaskMapper goblinNftExCodeTaskMapper; GoblinNftExCodeTaskMapper goblinNftExCodeTaskMapper;
@Autowired
private GoblinNftExCodeTaskRelationMapper goblinNftExCodeTaskRelationMapper;
@Override @Override
public ResponseDto<Object> add(GoblinNftExActivityParam goblinNftExActivityParam) { public ResponseDto<Object> add(GoblinNftExActivityParam goblinNftExActivityParam) {
...@@ -120,10 +126,16 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi ...@@ -120,10 +126,16 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi
Integer countNumber = 0; Integer countNumber = 0;
Integer useNumber = 0; Integer useNumber = 0;
Integer unUseNumber = 0; Integer unUseNumber = 0;
Integer invalidNumber = 0; // 失效数量 包含未兑换和已失效(手动失效)的
for (GoblinNftExCode goblinNftExCode : goblinNftExCodes) { for (GoblinNftExCode goblinNftExCode : goblinNftExCodes) {
if (goblinNftExActivity.getActivityId().equals(goblinNftExCode.getActivityId())) { if (goblinNftExActivity.getActivityId().equals(goblinNftExCode.getActivityId())) {
countNumber++; countNumber++;
switch (goblinNftExCode.getState()) { switch (goblinNftExCode.getState()) {
case 1:
case 3:
unUseNumber++;
invalidNumber++;
break;
case 2: case 2:
useNumber++; useNumber++;
break; break;
...@@ -137,7 +149,25 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi ...@@ -137,7 +149,25 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi
goblinNftExActivity.setUseNumber(useNumber); goblinNftExActivity.setUseNumber(useNumber);
goblinNftExActivity.setUnUseNumber(unUseNumber); goblinNftExActivity.setUnUseNumber(unUseNumber);
goblinNftExActivityArrayList.add(GoblinNftExActivityVo.getNew().copy(goblinNftExActivity)); GoblinNftExActivityVo goblinNftExActivityVo = GoblinNftExActivityVo.getNew().copy(goblinNftExActivity);
// 获取该活动最大的失效时间
goblinNftExActivityVo.setIsDelay(0);
if (goblinNftExActivity.getNewActivityId().isEmpty()) {
List<GoblinNftExSku> goblinNftExSkus = goblinNftExSkuMapper.selectList(
Wrappers.lambdaQuery(GoblinNftExSku.class)
.eq(GoblinNftExSku::getActivityId, goblinNftExActivity.getActivityId())
.orderByDesc(GoblinNftExSku::getExStopTime)
);
if (!CollectionUtil.isEmpty(goblinNftExSkus)) {
LocalDateTime exStopTime = goblinNftExSkus.get(0).getExStopTime();
if (LocalDateTime.now().isAfter(exStopTime) && invalidNumber > 0) {
goblinNftExActivityVo.setIsDelay(1);
}
}
}
goblinNftExActivityArrayList.add(goblinNftExActivityVo);
} }
} }
...@@ -204,7 +234,7 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi ...@@ -204,7 +234,7 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi
gCodes.add(goblinNftExCode); gCodes.add(goblinNftExCode);
}*/ }*/
if (goblinNftExCode.getSkuId().equals(goblinGoodsSku.getSkuId())){ if (goblinNftExCode.getSkuId().equals(goblinGoodsSku.getSkuId())) {
gCodes.add(goblinNftExCode); gCodes.add(goblinNftExCode);
} }
} }
...@@ -330,4 +360,97 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi ...@@ -330,4 +360,97 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi
return response.getOutputStream(); return response.getOutputStream();
} }
@Transactional
@Override
public ResponseDto delay(GoblinNftExActivityDelayParam delayParam) {
// 结束时间不能大于开始时间
if (!delayParam.getEndTime().isAfter(delayParam.getStartTime())) {
return ResponseDto.failure("结束时间必需大于开始时间!");
}
// 名称不能重复
String title = delayParam.getTitle();
String uid = delayParam.getUid();
GoblinNftExActivity goblinNftExActivityShow = goblinNftExActivityMapper.selectByTitle(title, uid);
if (goblinNftExActivityShow != null) {
return ResponseDto.failure("活动名称已存在!");
}
// 已经延期过
String oldActivityId = delayParam.getActivityId();
GoblinNftExActivity oldActivity = goblinNftExActivityMapper.selectByActivityId(oldActivityId);
if (!oldActivity.getNewActivityId().isEmpty()) {
return ResponseDto.failure("该活动仅支持延期一次!");
}
// 是否已过最大结束时间
List<GoblinNftExSku> goblinNftExSkus = goblinNftExSkuMapper.selectList(
Wrappers.lambdaQuery(GoblinNftExSku.class)
.eq(GoblinNftExSku::getActivityId, oldActivityId)
.orderByDesc(GoblinNftExSku::getExStopTime)
);
if (CollectionUtil.isEmpty(goblinNftExSkus)) {
return ResponseDto.failure("该活动不存在或尚未配置SKU信息!");
} else {
// TODO: 2022/6/2 时间未到 但是全部手动设置了失效????
if (LocalDateTime.now().isBefore(goblinNftExSkus.get(0).getExStopTime())) {
return ResponseDto.failure("该活动还有未过期的兑换码!");
}
}
// TODO: 2022/6/2 是否有失效的code???
// 活动入库
LocalDateTime now = LocalDateTime.now();
GoblinNftExActivity goblinNftExActivity = GoblinNftExActivity.getNew();
String activityId = IDGenerator.nextSnowId();
goblinNftExActivity.setActivityId(activityId);
goblinNftExActivity.setUid(uid);
goblinNftExActivity.setTitle(title);
goblinNftExActivity.setCreatedAt(now);
goblinNftExActivityMapper.addGoblinNftExActivity(goblinNftExActivity);
// 更新活动标识 记录延期过
GoblinNftExActivity oldActivityUp = GoblinNftExActivity.getNew();
oldActivityUp.setNewActivityId(activityId);
oldActivityUp.setUpdatedAt(now);
goblinNftExActivityMapper.update(
oldActivityUp,
Wrappers.lambdaUpdate(GoblinNftExActivity.class).eq(GoblinNftExActivity::getActivityId, oldActivityId)
);
// 查询出所有过期的码 所有
List<GoblinNftExCodeNumDto> exCodeNum = goblinNftExSkuMapper.selectExCodeNumAll(oldActivityId);
// 重新生成
List<GoblinNftExCodeTask> goblinNftExCodeTasks = ObjectUtil.getGoblinNftExCodeTaskArrayList();
for (GoblinNftExCodeNumDto goblinNftExCodeNumDto : exCodeNum) {
// 定时任务对象构建
GoblinNftExCodeTask goblinNftExCodeTask = GoblinNftExCodeTask.getNew().copy(goblinNftExCodeNumDto);
goblinNftExCodeTask.setActivityId(activityId);
goblinNftExCodeTask.setTaskId(IDGenerator.nextSnowId());
goblinNftExCodeTask.setExStartTime(delayParam.getStartTime());
goblinNftExCodeTask.setExStopTime(delayParam.getEndTime());
goblinNftExCodeTask.setCreatedAt(now);
if (goblinNftExCodeNumDto.getUnbox().equals("1")) {
ArrayList<GoblinNftExCodeTaskRelation> goblinNftExCodeTaskRelations = ObjectUtil.getGoblinNftExCodeTaskRelationArrayList();
// 查询出所有过期的码 盲盒
List<GoblinNftExCodeNumDto> exCodeNumBox = goblinNftExSkuMapper.selectExCodeNumBox(oldActivityId, goblinNftExCodeNumDto.getSkuId());
Integer sNumber = 0;
for (GoblinNftExCodeNumDto codeNumBox : exCodeNumBox) {
GoblinNftExCodeTaskRelation goblinNftExCodeTaskRelation = GoblinNftExCodeTaskRelation.getNew();
goblinNftExCodeTaskRelation.setTaskId(goblinNftExCodeTask.getTaskId());
goblinNftExCodeTaskRelation.setSkuId(codeNumBox.getBoxSkuId());
goblinNftExCodeTaskRelation.setStock(codeNumBox.getNum());
goblinNftExCodeTaskRelation.setCreatedAt(now);
goblinNftExCodeTaskRelations.add(goblinNftExCodeTaskRelation);
sNumber += codeNumBox.getNum();
}
goblinNftExCodeTaskRelationMapper.inserts(goblinNftExCodeTaskRelations);
goblinNftExCodeTask.setExStock(sNumber);
}
goblinNftExCodeTasks.add(goblinNftExCodeTask);
}
if (goblinNftExCodeTasks.size() > 0) {
goblinNftExCodeTaskMapper.addGoblinNftExCodeTasks(goblinNftExCodeTasks);
}
return ResponseDto.success("操作成功");
}
} }
...@@ -335,7 +335,7 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService { ...@@ -335,7 +335,7 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
if (StringUtil.isNotBlank(gnc.getBoxSkuId()) && gnc.getSkuId().equals(goblinNftExSku.getSkuId())) { if (StringUtil.isNotBlank(gnc.getBoxSkuId()) && gnc.getSkuId().equals(goblinNftExSku.getSkuId())) {
gnc.setExStartTime(goblinNftExSku.getExStartTime()); gnc.setExStartTime(goblinNftExSku.getExStartTime());
gnc.setExStopTime(goblinNftExSku.getExStopTime()); gnc.setExStopTime(goblinNftExSku.getExStopTime());
if (now.isAfter(goblinNftExSku.getExStopTime())) { if (now.isAfter(goblinNftExSku.getExStopTime()) && !gnc.getState().equals(2)) {
gnc.setState(3); gnc.setState(3);
} }
break; break;
...@@ -343,7 +343,7 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService { ...@@ -343,7 +343,7 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
if (gnc.getSkuId().equals(goblinNftExSku.getSkuId())) { if (gnc.getSkuId().equals(goblinNftExSku.getSkuId())) {
gnc.setExStartTime(goblinNftExSku.getExStartTime()); gnc.setExStartTime(goblinNftExSku.getExStartTime());
gnc.setExStopTime(goblinNftExSku.getExStopTime()); gnc.setExStopTime(goblinNftExSku.getExStopTime());
if (now.isAfter(goblinNftExSku.getExStopTime())) { if (now.isAfter(goblinNftExSku.getExStopTime()) && !gnc.getState().equals(2)) {
gnc.setState(3); gnc.setState(3);
} }
break; break;
...@@ -401,7 +401,7 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService { ...@@ -401,7 +401,7 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
} }
phonestr.append(data.getPhone()).append(","); phonestr.append(data.getPhone()).append(",");
phoneList.add(data.getPhone()); phoneList.add(data.getPhone());
if(phoneList.size()>100){ if (phoneList.size() > 100) {
break; break;
} }
} }
...@@ -412,7 +412,7 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService { ...@@ -412,7 +412,7 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
return ResponseDto.failure("解析文件失败!"); return ResponseDto.failure("解析文件失败!");
} }
if(phoneList.size()>=100){ if (phoneList.size() >= 100) {
return ResponseDto.failure("批量空投暂时数量不能大于100"); return ResponseDto.failure("批量空投暂时数量不能大于100");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment