diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/CdkLog.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/CdkLog.java new file mode 100644 index 0000000..19a692f --- /dev/null +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/CdkLog.java @@ -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; +} \ No newline at end of file diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/PaintCdk.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/PaintCdk.java new file mode 100644 index 0000000..345eb90 --- /dev/null +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/PaintCdk.java @@ -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; +} \ No newline at end of file diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PaintCdkUseDto.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PaintCdkUseDto.java new file mode 100644 index 0000000..f5d66f8 --- /dev/null +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/PaintCdkUseDto.java @@ -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; +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java index 4eb6bce..756463d 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.bnyer.common.core.constant.TiktokConstant; import com.bnyer.common.core.domain.Feedback; +import com.bnyer.common.core.domain.PaintCdk; import com.bnyer.common.core.domain.R; import com.bnyer.common.core.dto.*; import com.bnyer.common.core.web.controller.BaseController; @@ -92,6 +93,9 @@ public class TiktokMiniController extends BaseController { @Autowired private AiPaintService aiPaintService; + @Autowired + private PaintCdkService paintCdkService; + @ApiOperation(value="查询banner列表") @GetMapping(value = "/listBanner") public AjaxResult listBanner(){ @@ -441,4 +445,18 @@ public class TiktokMiniController extends BaseController { List aiPaintList = aiPaintService.queryPage(dto); return getDataTable(aiPaintList); } + + @ApiOperation(value="生成cdk") + @PostMapping(value = "/generatorCdk/{paintNum}") + public AjaxResult generatorCdk(@PathVariable int paintNum){ + paintCdkService.generatorCdk("1",paintNum); + return AjaxResult.success(); + } + + @ApiOperation(value="使用cdk") + @PostMapping(value = "/useCdk") + public AjaxResult useCdk(@Validated @RequestBody @ApiParam("ai绘画对象") PaintCdkUseDto dto){ + paintCdkService.useCdk(dto.getCdk(),dto.getSource(),dto.getUserId()); + return AjaxResult.success(); + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CdkLogMapper.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CdkLogMapper.java new file mode 100644 index 0000000..bf8da0a --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CdkLogMapper.java @@ -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 { +} \ No newline at end of file diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/PaintCdkMapper.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/PaintCdkMapper.java new file mode 100644 index 0000000..16ca7d4 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/PaintCdkMapper.java @@ -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 { +} \ No newline at end of file diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/PaintCdkService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/PaintCdkService.java new file mode 100644 index 0000000..7d93b98 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/PaintCdkService.java @@ -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); +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/PaintCdkServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/PaintCdkServiceImpl.java new file mode 100644 index 0000000..b496cc7 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/PaintCdkServiceImpl.java @@ -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 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); + } + } +} diff --git a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CdkLogMapper.xml b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CdkLogMapper.xml new file mode 100644 index 0000000..89ac854 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CdkLogMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + id, cdk, user_id, `source`, is_show, create_time + + \ No newline at end of file diff --git a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/PaintCdkMapper.xml b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/PaintCdkMapper.xml new file mode 100644 index 0000000..6160df0 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/PaintCdkMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + id, cdk, is_show, is_use, `source`, create_time, update_time, sort,paint_num + + \ No newline at end of file