10 changed files with 365 additions and 0 deletions
@ -0,0 +1,68 @@ |
|||
package com.bnyer.common.core.domain; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Getter; |
|||
import lombok.NoArgsConstructor; |
|||
import lombok.Setter; |
|||
import lombok.ToString; |
|||
|
|||
@ApiModel(value="com-bnyer-common-core-domain-CdkLog") |
|||
@Getter |
|||
@Setter |
|||
@ToString |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
@TableName(value = "img_cdk_log") |
|||
public class CdkLog implements Serializable { |
|||
/** |
|||
* 主键id |
|||
*/ |
|||
@TableId(value = "id", type = IdType.ASSIGN_ID) |
|||
@ApiModelProperty(value="主键id") |
|||
private Long id; |
|||
|
|||
/** |
|||
* 兑换码 |
|||
*/ |
|||
@TableField(value = "cdk") |
|||
@ApiModelProperty(value="兑换码") |
|||
private String cdk; |
|||
|
|||
/** |
|||
* 用户id |
|||
*/ |
|||
@TableField(value = "user_id") |
|||
@ApiModelProperty(value="用户id") |
|||
private Long userId; |
|||
|
|||
/** |
|||
* 平台(0->Hub;1->抖音;2->快手;3->微信) |
|||
*/ |
|||
@TableField(value = "`source`") |
|||
@ApiModelProperty(value="平台(0->Hub;1->抖音;2->快手;3->微信)") |
|||
private String source; |
|||
|
|||
/** |
|||
* 是否显示 (0->隐藏;1->显示) |
|||
*/ |
|||
@TableField(value = "is_show") |
|||
@ApiModelProperty(value="是否显示 (0->隐藏;1->显示)") |
|||
private String isShow; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
@TableField(value = "create_time") |
|||
@ApiModelProperty(value="创建时间") |
|||
private Date createTime; |
|||
|
|||
private static final long serialVersionUID = 1L; |
|||
} |
|||
@ -0,0 +1,89 @@ |
|||
package com.bnyer.common.core.domain; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Getter; |
|||
import lombok.NoArgsConstructor; |
|||
import lombok.Setter; |
|||
import lombok.ToString; |
|||
|
|||
@ApiModel(value="com-bnyer-common-core-domain-PaintCdk") |
|||
@Getter |
|||
@Setter |
|||
@ToString |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
@TableName(value = "img_paint_cdk") |
|||
public class PaintCdk implements Serializable { |
|||
/** |
|||
* 主键Id |
|||
*/ |
|||
@TableId(value = "id", type = IdType.ASSIGN_ID) |
|||
@ApiModelProperty(value="主键Id") |
|||
private Long id; |
|||
|
|||
/** |
|||
* 兑换码 |
|||
*/ |
|||
@TableField(value = "cdk") |
|||
@ApiModelProperty(value="兑换码") |
|||
private String cdk; |
|||
|
|||
/** |
|||
* 兑换次数 |
|||
*/ |
|||
@TableField(value = "paint_num") |
|||
@ApiModelProperty(value="兑换次数") |
|||
private String paintNum; |
|||
|
|||
/** |
|||
* 是否显示 (0->隐藏;1->显示) |
|||
*/ |
|||
@TableField(value = "is_show") |
|||
@ApiModelProperty(value="是否显示 (0->隐藏;1->显示)") |
|||
private String isShow; |
|||
|
|||
/** |
|||
* 是否使用 (0->未使用;1->已使用) |
|||
*/ |
|||
@TableField(value = "is_use") |
|||
@ApiModelProperty(value="是否使用 (0->未使用;1->已使用)") |
|||
private String isUse; |
|||
|
|||
/** |
|||
* 平台(0->Hub;1->抖音;2->快手;3->微信) |
|||
*/ |
|||
@TableField(value = "`source`") |
|||
@ApiModelProperty(value="平台(0->Hub;1->抖音;2->快手;3->微信)") |
|||
private String source; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
@TableField(value = "create_time") |
|||
@ApiModelProperty(value="创建时间") |
|||
private Date createTime; |
|||
|
|||
/** |
|||
* 更新时间 |
|||
*/ |
|||
@TableField(value = "update_time") |
|||
@ApiModelProperty(value="更新时间") |
|||
private Date updateTime; |
|||
|
|||
/** |
|||
* 序号 |
|||
*/ |
|||
@TableField(value = "sort") |
|||
@ApiModelProperty(value="序号") |
|||
private Integer sort; |
|||
|
|||
private static final long serialVersionUID = 1L; |
|||
} |
|||
@ -0,0 +1,28 @@ |
|||
package com.bnyer.common.core.dto; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Getter; |
|||
import lombok.Setter; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import java.io.Serializable; |
|||
|
|||
|
|||
@Getter |
|||
@Setter |
|||
@ApiModel("使用cdk接收类") |
|||
public class PaintCdkUseDto implements Serializable { |
|||
|
|||
@NotNull(message = "兑换码不能为空!") |
|||
@ApiModelProperty(value="兑换码") |
|||
private String cdk; |
|||
|
|||
@NotNull(message = "用户id不能为空!") |
|||
@ApiModelProperty(value="用户id") |
|||
private Long userId; |
|||
|
|||
@NotNull(message = "平台渠道不能为空!") |
|||
@ApiModelProperty(value="平台(0->通用;1->抖音;2->快手;3->微信)") |
|||
private String source; |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package com.bnyer.img.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.bnyer.common.core.domain.CdkLog; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CdkLogMapper extends BaseMapper<CdkLog> { |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package com.bnyer.img.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.bnyer.common.core.domain.PaintCdk; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface PaintCdkMapper extends BaseMapper<PaintCdk> { |
|||
} |
|||
@ -0,0 +1,29 @@ |
|||
package com.bnyer.img.service; |
|||
|
|||
import com.bnyer.common.core.domain.PaintCdk; |
|||
|
|||
public interface PaintCdkService { |
|||
|
|||
/** |
|||
* 生成不同平台的cdk |
|||
* @param source 平台 |
|||
* @param paintNum 兑换次数 |
|||
*/ |
|||
void generatorCdk(String source,int paintNum); |
|||
|
|||
/** |
|||
* 根据平台检查cdk是否使用 |
|||
* @param cdk 兑换码 |
|||
* @param source 平台 |
|||
* @return - |
|||
*/ |
|||
PaintCdk checkCdk(String cdk, String source); |
|||
|
|||
/** |
|||
* 兑换cdk |
|||
* @param cdk 兑换码 |
|||
* @param source 平台 |
|||
* @param userId 用户id |
|||
*/ |
|||
void useCdk(String cdk,String source,Long userId); |
|||
} |
|||
@ -0,0 +1,76 @@ |
|||
package com.bnyer.img.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.bnyer.common.core.domain.CdkLog; |
|||
import com.bnyer.common.core.domain.PaintCdk; |
|||
import com.bnyer.common.core.exception.ServiceException; |
|||
import com.bnyer.common.core.utils.uuid.IdUtils; |
|||
import com.bnyer.img.mapper.CdkLogMapper; |
|||
import com.bnyer.img.mapper.PaintCdkMapper; |
|||
import com.bnyer.img.service.PaintCdkService; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import java.util.Date; |
|||
|
|||
@Service |
|||
@Slf4j |
|||
public class PaintCdkServiceImpl implements PaintCdkService { |
|||
|
|||
@Autowired |
|||
private PaintCdkMapper paintCdkMapper; |
|||
|
|||
@Autowired |
|||
private CdkLogMapper cdkLogMapper; |
|||
|
|||
@Override |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public void generatorCdk(String source,int paintNum) { |
|||
for (int i = 0; i < 50; i++) { |
|||
String cdk = IdUtils.fastSimpleUUID().toUpperCase(); |
|||
PaintCdk paintCdk = new PaintCdk(); |
|||
paintCdk.setCreateTime(new Date()); |
|||
paintCdk.setIsShow("1"); |
|||
paintCdk.setIsUse("0"); |
|||
paintCdk.setSort(0); |
|||
paintCdk.setUpdateTime(new Date()); |
|||
paintCdk.setSource(source); |
|||
paintCdk.setCdk(cdk); |
|||
paintCdkMapper.insert(paintCdk); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public PaintCdk checkCdk(String cdk, String source) { |
|||
LambdaQueryWrapper<PaintCdk> wrapper = new LambdaQueryWrapper<>(); |
|||
wrapper.eq(PaintCdk::getSource, source); |
|||
wrapper.eq(PaintCdk::getCdk, cdk); |
|||
wrapper.eq(PaintCdk::getIsUse, "0"); |
|||
return paintCdkMapper.selectOne(wrapper); |
|||
} |
|||
|
|||
@Override |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public void useCdk(String cdk, String source,Long userId) { |
|||
//检查cdk是否被使用过
|
|||
PaintCdk paintCdk = checkCdk(cdk, source); |
|||
if(paintCdk == null){ |
|||
throw new ServiceException("该兑换码已被使用!"); |
|||
}else{ |
|||
//TODO 增加用户绘画次数
|
|||
//修改cdk状态
|
|||
paintCdk.setIsUse("1"); |
|||
paintCdkMapper.updateById(paintCdk); |
|||
//写入使用记录
|
|||
CdkLog cdkLog = new CdkLog(); |
|||
cdkLog.setCreateTime(new Date()); |
|||
cdkLog.setSource(source); |
|||
cdkLog.setIsShow("1"); |
|||
cdkLog.setCdk(cdk); |
|||
cdkLog.setUserId(userId); |
|||
cdkLogMapper.insert(cdkLog); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,18 @@ |
|||
<?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.bnyer.img.mapper.CdkLogMapper"> |
|||
<resultMap id="BaseResultMap" type="com.bnyer.common.core.domain.CdkLog"> |
|||
<!--@mbg.generated--> |
|||
<!--@Table img_cdk_log--> |
|||
<id column="id" jdbcType="BIGINT" property="id" /> |
|||
<result column="cdk" jdbcType="VARCHAR" property="cdk" /> |
|||
<result column="user_id" jdbcType="BIGINT" property="userId" /> |
|||
<result column="source" jdbcType="CHAR" property="source" /> |
|||
<result column="is_show" jdbcType="CHAR" property="isShow" /> |
|||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> |
|||
</resultMap> |
|||
<sql id="Base_Column_List"> |
|||
<!--@mbg.generated--> |
|||
id, cdk, user_id, `source`, is_show, create_time |
|||
</sql> |
|||
</mapper> |
|||
@ -0,0 +1,21 @@ |
|||
<?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.bnyer.img.mapper.PaintCdkMapper"> |
|||
<resultMap id="BaseResultMap" type="com.bnyer.common.core.domain.PaintCdk"> |
|||
<!--@mbg.generated--> |
|||
<!--@Table img_paint_cdk--> |
|||
<id column="id" jdbcType="BIGINT" property="id" /> |
|||
<result column="cdk" jdbcType="VARCHAR" property="cdk" /> |
|||
<result column="paint_num" jdbcType="INTEGER" property="paintNum" /> |
|||
<result column="is_show" jdbcType="CHAR" property="isShow" /> |
|||
<result column="is_use" jdbcType="CHAR" property="isUse" /> |
|||
<result column="source" jdbcType="CHAR" property="source" /> |
|||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> |
|||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" /> |
|||
<result column="sort" jdbcType="INTEGER" property="sort" /> |
|||
</resultMap> |
|||
<sql id="Base_Column_List"> |
|||
<!--@mbg.generated--> |
|||
id, cdk, is_show, is_use, `source`, create_time, update_time, sort,paint_num |
|||
</sql> |
|||
</mapper> |
|||
Loading…
Reference in new issue