记得上下班打卡 | git大法好,push需谨慎

Commit c7927f5a authored by jiangxiulong's avatar jiangxiulong

积分抽奖增减积分换成消费

parent 71e58530
package com.liquidnet.service.sweet.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "SweetStoneIntegralParam", description = "添加减少积分入参")
@Data
public class SweetStoneIntegralParam implements Serializable {
private static final long serialVersionUID = 561985919908406636L;
@ApiModelProperty(required = true, value = "用户id", example = "34657843445")
private String uid;
@ApiModelProperty(required = true, value = "积分数量", example = "100")
private Integer score;
@ApiModelProperty(required = true, value = "描述", example = "抽奖加积分")
private String content;
@ApiModelProperty(required = true, value = "增减积分", example = "1增积分 2减积分")
private Integer type;
private static final SweetStoneIntegralParam obj = new SweetStoneIntegralParam();
public static SweetStoneIntegralParam getNew() {
try {
return (SweetStoneIntegralParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetStoneIntegralParam();
}
}
}
......@@ -84,9 +84,9 @@ public class MQConst {
SWEET_TEMPLATE_MSG("sweet:stream:rk.sweetTemplateMsg", "group.sweetTemplateMsg", "发送模版消息"),
SWEET_CITY_VOTE("sweet:stream:rk.cityVote", "group.cityVote", "用户投票记录"),
SWEET_ANTIGENIC_QUESTION("sweet:stream:rk.antigenicQuestion", "group.antigenicQuestion", "防疫答题"),
SWEET_INTEGRAL_ACTIVITY_DRAW("sweet:stream:rk.integralActivityDraw", "group.integralActivityDraw", "积分抽奖"),
SWEET_POSTER("sweet:stream:rk.userLikeMusician", "group.userLikeMusician", "用户喜欢的音乐人"),
SWEET_INTEGRAL_ACTIVITY_DRAW("sweet:stream:rk.integralActivityDraw", "group.integralActivityDraw", "积分抽奖"),
SWEET_STONE_INTEGRAL("sweet:stream:rk.stoneIntegral", "group.stoneIntegral", "stone积分处理"),
;
private final String key;
......
......@@ -36,6 +36,11 @@
<artifactId>liquidnet-service-sweet-do</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-api-feign-stone</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
......
package com.liquidnet.service.consumer.sweet.config;
import com.liquidnet.service.consumer.sweet.receiver.ConsumerSweetStoneIntegralReceiver;
import com.liquidnet.service.consumer.sweet.receiver.ConsumerSweetTemplateMsgReceiver;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -16,11 +17,14 @@ import org.springframework.data.redis.stream.Subscription;
import java.time.Duration;
import static com.liquidnet.service.base.constant.MQConst.SweetQueue.SWEET_TEMPLATE_MSG;
import static com.liquidnet.service.base.constant.MQConst.SweetQueue.SWEET_STONE_INTEGRAL;
@Configuration
public class ConsumerSweetTemplateMsgStreamConfig {
public class ConsumerSweetOtherApiStreamConfig {
@Autowired
ConsumerSweetTemplateMsgReceiver consumerSweetTemplateMsgReceiver;
@Autowired
ConsumerSweetStoneIntegralReceiver consumerSweetStoneIntegralReceiver;
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer
......@@ -32,46 +36,73 @@ public class ConsumerSweetTemplateMsgStreamConfig {
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
* 模版消息
*/
private Subscription receiveSqlTemplateMsg(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
private Subscription receiveApiTemplateMsg(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_TEMPLATE_MSG.getGroup(), SWEET_TEMPLATE_MSG.name() + t),
StreamOffset.create(SWEET_TEMPLATE_MSG.getKey(), ReadOffset.lastConsumed()), consumerSweetTemplateMsgReceiver
);
}
/**
* 增减积分
*/
private Subscription receiveApiStoneIntgral(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_STONE_INTEGRAL.getGroup(), SWEET_STONE_INTEGRAL.name() + t),
StreamOffset.create(SWEET_STONE_INTEGRAL.getKey(), ReadOffset.lastConsumed()), consumerSweetStoneIntegralReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/*----------------------------------------------------------------------------------------------------------------*/
/*------------------模版消息------------------*/
@Bean
public Subscription subscriptionApiTemplateMsg(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveApiTemplateMsg(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public Subscription subscriptionApiTemplateMsg2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveApiTemplateMsg(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlTemplateMsg(RedisConnectionFactory factory) {
public Subscription subscriptionApiTemplateMsg3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlTemplateMsg(listenerContainer, 1);
var subscription = receiveApiTemplateMsg(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/*------------------增减积分------------------*/
@Bean
public Subscription subscriptionSqlTemplateMsg2(RedisConnectionFactory factory) {
public Subscription subscriptionApiStoneIntgral(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlTemplateMsg(listenerContainer, 1);
var subscription = receiveApiStoneIntgral(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlTemplateMsg3(RedisConnectionFactory factory) {
public Subscription subscriptionApiStoneIntgral2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlTemplateMsg(listenerContainer, 1);
var subscription = receiveApiStoneIntgral(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
@Bean
public Subscription subscriptionApiStoneIntgral3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveApiStoneIntgral(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
}
package com.liquidnet.service.consumer.sweet.receiver;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.feign.stone.api.FeignStoneIntegralClient;
import com.liquidnet.service.sweet.param.SweetStoneIntegralParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.stereotype.Component;
import java.util.HashMap;
@Slf4j
@Component
public class ConsumerSweetStoneIntegralReceiver extends AbstractSqlRedisReceiver {
@Autowired
private FeignStoneIntegralClient feignStoneIntegralClient;
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.SWEET_STONE_INTEGRAL.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.SWEET_STONE_INTEGRAL.getGroup();
}
private boolean consumerSqlDaoHandler(String msg) {
Boolean aBoolean = false;
try {
SweetStoneIntegralParam param = JsonUtils.fromJson(msg, SweetStoneIntegralParam.class);
if (param == null) {
aBoolean = true;
} else {
ResponseDto<String> res = null;
if (param.getType() == 1) {
res = feignStoneIntegralClient.in2112(
param.getUid(),
param.getScore(),
param.getContent()
);
} else if (param.getType() == 2) {
res = feignStoneIntegralClient.de2111(
param.getUid(),
param.getScore(),
param.getContent()
);
}
if (null != res && res.getCode().equals("0")) {
aBoolean = true;
}
}
} catch (Exception e) {
log.error("CONSUMER SQL FAIL ==> {}", e.getMessage(), e);
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
}
......@@ -36,6 +36,9 @@ XGROUP CREATE sweet:stream:rk.antigenicQuestion group.antigenicQuestion 0
-- 积分抽奖 --
XADD sweet:stream:rk.integralActivityDraw * 0 0
XGROUP CREATE sweet:stream:rk.integralActivityDraw group.integralActivityDraw 0
-- 积分抽奖积分处理 --
XADD sweet:stream:rk.stoneIntegral * 0 0
XGROUP CREATE sweet:stream:rk.stoneIntegral group.stoneIntegral 0
-- 2021草莓海报活动 --
XADD sweet:stream:rk.userLikeMusician * 0 0
......
package com.liquidnet.service.sweet.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.PagedResult;
......@@ -19,6 +16,7 @@ import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.sweet.dto.vo.*;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityDraw;
import com.liquidnet.service.sweet.mapper.SweetIntegralActivityDrawMapper;
import com.liquidnet.service.sweet.param.SweetStoneIntegralParam;
import com.liquidnet.service.sweet.service.ISweetIntegralActivityDrawService;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
......@@ -162,8 +160,15 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
}
// 减积分
ResponseDto<String> de2111 = feignStoneIntegralClient.de2111(userId, integralActivity.getActivityNum(), integralActivity.getActivityTitle());
log.info("减积分返回值情况 de2111:{}", de2111);
SweetStoneIntegralParam integralParamDe = SweetStoneIntegralParam.getNew();
integralParamDe.setType(2);
integralParamDe.setUid(userId);
integralParamDe.setScore(integralActivity.getActivityNum());
integralParamDe.setContent(integralActivity.getActivityTitle());
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_STONE_INTEGRAL.getKey(),
JsonUtils.toJson(integralParamDe));
// ResponseDto<String> de2111 = feignStoneIntegralClient.de2111(userId, integralActivity.getActivityNum(), integralActivity.getActivityTitle());
// log.info("减积分返回值情况 de2111:{}", de2111);
// 抽奖入库
String drawId = IDGenerator.nextSnowId();
IntegralActivityDrawVo integralActivityDrawVo = IntegralActivityDrawVo.getNew();
......@@ -181,7 +186,14 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
Integer receivingStatus = 1;
Integer prizeType = integralActivityPrizeVo.getPrizeType();
if (prizeType == 1) {// 中奖积分
try {
SweetStoneIntegralParam integralParamIn = SweetStoneIntegralParam.getNew();
integralParamDe.setType(1);
integralParamDe.setUid(userId);
integralParamDe.setScore(integralActivityPrizeVo.getPrizeTypeNum());
integralParamDe.setContent(integralActivity.getActivityTitle());
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_STONE_INTEGRAL.getKey(),
JsonUtils.toJson(integralParamIn));
/*try {
// 增加积分
ResponseDto<String> in2111 = feignStoneIntegralClient.in2112(userId, integralActivityPrizeVo.getPrizeTypeNum(), integralActivity.getActivityTitle());
log.info("中奖加积分返回值情况 in2111:{}", in2111);
......@@ -189,7 +201,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
receivingStatus = 2;
} catch (Exception e) {
log.error("抽奖发放积分失败 [userId:{}, num:{}]", userId, integralActivityPrizeVo.getPrizeTypeNum());
}
}*/
}
integralActivityDrawVo.setReceivingStatus(receivingStatus);
// redis
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment