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

Commit 64fb9b10 authored by wanglele's avatar wanglele

兑换码相关

parent fd28c9f5
......@@ -22,6 +22,11 @@
<artifactId>liquidnet-service-goblin-do</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.liquidnet.service.goblin.dto.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.goblin.entity.GoblinGoods;
import com.liquidnet.service.goblin.entity.GoblinNftExActivity;
import io.swagger.annotations.ApiModelProperty;
......@@ -20,6 +25,8 @@ import java.util.List;
@Data
@EqualsAndHashCode(callSuper = false)
@HeadRowHeight(value = 20)//设置表头行高
@ColumnWidth(value = 15)//设置表头行宽
public class GoblinNftExActivityVo implements Serializable,Cloneable {
......@@ -38,36 +45,43 @@ public class GoblinNftExActivityVo implements Serializable,Cloneable {
/**
* 活动标题
*/
@ExcelProperty(value = "活动标题", index = 0)//”0“表示excel中的第一列
@ApiModelProperty(position = 11,required = true,value ="活动标题")
private String title;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 12,required = true,value ="创建时间")
@ExcelProperty(value = "时间", index = 1)//”0“表示excel中的第一列
private LocalDateTime createdAt;
/**
* 更新时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 13,required = true,value ="更新时间")
private LocalDateTime updatedAt;
/**
* 总数量
*/
@ExcelProperty(value = "优惠券总数量", index = 2)//”0“表示excel中的第一列
@ApiModelProperty(position = 14,required = true,value ="总数量")
private Integer countNumber;
/**
* 使用数量
*/
@ExcelProperty(value = "优惠券使用数量", index = 3)//”0“表示excel中的第一列
@ApiModelProperty(position = 15,required = true,value ="使用数量")
private Integer useNumber;
/**
* 未使用数量
*/
@ExcelProperty(value = "兑换码未使用数量", index = 4)//”0“表示excel中的第一列
@ApiModelProperty(position = 16,required = true,value ="未使用数量")
private Integer unUseNumber;
......
......@@ -2,6 +2,8 @@ package com.liquidnet.service.goblin.dto.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.goblin.entity.GoblinNftExCode;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -93,6 +95,7 @@ public class GoblinNftExCodeVo implements Serializable, Cloneable {
/**
* 兑换时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 20,required = true,value ="兑换时间")
private LocalDateTime redeemAt;
......@@ -120,6 +123,7 @@ public class GoblinNftExCodeVo implements Serializable, Cloneable {
/**
* 兑换生效开始时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 24,required = true,value ="兑换生效开始时间")
private LocalDateTime exStartTime;
......@@ -127,6 +131,7 @@ public class GoblinNftExCodeVo implements Serializable, Cloneable {
/**
* 兑换生效结束时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 25,required = true,value ="兑换生效结束时间")
private LocalDateTime exStopTime;
......
......@@ -2,6 +2,8 @@ package com.liquidnet.service.goblin.dto.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.goblin.entity.GoblinNftExSku;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -74,6 +76,7 @@ public class GoblinNftExSkuVo {
/**
* 兑换生效开始时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 17,required = true,value ="兑换生效开始时间")
private LocalDateTime exStartTime;
......@@ -81,18 +84,21 @@ public class GoblinNftExSkuVo {
/**
* 兑换生效结束时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 18,required = true,value ="兑换生效结束时间")
private LocalDateTime exStopTime;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 19,required = true,value ="创建时间")
private LocalDateTime createdAt;
/**
* 修改时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 20,required = true,value ="修改时间")
private LocalDateTime updatedAt;
......@@ -113,7 +119,7 @@ public class GoblinNftExSkuVo {
this.setActivityId(goblinNftExSku.getActivityId());
this.setSpuId(goblinNftExSku.getSpuId());
this.setSkuId(goblinNftExSku.getSkuId());
this.setUnBox(goblinNftExSku.getUnBox());
this.setUnBox(goblinNftExSku.getUnbox());
this.setStoreId(goblinNftExSku.getStoreId());
this.setExStock(goblinNftExSku.getExStock());
this.setExLimit(goblinNftExSku.getExLimit());
......
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;
......@@ -19,9 +21,11 @@ public class GoblinNftExActivityParam implements Serializable {
@ApiModelProperty(position = 11,required = true,value = "活动标题" ,example = "草莓音乐节")
private String title;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 12,required = false,value = "开始时间")
private LocalDateTime startTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 13,required = false,value = "结束时间")
private LocalDateTime endTime;
......
......@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Author: wll
* @Description:
......@@ -11,7 +13,7 @@ import lombok.Data;
*/
@ApiModel(value = "GoblinNftExCodeParam",description = "查询方法入参")
@Data
public class GoblinNftExCodeParam {
public class GoblinNftExCodeParam implements Serializable {
@ApiModelProperty(position = 10,required = true,value = "活动id")
private String activityId;
......
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 java.io.Serializable;
import java.time.LocalDateTime;
/**
......@@ -14,11 +17,11 @@ import java.time.LocalDateTime;
@ApiModel(value = "GoblinNftExActivityParam", description = "添加方法入参")
@Data
public class GoblinNftExSkuParam {
public class GoblinNftExSkuParam implements Serializable {
@ApiModelProperty(position = 10, required = true, value = "nft兑换活动id")
@NotBlank(message = "nft兑换活动id不可为空")
// @NotBlank(message = "nft兑换活动id不可为空")
private String activityId;
@ApiModelProperty(position = 11,required = true,value = "店铺id")
......@@ -26,31 +29,33 @@ public class GoblinNftExSkuParam {
@ApiModelProperty(position = 12,required = true,value = "商品id")
@NotBlank(message = "商品id不可为空")
// @NotBlank(message = "商品id不可为空")
private String spuId;
@ApiModelProperty(position = 13,required = true,value = "款式id")
@NotBlank(message = "款式id不可为空")
// @NotBlank(message = "款式id不可为空")
private String skuId;
@ApiModelProperty(position = 14,required = true,value = "是否盲盒 0:否 1:是")
@NotBlank(message = "是否盲盒 0:否 1:是")
// @NotBlank(message = "是否盲盒 0:否 1:是")
private String unbox;
@ApiModelProperty(position = 15,required = true,value = "兑换库存数量")
@NotBlank(message = "兑换库存数量不可为空")
// @NotBlank(message = "兑换库存数量不可为空")
private Integer exStock;
@ApiModelProperty(position = 16,required = true,value = "兑换限购数量")
@NotBlank(message = "兑换限购数量不可为空")
// @NotBlank(message = "兑换限购数量不可为空")
private Integer exLimit;
@ApiModelProperty(position = 17,required = true,value = "兑换生效开始时间")
@NotBlank(message = "兑换生效开始时间不可为空")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
// @NotBlank(message = "兑换生效开始时间不可为空")
private LocalDateTime exStartTime;
@ApiModelProperty(position = 18,required = true,value = "兑换生效结束时间")
@NotBlank(message = "兑换生效结束时间不可为空")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
// @NotBlank(message = "兑换生效结束时间不可为空")
private LocalDateTime exStopTime;
......
......@@ -5,12 +5,14 @@ import com.liquidnet.service.goblin.dto.vo.GoblinNftExActivityVo;
import com.liquidnet.service.goblin.dto.vo.GoblinNftSkuVo;
import com.liquidnet.service.goblin.param.GoblinNftExActivityParam;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
public interface IGoblinNftExActivityService {
/**
* 新增nft活动
*
* @param goblinNftExActivityParam
* @return
*/
......@@ -18,6 +20,7 @@ public interface IGoblinNftExActivityService {
/**
* 分页查询
*
* @param goblinNftExActivityParam
* @return
*/
......@@ -25,8 +28,17 @@ public interface IGoblinNftExActivityService {
/**
* 根据活动id获取活动下商品
*
* @param activityId
* @return
*/
List<GoblinNftSkuVo> selectNftSkuByActivityId(String activityId);
/**
* excel导出
*
* @param httpServletResponse
* @param goblinNftExActivityParam
*/
void excel(HttpServletResponse httpServletResponse, GoblinNftExActivityParam goblinNftExActivityParam);
}
......@@ -164,7 +164,6 @@ public class IDGenerator {
for (int k=0;k<num;k++) {
for(int i=0;i < sec;i++){
int intVal=(int)(Math.random()*58+65);
System.out.println(intVal);
if(intVal >= 91 && intVal <= 122){
i--;
}
......
......@@ -43,7 +43,7 @@ public class GoblinNftExSku {
/**
* 是否盲盒 0:否 1:是
*/
private String unBox;
private String unbox;
/**
......
......@@ -38,8 +38,8 @@ public interface GoblinNftExActivityMapper extends BaseMapper<GoblinNftExActivit
/**
* 根据活动ids 获取活动
* @param activityIds
* @param activityId
* @return
*/
GoblinNftExActivity selectByActivityIds(@Param("activityIds") String activityIds);
GoblinNftExActivity selectByActivityId(@Param("activityId") String activityId);
}
......@@ -54,4 +54,9 @@ public interface GoblinNftExCodeMapper extends BaseMapper<GoblinNftExCode> {
* @return
*/
int updateCodes(@Param("goblinNftExCodes") List<GoblinNftExCode> goblinNftExCodes);
/*
* 根据code获取兑换码信息
*/
GoblinNftExCode selectGoblinNftCodeByCode(@Param("code") String code);
}
......@@ -4,6 +4,7 @@
<resultMap id="BaseResult" type="com.liquidnet.service.goblin.entity.GoblinGoodsSku">
<result column="sku_id" property="skuId" jdbcType="VARCHAR"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="unbox" property="unbox" jdbcType="VARCHAR"/>
<result column="hit_ratio" property="hitRatio" jdbcType="DECIMAL"/>
</resultMap>
......@@ -15,7 +16,7 @@
</select>
<select id="selectBySkuIds" resultMap="BaseResult">
select sku_id,name from goblin_goods_sku where
select sku_id,name,sku_pic from goblin_goods_sku where
sku_id in
<foreach collection="skuIds.split(',')" item="skuId" open="(" separator="," close=")">
#{skuId,jdbcType=VARCHAR}
......@@ -23,7 +24,7 @@
</select>
<select id="selectBySpuIds" resultMap="BaseResult">
select sku_id,hit_ratio from goblin_goods_sku where
select sku_id,hit_ratio,unbox from goblin_goods_sku where
spu_id in
<foreach collection="spuIds.split(',')" item="spuId" open="(" separator="," close=")">
#{spuId,jdbcType=VARCHAR}
......
......@@ -25,11 +25,8 @@
</where>
</select>
<select id="selectByActivityIds" resultMap="BaseResult">
select activity_id,title,created_at from goblin_nft_ex_activity where activity_id in
<foreach collection="activityIds.split(',')" item="activityId" open="(" separator="," close=")">
#{activityId}
</foreach>
<select id="selectByActivityId" resultMap="BaseResult">
select activity_id,title,created_at from goblin_nft_ex_activity where activity_id = #{activityId}
</select>
<insert id="addGoblinNftExActivity" parameterType="com.liquidnet.service.goblin.entity.GoblinNftExActivity">
......
......@@ -24,17 +24,22 @@
</foreach>
</select>
<select id="selectGoblinNftCodeByCode" resultMap="BeseResult">
select code_id,activity_id,code,box_sku_id
</select>
<insert id="addGoblinNftExCodes">
insert into goblin_nft_ex_code (code_id,activity_id,code,sku_id,state,created_at)
insert into goblin_nft_ex_code (code_id,activity_id,code,sku_id,box_sku_id,state,created_at)
values
<foreach collection="goblinNftExCodeVos" item="goblinNftExCodeVo" separator=",">
<foreach collection="goblinNftExCodes" item="goblinNftExCode" separator=",">
(
#{codeId},
#{activityId},
#{code},
#{skuId},
#{state},
#{createdAt}
#{goblinNftExCode.codeId},
#{goblinNftExCode.activityId},
#{goblinNftExCode.code},
#{goblinNftExCode.skuId},
#{goblinNftExCode.boxSkuId},
#{goblinNftExCode.state},
#{goblinNftExCode.createdAt}
)
</foreach>
</insert>
......@@ -51,7 +56,7 @@
<select id="selectGoblinNftCode" parameterType="com.liquidnet.service.goblin.entity.GoblinNftExCode"
resultMap="BeseResult">
select code_id,code,sku_id from goblin_nft_ex_code
select code_id,code,sku_id,activity_id,state,redeem_uid,redeem_at,admin_uid,created_at from goblin_nft_ex_code
<where>
<if test="code != null and code != ''">
and code = #{code,jdbcType=VARCHAR}
......@@ -85,7 +90,7 @@
</select>
<select id="selectByActivityIds" resultMap="BeseResult">
select code_id,activity_id,state from goblin_nft_ex_code where
select code_id,sku_id,box_sku_id,activity_id,state from goblin_nft_ex_code where
activity_id in
<foreach collection="activityIds.split(',')" item="activityId" open="(" close=")" separator=",">
#{activityId,jdbcType=VARCHAR}
......
......@@ -5,11 +5,14 @@
<result column="activity_id" property="activityId" jdbcType="VARCHAR"/>
<result column="sku_id" property="skuId" jdbcType="VARCHAR"/>
<result column="store_id" property="storeId" jdbcType="VARCHAR"/>
<result column="spu_id" property="spuId" jdbcType="VARCHAR"/>
<result column="unbox" property="unbox" jdbcType="VARCHAR"/>
<result column="ex_stock" property="exStock" jdbcType="INTEGER"/>
<result column="ex_limit" property="exLimit" jdbcType="INTEGER"/>
<result column="ex_start_time" property="exStartTime" jdbcType="TIMESTAMP"/>
<result column="ex_stop_time" property="exStopTime" jdbcType="TIMESTAMP"/>
<result column="created_at" property="createdAt" jdbcType="TIMESTAMP"/>
<result column="updated_at" property="updatedAt" jdbcType="TIMESTAMP"/>
</resultMap>
<select id="selectGoblinNftExSkuByActivityIds" resultMap="BaseResult">
......@@ -19,4 +22,23 @@
#{activityId,jdbcType=VARCHAR}
</foreach>
</select>
<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)
values
<foreach collection="goblinNftExSkus" item="goblinNftExSku" separator=",">
(
#{goblinNftExSku.activityId},
#{goblinNftExSku.spuId},
#{goblinNftExSku.skuId},
#{goblinNftExSku.storeId},
#{goblinNftExSku.unbox},
#{goblinNftExSku.exStock},
#{goblinNftExSku.exLimit},
#{goblinNftExSku.exStartTime},
#{goblinNftExSku.exStopTime},
#{goblinNftExSku.createdAt}
)
</foreach>
</insert>
</mapper>
......@@ -12,6 +12,7 @@
<properties>
<bitwalker.version>1.19</bitwalker.version>
<easyexcel.version>3.0.5</easyexcel.version>
</properties>
<dependencies>
......@@ -113,7 +114,10 @@
<artifactId>aliyun-java-sdk-facebody</artifactId>
<version>1.2.27</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
......
......@@ -15,6 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;
......@@ -56,5 +58,12 @@ public class GoblinNftExActivityController {
return ResponseDto.success(iGoblinNftExActivityService.selectNftSkuByActivityId(activityId));
}
@ApiOperationSupport(order = 4)
@ApiOperation(value = "excel导出")
@PostMapping("excel")
public void excel(HttpServletResponse httpServletResponse,@RequestBody GoblinNftExActivityParam goblinNftExActivityParam){
iGoblinNftExActivityService.excel(httpServletResponse,goblinNftExActivityParam);
}
}
package com.liquidnet.service.platform.service.impl.goblin;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.IDGenerator;
......@@ -15,10 +19,15 @@ import com.liquidnet.service.goblin.service.IGoblinNftExActivityService;
import com.liquidnet.service.platform.utils.GoblinRedisUtils;
import com.liquidnet.service.platform.utils.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
......@@ -118,7 +127,7 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi
ArrayList<GoblinNftSkuVo> goblinNftSkuVoArrayList = ObjectUtil.getGoblinNftSkuVoArrayList();
// 获取兑换活动
GoblinNftExActivity goblinNftExActivity = goblinNftExActivityMapper.selectByActivityIds(activityId);
GoblinNftExActivity goblinNftExActivity = goblinNftExActivityMapper.selectByActivityId(activityId);
if (goblinNftExActivity == null) {
return goblinNftSkuVoArrayList;
}
......@@ -147,10 +156,17 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi
Map<String, List<GoblinNftExCode>> codeMap = new HashMap<>();
for (GoblinNftExCode goblinNftExCode : goblinNftExCodes) {
if (StringUtil.isNotBlank(goblinNftExCode.getSkuId())){
if (codeMap.get(goblinNftExCode.getSkuId()) == null) {
codeMap.put(goblinNftExCode.getSkuId(), new ArrayList<>());
}
codeMap.get(goblinNftExCode.getSkuId()).add(goblinNftExCode);
}else if (StringUtil.isNotBlank(goblinNftExCode.getBoxSkuId())){
if (codeMap.get(goblinNftExCode.getSkuId()) == null) {
codeMap.put(goblinNftExCode.getSkuId(), new ArrayList<>());
}
codeMap.get(goblinNftExCode.getSkuId()).add(goblinNftExCode);
}
}
......@@ -192,4 +208,99 @@ public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityServi
return goblinNftSkuVoArrayList;
}
@Override
public void excel(HttpServletResponse httpServletResponse, GoblinNftExActivityParam goblinNftExActivityParam) {
/*
* 获取分页nft兑换活动数据
*/
long s = System.currentTimeMillis();
List<GoblinNftExActivity> goblinNftExActivities = goblinNftExActivityMapper.selectPageList(goblinNftExActivityParam.getTitle(), goblinNftExActivityParam.getStartTime(),
goblinNftExActivityParam.getEndTime());
log.debug("#MYS耗时:{}ms", System.currentTimeMillis() - s);
StringBuffer activityIds = new StringBuffer();
for (GoblinNftExActivity GoblinNftExActivity : goblinNftExActivities) {
activityIds.append(GoblinNftExActivity.getActivityId()).append(",");
}
ArrayList<GoblinNftExActivityVo> goblinNftExActivityArrayList = ObjectUtil.getGoblinNftExActivityArrayList();
if (StringUtil.isNotBlank(activityIds)) {
activityIds.deleteCharAt(activityIds.length() - 1);
long k = System.currentTimeMillis();
List<GoblinNftExCode> goblinNftExCodes = goblinNftExCodeMapper.selectByActivityIds(activityIds.toString());
log.debug("#MYS耗时:{}ms", System.currentTimeMillis() - k);
for (GoblinNftExActivity goblinNftExActivity : goblinNftExActivities) {
Integer countNumber = 0;
Integer useNumber = 0;
Integer unUseNumber = 0;
for (GoblinNftExCode goblinNftExCode : goblinNftExCodes) {
if (goblinNftExActivity.getActivityId().equals(goblinNftExCode.getActivityId())) {
countNumber++;
switch (goblinNftExCode.getState()) {
case 2:
useNumber++;
break;
default:
unUseNumber++;
}
}
}
goblinNftExActivity.setCountNumber(countNumber);
goblinNftExActivity.setUseNumber(useNumber);
goblinNftExActivity.setUnUseNumber(unUseNumber);
goblinNftExActivityArrayList.add(GoblinNftExActivityVo.getNew().copy(goblinNftExActivity));
}
}
try{
writeExcel(httpServletResponse,goblinNftExActivityArrayList,"活动excel","sheet1",GoblinNftExActivityVo.class);
}catch (Exception e){
log.error("导出excel失败!");
}
}
/**
* 导出
*
* @param response
* @param data
* @param fileName
* @param sheetName
* @param clazz
* @throws Exception
*/
public static void writeExcel(HttpServletResponse response, List<? extends Object> data, String fileName,
String sheetName, Class clazz) throws Exception {
// 表头样式
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
// 设置表头居中对齐
headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
// 内容样式
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
// 设置内容靠左对齐
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
HorizontalCellStyleStrategy horizontalCellStyleStrategy =
new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
EasyExcel.write(getOutputStream(fileName, response), clazz).excelType(ExcelTypeEnum.XLSX).sheet(sheetName)
.registerWriteHandler(horizontalCellStyleStrategy).doWrite(data);
}
private static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {
fileName = URLEncoder.encode(fileName, "UTF-8");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + "-" + LocalDate.now() + ".xlsx");
return response.getOutputStream();
}
}
......@@ -53,39 +53,42 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
goblinNftExCode.setState(goblinNftExCodeParam.getState());
goblinNftExCode.setRedeemUid(goblinNftExCodeParam.getUserId());
goblinNftExCode.setIsDrivi(goblinNftExCodeParam.getIsDrivi());
if (StringUtil.isNotBlank(goblinNftExCodeParam.getSkuName())){
if (StringUtil.isNotBlank(goblinNftExCodeParam.getSkuName())) {
// 根据藏品名称获取 skuIds
String skuName = goblinNftExCodeParam.getSkuName();
List<GoblinGoodsSku> goblinGoodsSkus = goblinGoodsSkuMapper.selectSkuLikeName(skuName);
if (goblinGoodsSkus.size() <= 0){
if (goblinGoodsSkus.size() <= 0) {
return new PageInfo<>();
}
StringBuffer skuIds = new StringBuffer();
for (GoblinGoodsSku goblinGoodsSku:goblinGoodsSkus) {
for (GoblinGoodsSku goblinGoodsSku : goblinGoodsSkus) {
skuIds.append(goblinGoodsSku.getSkuId()).append(",");
}
goblinNftExCode.setSkuId(skuIds.deleteCharAt(skuIds.length()-1).toString());
goblinNftExCode.setSkuId(skuIds.deleteCharAt(skuIds.length() - 1).toString());
}
PageHelper.startPage(goblinNftExCodeParam.getPageNum(),20,true);
PageHelper.startPage(goblinNftExCodeParam.getPageNum(), 20, true);
List<GoblinNftExCode> goblinNftExCodes = goblinNftExCodeMapper.selectGoblinNftCode(goblinNftExCode);
StringBuffer skuIds = new StringBuffer();
StringBuffer acticityIds = new StringBuffer();
for (GoblinNftExCode gnc: goblinNftExCodes) {
for (GoblinNftExCode gnc : goblinNftExCodes) {
if (gnc.getState().equals(2)) {
skuIds.append(gnc.getSkuId()).append(",");
}
acticityIds.append(gnc.getActivityId()).append(",");
}
// 批量查询
List<GoblinGoodsSku> goblinNftExCodeList = goblinGoodsSkuMapper.selectBySkuIds(skuIds.toString());
// 获取返回对象实例
ArrayList<GoblinNftExCodeVo> goblinNftExCodeArrayList = ObjectUtil.getGoblinNftExCodeArrayList();
// 获取对象实例
ArrayList<GoblinNftExCodeVo> goblinNftExCodeArrayList = ObjectUtil.getGoblinNftExCodeArrayList();
for (GoblinNftExCode gnc: goblinNftExCodes) {
for (GoblinGoodsSku goblinGoodsSku: goblinNftExCodeList) {
if (gnc.getSkuId().equals(goblinGoodsSku.getSkuId())){
if (StringUtil.isNotBlank(skuIds)) {
// 批量查询
List<GoblinGoodsSku> goblinGoodsSkus = goblinGoodsSkuMapper.selectBySkuIds(skuIds.toString());
for (GoblinNftExCode gnc : goblinNftExCodes) {
for (GoblinGoodsSku goblinGoodsSku : goblinGoodsSkus) {
if (gnc.getSkuId().equals(goblinGoodsSku.getSkuId())) {
GoblinNftExCodeVo goblinNftExCodeVo = GoblinNftExCodeVo.getNew().copy(gnc);
goblinNftExCodeVo.setSkuName(goblinGoodsSku.getName());
goblinNftExCodeArrayList.add(goblinNftExCodeVo);
......@@ -93,25 +96,25 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
}
}
}
}
// 根据活动ids 获取兑换活动和sku的关联
List<GoblinNftExSku> goblinNftExSkus = goblinNftExSkuMapper.selectGoblinNftExSkuByActivityIds(acticityIds.toString());
Map<String,List<GoblinNftExSku>> map = new HashMap<>();
for (GoblinNftExSku goblinNftExSku: goblinNftExSkus) {
if (map.get(goblinNftExSku.getActivityId()) == null){
map.put(goblinNftExSku.getActivityId(),new ArrayList<>());
Map<String, List<GoblinNftExSku>> map = new HashMap<>();
for (GoblinNftExSku goblinNftExSku : goblinNftExSkus) {
if (map.get(goblinNftExSku.getActivityId()) == null) {
map.put(goblinNftExSku.getActivityId(), new ArrayList<>());
}
map.get(goblinNftExSku.getActivityId()).add(goblinNftExSku);
}
for (GoblinNftExCodeVo gnc: goblinNftExCodeArrayList) {
for (GoblinNftExCodeVo gnc : goblinNftExCodeArrayList) {
List<GoblinNftExSku> goblinNftExSkuList = map.get(gnc.getActivityId());
for (GoblinNftExSku goblinNftExSku: goblinNftExSkuList) {
if (gnc.getSkuId().equals(goblinNftExSku.getSkuId())){
for (GoblinNftExSku goblinNftExSku : goblinNftExSkuList) {
if (gnc.getSkuId().equals(goblinNftExSku.getSkuId())) {
gnc.setExStartTime(goblinNftExSku.getExStartTime());
gnc.setExStopTime(goblinNftExSku.getExStopTime());
break;
......@@ -120,7 +123,6 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
}
PageInfo<GoblinNftExCodeVo> pageInfo = new PageInfo<>(goblinNftExCodeArrayList);
return pageInfo;
......@@ -135,16 +137,41 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
List<GoblinNftExCode> goblinNftExCodes = goblinNftExCodeMapper.selectByIds(codeIds);
List<String> codes = new ArrayList<>();
for (GoblinNftExCode goblinNftExCode: goblinNftExCodes) {
Map<String, Integer> skuMap = new HashMap<>();
for (GoblinNftExCode goblinNftExCode : goblinNftExCodes) {
// redis 主动失效
codes.add(goblinNftExCode.getCode());
goblinNftExCode.setState(3);
goblinNftExCode.setUpdatedAt(now);
String skuId = "";
if (StringUtil.isNotBlank(goblinNftExCode.getSkuId())) {
skuId = goblinNftExCode.getSkuId();
} else if (StringUtil.isNotBlank(goblinNftExCode.getBoxSkuId())) {
skuId = goblinNftExCode.getBoxSkuId();
}
if (StringUtil.isNotBlank(skuId)) {
if (skuMap.get(skuId) == null) {
skuMap.put(skuId, 0);
}
Integer number = skuMap.get(skuId);
skuMap.put(skuId, number + 1);
}
}
if (skuMap.size() > 0) {
for (String key : skuMap.keySet()) {
goblinRedisUtils.incrSkuStock(null,key,skuMap.get(key));
}
}
goblinRedisUtils.removeCodes(codes);
// 批量修改
goblinNftExCodeMapper.updateCodes(goblinNftExCodes);
return true;
}
......@@ -152,6 +179,9 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
public Boolean addAirdrop(GoblinNftExCodeParam goblinNftExCodeParam) {
String code = goblinNftExCodeParam.getCode();
String phone = goblinNftExCodeParam.getPhone();
// 根据兑换code查询兑换码信息
GoblinNftExCode goblinNftExCode = goblinNftExCodeMapper.selectGoblinNftCodeByCode(code);
return null;
}
......
......@@ -72,9 +72,11 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
if (goblinGoodsSku.getUnbox().equals("1")) {
continue;
}
if (goblinGoodsSku.getHitRatio() != null){
map.put(goblinGoodsSku.getSkuId(), goblinGoodsSku.getHitRatio());
}
}
}
List<GoblinNftExSku> goblinNftExSkus = new ArrayList<>();
List<GoblinNftExCode> goblinNftExCodes = new ArrayList<>();
......@@ -98,9 +100,9 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
Integer stockNum = skuMap.get(key);
// 根据sku减库存
int stock = goblinRedisUtils.decrSkuStock("", key, stockNum);
int stock = goblinRedisUtils.decrSkuStock(null, key, stockNum);
if (stock < 0) {
goblinRedisUtils.incrSkuStock("",key,stockNum);
goblinRedisUtils.incrSkuStock(null,key,stockNum);
}
......@@ -140,9 +142,9 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
default:
// 根据sku减库存
int stock = goblinRedisUtils.decrSkuStock("", goblinNftExSkuParam.getSkuId(), goblinNftExSkuParam.getExStock());
int stock = goblinRedisUtils.decrSkuStock(null, goblinNftExSkuParam.getSkuId(), goblinNftExSkuParam.getExStock());
if (stock < 0) {
goblinRedisUtils.incrSkuStock("",goblinNftExSkuParam.getSkuId(),goblinNftExSkuParam.getExStock());
goblinRedisUtils.incrSkuStock(null,goblinNftExSkuParam.getSkuId(),goblinNftExSkuParam.getExStock());
}
// 构建兑换码数量
......@@ -191,7 +193,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
}
/**
* 获取每个sku的
* 获取每个sku的兑换码生成数量
*
* @param exStock
* @param map
......@@ -203,6 +205,10 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
Map<String, Integer> skuNumMap = new HashMap<>();
for (String key : map.keySet()) {
if (map.get(key)==null){
System.out.println(map.get(key));
}
// 概率
BigDecimal hitNum = map.get(key).divide(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
Integer stock = hitNum.multiply(BigDecimal.valueOf(exStock)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
......
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