From 4bdf4a92da78db51e928f6b76cde027b3a6697f8 Mon Sep 17 00:00:00 2001 From: chengkun <2500338766@qq.com> Date: Thu, 9 Jun 2022 18:26:40 +0800 Subject: [PATCH] =?UTF-8?q?feature1.0.0-img:=E4=BF=AE=E6=94=B9=E5=88=9B?= =?UTF-8?q?=E4=BD=9C=E8=80=85=E6=94=B6=E7=9B=8A=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bnyer/img/constants/RedisKeyConstant.java | 17 +++- .../img/controller/CreatorMiniController.java | 28 ++++++ .../controller/CreatorProfitController.java | 72 ++++++++++++++ .../com/bnyer/img/domain/DownloadLog.java | 48 --------- .../dto/CreatorHandleConfirmProfitDto.java | 25 +++++ .../bnyer/img/dto/CreatorProfitInsertDto.java | 55 +++++++++++ .../bnyer/img/dto/CreatorProfitUpdateDto.java | 79 +++++++++++++++ .../bnyer/img/mapper/CreatorProfitMapper.java | 15 +-- .../bnyer/img/mapper/DownloadLogMapper.java | 9 -- .../img/service/CreatorProfitService.java | 21 +++- .../bnyer/img/service/DownloadLogService.java | 44 --------- .../bnyer/img/service/TiktokImgService.java | 5 +- .../impl/CreatorProfitServiceImpl.java | 98 ++++++++++++++++++- .../service/impl/TiktokImgServiceImpl.java | 8 +- .../CreatorProfitConfirmTypeSyncTask.java | 28 ++++++ .../com/bnyer/img/vo/CreatorPreProfitVo.java | 5 +- .../bnyer/img/mapper/CreatorProfitMapper.xml | 16 +-- .../bnyer/img/mapper/DownloadLogMapper.xml | 20 ---- 18 files changed, 444 insertions(+), 149 deletions(-) create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorProfitController.java delete mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/DownloadLog.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorHandleConfirmProfitDto.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitInsertDto.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitUpdateDto.java delete mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/DownloadLogMapper.java delete mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/DownloadLogService.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CreatorProfitConfirmTypeSyncTask.java delete mode 100644 bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/DownloadLogMapper.xml diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java index 99d74a4..b247918 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java @@ -30,10 +30,25 @@ public class RedisKeyConstant { /** * 抖音小程序图片下载数量键 */ - public static final String TIKTOK_IMG_DOWNLOAD_NUM_KEY = "bnyer.img.tiktok.downloadNum"; + public static final String TIKTOK_IMG_DOWNLOAD_NUM_KEY = "bnyer.img.creator.downloadNum:"; /** * 抖音小程序用户登录键 */ public static final String TIKTOK_USER_LOGIN_KEY = "bnyer.img.tiktok.user:"; + + /** + * 微信小程序艺术家登录键 + */ + public static final String WECHAT_CREATOR_LOGIN_KEY = "bnyer.img.wechat.creator:"; + + /** + * 微信小程序艺术家图片下载键 + */ + public static final String WECHAT_CREATOR_DOWNLOAD_KEY = "bnyer.img.download.creator:"; + + /** + * 微信小程序艺术家邀请键 + */ + public static final String WECHAT_CREATOR_INVITE_KEY = "bnyer.img.invite.creator:"; } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java index 9b9f19b..1502e5b 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java @@ -50,6 +50,9 @@ public class CreatorMiniController extends BaseController { @Autowired private WithdrawLogService withdrawLogService; + @Autowired + private CreatorProfitService creatorProfitService; + //@TokenCheck @ApiOperation(value="成为艺术家") @PostMapping(value = "/insertCreator") @@ -186,4 +189,29 @@ public class CreatorMiniController extends BaseController { log.info("【艺术家小程序】艺术家【{}】申请提现", dto.getCreatorId()); return AjaxResult.success(withdrawLogService.insert(dto.extractParam())); } + + //@TokenCheck + @ApiOperation(value="新增艺术家即将入账收益缓存") + @PostMapping(value = "/insertPreProfit") + public AjaxResult insertPreProfit(@Validated @RequestBody @ApiParam("即将入账对象") CreatorProfitInsertDto dto){ + log.info("【艺术家小程序】新增艺术家即将入账收益缓存参数为:{}", JSON.toJSONString(dto)); + return AjaxResult.success(creatorProfitService.insertCache(dto)); + } + + //@TokenCheck + @ApiOperation(value="艺术家手动确认收益") + @PostMapping(value = "/handleUpdateConfirmType") + public AjaxResult handleUpdateConfirmType(@Validated @RequestBody @ApiParam("手动确认收益对象") CreatorHandleConfirmProfitDto dto){ + log.info("【艺术家小程序】艺术家【{}】手动确认收益id【{}】成功!", dto.getCreatorId(),dto.getId()); + return AjaxResult.success(creatorProfitService.handleUpdateConfirmType(dto.getId(), dto.getCreatorId())); + } + + //@TokenCheck + @ApiOperation(value="查询指定艺术家当天即将入账收益列表") + @GetMapping(value = "/getPreProfitList/{creatorId}") + public AjaxResult getPreProfitList(@PathVariable @ApiParam("艺术家id") Long creatorId){ + log.info("【艺术家小程序】查询指定艺术家id【{}】当天即将入账收益列表",creatorId); + return AjaxResult.success(creatorProfitService.queryFrontPreProfitList(creatorId)); + } + } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorProfitController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorProfitController.java new file mode 100644 index 0000000..dd60700 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorProfitController.java @@ -0,0 +1,72 @@ +package com.bnyer.img.controller; + +import com.alibaba.fastjson.JSON; +import com.bnyer.common.core.web.controller.BaseController; +import com.bnyer.common.core.web.domain.AjaxResult; +import com.bnyer.common.core.web.page.TableDataInfo; +import com.bnyer.img.domain.CreatorProfit; +import com.bnyer.img.dto.CreatorProfitPageDto; +import com.bnyer.img.dto.CreatorProfitUpdateDto; +import com.bnyer.img.dto.StatusDto; +import com.bnyer.img.service.CreatorProfitService; +import com.github.pagehelper.PageHelper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(value = "【图文平台】艺术家收益接口",tags = "【图文平台】艺术家收益接口") +@RestController +@RequestMapping("/img/creatorProfit") +@Slf4j +public class CreatorProfitController extends BaseController { + + @Autowired + private CreatorProfitService creatorProfitService; + + //@RequiresPermissions("system:config:list") + @ApiOperation(value="查询creatorProfit分页") + @PostMapping("/page") + public TableDataInfo pageCreatorProfit(@RequestBody @ApiParam("分页对象") CreatorProfitPageDto dto){ + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + List creatorProfits = creatorProfitService.queryPage(dto); + return getDataTable(creatorProfits); + } + + //@RequiresPermissions("system:config:list") + @ApiOperation(value="修改creatorProfit") + @PostMapping(value = "/update") + public AjaxResult updateCreatorProfit(@Validated @RequestBody @ApiParam("creatorProfit对象") CreatorProfitUpdateDto dto){ + log.debug("【图文平台后台】修改creatorProfit参数为:{}", JSON.toJSONString(dto)); + return AjaxResult.success(creatorProfitService.update(dto.extractParam())); + } + + //@RequiresPermissions("system:config:list") + @ApiOperation(value="删除creatorProfit") + @DeleteMapping(value = "/delete/{ids}") + public AjaxResult deleteCreatorProfit(@PathVariable @ApiParam("主键ids") List ids){ + log.debug("【图文平台后台】删除creatorProfit参数为:{}", JSON.toJSONString(ids)); + return AjaxResult.success(creatorProfitService.delete(ids)); + } + + //@RequiresPermissions("system:config:list") + @ApiOperation(value="查询creatorProfit详情") + @GetMapping(value = "/details/{id}") + public AjaxResult detailsCreatorProfit(@PathVariable @ApiParam("主键id") Long id){ + log.debug("【图文平台后台】查询creatorProfit详情参数为:{}", id); + return AjaxResult.success(creatorProfitService.queryDetails(id)); + } + + //@RequiresPermissions("system:config:list") + @ApiOperation(value="变更type显示状态") + @PostMapping(value = "/changeStatus") + public AjaxResult changeStatus(@Validated @RequestBody @ApiParam("type状态对象") StatusDto dto){ + log.debug("【图文平台后台】变更type参数为:{}", JSON.toJSONString(dto)); + return AjaxResult.success(creatorProfitService.changeIsShow(dto.getId(),dto.getStatus())); + } +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/DownloadLog.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/DownloadLog.java deleted file mode 100644 index ce51b19..0000000 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/DownloadLog.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.bnyer.img.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 lombok.*; - -@ApiModel(value="com-bnyer-img-domain-DownloadLog") -@Getter -@Setter -@ToString -@AllArgsConstructor -@NoArgsConstructor -@TableName(value = "img_download_log") -public class DownloadLog extends BaseDomain { - /** - * 主键id - */ - @TableId(value = "id", type = IdType.INPUT) - @ApiModelProperty(value="主键id") - private Long id; - - /** - * 搜索码 - */ - @TableField(value = "scan_code") - @ApiModelProperty(value="搜索码") - private String scanCode; - - /** - * 渠道(0->抖音;1->快手;2->微信) - */ - @TableField(value = "channel") - @ApiModelProperty(value="渠道(0->抖音;1->快手;2->微信)") - private String channel; - - /** - * 图片id - */ - @TableField(value = "img_id") - @ApiModelProperty(value="图片id") - private Long imgId; - - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorHandleConfirmProfitDto.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorHandleConfirmProfitDto.java new file mode 100644 index 0000000..3327727 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorHandleConfirmProfitDto.java @@ -0,0 +1,25 @@ +package com.bnyer.img.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("艺术家手动确认收益接收类") +public class CreatorHandleConfirmProfitDto implements Serializable { + + @NotNull(message = "艺术家id不能为空!") + @ApiModelProperty(value="id") + private Long id; + + @NotNull(message = "艺术家id不能为空!") + @ApiModelProperty(value="艺术家id") + private Long creatorId; + +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitInsertDto.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitInsertDto.java new file mode 100644 index 0000000..557920f --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitInsertDto.java @@ -0,0 +1,55 @@ +package com.bnyer.img.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; + + +@Getter +@Setter +@ApiModel("艺术家新增权益接收类") +public class CreatorProfitInsertDto implements Serializable { + + @NotNull(message = "艺术家id不能为空!") + @ApiModelProperty(value="艺术家id") + private Long creatorId; + + @NotBlank(message = "收益人/邀请人搜索码不能为空!") + @ApiModelProperty(value="收益人/邀请人搜索码") + private String scanCode; + + @NotNull(message = "图片id不能为空!") + @ApiModelProperty(value="图片id") + private Long imgId; + + @NotBlank(message = "图片地址不能为空!") + @ApiModelProperty(value="图片地址") + private String imgUrl; + + @NotBlank(message = "结算平台不能为空!") + @ApiModelProperty(value="结算平台(0->抖音;1->快手;2->微信;3->uniapp)") + private String platform; + + @NotBlank(message = "应用类型不能为空!") + @ApiModelProperty(value="应用类型(0->bnyer壁纸)") + private String appType; + + @NotBlank(message = "收益类型不能为空!") + @ApiModelProperty(value="收益类型(0->广告浏览;1->邀请;2->会员)") + private String type; + + @NotBlank(message = "收益状态不能为空!") + @ApiModelProperty(value="收益状态(0->即将到账;1->已到账;2->转入钱包)") + private String status; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value="创建时间") + private Date createTime; +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitUpdateDto.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitUpdateDto.java new file mode 100644 index 0000000..38db78d --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitUpdateDto.java @@ -0,0 +1,79 @@ +package com.bnyer.img.dto; + +import com.bnyer.common.core.utils.bean.BeanUtils; +import com.bnyer.img.domain.CreatorProfit; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + + +@Getter +@Setter +@ApiModel("艺术家修改权益接收类") +public class CreatorProfitUpdateDto implements Serializable { + + @ApiModelProperty(value="主键id") + private Long id; + + @ApiModelProperty(value="结算流水号") + private String orderNo; + + @NotNull(message = "艺术家id不能为空!") + @ApiModelProperty(value="艺术家id") + private Long creatorId; + + @NotBlank(message = "收益人/邀请人搜索码不能为空!") + @ApiModelProperty(value="收益人/邀请人搜索码") + private String scanCode; + + @NotNull(message = "图片id不能为空!") + @ApiModelProperty(value="图片id") + private Long imgId; + + @NotNull(message = "结算收益不能为空!") + @ApiModelProperty(value="结算收益(单位毫分)") + private Integer profit; + + @NotBlank(message = "结算平台不能为空!") + @ApiModelProperty(value="结算平台(0->抖音;1->快手;2->微信;3->uniapp)") + private String platform; + + @NotBlank(message = "应用类型不能为空!") + @ApiModelProperty(value="应用类型(0->bnyer壁纸)") + private String appType; + + @NotBlank(message = "收益类型不能为空!") + @ApiModelProperty(value="收益类型(0->广告浏览;1->邀请;2->会员)") + private String type; + + @NotBlank(message = "收益状态不能为空!") + @ApiModelProperty(value="收益状态(0->即将到账;1->已到账;2->转入钱包)") + private String status; + + @NotBlank(message = "确认收益方式不能为空!") + @ApiModelProperty(value="确认收益方式(0->系统自动;1->艺术家手动)") + private String confirmType; + + @NotBlank(message = "艺术家确认收益状态不能为空!") + @ApiModelProperty(value="艺术家确认收益状态(0->待确认;1->已确认)") + private String confirmStatus; + + @NotNull(message = "下载次数不能为空!") + @ApiModelProperty(value="下载次数") + private Integer downloadNum; + + @NotNull(message = "浏览次数不能为空!") + @ApiModelProperty(value="浏览次数") + private Integer viewNum; + + public CreatorProfit extractParam(){ + CreatorProfit creatorProfit = new CreatorProfit(); + BeanUtils.copyProperties(this,creatorProfit); + return creatorProfit; + } +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java index ab6e88e..e3ed9ae 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java @@ -8,6 +8,8 @@ import com.bnyer.img.vo.CreatorTransIntoProfitVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author chengkun * @date 2022/6/8 10:51 @@ -15,13 +17,6 @@ import org.apache.ibatis.annotations.Param; @Mapper public interface CreatorProfitMapper extends BaseMapper { - /** - * 小程序艺术家查询昨日即将入账收益 - * @param creatorId 艺术家id - * @return - - */ - CreatorPreProfitVo queryFrontPreProfit(@Param("creatorId") Long creatorId); - /** * 小程序艺术家查询昨日入场收益 * @param creatorId 艺术家id @@ -35,4 +30,10 @@ public interface CreatorProfitMapper extends BaseMapper { * @return - */ CreatorTransIntoProfitVo queryFrontTransIntoProfit(@Param("creatorId")Long creatorId); + + /** + * 批量系统修改确认收益状态 + * @param params id列表 + */ + void batchUpdate(@Param("params") List params); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/DownloadLogMapper.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/DownloadLogMapper.java deleted file mode 100644 index 27b3149..0000000 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/DownloadLogMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.bnyer.img.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.bnyer.img.domain.DownloadLog; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface DownloadLogMapper extends BaseMapper { -} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java index 10ad3c5..917936a 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java @@ -1,6 +1,7 @@ package com.bnyer.img.service; import com.bnyer.img.domain.CreatorProfit; +import com.bnyer.img.dto.CreatorProfitInsertDto; import com.bnyer.img.dto.CreatorProfitPageDto; import com.bnyer.img.vo.CreatorIncomeProfitVo; import com.bnyer.img.vo.CreatorPreProfitVo; @@ -15,12 +16,19 @@ import java.util.List; */ public interface CreatorProfitService { + /** + * 新增即将入账收益 + * @param params 收益参数 + * @return - + */ + boolean insertCache(CreatorProfitInsertDto params); + /** * 新增收益结算 - * @param creatorProfit 收益对象 + * @param creatorId 艺术家id * @return - */ - int insert(CreatorProfit creatorProfit); + int insert(Long creatorId); /** * 修改结算收益 @@ -67,11 +75,16 @@ public interface CreatorProfitService { int handleUpdateConfirmType(Long id,Long creatorId); /** - * 小程序查询当天即将入账收益 + * 批量系统修改确认收益状态 + */ + void batchUpdateConfirmType(); + + /** + * 小程序查询当天即将入账收益列表 * @param creatorId 艺术家id * @return - */ - CreatorPreProfitVo queryFrontPreProfit(Long creatorId); + List queryFrontPreProfitList(Long creatorId); /** * 小程序查询昨日已入账收益 diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/DownloadLogService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/DownloadLogService.java deleted file mode 100644 index a4387d7..0000000 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/DownloadLogService.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.bnyer.img.service; - -import com.bnyer.img.domain.DownloadLog; -import com.bnyer.img.domain.VerifyLog; -import com.bnyer.img.dto.DownloadLogPageDto; -import com.bnyer.img.dto.VerifyPageDto; -import com.bnyer.img.vo.VerifyLogVo; - -import java.util.List; - -/** - * @author chengkun - * @date 2022/5/31 10:37 - */ -public interface DownloadLogService { - - /** - * 新增下载记录 - * @param downloadLog 记录参数 - * @return - - */ - int insertDownloadLog(DownloadLog downloadLog); - - /** - * 查询下载记录分页 - * @param params 分页参数 - * @return - - */ - List queryPage(DownloadLogPageDto params); - - /** - * 删除记录 - * @param ids 主键ids - * @return - - */ - int delete(List ids); - - /** - * 根据艺术家id查询下载状态记录 - * @param creatorId 艺术家id - * @return - - */ - VerifyLogVo queryVerifyStatus(Long creatorId); -} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/TiktokImgService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/TiktokImgService.java index 4684598..34f7dce 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/TiktokImgService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/TiktokImgService.java @@ -92,9 +92,12 @@ public interface TiktokImgService { /** * 图片下载数量写入缓存 + * @param creatorId 艺术家id + * @param appType 应用 * @param imgId 图片id + * @param platform 平台 */ - void writeDownloadNum(Long imgId); + void writeDownloadNum(Long creatorId,String appType,Long imgId,String platform); /** * 同步图片下载数量到db diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java index e0f9d26..e4dd4fe 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java @@ -1,12 +1,18 @@ package com.bnyer.img.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.bnyer.common.core.utils.StringUtils; +import com.bnyer.common.redis.service.RedisService; +import com.bnyer.img.constants.RedisKeyConstant; import com.bnyer.img.domain.CreatorProfit; +import com.bnyer.img.dto.CreatorProfitInsertDto; import com.bnyer.img.dto.CreatorProfitPageDto; import com.bnyer.img.mapper.CreatorProfitMapper; import com.bnyer.img.service.CreatorProfitService; +import com.bnyer.img.service.TiktokImgService; import com.bnyer.img.vo.CreatorIncomeProfitVo; import com.bnyer.img.vo.CreatorPreProfitVo; import com.bnyer.img.vo.CreatorTransIntoProfitVo; @@ -16,8 +22,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; @Service @Slf4j @@ -26,12 +34,43 @@ public class CreatorProfitServiceImpl implements CreatorProfitService { @Autowired private CreatorProfitMapper creatorProfitMapper; + @Autowired + private RedisService redisService; + + @Autowired + private TiktokImgService tiktokImgService; + + @Override + public boolean insertCache(CreatorProfitInsertDto params) { + String redisKey = RedisKeyConstant.WECHAT_CREATOR_DOWNLOAD_KEY + params.getCreatorId(); + String hashKey = params.getAppType()+":"+params.getImgId()+":"+params.getPlatform(); + try{ + if(!redisService.hasHashKey(redisKey,hashKey)){ + //写入入账缓存 + params.setCreateTime(new Date()); + redisService.setCacheMapValue(redisKey,hashKey, JSON.toJSON(params)); + log.info("艺术家id【{}】平台【{}】的图片【{}】被下载了,写入即将入账缓存成功!", + params.getCreatorId(),params.getPlatform(),params.getImgId()); + } + //写入图片下载量缓存 + tiktokImgService.writeDownloadNum(params.getCreatorId(),params.getAppType(),params.getImgId(),params.getPlatform()); + return true; + }catch (Exception e){ + log.error("写入即将入账缓存失败!失败原因为:",e); + return false; + } + } + @Override @Transactional(rollbackFor = Exception.class) - public int insert(CreatorProfit creatorProfit) { + public int insert(Long creatorId) { + //TODO 确认收益后讲缓存中信息写入数据库,删除对应缓存 + List creatorPreProfitVos = this.queryFrontPreProfitList(creatorId); + CreatorProfit creatorProfit = new CreatorProfit(); creatorProfit.setCreateTime(new Date()); creatorProfit.setUpdateTime(new Date()); - creatorProfit.setStatus("0"); + creatorProfit.setIncomeTime(new Date()); + creatorProfit.setStatus("1"); creatorProfit.setConfirmStatus("0"); creatorProfit.setIsShow("1"); creatorProfit.setSort(0); @@ -111,12 +150,63 @@ public class CreatorProfitServiceImpl implements CreatorProfitService { CreatorProfit creatorProfit = new CreatorProfit(); creatorProfit.setConfirmStatus("1"); creatorProfit.setConfirmType("1"); + creatorProfit.setConfirmTime(new Date()); return creatorProfitMapper.update(creatorProfit, wrapper); } @Override - public CreatorPreProfitVo queryFrontPreProfit(Long creatorId) { - return creatorProfitMapper.queryFrontPreProfit(creatorId); + public void batchUpdateConfirmType() { + log.info("==============批量更新艺术家收益状态开始!==============="); + long startTime = System.currentTimeMillis(); + //查询收益表,获取所有状态为'未确认'的id + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(CreatorProfit::getConfirmStatus, "0"); + List creatorProfits = creatorProfitMapper.selectList(wrapper); + List idList = new ArrayList<>(); + for (CreatorProfit creatorProfit : creatorProfits) { + idList.add(creatorProfit.getId()); + } + //批量更新收益表确认收益状态 + creatorProfitMapper.batchUpdate(idList); + log.info("==============批量更新艺术家收益状态完成,耗时【{}】毫秒!===============",System.currentTimeMillis() - startTime); + } + + @Override + public List queryFrontPreProfitList(Long creatorId) { + String redisKey = RedisKeyConstant.WECHAT_CREATOR_DOWNLOAD_KEY + creatorId; + String imgKey = RedisKeyConstant.TIKTOK_IMG_DOWNLOAD_NUM_KEY + creatorId; + //获取基础图片信息 + List list = new ArrayList<>(); + try{ + if(redisService.hasKey(redisKey)){ + CreatorPreProfitVo profitVo = null; + Map cacheMap = redisService.getCacheMap(redisKey); + for (Map.Entry stringObjectEntry : cacheMap.entrySet()) { + JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(stringObjectEntry.getValue())); + profitVo = new CreatorPreProfitVo(); + profitVo.setCreatorId(creatorId); + profitVo.setImgId(Long.valueOf(jsonObject.getString("imgId"))); + profitVo.setImgUrl(jsonObject.getString("imgUrl")); + profitVo.setAppType(jsonObject.getString("appType")); + profitVo.setType(jsonObject.getString("type")); + profitVo.setPlatform(jsonObject.getString("platform")); + profitVo.setScanCode(jsonObject.getString("scanCode")); + profitVo.setStatus(jsonObject.getString("status")); + profitVo.setCreateTime(new Date(Long.parseLong(jsonObject.getString("createTime")))); + //获取图片下载量 + if(redisService.hasHashKey(imgKey,stringObjectEntry.getKey())){ + Integer downloadNum = (Integer) redisService.getCacheMapValue(imgKey, stringObjectEntry.getKey()); + profitVo.setDownloadNum(downloadNum); + } + list.add(profitVo); + } + } + }catch (Exception e){ + log.error("艺术家查询即将入账收益失败,错误为:",e); + return null; + } + + return list; } @Override diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokImgServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokImgServiceImpl.java index ff36e04..548841c 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokImgServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokImgServiceImpl.java @@ -146,9 +146,11 @@ public class TiktokImgServiceImpl implements TiktokImgService { } @Override - public void writeDownloadNum(Long imgId) { - String redisKey = RedisKeyConstant.TIKTOK_IMG_DOWNLOAD_NUM_KEY; - redisService.hashIncr(redisKey,String.valueOf(imgId), 1); + public void writeDownloadNum(Long creatorId,String appType,Long imgId,String platform) { + String redisKey = RedisKeyConstant.TIKTOK_IMG_DOWNLOAD_NUM_KEY + creatorId; + String hashKey = appType+":"+imgId+":"+platform; + redisService.hashIncr(redisKey,hashKey, 1); + log.info("应用【{}】的图片id【{}】平台【{}】下载量+1",appType,imgId,platform); } @Override diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CreatorProfitConfirmTypeSyncTask.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CreatorProfitConfirmTypeSyncTask.java new file mode 100644 index 0000000..669fbb0 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CreatorProfitConfirmTypeSyncTask.java @@ -0,0 +1,28 @@ +package com.bnyer.img.task; + +import com.bnyer.img.service.CreatorProfitService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import com.xxl.job.core.log.XxlJobLogger; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author chengkun + * @date 2022/5/12 18:13 + */ +@Component +@Slf4j +public class CreatorProfitConfirmTypeSyncTask { + + @Autowired + private CreatorProfitService creatorProfitService; + + @XxlJob("creatorProfitConfirmTypeSyncTask") + public ReturnT syncUpdateConfirmType(String param) throws Exception { + creatorProfitService.batchUpdateConfirmType(); + XxlJobLogger.log("{} 我执行了批量更新艺术家收益状态任务", System.currentTimeMillis()); + return ReturnT.SUCCESS; + } +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorPreProfitVo.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorPreProfitVo.java index 46e32bd..2f5113f 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorPreProfitVo.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorPreProfitVo.java @@ -14,8 +14,6 @@ import java.util.Date; @Setter @ApiModel("艺术家即将入账收益响应体") public class CreatorPreProfitVo implements Serializable { - @ApiModelProperty(value="主键id") - private Long id; @ApiModelProperty(value="艺术家id") private Long creatorId; @@ -26,6 +24,9 @@ public class CreatorPreProfitVo implements Serializable { @ApiModelProperty(value="图片id") private Long imgId; + @ApiModelProperty(value="图片地址") + private String imgUrl; + @ApiModelProperty(value="结算平台(0->抖音;1->快手;2->微信;3->uniapp)") private String platform; diff --git a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml index a2b0a2b..7a5034b 100644 --- a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml +++ b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml @@ -33,12 +33,6 @@ wallet_time, update_time, sort - + + + update img_creator_profit + set confirm_type = '0',confirm_status = '1',confirm_time = now() + where id in + + #{item.id} + + + diff --git a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/DownloadLogMapper.xml b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/DownloadLogMapper.xml deleted file mode 100644 index 551b626..0000000 --- a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/DownloadLogMapper.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - id, scan_code, channel, img_id, create_time, update_time, sort,is_show - - \ No newline at end of file