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

Commit 4f2df1c1 authored by sunyuntian's avatar sunyuntian

添加sql文件

parent fa914829
......@@ -64,4 +64,7 @@ public class SweetConstant {
// 微信小程序用户相关 新
public final static String REDIS_KEY_SWEET_APPLET_USERS_PHONE = "sweet:user:applet:mobile:";
public final static String REDIS_KEY_SWEET_APPLET_USERS_UNIONID = "sweet:user:applet:unionid:";
//2022草莓音乐节活动海报相关
public final static String REDIS_KEY_SWEET_STRAWBERRY_POSTER = "sweet:strawberry:poster";
}
package com.liquidnet.service.sweet.dto.param.poster;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "SweetStrawMusicianParam", description = "音乐人")
@Data
public class SweetStrawListParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(position = 10, required = true, value = "lineupNum", example = "lineupNum")
@NotBlank(message = "lineupNum不能为空")
private List<SweetStrawMusicianParam> lineup;
}
package com.liquidnet.service.sweet.dto.param.poster;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@ApiModel(value = "SweetStrawMusicianParam", description = "音乐人")
@Data
public class SweetStrawMusicianParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(position = 10, required = true, value = "lineupNum", example = "lineupNum")
@NotBlank(message = "lineupNum不能为空")
private String lineupNum;
@ApiModelProperty(position = 10, required = true, value = "musicianId", example = "musicianId")
@NotBlank(message = "musicianId不能为空")
private Integer musicianId;
@ApiModelProperty(position = 10, required = true, value = "musicianName", example = "musicianName")
@NotBlank(message = "musicianName不能为空")
private String musicianName;
}
package com.liquidnet.service.sweet.dto.param.poster;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "SweetStrawberryParam", description = "海报数据")
@Data
public class SweetStrawberryParam implements Serializable {
private static final long serialVersionUID = 9038992103808199663L;
@ApiModelProperty(position = 10, required = true, value = "openId", example = "openId")
@NotBlank(message = "openId不能为空")
private String openId;
@ApiModelProperty(position = 10, required = true, value = "unionId", example = "unionId")
@NotBlank(message = "unionId不能为空")
private String unionId;
@ApiModelProperty(position = 10, required = true, value = "nickname", example = "nickname")
@NotBlank(message = "nickname不能为空")
private String nickname;
@ApiModelProperty(position = 10, required = true, value = "cityName", example = "cityName")
@NotBlank(message = "cityName不能为空")
private String cityName;
@ApiModelProperty(position = 10, required = true, value = "cityCode", example = "cityCode")
@NotBlank(message = "cityCode不能为空")
private String cityCode;
@Valid
@ApiModelProperty(value = "阵容列表", example = "")
@NotNull(message = "musicianList")
private List<SweetStrawListParam> musicianList;
private static final SweetStrawberryParam obj = new SweetStrawberryParam();
public static SweetStrawberryParam getNew() {
try {
return (SweetStrawberryParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetStrawberryParam();
}
}
}
package com.liquidnet.service.sweet.service;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.dto.param.poster.SweetStrawberryParam;
import com.liquidnet.service.sweet.entity.SweetStrawberry;
import com.liquidnet.service.sweet.entity.SweetStrawberryPoster;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ISweetStrawberryPosterService extends IService<SweetStrawberryPoster> {
ResponseDto<Boolean> addUserLikeMusician(SweetStrawberryParam sweetStrawberry);
}
......@@ -85,6 +85,8 @@ public class MQConst {
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", "用户喜欢的音乐人"),
;
private final String key;
......
......@@ -25,17 +25,17 @@ public class SweetStrawberryPoster implements Serializable {
private Long mid;
/**
* poster_id
* poster_id 海报id
*/
private String posterId;
/**
* open_id
* open_id 微信id
*/
private String openId;
/**
* union_id
* union_id 用户id
*/
private String unionId;
......@@ -48,7 +48,10 @@ public class SweetStrawberryPoster implements Serializable {
* 城市
*/
private String cityName;
/**
* 城市code
*/
private String cityCode;
/**
* 创建时间
*/
......@@ -59,5 +62,14 @@ public class SweetStrawberryPoster implements Serializable {
*/
private LocalDateTime updatedAt;
private static final SweetStrawberryPoster obj = new SweetStrawberryPoster();
public static SweetStrawberryPoster getNew() {
try {
return (SweetStrawberryPoster) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetStrawberryPoster();
}
}
}
......@@ -30,14 +30,14 @@ public class SweetStrawberryPosterLineup implements Serializable {
private String lineupId;
/**
* poster_id
* poster_id 海报id
*/
private String posterId;
/**
* 阵容编号
*/
private Integer lineupNum;
private String lineupNum;
/**
* 音乐人id
......@@ -59,5 +59,13 @@ public class SweetStrawberryPosterLineup implements Serializable {
*/
private LocalDateTime updatedAt;
private static final SweetStrawberryPosterLineup obj = new SweetStrawberryPosterLineup();
public static SweetStrawberryPosterLineup getNew() {
try {
return (SweetStrawberryPosterLineup) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetStrawberryPosterLineup();
}
}
}
package com.liquidnet.service.consumer.sweet.config;
import com.liquidnet.service.consumer.sweet.receiver.ConsumerSweetPosterRdsReceiver;
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.stream.Consumer;
import org.springframework.data.redis.connection.RedisConnectionFactory;
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.SWEET_POSTER;
@Configuration
public class ConsumerSweetPosterRdsReceiverConfig {
@Autowired
ConsumerSweetPosterRdsReceiver consumerSweetPosterRdsReceiver;
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);
}
/*
*
* */
private Subscription receiveSqlRemind(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_POSTER.getGroup(), SWEET_POSTER.name() + t),
StreamOffset.create(SWEET_POSTER.getKey(), ReadOffset.lastConsumed()), consumerSweetPosterRdsReceiver
);
}
@Bean
public Subscription subscriptionSqlRemind(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlRemind(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlRemind2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlRemind(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlRemind3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlRemind(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
}
package com.liquidnet.service.consumer.sweet.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerSweetPosterRdsReceiver extends AbstractSqlRedisReceiver{
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.SWEET_POSTER.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.SWEET_POSTER.getGroup();
}
}
package com.liquidnet.service.sweet.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.dto.param.poster.SweetStrawberryParam;
import com.liquidnet.service.sweet.entity.SweetStrawberry;
import com.liquidnet.service.sweet.service.ISweetStrawberryPosterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
/**
* <p>
......@@ -24,4 +31,11 @@ public class SweetStrawberryPosterController {
@Autowired
private ISweetStrawberryPosterService posterService;
@PostMapping("addUserLikeMusician")
@ApiOperation("用户添加喜爱音乐人")
public ResponseDto<Boolean> addUserLikeMusician(@RequestBody SweetStrawberryParam sweetStrawberryParam){
return posterService.addUserLikeMusician(sweetStrawberryParam);
}
}
package com.liquidnet.service.sweet.service.impl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.constant.SweetConstant;
import com.liquidnet.service.sweet.dto.param.poster.SweetStrawListParam;
import com.liquidnet.service.sweet.dto.param.poster.SweetStrawMusicianParam;
import com.liquidnet.service.sweet.dto.param.poster.SweetStrawberryParam;
import com.liquidnet.service.sweet.entity.SweetStrawberry;
import com.liquidnet.service.sweet.entity.SweetStrawberryPoster;
import com.liquidnet.service.sweet.entity.SweetStrawberryPosterLineup;
import com.liquidnet.service.sweet.mapper.SweetStrawberryPosterMapper;
import com.liquidnet.service.sweet.service.ISweetStrawberryPosterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
/**
* <p>
* 2021草莓音乐节海报活动表 服务实现类
......@@ -17,4 +43,53 @@ import org.springframework.stereotype.Service;
@Service
public class SweetStrawberryPosterServiceImpl extends ServiceImpl<SweetStrawberryPosterMapper, SweetStrawberryPoster> implements ISweetStrawberryPosterService {
@Autowired
QueueUtils queueUtils;
@Autowired
private RedisDataUtils redisDataUtils;
@Autowired
StringRedisTemplate stringRedisTemplate;
@Override
public ResponseDto<Boolean> addUserLikeMusician(SweetStrawberryParam sweetStrawberry) {
String posterId = IDGenerator.nextSnowId(); //生成海报id
LocalDateTime localDateTime = DateUtil.asLocalDateTime(DateUtil.now()); //生成创建时间
String openId=sweetStrawberry.getOpenId();
String unionId = sweetStrawberry.getUnionId();
String nickname=sweetStrawberry.getNickname();
String cityCode=sweetStrawberry.getCityCode();
String cityName=sweetStrawberry.getCityName();
List<SweetStrawListParam> musicianList = sweetStrawberry.getMusicianList();
for (SweetStrawListParam sweetStrawListParam : musicianList) {
List<SweetStrawMusicianParam> lineup = sweetStrawListParam.getLineup();
for (SweetStrawMusicianParam param : lineup) {
String lineupNum = param.getLineupNum();
Integer musicianId = param.getMusicianId();
String musicianName = param.getMusicianName();
String lineupId=IDGenerator.nextSnowId();
//存sql
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_strawberry_poster_Musician"));
sqlsDataA.add(new Object[]{lineupId, posterId,lineupNum, musicianId, musicianName,localDateTime,null});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_POSTER.getKey(), SqlMapping.gets(sqls, sqlsDataA));
}
}
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_strawberry_poster_user"));
sqlsDataA.add(new Object[]{openId,posterId,unionId,nickname,cityName,cityCode,localDateTime,null});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_POSTER.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
//存reids
redisDataUtils.setSweetMusician(sweetStrawberry);
return ResponseDto.success();
}
}
......@@ -11,6 +11,7 @@ import com.liquidnet.service.sweet.dto.SweetManualAppletDto;
import com.liquidnet.service.sweet.dto.SweetManualArtistList2Dto;
import com.liquidnet.service.sweet.dto.SweetManualArtistListDto;
import com.liquidnet.service.sweet.dto.SweetManualArtistStageListDto;
import com.liquidnet.service.sweet.dto.param.poster.SweetStrawberryParam;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityDrawVo;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityVo;
import com.liquidnet.service.sweet.entity.*;
......@@ -428,6 +429,11 @@ public class RedisDataUtils {
String redisKey = SweetConstant.REDIS_KEY_SWEET_ANSWER_PHONE.concat(sweetAnswerVo.getPhone());
redisUtil.set(redisKey, sweetAnswerVo);
}
//草莓音乐节活动海报相关
public void setSweetMusician(SweetStrawberryParam sweetStrawberry) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_STRAWBERRY_POSTER.concat(sweetStrawberry.getUnionId());
redisUtil.set(redisKey, sweetStrawberry);
}
public SweetAnswerVo getSweetAnswer(String phone) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_ANSWER_PHONE.concat(phone);
......
......@@ -52,4 +52,8 @@ integral_activity_draw.update=UPDATE sweet_integral_activity_draw SET receiving_
sweet_applet_users.insert=INSERT INTO sweet_applet_users (applet_user_id,user_id,open_id,union_id,phone_number,pure_phone_number,country_code,type) VALUES (?,?,?,?,?,?,?,?)
# --------------------------微信用户信息表公众号--------------------------
sweet_wechat_users.insert=INSERT INTO sweet_wechat_users (wechat_user_id,type,open_id,union_id,nickname,sex_desc,sex,head_img_url,language,country,province,city,subscribe_time,subscribe_scene) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
sweet_wechat_users.delete=DELETE FROM sweet_wechat_users WHERE union_id = ? and type = ?
\ No newline at end of file
sweet_wechat_users.delete=DELETE FROM sweet_wechat_users WHERE union_id = ? and type = ?
#---------------------------音乐节活动海报--------------------------------
sweet_strawberry_poster_user=INSERT INTO sweet_strawberry_poster(open_id,poster_id,union_id,nickname,city_name,city_code,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?)
sweet_strawberry_poster_Musician=INSERT INTO sweet_strawberry_poster_lineup(lineup_id,poster_id,lineup_num,musician_id,musician_name,created_at,updated_at) VALUES (?,?,?,?,?,?,?)
\ No newline at end of file
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