Browse Source

feature:添加画意值奖励mq

feature-1.1
Penny 3 years ago
parent
commit
13ff48c720
  1. 9
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/VipOrder.java
  2. 12
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/GoldEnum.java
  3. 5
      bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/constant/RocketMqTopic.java
  4. 36
      bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/domain/img/GoldRewardMessage.java
  5. 152
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/listener/GoldRewardConsumer.java
  6. 67
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java
  7. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/StableDiffusionServiceImpl.java
  8. 31
      bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java

9
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/VipOrder.java

@ -1,19 +1,14 @@
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 com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.math.BigDecimal;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @author :WXC

12
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/enums/GoldEnum.java → bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/GoldEnum.java

@ -1,9 +1,10 @@
package com.bnyer.img.enums;
package com.bnyer.common.core.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 画意值枚举类
* @author chengkun
* @date 2023/05/16 17:46
*/
@ -21,4 +22,13 @@ public enum GoldEnum {
private String code;
private String value;
public static String getValueByCode(String code) {
for (GoldEnum s : GoldEnum.values()) {
if (code.equals(s.code)) {
return s.getValue();
}
}
return null;
}
}

5
bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/constant/RocketMqTopic.java

@ -22,4 +22,9 @@ public class RocketMqTopic {
*/
public static final String VIP_RECORD_CREATE_TOPIC = "vip-record-create-topic";
/**
* 画意值奖励
*/
public static final String GOLD_REWARD_TOPIC = "gold-reward-topic";
}

36
bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/domain/img/GoldRewardMessage.java

@ -0,0 +1,36 @@
package com.bnyer.common.rocketmq.domain.img;
import com.bnyer.common.rocketmq.domain.BaseMessage;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.Date;
/**
* @author :WXC
* @Date :2023/05/17
* @description : 添加用户会员记录
*/
@Getter
@Setter
@NoArgsConstructor
public class GoldRewardMessage extends BaseMessage {
@ApiModelProperty(value="用户id")
private Long userId;
@ApiModelProperty(value="画意值数量")
private int goldNum;
@ApiModelProperty(value = "结算平台(0->抖音;1->快手;2->微信;3->uniapp)")
private String platform;
@ApiModelProperty(value = "用户客户端类型(10用户-抖音 20用户-快手 30用户-微信 40艺术家-微信)")
private Integer userClientType;
@ApiModelProperty(value="画意值枚举编码")
private String GoldCode;
}

152
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/listener/GoldRewardConsumer.java

@ -0,0 +1,152 @@
package com.bnyer.img.listener;
import com.bnyer.common.core.domain.FhUser;
import com.bnyer.common.core.domain.GoldLog;
import com.bnyer.common.core.domain.TiktokUser;
import com.bnyer.common.core.domain.WxUser;
import com.bnyer.common.core.enums.GoldEnum;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.rocketmq.constant.RocketMqTopic;
import com.bnyer.common.rocketmq.domain.img.GoldRewardMessage;
import com.bnyer.common.rocketmq.handle.EnhanceMessageHandler;
import com.bnyer.img.service.FhUserService;
import com.bnyer.img.service.GoldLogService;
import com.bnyer.img.service.TiktokUserService;
import com.bnyer.img.service.WxUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author :penny
* @Date :2023/05/17
* @description :给予画意值奖励并写入记录mq消费监听
*/
@Slf4j
@Component
@RocketMQMessageListener(topic = RocketMqTopic.GOLD_REWARD_TOPIC,consumerGroup = RocketMqTopic.GOLD_REWARD_TOPIC)
public class GoldRewardConsumer extends EnhanceMessageHandler<GoldRewardMessage> implements RocketMQListener<GoldRewardMessage> {
@Autowired
private TiktokUserService tiktokUserService;
@Autowired
private FhUserService fhUserService;
@Autowired
private WxUserService wxUserService;
@Autowired
private GoldLogService goldLogService;
@Override
public void onMessage(GoldRewardMessage goldReward) {
super.dispatchMessage(goldReward);
if(StringUtils.isNotNull(goldReward.getPlatform())){
switch (goldReward.getPlatform()){
case "0":
TiktokUser tiktokUser = tiktokUserService.getUserById(goldReward.getUserId());
tiktokUser.setGoldNum(tiktokUser.getGoldNum() + goldReward.getGoldNum());
tiktokUserService.updateTiktokUser(tiktokUser);
//更新用户画意值奖励并写入记录
GoldLog tiktokGoldLog = new GoldLog();
tiktokGoldLog.setGoldNum(goldReward.getGoldNum());
tiktokGoldLog.setUserId(goldReward.getUserId());
tiktokGoldLog.setSource("1");
tiktokGoldLog.setReason(GoldEnum.getValueByCode(goldReward.getGoldCode()));
goldLogService.insert(tiktokGoldLog);
break;
case "1":
FhUser fhUser = fhUserService.getUserById(goldReward.getUserId());
fhUser.setGoldNum(fhUser.getGoldNum() + goldReward.getGoldNum());
fhUserService.updateFhUser(fhUser);
//更新用户画意值奖励并写入记录
GoldLog fhGoldLog = new GoldLog();
fhGoldLog.setGoldNum(goldReward.getGoldNum());
fhGoldLog.setUserId(goldReward.getUserId());
fhGoldLog.setSource("2");
fhGoldLog.setReason(GoldEnum.getValueByCode(goldReward.getGoldCode()));
goldLogService.insert(fhGoldLog);
break;
case "2":
WxUser wxUser = wxUserService.getUserById(goldReward.getUserId());
wxUser.setGoldNum(wxUser.getGoldNum() + goldReward.getGoldNum());
wxUserService.updateWxUser(wxUser);
//更新用户画意值奖励并写入记录
GoldLog wxGoldLog = new GoldLog();
wxGoldLog.setGoldNum(goldReward.getGoldNum());
wxGoldLog.setUserId(goldReward.getUserId());
wxGoldLog.setSource("3");
wxGoldLog.setReason(GoldEnum.getValueByCode(goldReward.getGoldCode()));
goldLogService.insert(wxGoldLog);
break;
}
}else{
switch (goldReward.getUserClientType()){
case 10:
TiktokUser tiktokUser = tiktokUserService.getUserById(goldReward.getUserId());
tiktokUser.setGoldNum(tiktokUser.getGoldNum() + goldReward.getGoldNum());
tiktokUserService.updateTiktokUser(tiktokUser);
//更新用户画意值奖励并写入记录
GoldLog tiktokGoldLog = new GoldLog();
tiktokGoldLog.setGoldNum(goldReward.getGoldNum());
tiktokGoldLog.setUserId(goldReward.getUserId());
tiktokGoldLog.setSource("1");
tiktokGoldLog.setReason(GoldEnum.getValueByCode(goldReward.getGoldCode()));
goldLogService.insert(tiktokGoldLog);
break;
case 20:
FhUser fhUser = fhUserService.getUserById(goldReward.getUserId());
fhUser.setGoldNum(fhUser.getGoldNum() + goldReward.getGoldNum());
fhUserService.updateFhUser(fhUser);
//更新用户画意值奖励并写入记录
GoldLog fhGoldLog = new GoldLog();
fhGoldLog.setGoldNum(goldReward.getGoldNum());
fhGoldLog.setUserId(goldReward.getUserId());
fhGoldLog.setSource("2");
fhGoldLog.setReason(GoldEnum.getValueByCode(goldReward.getGoldCode()));
goldLogService.insert(fhGoldLog);
break;
case 30:
WxUser wxUser = wxUserService.getUserById(goldReward.getUserId());
wxUser.setGoldNum(wxUser.getGoldNum() + goldReward.getGoldNum());
wxUserService.updateWxUser(wxUser);
//更新用户画意值奖励并写入记录
GoldLog wxGoldLog = new GoldLog();
wxGoldLog.setGoldNum(goldReward.getGoldNum());
wxGoldLog.setUserId(goldReward.getUserId());
wxGoldLog.setSource("3");
wxGoldLog.setReason(GoldEnum.getValueByCode(goldReward.getGoldCode()));
goldLogService.insert(wxGoldLog);
break;
}
}
}
@Override
protected void handleMessage(GoldRewardMessage message) throws Exception {
}
@Override
protected void handleMaxRetriesExceeded(GoldRewardMessage message) {
log.error("消息消费失败,可扩展执行后续处理");
}
@Override
protected boolean filter(GoldRewardMessage message) {
return false;
}
@Override
protected boolean isRetry() {
return false;
}
@Override
protected boolean throwException() {
return false;
}
}

67
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java

@ -5,26 +5,27 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.bnyer.common.core.constant.RedisKeyConstant;
import com.bnyer.common.core.domain.CreatorProfit;
import com.bnyer.common.core.domain.GoldLog;
import com.bnyer.common.core.domain.InviteLog;
import com.bnyer.common.core.domain.TiktokUser;
import com.bnyer.common.core.dto.CreatorProfitAdInsertDto;
import com.bnyer.common.core.dto.ProfitInOrEndDto;
import com.bnyer.common.core.enums.GoldEnum;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.common.redis.service.RedissonService;
import com.bnyer.img.enums.GoldEnum;
import com.bnyer.common.rocketmq.constant.RocketMqTopic;
import com.bnyer.common.rocketmq.domain.img.GoldRewardMessage;
import com.bnyer.common.rocketmq.template.RocketMQEnhanceTemplate;
import com.bnyer.img.mapper.CreatorProfitMapper;
import com.bnyer.img.mapper.InviteLogMapper;
import com.bnyer.img.service.CreatorProfitService;
import com.bnyer.img.service.GoldLogService;
import com.bnyer.img.service.TiktokImgService;
import com.bnyer.img.service.TiktokUserService;
import com.bnyer.img.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@ -50,11 +51,8 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
@Autowired
private RedissonService redissonService;
@Autowired
private TiktokUserService tiktokUserService;
@Autowired
private GoldLogService goldLogService;
@Resource
private RocketMQEnhanceTemplate rocketMQEnhanceTemplate;
@Override
public boolean checkCreatorProfitExist(String mark) {
@ -132,30 +130,37 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
}
int insert = creatorProfitMapper.insert(creatorProfit);
log.info("新增艺术家【{}】图片【{}】应用【{}】平台【{}】收益记录", creatorProfit.getCreatorId(), creatorProfit.getImgId(), creatorProfit.getAppType(), creatorProfit.getPlatform());
//更新用户画意值数量
TiktokUser tiktokUser = tiktokUserService.getUserById(params.getUserId());
tiktokUser.setGoldNum(tiktokUser.getGoldNum() + 2);
tiktokUserService.updateTiktokUser(tiktokUser);
//新增用户画意值记录
GoldLog goldLog = new GoldLog();
goldLog.setGoldNum(2);
goldLog.setUserId(params.getUserId());
goldLog.setReason(GoldEnum.DOWNLOAD_IMG.getValue());
switch (params.getPlatform()){
case "0":
goldLog.setSource("1");
break;
case "1":
goldLog.setSource("2");
break;
case "2":
goldLog.setSource("3");
break;
}
goldLogService.insert(goldLog);
//发送下图画意值奖励并写入记录消息
GoldRewardMessage msg = buildGoldRewardMsg(params.getUserId(), 2, GoldEnum.DOWNLOAD_IMG.getCode(), params.getPlatform(), null);
rocketMQEnhanceTemplate.sendAsyncRetryMsg(RocketMqTopic.GOLD_REWARD_TOPIC,null,msg);
return insert;
}
/**
* 构建画意值奖励消息体
* @param userId 用户id
* @param goldNum 奖励/消耗画意值
* @param platform 平台
* @param userClientType 用户客户端类型
* @param goldCode 画意值枚举类编码
* @return -
*/
private GoldRewardMessage buildGoldRewardMsg(Long userId, int goldNum, String goldCode, String platform, Integer userClientType) {
GoldRewardMessage message = new GoldRewardMessage();
message.setUserId(userId);
message.setGoldNum(goldNum);
message.setGoldCode(goldCode);
if(StringUtils.isNotNull(platform)){
message.setPlatform(platform);
}
if(StringUtils.isNotNull(userClientType)){
message.setUserClientType(userClientType);
}
return message;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void insertInvitedProfit(CreatorProfit creatorProfit) {

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/StableDiffusionServiceImpl.java

@ -8,6 +8,7 @@ import com.bnyer.common.core.constant.TiktokConstant;
import com.bnyer.common.core.domain.*;
import com.bnyer.common.core.dto.TextToImgDto;
import com.bnyer.common.core.dto.TextToImgLoveDto;
import com.bnyer.common.core.enums.GoldEnum;
import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.core.utils.TranslateUtils;
@ -18,7 +19,6 @@ import com.bnyer.file.api.RemoteFileService;
import com.bnyer.img.config.StableDiffusionConfig;
import com.bnyer.img.config.TencentTranslateConfig;
import com.bnyer.img.enums.AiPaintButtonEnum;
import com.bnyer.img.enums.GoldEnum;
import com.bnyer.img.service.*;
import com.tencentcloudapi.aiart.v20221229.AiartClient;
import com.tencentcloudapi.aiart.v20221229.models.ResultConfig;

31
bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java

@ -3,9 +3,12 @@ package com.bnyer.order.listener.vip;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.bnyer.common.core.constant.ServiceNameConstants;
import com.bnyer.common.core.domain.VipOrder;
import com.bnyer.common.core.enums.GoldEnum;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.core.utils.uuid.IdUtils;
import com.bnyer.common.rocketmq.constant.RocketMqTopic;
import com.bnyer.common.rocketmq.domain.img.AddUserVipRecordMessage;
import com.bnyer.common.rocketmq.domain.img.GoldRewardMessage;
import com.bnyer.common.rocketmq.domain.order.VipOrderPayNotifyMessage;
import com.bnyer.common.rocketmq.handle.EnhanceMessageHandler;
import com.bnyer.common.rocketmq.template.RocketMQEnhanceTemplate;
@ -54,8 +57,9 @@ public class VipOrderPayNotifyConsumer extends EnhanceMessageHandler<VipOrderPay
AddUserVipRecordMessage addUserVipRecordMessage = buildVipRecordMsg(vipOrder);
rocketMQEnhanceTemplate.sendAsyncRetryMsg(RocketMqTopic.VIP_RECORD_CREATE_TOPIC,null, addUserVipRecordMessage);
// TODO: 2023/05/17 发消息添加其他奖励
//发送开会员画意值奖励并写入记录消息
GoldRewardMessage goldMsg = buildGoldRewardMsg(vipOrder.getUserId(),300, GoldEnum.BUY_VIP.getCode(),null,vipOrder.getUserClientType());
rocketMQEnhanceTemplate.sendAsyncRetryMsg(RocketMqTopic.GOLD_REWARD_TOPIC,null,goldMsg);
}
@ -80,6 +84,29 @@ public class VipOrderPayNotifyConsumer extends EnhanceMessageHandler<VipOrderPay
return message;
}
/**
* 构建画意值奖励消息体
* @param userId 用户id
* @param goldNum 奖励/消耗画意值
* @param platform 平台
* @param userClientType 用户客户端类型
* @param goldCode 画意值枚举类编码
* @return -
*/
private GoldRewardMessage buildGoldRewardMsg(Long userId, int goldNum, String goldCode, String platform, Integer userClientType) {
GoldRewardMessage message = new GoldRewardMessage();
message.setUserId(userId);
message.setGoldNum(goldNum);
message.setGoldCode(goldCode);
if(StringUtils.isNotNull(platform)){
message.setPlatform(platform);
}
if(StringUtils.isNotNull(userClientType)){
message.setUserClientType(userClientType);
}
return message;
}
@Override
protected void handleMessage(VipOrderPayNotifyMessage message) throws Exception {

Loading…
Cancel
Save