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

Commit ef9679f1 authored by 胡佳晨's avatar 胡佳晨

sweet 添加 入库

parent ac712890
...@@ -71,8 +71,7 @@ public class MQConst { ...@@ -71,8 +71,7 @@ public class MQConst {
public enum SweetQueue { public enum SweetQueue {
artists_watch("sweet:stream:rk.artists.watch", "group.artists.watch", "艺人-想看"), ARTISTS_RELATION("sweet:stream:rk.artists.relation", "group.artists.relation", "用户-关系"),
artists_signature("sweet:stream:rk.artists.signature", "group.artists.signature", "艺人-签售通知"),
; ;
private final String key; private final String key;
......
package com.liquidnet.service.consumer.kylin.config;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerSweetSqlUserRelationRdsReceiver;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription;
import java.time.Duration;
import static com.liquidnet.service.base.constant.MQConst.SweetQueue.ARTISTS_RELATION;
@Configuration
public class ConsumerSweetSqlUserRelationRedisStreamConfig {
@Autowired
ConsumerSweetSqlUserRelationRdsReceiver consumerSweetSqlUserRelationRdsReceiver;
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions
.builder()
.pollTimeout(Duration.ofMillis(1))
.build();
return StreamMessageListenerContainer.create(factory, options);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private Subscription receiveSqlUserRelation(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(ARTISTS_RELATION.getGroup(), ARTISTS_RELATION.name() + t),
StreamOffset.create(ARTISTS_RELATION.getKey(), ReadOffset.lastConsumed()), consumerSweetSqlUserRelationRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public Subscription subscriptionSqlUserRelation(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlUserRelation(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlUserRelation2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlUserRelation(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlUserRelation3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlUserRelation(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerSweetSqlUserRelationRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.ARTISTS_RELATION.getKey();
}
}
...@@ -217,9 +217,10 @@ CREATE TABLE `sweet_user_relation` ...@@ -217,9 +217,10 @@ CREATE TABLE `sweet_user_relation`
( (
`mid` bigint unsigned NOT NULL AUTO_INCREMENT, `mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(200) NOT NULL DEFAULT '' COMMENT '用户id', `user_id` varchar(200) NOT NULL DEFAULT '' COMMENT '用户id',
`type` varchar(200) NOT NULL DEFAULT '' COMMENT '类型 1喜欢艺人 2签售艺人', `type` tinyint NOT NULL DEFAULT '' COMMENT '类型 1喜欢艺人 2签售艺人',
`target_id` varchar(200) NOT NULL DEFAULT '' COMMENT '目标id', `target_id` varchar(200) NOT NULL DEFAULT '' COMMENT '目标id',
`status` varchar(200) NOT NULL DEFAULT '' COMMENT '1是 0否', `manual_id` varchar(200) NOT NULL DEFAULT '' COMMENT '电子手册',
`status` tinyint NOT NULL DEFAULT '' COMMENT '1是 0否',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', `updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`), PRIMARY KEY (`mid`),
......
XADD sweet:stream:rk.artists.relation * 0 0
XGROUP sweet:stream:rk.artists.relation group.artists.relation 0
...@@ -95,7 +95,7 @@ public class MybatisPlusCodeGenerator { ...@@ -95,7 +95,7 @@ public class MybatisPlusCodeGenerator {
String resourcePath = "/Users/hujiachen/Downloads/tmp"; String resourcePath = "/Users/hujiachen/Downloads/tmp";
String directory = "com.liquidnet.service.sweet"; String directory = "com.liquidnet.service.sweet";
String[] dbTableArray = new String[]{"sweet_manual_shop"}; String[] dbTableArray = new String[]{"sweet_user_relation"};
doGenerator(resourcePath, dsc, directory, dbTableArray); doGenerator(resourcePath, dsc, directory, dbTableArray);
} }
......
package com.liquidnet.service.sweet.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 用户 收藏/喜欢等状态 前端控制器
* </p>
*
* @author liquidnet
* @since 2021-08-06
*/
@RestController
@RequestMapping("/sweet-user-relation")
public class SweetUserRelationController {
}
package com.liquidnet.service.sweet.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 用户 收藏/喜欢等状态
* </p>
*
* @author liquidnet
* @since 2021-08-06
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SweetUserRelation implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 用户id
*/
private String userId;
/**
* 类型 1喜欢艺人 2签售艺人
*/
private Integer type;
/**
* 目标id
*/
private Integer targetId;
/**
* 手册id
*/
private Integer manualId;
/**
* 1是 0否
*/
private String status;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
}
package com.liquidnet.service.sweet.mapper;
import com.liquidnet.service.sweet.entity.SweetUserRelation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户 收藏/喜欢等状态 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-08-06
*/
public interface SweetUserRelationMapper extends BaseMapper<SweetUserRelation> {
}
package com.liquidnet.service.sweet.service;
import com.liquidnet.service.sweet.entity.SweetUserRelation;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 用户 收藏/喜欢等状态 服务类
* </p>
*
* @author liquidnet
* @since 2021-08-06
*/
public interface ISweetUserRelationService extends IService<SweetUserRelation> {
}
package com.liquidnet.service.sweet.service.impl;
import com.liquidnet.service.sweet.entity.SweetUserRelation;
import com.liquidnet.service.sweet.mapper.SweetUserRelationMapper;
import com.liquidnet.service.sweet.service.ISweetUserRelationService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户 收藏/喜欢等状态 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-08-06
*/
@Service
public class SweetUserRelationServiceImpl extends ServiceImpl<SweetUserRelationMapper, SweetUserRelation> implements ISweetUserRelationService {
}
...@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; ...@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.sweet.constant.SweetConstant; import com.liquidnet.service.sweet.constant.SweetConstant;
import com.liquidnet.service.sweet.dto.SweetManualAppletDto; import com.liquidnet.service.sweet.dto.SweetManualAppletDto;
...@@ -17,6 +19,7 @@ import com.liquidnet.service.sweet.vo.SweetRemindVo; ...@@ -17,6 +19,7 @@ import com.liquidnet.service.sweet.vo.SweetRemindVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@Component @Component
...@@ -24,6 +27,8 @@ public class RedisDataUtils { ...@@ -24,6 +27,8 @@ public class RedisDataUtils {
@Autowired @Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Autowired
private QueueUtils queueUtils;
@Autowired @Autowired
private SweetManualMapper sweetManualMapper; private SweetManualMapper sweetManualMapper;
...@@ -86,13 +91,13 @@ public class RedisDataUtils { ...@@ -86,13 +91,13 @@ public class RedisDataUtils {
//获取时间 //获取时间
SweetManualAppletDto sweetManualAppletDto = getAppletPerformance(manualId); SweetManualAppletDto sweetManualAppletDto = getAppletPerformance(manualId);
Date dateEnd=DateUtil.parse(sweetManualAppletDto.getTimeEnd(), DateUtil.DATE_SMALL_STR); Date dateEnd = DateUtil.parse(sweetManualAppletDto.getTimeEnd(), DateUtil.DATE_SMALL_STR);
Date dateStart=DateUtil.parse(sweetManualAppletDto.getTimeStart(), DateUtil.DATE_SMALL_STR); Date dateStart = DateUtil.parse(sweetManualAppletDto.getTimeStart(), DateUtil.DATE_SMALL_STR);
int intervalDay = (int) DateUtil.intervalDays(dateStart,dateEnd ); int intervalDay = (int) DateUtil.intervalDays(dateStart, dateEnd);
ArrayList<String> list = new ArrayList<>(); ArrayList<String> list = new ArrayList<>();
list.add(DateUtil.format(dateStart, DateUtil.Formatter.yyyy_MM_dd)); list.add(DateUtil.format(dateStart, DateUtil.Formatter.yyyy_MM_dd));
for (int i = 0; i < intervalDay; i++) { for (int i = 0; i < intervalDay; i++) {
list.add(DateUtil.format(DateUtil.addDay(dateStart, i+1), DateUtil.Formatter.yyyy_MM_dd)); list.add(DateUtil.format(DateUtil.addDay(dateStart, i + 1), DateUtil.Formatter.yyyy_MM_dd));
} }
//获取舞台 //获取舞台
...@@ -199,20 +204,37 @@ public class RedisDataUtils { ...@@ -199,20 +204,37 @@ public class RedisDataUtils {
redisUtil.del(SweetConstant.REDIS_KEY_SWEET_MANUAL_SORT.concat(manualId));//列表 redisUtil.del(SweetConstant.REDIS_KEY_SWEET_MANUAL_SORT.concat(manualId));//列表
} }
public void setArtistsRelationRedisVo(String uid, String artistsId,String manualId, String type) { public void setArtistsRelationRedisVo(String uid, String artistsId, String manualId, String type) {
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
String redisKey = SweetConstant.REDIS_KEY_SWEET_ARTISTS_RELATION.concat(uid).concat(":manualId:").concat(manualId); String redisKey = SweetConstant.REDIS_KEY_SWEET_ARTISTS_RELATION.concat(uid).concat(":manualId:").concat(manualId);
SweetArtistsRelationVo vo = getArtistsRelationRedisVo(uid,manualId); SweetArtistsRelationVo vo = getArtistsRelationRedisVo(uid, manualId);
vo.setUid(uid); vo.setUid(uid);
if (type.equalsIgnoreCase("sign")) { if (type.equalsIgnoreCase("sign")) {
if (vo.getSignList() == null) { if (vo.getSignList() == null) {
ArrayList<String> signList = new ArrayList<>(); ArrayList<String> signList = new ArrayList<>();
signList.add(artistsId); signList.add(artistsId);
vo.setSignList(signList); vo.setSignList(signList);
sqls.add(SqlMapping.get("sweet_user_relation.insert"));
sqlsDataA.add(new Object[]{
uid, 2, artistsId, manualId, now
});
} else { } else {
if (vo.getSignList().contains(artistsId)) { if (vo.getSignList().contains(artistsId)) {
vo.getSignList().remove(artistsId); vo.getSignList().remove(artistsId);
sqls.add(SqlMapping.get("sweet_user_relation.delete"));
sqlsDataA.add(new Object[]{
uid, artistsId, manualId,2
});
} else { } else {
vo.getSignList().add(artistsId); vo.getSignList().add(artistsId);
sqls.add(SqlMapping.get("sweet_user_relation.insert"));
sqlsDataA.add(new Object[]{
uid, 2, artistsId, manualId, now
});
} }
} }
} else if (type.equalsIgnoreCase("watch")) { } else if (type.equalsIgnoreCase("watch")) {
...@@ -220,21 +242,35 @@ public class RedisDataUtils { ...@@ -220,21 +242,35 @@ public class RedisDataUtils {
ArrayList<String> watchList = new ArrayList<>(); ArrayList<String> watchList = new ArrayList<>();
watchList.add(artistsId); watchList.add(artistsId);
vo.setWatchList(watchList); vo.setWatchList(watchList);
sqls.add(SqlMapping.get("sweet_user_relation.insert"));
sqlsDataA.add(new Object[]{
uid, 1, artistsId, manualId, now
});
} else { } else {
if (vo.getWatchList().contains(artistsId)) { if (vo.getWatchList().contains(artistsId)) {
vo.getWatchList().remove(artistsId); vo.getWatchList().remove(artistsId);
sqls.add(SqlMapping.get("sweet_user_relation.delete"));
sqlsDataA.add(new Object[]{
uid, artistsId, manualId,1
});
} else { } else {
vo.getWatchList().add(artistsId); vo.getWatchList().add(artistsId);
sqls.add(SqlMapping.get("sweet_user_relation.insert"));
sqlsDataA.add(new Object[]{
uid, 1, artistsId, manualId, now
});
} }
} }
} }
redisUtil.set(redisKey, vo); redisUtil.set(redisKey, vo);
queueUtils.sendMsgByRedis(MQConst.SweetQueue.ARTISTS_RELATION.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
} }
//获取 签售 //获取 签售
//获取 想看 //获取 想看
public SweetArtistsRelationVo getArtistsRelationRedisVo(String uid,String manualId) { public SweetArtistsRelationVo getArtistsRelationRedisVo(String uid, String manualId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_ARTISTS_RELATION.concat(uid).concat(":manualId:").concat(manualId); String redisKey = SweetConstant.REDIS_KEY_SWEET_ARTISTS_RELATION.concat(uid).concat(":manualId:").concat(manualId);
Object obj = redisUtil.get(redisKey); Object obj = redisUtil.get(redisKey);
if (obj == null) { if (obj == null) {
...@@ -285,6 +321,7 @@ public class RedisDataUtils { ...@@ -285,6 +321,7 @@ public class RedisDataUtils {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(sweetWechatUser.getUnionId()); String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(sweetWechatUser.getUnionId());
redisUtil.set(redisKey, sweetWechatUser); redisUtil.set(redisKey, sweetWechatUser);
} }
public SweetWechatUser getSweetWechatUser(String unionid) { public SweetWechatUser getSweetWechatUser(String unionid) {
if (unionid.isEmpty()) { if (unionid.isEmpty()) {
return null; return null;
...@@ -294,10 +331,10 @@ public class RedisDataUtils { ...@@ -294,10 +331,10 @@ public class RedisDataUtils {
} }
// 艺人详情 // 艺人详情
public SweetArtists setArtistsDetails(String artistsId){ public SweetArtists setArtistsDetails(String artistsId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_ARTISTS_DETAILS.concat(artistsId); String redisKey = SweetConstant.REDIS_KEY_SWEET_ARTISTS_DETAILS.concat(artistsId);
SweetArtists sweetArtists = sweetArtistsMapper.selectOne(Wrappers.lambdaQuery(SweetArtists.class).eq(SweetArtists::getArtistsId,artistsId).eq(SweetArtists::getStatus,1)); SweetArtists sweetArtists = sweetArtistsMapper.selectOne(Wrappers.lambdaQuery(SweetArtists.class).eq(SweetArtists::getArtistsId, artistsId).eq(SweetArtists::getStatus, 1));
redisUtil.set(redisKey,sweetArtists); redisUtil.set(redisKey, sweetArtists);
return sweetArtists; return sweetArtists;
} }
......
...@@ -50,5 +50,6 @@ kylin_order_ticket_entities.overtimeRefund=UPDATE kylin_order_ticket_entities SE ...@@ -50,5 +50,6 @@ kylin_order_ticket_entities.overtimeRefund=UPDATE kylin_order_ticket_entities SE
kylin_order_refund.overtimeRefund=INSERT INTO kylin_order_refunds (order_refunds_id,order_tickets_id,order_refund_code,price,price_express,status,type,applicant_id,applicant_name,applicant_at,reason,refund_cate,created_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) kylin_order_refund.overtimeRefund=INSERT INTO kylin_order_refunds (order_refunds_id,order_tickets_id,order_refund_code,price,price_express,status,type,applicant_id,applicant_name,applicant_at,reason,refund_cate,created_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)
kylin_order_refund_entities.overtimeRefund=INSERT INTO kylin_order_refund_entities (order_refunds_entities_id,order_refunds_id,refund_price,order_ticket_entities_id,created_at) VALUES(?,?,?,?,?) kylin_order_refund_entities.overtimeRefund=INSERT INTO kylin_order_refund_entities (order_refunds_entities_id,order_refunds_id,refund_price,order_ticket_entities_id,created_at) VALUES(?,?,?,?,?)
# ------------------------用户关系----------------------------
sweet_user_relation.insert=INSERT INTO sweet_user_relation (user_id,type,target_id,manual_id,status,created_at) VALUES (?,?,?,?,1,?)
sweet_user_relation.delete=DELETE FROM sweet_user_relation WHERE user_id = ? and target_id = ? and manual_id = ? and type = ?
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