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

Commit 768c7610 authored by jiangxiulong's avatar jiangxiulong

Merge remote-tracking branch 'origin/dev-sweet' into pre

parents 9c918b55 39a42853
......@@ -71,9 +71,12 @@ public class MQConst {
public enum SweetQueue {
ARTISTS_RELATION("sweet:stream:rk.artists.relation", "group.artists.relation", "用户-关系"),
ARTISTS_RELATION("sweet:stream:rk.artists.relation", "group.artists.relation", "用户-关系"),
ARTISTS_RELATION_MDSK("sweet:stream:rk.artists.mdsk.relation", "group.artists.mdsk.relation", "用户-关系"),
LUCK_DRAW("sweet:stream:rk.luckDraw", "group.luckDraw", "用户-抽奖"),
ANSWERINSERT_DRAW("sweet:stream:rk.answerInsert", "group.answerInsert", "答案"),
SWEET_USER_INSERT_DRAW("sweet:stream:rk.sweetUserInsert", "group.sweetUserInsert", "关注服务号的用户信息"),
SWEET_REMIND_INSERT_DRAW("sweet:stream:rk.remindInsert", "group.remindInsert", "提醒记录"),
;
private final String key;
......
......@@ -13,9 +13,9 @@ liquidnet:
file-max-size: 200MB
level: debug
mysql:
database-name: test_ln_scene
database-name: dev_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
database: dev_ln_scene
#以下为spring各环境个性配置
package com.liquidnet.service.consumer.kylin.config;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerSweetAnswerRdsReceiver;
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.ANSWERINSERT_DRAW;
@Configuration
public class ConsumerSweetAnswerRedisStreamConfig {
@Autowired
ConsumerSweetAnswerRdsReceiver consumerSweetAnswerRdsReceiver;
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 receiveSqlAnswer(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(ANSWERINSERT_DRAW.getGroup(), ANSWERINSERT_DRAW.name() + t),
StreamOffset.create(ANSWERINSERT_DRAW.getKey(), ReadOffset.lastConsumed()), consumerSweetAnswerRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public Subscription subscriptionSqlAnswer(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAnswer(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlAnswer2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAnswer(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlAnswer3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAnswer(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
package com.liquidnet.service.consumer.kylin.config;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerSweetRemindRdsReceiver;
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.SWEET_REMIND_INSERT_DRAW;
@Configuration
public class ConsumerSweetRemindRedisStreamConfig {
@Autowired
ConsumerSweetRemindRdsReceiver consumerSweetRemindRdsReceiver;
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 receiveSqlRemind(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_REMIND_INSERT_DRAW.getGroup(), SWEET_REMIND_INSERT_DRAW.name() + t),
StreamOffset.create(SWEET_REMIND_INSERT_DRAW.getKey(), ReadOffset.lastConsumed()), consumerSweetRemindRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@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.kylin.config;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerSweetUserRdsReceiver;
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.SWEET_USER_INSERT_DRAW;
@Configuration
public class ConsumerSweetUserRedisStreamConfig {
@Autowired
ConsumerSweetUserRdsReceiver consumerSweetUserRdsReceiver;
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 receiveSqlSweetUser(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_USER_INSERT_DRAW.getGroup(), SWEET_USER_INSERT_DRAW.name() + t),
StreamOffset.create(SWEET_USER_INSERT_DRAW.getKey(), ReadOffset.lastConsumed()), consumerSweetUserRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public Subscription subscriptionSqlSweetUser(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlSweetUser(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlSweetUser2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlSweetUser(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlSweetUser3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlSweetUser(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 ConsumerSweetAnswerRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.ANSWERINSERT_DRAW.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.ANSWERINSERT_DRAW.getGroup();
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerSweetRemindRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.SWEET_REMIND_INSERT_DRAW.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.SWEET_REMIND_INSERT_DRAW.getGroup();
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerSweetUserRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.SWEET_USER_INSERT_DRAW.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.SWEET_USER_INSERT_DRAW.getGroup();
}
}
......@@ -183,34 +183,6 @@ CREATE TABLE `sweet_manual_shop`
COLLATE = utf8_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '电子宣传手册商铺表';
-- 正在现场服务号关注事件储存用户信息表
drop TABLE if exists `sweet_wechat_user`;
CREATE TABLE `sweet_wechat_user`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(200) NOT NULL DEFAULT '' COMMENT 'user_id',
`openId` varchar(200) NOT NULL DEFAULT '' COMMENT 'openId',
`unionId` varchar(200) NOT NULL DEFAULT '' COMMENT 'unionId',
`nickname` varchar(200) NOT NULL DEFAULT '' COMMENT '昵称',
`sexDesc` varchar(200) NOT NULL DEFAULT '' COMMENT '性别',
`sex` tinyint NOT NULL DEFAULT 0 COMMENT '性别 男1',
`headImgUrl` varchar(200) NOT NULL DEFAULT '' COMMENT '头像',
`language` varchar(200) NOT NULL DEFAULT '' COMMENT 'zh_CN',
`country` varchar(200) NOT NULL DEFAULT '' COMMENT '国家',
`province` varchar(200) NOT NULL DEFAULT '' COMMENT '省',
`city` varchar(200) NOT NULL DEFAULT '' COMMENT '市',
`subscribeTime` datetime NULL DEFAULT null COMMENT '关注时间',
`subscribeScene` varchar(200) NOT NULL DEFAULT '' COMMENT 'ADD_SCENE_SEARCH 关注方式',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_wechat_user_user_id` (`user_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '正在现场服务号关注事件储存用户信息表';
-- 用户 收藏/喜欢等状态
drop TABLE if exists `sweet_user_relation`;
CREATE TABLE `sweet_user_relation`
......@@ -437,3 +409,69 @@ CREATE TABLE `sweet_luck_draw`
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '抽奖表';
-- 正在现场服务号关注事件储存用户信息表
drop TABLE if exists `sweet_wechat_user`;
CREATE TABLE `sweet_wechat_user`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(200) NOT NULL DEFAULT '' COMMENT 'user_id',
`openId` varchar(200) NOT NULL DEFAULT '' COMMENT 'openId',
`unionId` varchar(200) NOT NULL DEFAULT '' COMMENT 'unionId',
`nickname` varchar(200) NOT NULL DEFAULT '' COMMENT '昵称',
`sexDesc` varchar(200) NOT NULL DEFAULT '' COMMENT '性别',
`sex` tinyint NOT NULL DEFAULT 0 COMMENT '性别 男1',
`headImgUrl` varchar(200) NOT NULL DEFAULT '' COMMENT '头像',
`language` varchar(200) NOT NULL DEFAULT '' COMMENT 'zh_CN',
`country` varchar(200) NOT NULL DEFAULT '' COMMENT '国家',
`province` varchar(200) NOT NULL DEFAULT '' COMMENT '省',
`city` varchar(200) NOT NULL DEFAULT '' COMMENT '市',
`subscribeTime` datetime NULL DEFAULT null COMMENT '关注时间',
`subscribeScene` varchar(200) NOT NULL DEFAULT '' COMMENT 'ADD_SCENE_SEARCH 关注方式',
`is_cancel` tinyint NOT NULL DEFAULT 1 COMMENT '是否取关 1关注 2已取消',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_wechat_user_user_id` (`user_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '正在现场服务号关注事件储存用户信息表';
-- 答题表
drop TABLE if exists `sweet_answer`;
CREATE TABLE `sweet_answer`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`answer_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'answer_id',
`phone` varchar(11) NOT NULL DEFAULT '' COMMENT '手机号',
`answer_json` varchar(255) NOT NULL DEFAULT '' COMMENT '答案json',
`img_url` varchar(255) NOT NULL DEFAULT '' COMMENT '图片',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_answer_answer_id` (`answer_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '答题表';
-- 提醒记录
drop TABLE if exists `sweet_remind`;
CREATE TABLE `sweet_remind`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`remind_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'remind_id',
`openId` varchar(255) NOT NULL DEFAULT '' COMMENT 'openId',
`unionId` varchar(255) NOT NULL DEFAULT '' COMMENT 'unionId',
`performancesId` varchar(255) NOT NULL DEFAULT '' COMMENT '演出id',
`is_push` tinyint NOT NULL DEFAULT 1 COMMENT '是否推送 1未推送 2已推送',
`push_time` varchar(255) NOT NULL DEFAULT '' COMMENT '推送时间',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_remind_id` (`remind_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '提醒记录表';
......@@ -7,4 +7,16 @@ XGROUP CREATE sweet:stream:rk.artists.mdsk.relation group.artists.mdsk.relation
-- 抽奖 --
XADD sweet:stream:rk.luckDraw * 0 0
XGROUP CREATE sweet:stream:rk.luckDraw group.luckDraw 0
\ No newline at end of file
XGROUP CREATE sweet:stream:rk.luckDraw group.luckDraw 0
-- 答案 --
XADD sweet:stream:rk.answerInsert * 0 0
XGROUP CREATE sweet:stream:rk.answerInsert group.answerInsert 0
-- 关注服务号的用户信息 --
XADD sweet:stream:rk.sweetUserInsert * 0 0
XGROUP CREATE sweet:stream:rk.sweetUserInsert group.sweetUserInsert 0
-- 提醒记录 --
XADD sweet:stream:rk.remindInsert * 0 0
XGROUP CREATE sweet:stream:rk.remindInsert group.remindInsert 0
\ No newline at end of file
......@@ -15,10 +15,9 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_SHOP = "sweet:artists:shop:manual:";
public final static String REDIS_KEY_SWEET_LUCK_DRAW = "sweet:artists:luckDraw:uid:";
public final static String REDIS_KEY_SWEET_REMIND="sweet:remind:unionId:";
public static final String REDIS_KEY_SWEET_REMIND_ALL = "sweet:remind:unionId*";
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO="sweet:wechatUser:unionId:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID="sweet:wechatUser:openId:";
public final static String REDIS_KEY_SWEET_ANSWER_PHONE="sweet:answer:phone:";
// public enum ManualPosition {
// artist("艺人","artist"),
......
package com.liquidnet.service.sweet.controller;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.entity.SweetArtists;
import com.liquidnet.service.sweet.service.ISweetAnswerService;
import com.liquidnet.service.sweet.vo.SweetAnswerVo;
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.*;
/**
* <p>
* 答题表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2021-08-12
*/
@Api(tags = "答案")
@RestController
@RequestMapping("/sweetAnswer")
public class SweetAnswerController {
@Autowired
private ISweetAnswerService sweetAnswerService;
@GetMapping("info")
@ApiOperation("获取答题记录详情")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "phone", value = "手机号", required = true)
})
public ResponseDto<SweetAnswerVo> getInfo(@RequestParam() String phone) {
return sweetAnswerService.getInfo(phone);
}
@PostMapping("create")
@ApiOperation("添加答题记录")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "phone", value = "手机号", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "answerJson", value = "答案json", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "imgUrl", value = "图片地址", required = true),
})
public ResponseDto<Boolean> add(@RequestParam() String phone, @RequestParam() String answerJson, @RequestParam() String imgUrl) {
return sweetAnswerService.create(phone, answerJson, imgUrl);
}
}
......@@ -8,6 +8,7 @@ import com.liquidnet.service.sweet.dto.SweetManualArtistListDto;
import com.liquidnet.service.sweet.entity.SweetManualNotify;
import com.liquidnet.service.sweet.entity.SweetManualShop;
import com.liquidnet.service.sweet.entity.SweetRichtext;
import com.liquidnet.service.sweet.utils.ObjectUtil;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import com.liquidnet.service.sweet.vo.SweetArtistsRelationVo;
import com.liquidnet.service.sweet.vo.SweetManualShopAllVo;
......@@ -35,7 +36,7 @@ public class SweetAppletController {
})
public ResponseDto<List<SweetManualAppletDto>> timeSelect(@RequestParam String name) {
List<SweetManualAppletDto> dto = redisDataUtils.getPushList();
List<SweetManualAppletDto> vo = new ArrayList<>();
List<SweetManualAppletDto> vo = ObjectUtil.getSweetManualAppletDtoList();
for (SweetManualAppletDto item : dto) {
if (item.getTitle().contains(name)) {
vo.add(item);
......@@ -90,8 +91,8 @@ public class SweetAppletController {
@RequestParam(required = false) Integer size,
@RequestParam String uid) {
List<SweetManualArtistListDto> allReturnArtist = new ArrayList();
List<SweetManualArtistListDto> returnArtist = new ArrayList();
List<SweetManualArtistListDto> allReturnArtist = ObjectUtil.getSweetManualArtistListDtoList();
List<SweetManualArtistListDto> returnArtist = ObjectUtil.getSweetManualArtistListDtoList();
SweetManualArtistList2Dto data = redisDataUtils.getTimeList(manualId);
SweetArtistsRelationVo relationData = redisDataUtils.getArtistsRelationRedisVo(uid, manualId);
......@@ -296,9 +297,9 @@ public class SweetAppletController {
public ResponseDto<SweetManualShopAllVo> manualShop(@RequestParam String manualId) {
List<SweetManualShop> shopList = redisDataUtils.getManualShopRedisData(manualId);
List<SweetManualShop> recommend = new ArrayList<>();
List<SweetManualShop> eat = new ArrayList<>();
List<SweetManualShop> play = new ArrayList<>();
List<SweetManualShop> recommend = ObjectUtil.getSweetManualShopList();
List<SweetManualShop> eat = ObjectUtil.getSweetManualShopList();
List<SweetManualShop> play = ObjectUtil.getSweetManualShopList();
SweetManualShopAllVo vo = SweetManualShopAllVo.getNew();
for (SweetManualShop item : shopList) {
......
......@@ -4,6 +4,7 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.dto.*;
import com.liquidnet.service.sweet.entity.*;
import com.liquidnet.service.sweet.utils.ObjectUtil;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import com.liquidnet.service.sweet.utils.RedisMDSKDataUtils;
import com.liquidnet.service.sweet.vo.SweetArtistsRelationVo;
......@@ -36,7 +37,7 @@ public class SweetAppletMdskController {
})
public ResponseDto<List<SweetManualAppletMDSKDto>> timeSelect(@RequestParam String name) {
List<SweetManualAppletMDSKDto> dto = redisDataUtils.getPushList();
List<SweetManualAppletMDSKDto> vo = new ArrayList<>();
List<SweetManualAppletMDSKDto> vo = ObjectUtil.getSweetManualAppletMDSKDtoList();
for (SweetManualAppletMDSKDto item : dto) {
if (item.getTitle().contains(name)) {
vo.add(item);
......@@ -91,8 +92,8 @@ public class SweetAppletMdskController {
@RequestParam(required = false) Integer size,
@RequestParam String uid) {
List<SweetManualArtistListMDSKDto> allReturnArtist = new ArrayList();
List<SweetManualArtistListMDSKDto> returnArtist = new ArrayList();
List<SweetManualArtistListMDSKDto> allReturnArtist = ObjectUtil.getSweetManualArtistListMDSKDtoList();
List<SweetManualArtistListMDSKDto> returnArtist = ObjectUtil.getSweetManualArtistListMDSKDtoList();
SweetManualArtistList2MDSKDto data = redisDataUtils.getTimeList(manualId);
SweetArtistsRelationVo relationData = redisDataUtils.getArtistsRelationRedisVo(uid, manualId);
......@@ -240,9 +241,9 @@ public class SweetAppletMdskController {
if (vo.getWatchList() != null) {
watchSize = vo.getWatchList().size();
}
HashMap<String,Object> map = CollectionUtil.mapStringObject();
map.put("signSize",signSize);
map.put("watchSize",watchSize);
HashMap<String, Object> map = CollectionUtil.mapStringObject();
map.put("signSize", signSize);
map.put("watchSize", watchSize);
return ResponseDto.success(map);
}
......@@ -254,8 +255,8 @@ public class SweetAppletMdskController {
@ApiImplicitParam(type = "query", dataType = "String", name = "uid", value = "用户id", required = true)
})
public ResponseDto<SweetManualArtistListMDSKDto> artistsDetails(@RequestParam String artistsId,
@RequestParam String manualId,
@RequestParam String uid) {
@RequestParam String manualId,
@RequestParam String uid) {
SweetManualArtistList2MDSKDto data = redisDataUtils.getTimeList(manualId);
List<SweetManualArtistListMDSKDto> dataList = data.getData();
SweetArtistsRelationVo relationData = redisDataUtils.getArtistsRelationRedisVo(uid, manualId);
......@@ -297,9 +298,9 @@ public class SweetAppletMdskController {
public ResponseDto<SweetManualShopMdskAllVo> manualShop(@RequestParam String manualId) {
List<SweetManualShopMdsk> shopList = redisDataUtils.getManualShopRedisData(manualId);
List<SweetManualShopMdsk> recommend = new ArrayList<>();
List<SweetManualShopMdsk> eat = new ArrayList<>();
List<SweetManualShopMdsk> play = new ArrayList<>();
List<SweetManualShopMdsk> recommend = ObjectUtil.getSweetManualShopMdskList();
List<SweetManualShopMdsk> eat = ObjectUtil.getSweetManualShopMdskList();
List<SweetManualShopMdsk> play = ObjectUtil.getSweetManualShopMdskList();
SweetManualShopMdskAllVo vo = SweetManualShopMdskAllVo.getNew();
for (SweetManualShopMdsk item : shopList) {
......
......@@ -26,7 +26,7 @@ public class SweetWechatLoginController {
@ApiImplicitParam(type = "query", dataType = "String", name = "code", value = "微信code", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "encryptedData", value = "encryptedData", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "iv", value = "iv", required = true),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "type", value = "1草莓 2五百里 3mdsk"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "type", value = "1草莓 2五百里 3mdsk 4正在"),
})
public ResponseDto userInfo(
@RequestParam() String code,
......
......@@ -20,7 +20,7 @@ public class SweetWechatTemplateController {
@GetMapping("send")
@ApiOperation("发送模版消息")
public ResponseDto send() {
return sweetTemplateService.sendMsg();
return sweetTemplateService.sendRemindMsg();
}
@PostMapping("remind")
......@@ -38,4 +38,20 @@ public class SweetWechatTemplateController {
return sweetTemplateService.remind(openId, unionId, performancesId);
}
@PostMapping("followStatus")
@ApiOperation("获取关注状态")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "unionId", value = "微信unionId", required = true),
})
public ResponseDto followStatus(
@RequestParam() String unionId
) {
boolean status = sweetTemplateService.followStatus(unionId);
if (status) {
return ResponseDto.success(1);
} else {
return ResponseDto.success(2);
}
}
}
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 jiangxiulong
* @since 2021-08-12
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SweetAnswer implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* answer_id
*/
private String answerId;
/**
* 手机号
*/
private String phone;
/**
* 答案json
*/
private String answerJson;
/**
* 图片
*/
private String imgUrl;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
private static final SweetAnswer obj = new SweetAnswer();
public static SweetAnswer getNew() {
try {
return (SweetAnswer) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetAnswer();
}
}
}
package com.liquidnet.service.sweet.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 提醒记录表
* </p>
*
* @author jiangxiulong
* @since 2021-08-13
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SweetRemind implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* remind_id
*/
private String remindId;
/**
* openId
*/
@TableField("openId")
private String openId;
/**
* unionId
*/
@TableField("unionId")
private String unionId;
/**
* 演出id
*/
@TableField("performancesId")
private String performancesId;
/**
* 是否推送 1未推送 2已推送
*/
private Integer isPush;
/**
* 推送时间
*/
private String pushTime;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
private static final SweetRemind obj = new SweetRemind();
public static SweetRemind getNew() {
try {
return (SweetRemind) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetRemind();
}
}
}
......@@ -96,6 +96,11 @@ public class SweetWechatUser implements Serializable {
@TableField("subscribeScene")
private String subscribeScene;
/**
* 是否取消关注
*/
private Integer isCancel;
/**
* 创建时间
*/
......
package com.liquidnet.service.sweet.handler;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
import com.liquidnet.service.sweet.mapper.SweetWechatUserMapper;
import com.liquidnet.service.sweet.service.impl.SweetWechatTemplateServiceImpl;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
......@@ -18,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.Map;
/**
......@@ -35,11 +41,16 @@ public class SubscribeHandler implements WxMpMessageHandler {
private SweetWechatUserMapper sweetWechatUserMapper;
@Autowired
private RedisDataUtils redisDataUtils;
@Autowired
private QueueUtils queueUtils;
@Autowired
private SweetWechatTemplateServiceImpl sweetWechatTemplateService;
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService,
WxSessionManager sessionManager) throws WxErrorException {
log.info("接收到一个扫码订阅事件:[{}]", wxMessage.toString());
log.info("接收到一个订阅事件:[{}]", wxMessage.toString());
// 1、获取微信用户信息
WxMpUser wxMpUser = wxMpService.getUserService().userInfo(wxMessage.getFromUser());
if (null == wxMpUser) {
......@@ -48,7 +59,7 @@ public class SubscribeHandler implements WxMpMessageHandler {
}
log.info("根据 openId:[{}]获取到的微信用户信息:[{}]", wxMessage.getFromUser(), wxMpUser.toString());
// 记录用户信息
SweetWechatUser userInfo = sweetWechatUserMapper.selectOne(Wrappers.lambdaQuery(SweetWechatUser.class).eq(SweetWechatUser::getOpenId, wxMpUser.getOpenId()));
SweetWechatUser userInfo = redisDataUtils.getSweetWechatUser(wxMpUser.getUnionId());
SweetWechatUser sweetWechatUser = SweetWechatUser.getNew();
sweetWechatUser.setOpenId(wxMpUser.getOpenId());
sweetWechatUser.setUnionId(wxMpUser.getUnionId());
......@@ -64,19 +75,22 @@ public class SubscribeHandler implements WxMpMessageHandler {
sweetWechatUser.setSubscribeScene(wxMpUser.getSubscribeScene());
if (null == userInfo) {
sweetWechatUser.setUserId(IDGenerator.nextSnowId());
sweetWechatUserMapper.insert(sweetWechatUser);
} else {
sweetWechatUser.setUpdatedAt(LocalDateTime.now());
sweetWechatUserMapper.update(sweetWechatUser, Wrappers.lambdaUpdate(SweetWechatUser.class).eq(SweetWechatUser::getUserId, userInfo.getUserId()));
}
String unionId = wxMpUser.getUnionId();
if (!unionId.isEmpty()) {
if (null != userInfo) {
sweetWechatUser.setMid(userInfo.getMid());
sweetWechatUser.setUserId(userInfo.getUserId());
sweetWechatUser.setCreatedAt(userInfo.getCreatedAt());
}
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
sqls.add(SqlMapping.get("sweet_user.insert"));
sqlsDataA.add(new Object[]{
sweetWechatUser.getUserId(), sweetWechatUser.getOpenId(), sweetWechatUser.getUnionId(), sweetWechatUser.getNickname(),
sweetWechatUser.getSexDesc(), sweetWechatUser.getSex(), sweetWechatUser.getHeadImgUrl(), sweetWechatUser.getLanguage(),
sweetWechatUser.getCountry(), sweetWechatUser.getProvince(), sweetWechatUser.getCity(),
sweetWechatUser.getSubscribeTime(), sweetWechatUser.getSubscribeScene()
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_USER_INSERT_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
// 入缓存
redisDataUtils.setSweetWechatUser(sweetWechatUser);
//发送模版消息
sweetWechatTemplateService.subscribeSend(sweetWechatUser);
}
return null;
......
package com.liquidnet.service.sweet.handler;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
import com.liquidnet.service.sweet.mapper.SweetWechatUserMapper;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
......@@ -7,8 +14,12 @@ import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.Map;
/**
......@@ -23,10 +34,42 @@ import java.util.Map;
@Slf4j
public class UnsubscribeHandler implements WxMpMessageHandler {
@Autowired
private SweetWechatUserMapper sweetWechatUserMapper;
@Autowired
private RedisDataUtils redisDataUtils;
@Autowired
private QueueUtils queueUtils;
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService,
WxSessionManager sessionManager) throws WxErrorException {
log.info("接收到一个扫码取消订阅事件:[{}]", wxMessage.toString());
log.info("接收到一个取消订阅事件:[{}]", wxMessage.toString());
// 1、获取微信用户信息
WxMpUser wxMpUser = wxMpService.getUserService().userInfo(wxMessage.getFromUser());
if (null == wxMpUser) {
log.warn("从微信公众号获取用户(FromUser)信息:[{}]失败.", wxMessage.getFromUser());
return null;
}
log.info("根据 openId:[{}]获取到的微信用户信息:[{}]", wxMessage.getFromUser(), wxMpUser.toString());
// 删除用户信息
String sweetWechatUserUnionid = redisDataUtils.getSweetWechatUserUnionid(wxMpUser.getOpenId());
if (null != sweetWechatUserUnionid && !sweetWechatUserUnionid.isEmpty()) {
SweetWechatUser userInfo = redisDataUtils.getSweetWechatUser(sweetWechatUserUnionid);
if (null != userInfo) {
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
sqls.add(SqlMapping.get("sweet_user.update"));
sqlsDataA.add(new Object[]{
2, now, sweetWechatUserUnionid
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_USER_INSERT_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
redisDataUtils.delSweetWechatUser(sweetWechatUserUnionid, wxMpUser.getOpenId());
}
}
return null;
}
}
package com.liquidnet.service.sweet.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.sweet.entity.SweetAnswer;
/**
* <p>
* 答题表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2021-08-12
*/
public interface SweetAnswerMapper extends BaseMapper<SweetAnswer> {
}
package com.liquidnet.service.sweet.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.sweet.entity.SweetRemind;
/**
* <p>
* 提醒记录表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2021-08-13
*/
public interface SweetRemindMapper extends BaseMapper<SweetRemind> {
}
package com.liquidnet.service.sweet.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.entity.SweetAnswer;
import com.liquidnet.service.sweet.vo.SweetAnswerVo;
/**
* <p>
* 答题表 服务类
* </p>
*
* @author jiangxiulong
* @since 2021-08-12
*/
public interface ISweetAnswerService extends IService<SweetAnswer> {
ResponseDto<SweetAnswerVo> getInfo(String phone);
ResponseDto<Boolean> create(String phone, String answerJson, String imgUrl);
}
package com.liquidnet.service.sweet.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.sweet.entity.SweetRemind;
/**
* <p>
* 提醒记录表 服务类
* </p>
*
* @author jiangxiulong
* @since 2021-08-13
*/
public interface ISweetRemindService extends IService<SweetRemind> {
}
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.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.entity.SweetAnswer;
import com.liquidnet.service.sweet.mapper.SweetAnswerMapper;
import com.liquidnet.service.sweet.service.ISweetAnswerService;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import com.liquidnet.service.sweet.vo.SweetAnswerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.LinkedList;
/**
* <p>
* 答题表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2021-08-12
*/
@Service
public class SweetAnswerServiceImpl extends ServiceImpl<SweetAnswerMapper, SweetAnswer> implements ISweetAnswerService {
@Autowired
private SweetAnswerMapper sweetAnswerMapper;
@Autowired
private RedisDataUtils redisDataUtils;
@Autowired
QueueUtils queueUtils;
@Override
public ResponseDto<SweetAnswerVo> getInfo(String phone) {
SweetAnswerVo sweetAnswerVo = redisDataUtils.getSweetAnswer(phone);
return ResponseDto.success(sweetAnswerVo);
}
@Override
public ResponseDto<Boolean> create(String phone, String answerJson, String imgUrl) {
SweetAnswer sweetAnswer = SweetAnswer.getNew();
sweetAnswer.setAnswerId(IDGenerator.nextSnowId());
sweetAnswer.setPhone(phone);
sweetAnswer.setAnswerJson(answerJson);
sweetAnswer.setImgUrl(imgUrl);
// sweetAnswerMapper.insert(sweetAnswer);
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
sqls.add(SqlMapping.get("sweet_answer.insert"));
sqlsDataA.add(new Object[]{
sweetAnswer.getAnswerId(), phone, answerJson, imgUrl
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.ANSWERINSERT_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
SweetAnswerVo sweetAnswerVo = SweetAnswerVo.getNew().copy(sweetAnswer);
redisDataUtils.setSweetAnswer(sweetAnswerVo);
return ResponseDto.success();
}
}
package com.liquidnet.service.sweet.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.sweet.entity.SweetRemind;
import com.liquidnet.service.sweet.mapper.SweetRemindMapper;
import com.liquidnet.service.sweet.service.ISweetRemindService;
import org.springframework.stereotype.Service;
/**
* <p>
* 提醒记录表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2021-08-13
*/
@Service
public class SweetRemindServiceImpl extends ServiceImpl<SweetRemindMapper, SweetRemind> implements ISweetRemindService {
}
......@@ -70,10 +70,10 @@ public class SweetWechatCallbackServiceImpl {
.end();
// 取消关注事件
/*router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.UNSUBSCRIBE)
.handler(unsubscribeHandler)
.end();*/
.end();
return router;
}
......
......@@ -7,6 +7,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto;
import lombok.extern.slf4j.Slf4j;
......@@ -44,6 +45,11 @@ public class SweetWechatLoginServiceImpl {
@Value("${liquidnet.wechat.applet.mdsk.secret}")
private String mdskSecret;
@Value("${liquidnet.wechat.applet.zhengzai.appid}")
private String zhengzaiAppid;
@Value("${liquidnet.wechat.applet.zhengzai.secret}")
private String zhengzaiSecret;
public ResponseDto userInfo(String code, String encryptedData, String iv, Integer type) {
log.info("\n参数code:[{}] ", code);
log.info("\n参数encryptedData:[{}] ", encryptedData);
......@@ -65,6 +71,10 @@ public class SweetWechatLoginServiceImpl {
appId = mdskAppid;
appSecret = mdskSecret;
break;
case 4:
appId = zhengzaiAppid;
appSecret = zhengzaiSecret;
break;
}
WxMaConfig wxMaConfig = wxMaConfig(appId, appSecret);
WxMaService wxMaService = wxMaService(wxMaConfig);
......@@ -85,7 +95,7 @@ public class SweetWechatLoginServiceImpl {
String unionId = sessionInfo.getUnionid();
String openId = sessionInfo.getOpenid();
HashMap userInfo = new HashMap();
HashMap<String,Object> userInfo = CollectionUtil.mapStringObject();
userInfo.put("unionId", unionId);
userInfo.put("openId", openId);
userInfo.put("getPhoneNumber", wxMaPhoneNumberInfo.getPhoneNumber());
......
package com.liquidnet.service.sweet.utils;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.sweet.dto.SweetManualAppletDto;
import com.liquidnet.service.sweet.dto.SweetManualAppletMDSKDto;
import com.liquidnet.service.sweet.dto.SweetManualArtistListDto;
import com.liquidnet.service.sweet.dto.SweetManualArtistListMDSKDto;
import com.liquidnet.service.sweet.entity.SweetManualShop;
import com.liquidnet.service.sweet.entity.SweetManualShopMdsk;
import java.util.ArrayList;
public class ObjectUtil {
private static final ArrayList<SweetManualAppletDto> sweetManualAppletDtoList = new ArrayList<>();
private static final ArrayList<SweetManualArtistListDto> sweetManualArtistListDtoList = new ArrayList<>();
private static final ArrayList<SweetManualShop> sweetManualShopList = new ArrayList<>();
private static final ArrayList<SweetManualAppletMDSKDto> sweetManualAppletMDSKDtoList = new ArrayList<>();
private static final ArrayList<SweetManualArtistListMDSKDto> sweetManualArtistListMDSKDtoList = new ArrayList<>();
private static final ArrayList<SweetManualShopMdsk> sweetManualShopMDSKList = new ArrayList<>();
public static ArrayList<SweetManualAppletDto> getSweetManualAppletDtoList() {
return (ArrayList<SweetManualAppletDto>)sweetManualAppletDtoList.clone();
}
public static ArrayList<SweetManualArtistListDto> getSweetManualArtistListDtoList() {
return (ArrayList<SweetManualArtistListDto>)sweetManualArtistListDtoList.clone();
}
public static ArrayList<SweetManualShop> getSweetManualShopList() {
return (ArrayList<SweetManualShop>)sweetManualShopList.clone();
}
public static ArrayList<SweetManualAppletMDSKDto> getSweetManualAppletMDSKDtoList() {
return (ArrayList<SweetManualAppletMDSKDto>)sweetManualAppletMDSKDtoList.clone();
}
public static ArrayList<SweetManualArtistListMDSKDto> getSweetManualArtistListMDSKDtoList() {
return (ArrayList<SweetManualArtistListMDSKDto>)sweetManualArtistListMDSKDtoList.clone();
}
public static ArrayList<SweetManualShopMdsk> getSweetManualShopMdskList() {
return (ArrayList<SweetManualShopMdsk>)sweetManualShopMDSKList.clone();
}
}
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
......@@ -14,6 +15,7 @@ import com.liquidnet.service.sweet.dto.SweetManualArtistListDto;
import com.liquidnet.service.sweet.dto.SweetManualArtistStageListDto;
import com.liquidnet.service.sweet.entity.*;
import com.liquidnet.service.sweet.mapper.*;
import com.liquidnet.service.sweet.vo.SweetAnswerVo;
import com.liquidnet.service.sweet.vo.SweetArtistsRelationVo;
import com.liquidnet.service.sweet.vo.SweetRemindVo;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -97,7 +99,7 @@ public class RedisDataUtils {
Date dateEnd = DateUtil.parse(sweetManualAppletDto.getTimeEnd(), DateUtil.DATE_SMALL_STR);
Date dateStart = DateUtil.parse(sweetManualAppletDto.getTimeStart(), DateUtil.DATE_SMALL_STR);
int intervalDay = (int) DateUtil.intervalDays(dateStart, dateEnd);
ArrayList<String> list = new ArrayList<>();
ArrayList<String> list = CollectionUtil.arrayListString();
list.add(DateUtil.format(dateStart, DateUtil.Formatter.yyyy_MM_dd));
for (int i = 0; i < intervalDay; i++) {
list.add(DateUtil.format(DateUtil.addDay(dateStart, i + 1), DateUtil.Formatter.yyyy_MM_dd));
......@@ -218,7 +220,7 @@ public class RedisDataUtils {
vo.setUid(uid);
if (type.equalsIgnoreCase("sign")) {
if (vo.getSignList() == null) {
ArrayList<String> signList = new ArrayList<>();
ArrayList<String> signList = CollectionUtil.arrayListString();
signList.add(artistsId);
vo.setSignList(signList);
sqls.add(SqlMapping.get("sweet_user_relation.insert"));
......@@ -242,7 +244,7 @@ public class RedisDataUtils {
}
} else if (type.equalsIgnoreCase("watch")) {
if (vo.getWatchList() == null) {
ArrayList<String> watchList = new ArrayList<>();
ArrayList<String> watchList = CollectionUtil.arrayListString();
watchList.add(artistsId);
vo.setWatchList(watchList);
sqls.add(SqlMapping.get("sweet_user_relation.insert"));
......@@ -303,33 +305,38 @@ public class RedisDataUtils {
// 小程序演出提醒
public void setSweetRemind(String openId, String unionId, String performancesId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_REMIND.concat(unionId);
SweetRemindVo sweetRemindVo = SweetRemindVo.getNew();
sweetRemindVo.setRemindId(IDGenerator.nextSnowId());
sweetRemindVo.setCreatedAt(DateUtil.getNowTime());
sweetRemindVo.setPerformancesId(performancesId);
sweetRemindVo.setUnionId(unionId);
sweetRemindVo.setOpenId(openId);
// if (null != performanceInfo) {
// sweetRemindVo.setFieldName(performanceInfo.getFieldName());
// sweetRemindVo.setTitle(performanceInfo.getTitle());
// sweetRemindVo.setTimeStart(performanceInfo.getTimeStart());
// sweetRemindVo.setSellTime(performanceInfo.getSellTime());
// }
redisUtil.set(redisKey, sweetRemindVo);
}
public void delSweetRemind(String unionId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_REMIND.concat(unionId);
redisUtil.del(redisKey);
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
sqls.add(SqlMapping.get("sweet_remind.insert"));
sqlsDataA.add(new Object[]{
sweetRemindVo.getRemindId(), sweetRemindVo.getOpenId(), sweetRemindVo.getUnionId(), sweetRemindVo.getPerformancesId(),
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_REMIND_INSERT_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
}
// 正在现场服务号关注事件储存用户信息
public void setSweetWechatUser(SweetWechatUser sweetWechatUser) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(sweetWechatUser.getUnionId());
String redisKeyUnid = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_UNIONID.concat(sweetWechatUser.getOpenId());
redisUtil.set(redisKey, sweetWechatUser);
redisUtil.set(redisKeyUnid, sweetWechatUser.getUnionId());
}
public String getSweetWechatUserUnionid(String openid) {
if (openid.isEmpty()) {
return null;
}
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_UNIONID.concat(openid);
return (String) redisUtil.get(redisKey);
}
public SweetWechatUser getSweetWechatUser(String unionid) {
if (unionid.isEmpty()) {
return null;
......@@ -337,6 +344,14 @@ public class RedisDataUtils {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(unionid);
return (SweetWechatUser) redisUtil.get(redisKey);
}
public void delSweetWechatUser(String unionid, String openid) {
if (!unionid.isEmpty()) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(unionid);
redisUtil.del(redisKey);
String redisKeyUnid = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_UNIONID.concat(openid);
redisUtil.del(redisKeyUnid);
}
}
// 艺人详情
public SweetArtists setArtistsDetails(String artistsId) {
......@@ -377,4 +392,15 @@ public class RedisDataUtils {
queueUtils.sendMsgByRedis(MQConst.SweetQueue.LUCK_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
}
// 答案
public void setSweetAnswer(SweetAnswerVo sweetAnswerVo) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_ANSWER_PHONE.concat(sweetAnswerVo.getPhone());
redisUtil.set(redisKey, sweetAnswerVo);
}
public SweetAnswerVo getSweetAnswer(String phone) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_ANSWER_PHONE.concat(phone);
SweetAnswerVo sweetAnswerVo = (SweetAnswerVo) redisUtil.get(redisKey);
return sweetAnswerVo;
}
}
......@@ -92,7 +92,7 @@ public class RedisMDSKDataUtils {
Date dateEnd = DateUtil.parse(sweetManualAppletDto.getTimeEnd(), DateUtil.DATE_SMALL_STR);
Date dateStart = DateUtil.parse(sweetManualAppletDto.getTimeStart(), DateUtil.DATE_SMALL_STR);
int intervalDay = (int) DateUtil.intervalDays(dateStart, dateEnd);
ArrayList<String> list = new ArrayList<>();
ArrayList<String> list = CollectionUtil.arrayListString();
list.add(DateUtil.format(dateStart, DateUtil.Formatter.yyyy_MM_dd));
for (int i = 0; i < intervalDay; i++) {
list.add(DateUtil.format(DateUtil.addDay(dateStart, i + 1), DateUtil.Formatter.yyyy_MM_dd));
......@@ -213,7 +213,7 @@ public class RedisMDSKDataUtils {
vo.setUid(uid);
if (type.equalsIgnoreCase("sign")) {
if (vo.getSignList() == null) {
ArrayList<String> signList = new ArrayList<>();
ArrayList<String> signList = CollectionUtil.arrayListString();
signList.add(artistsId);
vo.setSignList(signList);
sqls.add(SqlMapping.get("sweet_user_relation_mdsk.insert"));
......@@ -237,7 +237,7 @@ public class RedisMDSKDataUtils {
}
} else if (type.equalsIgnoreCase("watch")) {
if (vo.getWatchList() == null) {
ArrayList<String> watchList = new ArrayList<>();
ArrayList<String> watchList = CollectionUtil.arrayListString();
watchList.add(artistsId);
vo.setWatchList(watchList);
sqls.add(SqlMapping.get("sweet_user_relation_mdsk.insert"));
......
package com.liquidnet.service.sweet.vo;
import com.liquidnet.service.sweet.entity.SweetAnswer;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class SweetAnswerVo implements Serializable, Cloneable {
/**
* 手机号
*/
private String phone;
/**
* 答案json
*/
private String answerJson;
/**
* 图片
*/
private String imgUrl;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
private static final SweetAnswerVo obj = new SweetAnswerVo();
public static SweetAnswerVo getNew() {
try {
return (SweetAnswerVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetAnswerVo();
}
}
public SweetAnswerVo copy(SweetAnswer source) {
if (null == source) return this;
this.setPhone(source.getPhone());
this.setAnswerJson(source.getAnswerJson());
this.setImgUrl(source.getImgUrl());
this.setCreatedAt(source.getCreatedAt());
this.setUpdatedAt(source.getUpdatedAt());
return this;
}
}
......@@ -9,6 +9,7 @@ public class SweetRemindVo implements Serializable, Cloneable {
private String performancesId;
private String openId;
private String unionId;
private String remindId;
/*private String title;
private String timeStart;
private String sellTime;
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.sweet.mapper.SweetAnswerMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.sweet.mapper.SweetRemindMapper">
</mapper>
......@@ -59,3 +59,11 @@ sweet_user_relation_mdsk.delete=DELETE FROM sweet_user_relation_mdsk WHERE user
# ------------------------用户关系----------------------------
sweet_luck_draw.insert=INSERT INTO sweet_luck_draw (user_id,luck_draw_num,status,created_at) VALUES (?,?,1,?)
# --------------------------答案--------------------------
sweet_answer.insert=INSERT INTO sweet_answer (answer_id,phone,answer_json,img_url) VALUES (?,?,?,?)
# --------------------------关注/取消服务号的用户信息--------------------------
sweet_user.insert=INSERT INTO sweet_wechat_user (user_id,openId,unionId,nickname,sexDesc,sex,headImgUrl,language,country,province,city,subscribeTime,subscribeScene) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)
sweet_user.update=UPDATE sweet_wechat_user SET is_cancel = ?, updated_at = ? WHERE unionId = ?
# --------------------------提醒记录--------------------------
sweet_remind.insert=INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) 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