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

Commit 670cf61c authored by wanglele's avatar wanglele

兑换码相关

parent 2c4ff93e
...@@ -242,6 +242,23 @@ public class GoblinRedisConst { ...@@ -242,6 +242,23 @@ public class GoblinRedisConst {
public static final String ANTICIPATE_VALUE_SKUID = PREFIX.concat("anticipate:value:skuid:"); public static final String ANTICIPATE_VALUE_SKUID = PREFIX.concat("anticipate:value:skuid:");
/**
* nft兑换活动配置
*/
public static final String NFT_EX_ACTIVITY = PREFIX.concat("nft:ex:activity:");
/**
* nft兑换活动和sku的关联
*/
public static final String NFT_EX_SKU = PREFIX.concat("nft:ex:sku:");
/**
* 兑换码
*/
public static final String NFT_EX_CODE = PREFIX.concat("nft:ex:code:");
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
......
package com.liquidnet.service.goblin.dto.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author: wll
* @Description: nft 兑换活动表
* @Date:Create:in 2022/4/19 2:14 下午
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinNftExActivityVo implements Serializable,Cloneable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 活动id
*/
private String activityId;
/**
* 活动标题
*/
private String title;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* 总数量
*/
private Integer countNumber;
/**
* 使用数量
*/
private Integer useNumber;
/**
* 未使用数量
*/
private Integer unUseNumber;
private final static GoblinNftExActivityVo obj = new GoblinNftExActivityVo();
public static GoblinNftExActivityVo getNew(){
try {
return (GoblinNftExActivityVo) obj.clone();
}catch (CloneNotSupportedException e){
return new GoblinNftExActivityVo();
}
}
}
package com.liquidnet.service.goblin.dto.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author: wll
* @Description: NFT兑换码表
* @Date:Create:in 2022/4/19 1:55 下午
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinNftExCodeVo implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 兑换码id
*/
private String codeId;
/**
* 活动id
*/
private String activityId;
/**
* 兑换码
*/
private String code;
/**
* 款式id
*/
private String skuId;
/**
* 兑换码状态 1 未兑换 2 已兑换
*/
private Integer state;
/**
* 兑换用户id
*/
private String redeemUid;
/**
* 操作用户id
*/
private String adminUid;
/**
* 兑换时间
*/
private LocalDateTime redeemAt;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* 类型 默认无参 1:明盒、盲盒 2:空投盲盒/空投明盒
*/
private Integer isDrivi;
private String sktName;
private static final GoblinNftExCodeVo obj = new GoblinNftExCodeVo();
public static GoblinNftExCodeVo getNew() {
try {
return (GoblinNftExCodeVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinNftExCodeVo();
}
}
}
package com.liquidnet.service.goblin.dto.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* @Author: wll
* @Description:
* @Date:Create:in 2022/4/19 2:23 下午
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinNftExSkuVo {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 活动id
*/
private String activityId;
/**
* 商品id
*/
private String spuId;
/**
* 款式id
*/
private String skuId;
/**
* 兑换库存
*/
private Integer exStock;
/**
* 兑换限购
*/
private Integer exLimit;
/**
* 兑换生效开始时间
*/
private LocalDateTime exStartTime;
/**
* 兑换生效结束时间
*/
private LocalDateTime exStopTime;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 修改时间
*/
private LocalDateTime updatedAt;
private static final GoblinNftExSkuVo obj = new GoblinNftExSkuVo();
public static GoblinNftExSkuVo getNew(){
try{
return (GoblinNftExSkuVo) obj.clone();
}catch (CloneNotSupportedException e){
return new GoblinNftExSkuVo();
}
}
}
package com.liquidnet.service.goblin.param;
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;
@ApiModel(value ="GoblinNftExActivityParam",description = "添加方法入参")
@Data
public class GoblinNftExActivityParam implements Serializable {
@ApiModelProperty(position = 10,required = false,value = "nft活动id")
private String activityId;
@ApiModelProperty(position = 11,required = true,value = "活动标题" ,example = "草莓音乐节")
private String title;
@ApiModelProperty(position = 12,required = false,value = "开始时间")
private LocalDateTime startTime;
@ApiModelProperty(position = 13,required = false,value = "结束时间")
private LocalDateTime endTime;
@ApiModelProperty(position = 14,required = true,value = "当前页(查询时传入)")
private Integer pageNum;
}
package com.liquidnet.service.goblin.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author: wll
* @Description:
* @Date:Create:in 2022/4/20 5:12 下午
*/
@ApiModel(value = "GoblinNftExCodeParam",description = "查询方法入参")
@Data
public class GoblinNftExCodeParam {
@ApiModelProperty(position = 10,required = true,value = "活动id")
private String activityId;
@ApiModelProperty(position = 11,required = true,value = "当前页")
private Integer pageNum;
@ApiModelProperty(position = 12,required = false,value = "兑换码")
private String code;
@ApiModelProperty(position = 13,required = false,value = "兑换码状态 全部非传 1未兑换 2已兑换 3已失效")
private Integer state;
@ApiModelProperty(position = 14,required = false,value = "默认无参 1:明盒、盲盒 2:空投盲盒/空投明盒")
private Integer isDrivi;
@ApiModelProperty(position = 15,required = false,value = "藏品名称")
private String skuName;
@ApiModelProperty(position = 16,required = false,value = "用户id搜索")
private String userId;
}
package com.liquidnet.service.goblin.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/**
* @Author: wll
* @Date:Create:in 2022/4/19 5:06 下午
*/
@ApiModel(value = "GoblinNftExActivityParam", description = "添加方法入参")
@Data
public class GoblinNftExSkuParam {
@ApiModelProperty(position = 10, required = true, value = "nft兑换活动id")
@NotBlank(message = "nft兑换活动id不可为空")
private String activityId;
@ApiModelProperty(position = 11,required = true,value = "商品id")
@NotBlank(message = "商品id不可为空")
private String spuId;
@ApiModelProperty(position = 12,required = true,value = "款式id")
@NotBlank(message = "款式id不可为空")
private String skuId;
@ApiModelProperty(position = 13,required = true,value = "兑换库存数量")
@NotBlank(message = "兑换库存数量不可为空")
private Integer exStock;
@ApiModelProperty(position = 14,required = true,value = "兑换限购数量")
@NotBlank(message = "兑换限购数量不可为空")
private Integer exLimit;
@ApiModelProperty(position = 15,required = true,value = "兑换生效开始时间")
@NotBlank(message = "兑换生效开始时间不可为空")
private LocalDateTime exStartTime;
@ApiModelProperty(position = 16,required = true,value = "兑换生效结束时间")
@NotBlank(message = "兑换生效结束时间不可为空")
private LocalDateTime exStopTime;
}
package com.liquidnet.service.goblin.service;
import com.liquidnet.service.goblin.param.GoblinNftExActivityParam;
public interface IGoblinNftExActivityService {
/**
* 新增nft活动
* @param goblinNftExActivityParam
* @return
*/
String add(GoblinNftExActivityParam goblinNftExActivityParam);
/**
* 分页查询
* @param goblinNftExActivityParam
* @return
*/
Object pageList(GoblinNftExActivityParam goblinNftExActivityParam);
}
package com.liquidnet.service.goblin.service;
import com.liquidnet.service.goblin.param.GoblinNftExCodeParam;
public interface IGoblinNftExCodeService {
/**
* 获取兑换码
*/
Object selectCodePageList(GoblinNftExCodeParam goblinNftExCodeParam);
}
package com.liquidnet.service.goblin.service;
import com.liquidnet.service.goblin.param.GoblinNftExSkuParam;
import java.util.List;
public interface IGoblinNftExSkuService {
/**
* 新增nft兑换活动和sku的关联
*/
Boolean add(List<GoblinNftExSkuParam> goblinNftExSkuParams);
}
package com.liquidnet.service.goblin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author: wll
* @Description: nft 兑换活动表
* @Date:Create:in 2022/4/19 2:14 下午
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinNftExActivity implements Serializable,Cloneable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 活动id
*/
private String activityId;
/**
* 活动标题
*/
private String title;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* 总数量
*/
private Integer countNumber;
/**
* 使用数量
*/
private Integer useNumber;
/**
* 未使用数量
*/
private Integer unUseNumber;
private final static GoblinNftExActivity obj = new GoblinNftExActivity();
public static GoblinNftExActivity getNew(){
try {
return (GoblinNftExActivity) obj.clone();
}catch (CloneNotSupportedException e){
return new GoblinNftExActivity();
}
}
}
package com.liquidnet.service.goblin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author: wll
* @Description: NFT兑换码表
* @Date:Create:in 2022/4/19 1:55 下午
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinNftExCode implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 兑换码id
*/
private String codeId;
/**
* 活动id
*/
private String activityId;
/**
* 兑换码
*/
private String code;
/**
* 款式id
*/
private String skuId;
/**
* 兑换码状态 1 未兑换 2 已兑换
*/
private Integer state;
/**
* 兑换用户id
*/
private String redeemUid;
/**
* 操作用户id
*/
private String adminUid;
/**
* 兑换时间
*/
private LocalDateTime redeemAt;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* 类型 默认无参 1:明盒、盲盒 2:空投盲盒/空投明盒
*/
private Integer isDrivi;
private String sktName;
private static final GoblinNftExCode obj = new GoblinNftExCode();
public static GoblinNftExCode getNew() {
try {
return (GoblinNftExCode) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinNftExCode();
}
}
}
package com.liquidnet.service.goblin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* @Author: wll
* @Description:
* @Date:Create:in 2022/4/19 2:23 下午
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinNftExSku {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 活动id
*/
private String activityId;
/**
* 商品id
*/
private String spuId;
/**
* 款式id
*/
private String skuId;
/**
* 兑换库存
*/
private Integer exStock;
/**
* 兑换限购
*/
private Integer exLimit;
/**
* 兑换生效开始时间
*/
private LocalDateTime exStartTime;
/**
* 兑换生效结束时间
*/
private LocalDateTime exStopTime;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 修改时间
*/
private LocalDateTime updatedAt;
private static final GoblinNftExSku obj = new GoblinNftExSku();
public static GoblinNftExSku getNew(){
try{
return (GoblinNftExSku) obj.clone();
}catch (CloneNotSupportedException e){
return new GoblinNftExSku();
}
}
}
package com.liquidnet.service.goblin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.goblin.entity.GoblinNftExActivity;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* NFT兑换活动表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2022-04-19
*/
@Repository
public interface GoblinNftExActivityMapper extends BaseMapper<GoblinNftExActivity> {
/**
* 添加ntf兑换活动数据
* @param goblinNftExActivity
* @return
*/
int addGoblinNftExActivity(GoblinNftExActivity goblinNftExActivity);
/**
* 分页回去nft兑换活动数据
* @param title
* @param startTime
* @param endTime
* @return
*/
List<GoblinNftExActivity> selectPageList(@Param("title") String title, @Param("startTime") LocalDateTime startTime,@Param("endTime") LocalDateTime endTime);
}
package com.liquidnet.service.goblin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.goblin.entity.GoblinNftExCode;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* NFT兑换码表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2022-04-19
*/
@Repository
public interface GoblinNftExCodeMapper extends BaseMapper<GoblinNftExCode> {
/**
* 批量添加兑换码信息
* @param goblinNftExCodes
* @return
*/
int addGoblinNftExCodes(@Param("goblinNftExCodes") List<GoblinNftExCode> goblinNftExCodes);
/**
* 根据活动ids查询
* @param activityIds
* @return
*/
List<GoblinNftExCode> selectByActivityIds(@Param("activityIds") String activityIds);
/**
* 条件查询 兑换码
* @param goblinNftExCode
* @return
*/
List<GoblinNftExCode> selectGoblinNftCode(GoblinNftExCode goblinNftExCode);
}
package com.liquidnet.service.goblin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.goblin.entity.GoblinNftExSku;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* NFT兑换活动关联SKU表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2022-04-19
*/
@Repository
public interface GoblinNftExSkuMapper extends BaseMapper<GoblinNftExSku> {
/**
* 批量添加兑换活动和sku的关联
* @param goblinNftExSkus
* @return
*/
int addGoblinNftExSkus(@Param("goblinNftExSkus") List<GoblinNftExSku> goblinNftExSkus);
/**
* 根据活动ids查询兑换和sku关联信息
* @param activityIds
* @return
*/
List<GoblinNftExSku> selectGoblinNftExSkuByActivityIds(@Param("activityIds")String activityIds);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.goblin.mapper.GoblinNftExActivityMapper">
<resultMap id="BaseResult" type="com.liquidnet.service.goblin.dto.vo.GoblinNftExActivityVo">
<result column="activity_id" property="activityId"/>
<result column="title" property="title"/>
<result column="created_at" property="createdAt"/>
<result column="updated_at" property="updatedAt"/>
</resultMap>
<select id="selectPageList" resultMap="BaseResult">
select activity_id,title,created_at from goblin_nft_ex_activity
<where>
<if test="title != null and title != ''">
<bind name="likeTitle" value="'%'+title+'%'"/>
and title like #{likeTitle}
</if>
<if test="startTime != null">
and created_at &gt; #{startTime}
</if>
<if test="endTime != null">
and created_at &lt; #{endTime}
</if>
</where>
</select>
<insert id="addGoblinNftExActivity" parameterType="com.liquidnet.service.goblin.dto.vo.GoblinNftExActivityVo">
insert into goblin_nft_ex_activity
(
<if test="activityId != null and activityId != null">
activity_id,
</if>
<if test="title != null and title != ''">
title,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at
</if>
) values(
<if test="activityId != null and activityId != null">
#{activityId},
</if>
<if test="title != null and title != ''">
#{title},
</if>
<if test="createdAt != null">
#{createdAt},
</if>
<if test="updatedAt != null">
#{updatedAt}
</if>)
</insert>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.goblin.mapper.GoblinNftExCodeMapper">
<resultMap id="BeseResult" type="com.liquidnet.service.goblin.dto.vo.GoblinNftExCodeVo">
<result column="code_id" property="codeId"/>
<result column="activity_id" property="activityId"/>
<result column="code" property="code"/>
<result column="sku_id" property="skuId"/>
<result column="state" property="state"/>
<result column="redeem_uid" property="redeemUid"/>
<result column="redeem_at" property="redeemAt"/>
<result column="admin_uid" property="adminUid"/>
<result column="created_at" property="createdAt"/>
<result column="updated_at" property="updatedAt"/>
</resultMap>
<insert id="addGoblinNftExCodes">
insert into goblin_nft_ex_code (code_id,activity_id,code,sku_id,state,created_at)
values
<foreach collection="goblinNftExCodeVos" item="goblinNftExCodeVo" separator=",">
(
#{codeId},
#{activityId},
#{code},
#{skuId},
#{state},
#{createdAt}
)
</foreach>
</insert>
<select id="selectGoblinNftCode" parameterType="com.liquidnet.service.goblin.dto.vo.GoblinNftExCodeVo"
resultMap="BeseResult">
select code_id,code,sku_id from goblin_nft_ex_code
<where>
<if test="code != null and code != ''">
and code = #{code}
</if>
<if test="activityId != null and activityId != null">
and activity_id = #{activityId}
</if>
<if test="state != null">
and state = #{state}
</if>
<if test="redeemUid != null and redeemUid != ''">
and redeem_uid = #{redeemUid}
</if>
<if test="skuId != null and skuId != ''">
and sku_id in
<foreach collection="skuId.split(',')" item="sId" open="(" separator="," close=")">
#{sId}
</foreach>
</if>
<if test="isDrivi != null">
<choose>
<when test="isDrivi == 1">
and admin_uid is null
</when>
<when test="isDrivi == 2">
and admin_uid is not null
</when>
</choose>
</if>
</where>
</select>
<select id="selectByActivityIds" resultMap="BeseResult">
select code_id,activity_id,state from goblin_nft_ex_code where
activity_id in
<foreach collection="activityIds" item="activityId" open="(" close=")" separator=",">
#{activityId}
</foreach>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.goblin.mapper.GoblinNftExSkuMapper">
<resultMap id="BaseResult" type="">
<result column="activity_id" property="activityId"/>
<result column="sku_id" property="skuId"/>
<result column="ex_start_time" property="exStartTime"/>
<result column="ex_stop_time" property="exStopTime"/>
</resultMap>
<select id="">
</select>
</mapper>
package com.liquidnet.service.platform.controller.goblin.activity;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.param.GoblinNftExActivityParam;
import com.liquidnet.service.goblin.service.IGoblinNftExActivityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
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 javax.validation.Valid;
/**
* @Author: wll
* @Date:Create:in 2022/4/19 2:55 下午
*/
@Api(tags = "nft兑换活动")
@Slf4j
@Validated
@RestController
@RequestMapping("activity")
public class GoblinNftExActivityController {
@Autowired
IGoblinNftExActivityService iGoblinNftExActivityService;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "添加nft兑换活动")
@PostMapping("add")
public ResponseDto<Object> add(@Valid @RequestBody GoblinNftExActivityParam goblinNftExActivityParam){
return ResponseDto.success(iGoblinNftExActivityService.add(goblinNftExActivityParam));
}
@ApiOperationSupport(order = 2)
@ApiOperation(value = "活动列表")
@PostMapping("pageist")
public ResponseDto<Object> pageList(@Valid @RequestBody GoblinNftExActivityParam goblinNftExActivityParam){
return ResponseDto.success(iGoblinNftExActivityService.pageList(goblinNftExActivityParam));
}
}
package com.liquidnet.service.platform.controller.goblin.code;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.param.GoblinNftExCodeParam;
import com.liquidnet.service.goblin.service.IGoblinNftExCodeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
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;
/**
* @Author: wll
* @Description:
* @Date:Create:in 2022/4/19 2:53 下午
*/
@Api(tags = "兑换码")
@Slf4j
@Validated
@RestController
@RequestMapping("code")
public class GoblinNftExCodeController {
@Autowired
IGoblinNftExCodeService iGoblinNftExCodeService;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "根据nft兑换活动获取兑换码")
@PostMapping("selectCodePageList")
public ResponseDto<Object> selectCodePageList(@RequestBody GoblinNftExCodeParam goblinNftExCodeParam){
return ResponseDto.success(iGoblinNftExCodeService.selectCodePageList(goblinNftExCodeParam));
}
}
package com.liquidnet.service.platform.controller.goblin.sku;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.param.GoblinNftExSkuParam;
import com.liquidnet.service.goblin.service.IGoblinNftExSkuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
/**
* @Author: wll
* @Date:Create:in 2022/4/19 2:56 下午
*/
@Api(tags = "nft兑换活动和sku关联")
@Slf4j
@Validated
@RestController
@RequestMapping("sk")
public class GoblinNftExSkuController {
@Autowired
IGoblinNftExSkuService iGoblinNftExSkuService;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "添加nft兑换和sku的关联")
@RequestMapping("add")
public ResponseDto<Object> add(@Valid @RequestBody List<GoblinNftExSkuParam> goblinNftExSkuParams){
return ResponseDto.success(iGoblinNftExSkuService.add(goblinNftExSkuParams));
}
}
package com.liquidnet.service.platform.service.impl.goblin;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.goblin.entity.GoblinNftExActivity;
import com.liquidnet.service.goblin.entity.GoblinNftExCode;
import com.liquidnet.service.goblin.mapper.GoblinNftExActivityMapper;
import com.liquidnet.service.goblin.mapper.GoblinNftExCodeMapper;
import com.liquidnet.service.goblin.param.GoblinNftExActivityParam;
import com.liquidnet.service.goblin.service.IGoblinNftExActivityService;
import com.liquidnet.service.platform.utils.GoblinRedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author: wll
* @Description: nft兑换活动服务实现
* @Date:Create:in 2022/4/19 4:35 下午
*/
@Service
@Slf4j
public class GoblinNftExActivityServiceImpl implements IGoblinNftExActivityService {
@Autowired
private GoblinNftExActivityMapper goblinNftExActivityMapper;
@Autowired
private GoblinRedisUtils goblinRedisUtils;
@Autowired
private GoblinNftExCodeMapper goblinNftExCodeMapper;
@Override
public String add(GoblinNftExActivityParam goblinNftExActivityParam) {
// 获取活动列表
List<GoblinNftExActivity> goblinNftExActivities = goblinRedisUtils.getActivitySku();
LocalDateTime now = LocalDateTime.now();
GoblinNftExActivity goblinNftExActivity = GoblinNftExActivity.getNew();
BeanUtils.copyProperties(goblinNftExActivityParam, goblinNftExActivity);
goblinNftExActivity.setActivityId(IDGenerator.nextSnowId());
goblinNftExActivity.setCreatedAt(now);
// mysql数据
goblinNftExActivityMapper.addGoblinNftExActivity(goblinNftExActivity);
// 添加redis数据
// goblinRedisUtils.incrActivitySku(goblinNftExActivities, goblinNftExActivity);
return goblinNftExActivity.getActivityId();
}
@Override
public Object pageList(GoblinNftExActivityParam goblinNftExActivityParam) {
PageHelper.startPage(goblinNftExActivityParam.getPageNum(),20,true);
/*
* 获取分页nft兑换活动数据
*/
List<GoblinNftExActivity> goblinNftExActivities = goblinNftExActivityMapper.selectPageList(goblinNftExActivityParam.getTitle(), goblinNftExActivityParam.getStartTime(),
goblinNftExActivityParam.getEndTime());
StringBuffer activityIds = new StringBuffer();
for (GoblinNftExActivity GoblinNftExActivity : goblinNftExActivities) {
activityIds.append(GoblinNftExActivity.getActivityId()).append(",");
}
if (StringUtil.isNotBlank(activityIds)){
activityIds.deleteCharAt(activityIds.length()-1);
List<GoblinNftExCode> goblinNftExCodes = goblinNftExCodeMapper.selectByActivityIds(activityIds.toString());
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 1:
useNumber++;
break;
default:
unUseNumber++;
}
}
}
goblinNftExActivity.setCountNumber(countNumber);
goblinNftExActivity.setUseNumber(useNumber);
goblinNftExActivity.setUnUseNumber(unUseNumber);
}
}
PageInfo<GoblinNftExActivity> pageInfo = new PageInfo<GoblinNftExActivity>(goblinNftExActivities);
return pageInfo;
}
}
package com.liquidnet.service.platform.service.impl.goblin;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.goblin.entity.GoblinGoodsSku;
import com.liquidnet.service.goblin.entity.GoblinNftExCode;
import com.liquidnet.service.goblin.mapper.GoblinGoodsSkuMapper;
import com.liquidnet.service.goblin.mapper.GoblinNftExCodeMapper;
import com.liquidnet.service.goblin.mapper.GoblinNftExSkuMapper;
import com.liquidnet.service.goblin.param.GoblinNftExCodeParam;
import com.liquidnet.service.goblin.service.IGoblinNftExCodeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author: wll
* @Description:
* @Date:Create:in 2022/4/20 5:36 下午
*/
@Service
@Slf4j
public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
@Autowired
private GoblinGoodsSkuMapper goblinGoodsSkuMapper;
@Autowired
private GoblinNftExCodeMapper goblinNftExCodeMapper;
@Autowired
private GoblinNftExSkuMapper goblinNftExSkuMapper;
@Override
public Object selectCodePageList(GoblinNftExCodeParam goblinNftExCodeParam) {
// 入参
GoblinNftExCode goblinNftExCode = GoblinNftExCode.getNew();
goblinNftExCode.setCode(goblinNftExCodeParam.getCode());
goblinNftExCode.setActivityId(goblinNftExCodeParam.getActivityId());
goblinNftExCode.setState(goblinNftExCodeParam.getState());
goblinNftExCode.setRedeemUid(goblinNftExCodeParam.getUserId());
goblinNftExCode.setIsDrivi(goblinNftExCodeParam.getIsDrivi());
if (StringUtil.isNotBlank(goblinNftExCodeParam.getSkuName())){
// 根据藏品名称获取 skuIds
String skuName = goblinNftExCodeParam.getSkuName();
List<GoblinGoodsSku> goblinGoodsSkus = goblinGoodsSkuMapper.selectSkuLikeName(skuName);
if (goblinGoodsSkus.size() <= 0){
return new PageHelper();
}
StringBuffer skuIds = new StringBuffer();
for (GoblinGoodsSku goblinGoodsSku:goblinGoodsSkus) {
skuIds.append(goblinGoodsSku.getSkuId()).append(",");
}
goblinNftExCode.setSkuId(skuIds.deleteCharAt(skuIds.length()-1).toString());
}
PageHelper.startPage(goblinNftExCodeParam.getPageNum(),20,true);
List<GoblinNftExCode> goblinNftExCodes = goblinNftExCodeMapper.selectGoblinNftCode(goblinNftExCode);
StringBuffer skuIds = new StringBuffer();
StringBuffer acticityIds = new StringBuffer();
for (GoblinNftExCode gnc: goblinNftExCodes) {
skuIds.append(gnc.getSkuId()).append(",");
acticityIds.append(gnc.getActivityId()).append(",");
}
// 批量查询
List<GoblinGoodsSku> goblinNftExCodeList = goblinGoodsSkuMapper.selectByIds(skuIds.toString());
for (GoblinNftExCode gnc: goblinNftExCodes) {
for (GoblinGoodsSku goblinGoodsSku: goblinNftExCodeList) {
if (gnc.getSkuId().equals(goblinGoodsSku.getSkuId())){
gnc.setSktName(goblinGoodsSku.getName());
break;
}
}
}
// 根据活动ids 获取兑换活动和sku的关联
PageInfo<GoblinNftExCode> pageInfo = new PageInfo<>(goblinNftExCodes);
return null;
}
}
package com.liquidnet.service.platform.service.impl.goblin;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.goblin.entity.GoblinNftExCode;
import com.liquidnet.service.goblin.entity.GoblinNftExSku;
import com.liquidnet.service.goblin.mapper.GoblinNftExCodeMapper;
import com.liquidnet.service.goblin.mapper.GoblinNftExSkuMapper;
import com.liquidnet.service.goblin.param.GoblinNftExSkuParam;
import com.liquidnet.service.goblin.service.IGoblinNftExSkuService;
import com.liquidnet.service.platform.utils.GoblinRedisUtils;
import com.liquidnet.service.platform.utils.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: wll
* @Description: nft兑换活动和和sku的关联
* @Date:Create:in 2022/4/19 5:14 下午
*/
@Service
@Slf4j
public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
@Autowired
private GoblinNftExCodeMapper goblinNftExCodeMapper;
@Autowired
private GoblinNftExSkuMapper goblinNftExSkuMapper;
@Autowired
private GoblinRedisUtils goblinRedisUtils;
@Transactional
@Override
public Boolean add(List<GoblinNftExSkuParam> goblinNftExSkuParams) {
LocalDateTime now = LocalDateTime.now();
ArrayList<GoblinNftExSku> goblinNftExSkuArrayList = ObjectUtil.getGoblinNftExSkuArrayList();
ArrayList<GoblinNftExCode> goblinNftExCodeArrayList = ObjectUtil.getGoblinNftExCodeArrayList();
String activityId = "";
// 构建对象
for (GoblinNftExSkuParam goblinNftExSkuParam : goblinNftExSkuParams) {
if (StringUtil.isBlank(activityId)) {
activityId = goblinNftExSkuParam.getActivityId();
}
GoblinNftExSku goblinNftExSku = new GoblinNftExSku();
BeanUtils.copyProperties(goblinNftExSkuParam, goblinNftExSku);
goblinNftExSku.setCreatedAt(now);
// 构建兑换码数量
for (int i = 0; i < goblinNftExSkuParam.getExStock(); i++) {
GoblinNftExCode goblinNftExCode = GoblinNftExCode.getNew();
goblinNftExCode.setCodeId(IDGenerator.nextSnowId());
goblinNftExCode.setActivityId(goblinNftExSkuParam.getActivityId());
goblinNftExCode.setCode("");
goblinNftExCode.setSkuId(goblinNftExSkuParam.getSkuId());
goblinNftExCode.setState(1);
goblinNftExCode.setCreatedAt(now);
goblinNftExCodeArrayList.add(goblinNftExCode);
}
goblinNftExSkuArrayList.add(goblinNftExSku);
}
// redis 数据
// 并联sku信息
List<GoblinNftExSku> goblinNftExSkusVos = goblinRedisUtils.getSku(activityId);
goblinRedisUtils.incrSku(activityId, goblinNftExSkusVos, goblinNftExSkuArrayList);
// 兑换码信息
List<GoblinNftExCode> goblinNftExCodes = goblinRedisUtils.getCode(activityId);
goblinRedisUtils.incrCode(activityId, goblinNftExCodes, goblinNftExCodeArrayList);
goblinNftExSkuMapper.addGoblinNftExSkus(goblinNftExSkuArrayList);
goblinNftExCodeMapper.addGoblinNftExCodes(goblinNftExCodeArrayList);
return null;
}
}
...@@ -7,13 +7,16 @@ import com.liquidnet.commons.lang.util.CollectionUtil; ...@@ -7,13 +7,16 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.goblin.constant.GoblinRedisConst; import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.dto.GoblinStoreMarketDto; import com.liquidnet.service.goblin.dto.GoblinStoreMarketDto;
import com.liquidnet.service.goblin.dto.vo.GoblinOrderSkuVo; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.dto.vo.GoblinStoreOrderVo; import com.liquidnet.service.goblin.entity.GoblinNftExActivity;
import com.liquidnet.service.goblin.entity.GoblinNftExCode;
import com.liquidnet.service.goblin.entity.GoblinNftExSku;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Component @Component
...@@ -164,6 +167,47 @@ public class GoblinRedisUtils { ...@@ -164,6 +167,47 @@ public class GoblinRedisUtils {
} }
} }
public List<GoblinNftExActivity> getActivitySku() {
List<GoblinNftExActivity> goblinNftExActivities = (List<GoblinNftExActivity>)getRedis().get(GoblinRedisConst.NFT_EX_ACTIVITY);
return goblinNftExActivities;
}
public boolean incrActivitySku(List<GoblinNftExActivity> goblinNftExActivities, GoblinNftExActivity GoblinNftExActivity) {
if (goblinNftExActivities == null){
goblinNftExActivities = ObjectUtil.getGoblinNftExActivityArrayList();
}
goblinNftExActivities.add(GoblinNftExActivity);
return getRedis().set(GoblinRedisConst.NFT_EX_ACTIVITY,goblinNftExActivities);
}
public List<GoblinNftExSku> getSku(String activityId) {
String key = GoblinRedisConst.NFT_EX_SKU.concat(activityId);
List<GoblinNftExSku> goblinNftExSkus = (List<GoblinNftExSku>)getRedis().get(key);
return goblinNftExSkus;
}
public boolean incrSku(String activityId, List<GoblinNftExSku> goblinNftExSkusVos, ArrayList<GoblinNftExSku> goblinNftExSkuVoArrayList) {
if (goblinNftExSkusVos == null){
goblinNftExSkusVos =ObjectUtil.getGoblinNftExSkuArrayList();
}
goblinNftExSkusVos.addAll(goblinNftExSkuVoArrayList);
return getRedis().set(GoblinRedisConst.NFT_EX_SKU.concat(activityId), goblinNftExSkusVos);
}
public List<GoblinNftExCode> getCode(String activityId) {
String key = GoblinRedisConst.NFT_EX_CODE.concat(activityId);
return (List<GoblinNftExCode>) getRedis().get(key);
}
public boolean incrCode(String activityId, List<GoblinNftExCode> goblinNftExCodeVos, ArrayList<GoblinNftExCode> goblinNftExCodeVoArrayList) {
if (goblinNftExCodeVos == null){
goblinNftExCodeVos = ObjectUtil.getGoblinNftExCodeArrayList();
}
goblinNftExCodeVos.addAll(goblinNftExCodeVoArrayList);
return getRedis().set(GoblinRedisConst.NFT_EX_CODE.concat(activityId), goblinNftExCodeVos);
}
/* ---------------------------------------- ---------------------------------------- */ /* ---------------------------------------- ---------------------------------------- */
/* ---------------------------------------- ---------------------------------------- */ /* ---------------------------------------- ---------------------------------------- */
/* ---------------------------------------- ---------------------------------------- */ /* ---------------------------------------- ---------------------------------------- */
......
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