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