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

Commit 373e7970 authored by 胡佳晨's avatar 胡佳晨

Merge branch 'master' into dev_transfer

parents 821aa560 55c37482
...@@ -80,6 +80,7 @@ public class MQConst { ...@@ -80,6 +80,7 @@ public class MQConst {
ANSWERINSERT_DRAW("sweet:stream:rk.answerInsert", "group.answerInsert", "答案"), ANSWERINSERT_DRAW("sweet:stream:rk.answerInsert", "group.answerInsert", "答案"),
SWEET_USER_INSERT_DRAW("sweet:stream:rk.sweetUserInsert", "group.sweetUserInsert", "关注服务号的用户信息"), SWEET_USER_INSERT_DRAW("sweet:stream:rk.sweetUserInsert", "group.sweetUserInsert", "关注服务号的用户信息"),
SWEET_REMIND_INSERT_DRAW("sweet:stream:rk.remindInsert", "group.remindInsert", "提醒记录"), SWEET_REMIND_INSERT_DRAW("sweet:stream:rk.remindInsert", "group.remindInsert", "提醒记录"),
SWEET_APPLET_USER_INSERT_DRAW("sweet:stream:rk.sweetAppletUserInsert", "group.sweetAppletUserInsert", "小程序登录记录用户解密后信息"),
; ;
private final String key; private final String key;
......
...@@ -55,6 +55,16 @@ public class SmsEnum { ...@@ -55,6 +55,16 @@ public class SmsEnum {
* - 您已成功购买${name}门票。可至个人中心查看订单,个人中心地址:http://t.cn/ExMlr1B。演出${time}开始。请持购票人身份证到现场取票。咨询电话:4001680650。 * - 您已成功购买${name}门票。可至个人中心查看订单,个人中心地址:http://t.cn/ExMlr1B。演出${time}开始。请持购票人身份证到现场取票。咨询电话:4001680650。
*/ */
SMS_181500419, SMS_181500419,
/**
* 微信关注正在现场服务号通知
* - 模版内容:您已成功购买$(name)门票。可至个人中心查看订单http://tcn/ExMir1B。演出$(time)开始。微信关注正在现场服务号,联系我们。
*/
SMS_223192705,
/**
* 微信关注正在现场服务号通知
* - 模版内容:您已成功购买$(name)门票。可至个人中心查看订单http://tcn/ExMir1B。演出$(time)开始。微信关注摩登天空服务号,联系我们。
*/
SMS_223203737,
; ;
} }
} }
package com.liquidnet.service.consumer.sweet.config;
import com.liquidnet.service.consumer.sweet.receiver.ConsumerSweetAppletUserRdsReceiver;
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_APPLET_USER_INSERT_DRAW;
@Configuration
public class ConsumerSweetAppletUserRedisStreamConfig {
@Autowired
ConsumerSweetAppletUserRdsReceiver consumerSweetAppletUserRdsReceiver;
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 receiveSqlSweetAppletUser(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_APPLET_USER_INSERT_DRAW.getGroup(), SWEET_APPLET_USER_INSERT_DRAW.name() + t),
StreamOffset.create(SWEET_APPLET_USER_INSERT_DRAW.getKey(), ReadOffset.lastConsumed()), consumerSweetAppletUserRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
@Bean
public Subscription subscriptionSqlSweetAppletUser(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlSweetAppletUser(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlSweetAppletUser2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlSweetAppletUser(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlSweetAppletUser3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlSweetAppletUser(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
...@@ -17,7 +17,7 @@ import java.util.HashMap; ...@@ -17,7 +17,7 @@ import java.util.HashMap;
@Slf4j @Slf4j
public abstract class AbstractSqlRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> { public abstract class AbstractSqlRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired @Autowired
private IBaseDao baseDao; public IBaseDao baseDao;
@Autowired @Autowired
StringRedisTemplate stringRedisTemplate; StringRedisTemplate stringRedisTemplate;
@Autowired @Autowired
......
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.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.stereotype.Component;
import java.util.HashMap;
@Slf4j
@Component
public class ConsumerSweetAppletUserRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.SWEET_APPLET_USER_INSERT_DRAW.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.SWEET_APPLET_USER_INSERT_DRAW.getGroup();
}
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.debug("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerSqlDaoHandler(message.getValue().get("message"));
log.info("CONSUMER SQL RESULT:{} ==> MESSAGE_ID:{}", result, message.getId());
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("#CONSUMER SQL RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e);
} finally {
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception ignored) {
}
}
}
private boolean consumerSqlDaoHandler(String msg) {
Boolean aBoolean = false;
try {
SqlMapping.SqlMessage sqlMessage = JsonUtils.fromJson(msg, SqlMapping.SqlMessage.class);
if (sqlMessage == null) {
aBoolean = true;
} else {
aBoolean = baseDao.batchSqls(sqlMessage.getSqls(), sqlMessage.getArgs());
}
} 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;
}
}
...@@ -193,7 +193,9 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService { ...@@ -193,7 +193,9 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
List<KylinTicketTimesVo> ticketTimesList = vo.getTicketTimeList(); List<KylinTicketTimesVo> ticketTimesList = vo.getTicketTimeList();
if (null != ticketTimesList) { if (null != ticketTimesList) {
for (KylinTicketTimesVo partner : ticketTimesList) {
for (int i = 0; i < ticketTimesList.size(); i++) {
KylinTicketTimesVo partner = ticketTimesList.get(i);
List<KylinTicketVo> ticketList = partner.getTicketList(); List<KylinTicketVo> ticketList = partner.getTicketList();
List<KylinTicketVo> ticketListNew = ObjectUtil.getKylinTicketVoArrayList(); List<KylinTicketVo> ticketListNew = ObjectUtil.getKylinTicketVoArrayList();
for (KylinTicketVo ticket : ticketList) { for (KylinTicketVo ticket : ticketList) {
...@@ -203,16 +205,17 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService { ...@@ -203,16 +205,17 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
Integer isMemberStatus = getIsMemberStatus(ticket); Integer isMemberStatus = getIsMemberStatus(ticket);
ticket.setIsMemberStatus(isMemberStatus); ticket.setIsMemberStatus(isMemberStatus);
if (null == isAgent || 0 == isAgent) { if (null == isAgent || 0 == isAgent) {
if (0 == ticket.getIsAgent()) { ticketListNew.add(ticket);
ticketListNew.add(ticket); } else if (1 >= isAgent) {
}
} else if (1 == isAgent) {
if (1 == ticket.getIsAgent()) { if (1 == ticket.getIsAgent()) {
ticketListNew.add(ticket); ticketListNew.add(ticket);
} }
} }
} }
partner.setTicketList(ticketListNew); partner.setTicketList(ticketListNew);
if (ticketListNew.size() == 0) {
ticketTimesList.remove(i);
}
} }
} }
......
...@@ -857,9 +857,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -857,9 +857,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
SmsEnum.ADTemplate adTemplate = null; SmsEnum.ADTemplate adTemplate = null;
if (orderTicketData.getGetTicketType().equals("express")) { if (orderTicketData.getGetTicketType().equals("express")) {
adTemplate = SmsEnum.ADTemplate.SMS_181490473; adTemplate = SmsEnum.ADTemplate.SMS_223203737;
} else if (orderTicketData.getGetTicketType().equals("electronic")) { } else if (orderTicketData.getGetTicketType().equals("electronic")) {
adTemplate = ticketData.getIsShowCode() == 1 ? SmsEnum.ADTemplate.SMS_171358560 : SmsEnum.ADTemplate.SMS_181500419; adTemplate = ticketData.getIsShowCode() == 1 ? SmsEnum.ADTemplate.SMS_223203737 : SmsEnum.ADTemplate.SMS_223203737;
} }
if (null != adTemplate) { if (null != adTemplate) {
...@@ -907,12 +907,22 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -907,12 +907,22 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
} }
public boolean checkAgent(String agentId, KylinTicketVo ticketData) { public boolean checkAgent(String agentId, KylinTicketVo ticketData) {
boolean isAgent = ticketData.getIsAgent() == 1; if(agentId.equals(0)){
if (isAgent) {
return redisUtil.getDB15RedisHasKey(KylinRedisConst.AGENT, agentId);
} else {
return true; return true;
}else{
boolean isAgent = ticketData.getIsAgent() == 1;
if (isAgent) {
return true;
} else {
return !redisUtil.getDB15RedisHasKey(KylinRedisConst.AGENT, agentId);
}
} }
// boolean isAgent = ticketData.getIsAgent() == 1;
// if (isAgent) {
// return redisUtil.getDB15RedisHasKey(KylinRedisConst.AGENT, agentId);
// } else {
// return true;
// }
} }
private boolean sycDamaiOrder(String orderId, int isMember) { private boolean sycDamaiOrder(String orderId, int isMember) {
......
...@@ -440,6 +440,28 @@ CREATE TABLE `sweet_wechat_user` ...@@ -440,6 +440,28 @@ CREATE TABLE `sweet_wechat_user`
COLLATE utf8mb4_unicode_ci COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '正在现场服务号关注事件储存用户信息表'; ROW_FORMAT = DYNAMIC COMMENT '正在现场服务号关注事件储存用户信息表';
-- 小程序登录记录用户解密后信息表
drop TABLE if exists `sweet_applet_user`;
CREATE TABLE `sweet_applet_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',
`getPhoneNumber` varchar(200) NOT NULL DEFAULT '' COMMENT '手机号',
`getPurePhoneNumber` varchar(200) NOT NULL DEFAULT '' COMMENT '手机号',
`getCountryCode` varchar(200) NOT NULL DEFAULT '' COMMENT '地区码',
`type` tinyint NOT NULL DEFAULT 0 COMMENT '1草莓 2五百里 3mdsk 4正在',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_applet_user_user_id` (`user_id`),
UNIQUE KEY (openId, unionId, getPurePhoneNumber)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '小程序登录记录用户解密后信息表';
-- 答题表 -- 答题表
drop TABLE if exists `sweet_answer`; drop TABLE if exists `sweet_answer`;
CREATE TABLE `sweet_answer` CREATE TABLE `sweet_answer`
......
...@@ -19,4 +19,8 @@ XGROUP CREATE sweet:stream:rk.sweetUserInsert group.sweetUserInsert 0 ...@@ -19,4 +19,8 @@ XGROUP CREATE sweet:stream:rk.sweetUserInsert group.sweetUserInsert 0
-- 提醒记录 -- -- 提醒记录 --
XADD sweet:stream:rk.remindInsert * 0 0 XADD sweet:stream:rk.remindInsert * 0 0
XGROUP CREATE sweet:stream:rk.remindInsert group.remindInsert 0 XGROUP CREATE sweet:stream:rk.remindInsert group.remindInsert 0
\ No newline at end of file
-- 小程序登录记录用户解密后信息 --
XADD sweet:stream:rk.sweetAppletUserInsert * 0 0
XGROUP CREATE sweet:stream:rk.sweetAppletUserInsert group.sweetAppletUserInsert 0
\ No newline at end of file
...@@ -4,8 +4,12 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; ...@@ -4,8 +4,12 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.HttpUtil; import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.utils.QueueUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken; import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -16,7 +20,9 @@ import org.springframework.stereotype.Service; ...@@ -16,7 +20,9 @@ import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList;
import java.util.Objects; import java.util.Objects;
/** /**
...@@ -34,6 +40,9 @@ public class SweetWechatLoginServiceImpl { ...@@ -34,6 +40,9 @@ public class SweetWechatLoginServiceImpl {
@Autowired @Autowired
private SweetWechatService sweetWechatService; private SweetWechatService sweetWechatService;
@Autowired
QueueUtils queueUtils;
@Value("${liquidnet.service.adam.url}") @Value("${liquidnet.service.adam.url}")
private String adamUrl; private String adamUrl;
...@@ -56,8 +65,6 @@ public class SweetWechatLoginServiceImpl { ...@@ -56,8 +65,6 @@ public class SweetWechatLoginServiceImpl {
return ResponseDto.failure("解密手机号码信息错误"); return ResponseDto.failure("解密手机号码信息错误");
} }
registerByMobile(wxMaPhoneNumberInfo.getPurePhoneNumber());
String unionId = sessionInfo.getUnionid(); String unionId = sessionInfo.getUnionid();
String openId = sessionInfo.getOpenid(); String openId = sessionInfo.getOpenid();
...@@ -68,6 +75,18 @@ public class SweetWechatLoginServiceImpl { ...@@ -68,6 +75,18 @@ public class SweetWechatLoginServiceImpl {
userInfo.put("getPurePhoneNumber", wxMaPhoneNumberInfo.getPurePhoneNumber()); userInfo.put("getPurePhoneNumber", wxMaPhoneNumberInfo.getPurePhoneNumber());
userInfo.put("getCountryCode", wxMaPhoneNumberInfo.getCountryCode()); userInfo.put("getCountryCode", wxMaPhoneNumberInfo.getCountryCode());
registerByMobile(wxMaPhoneNumberInfo.getPurePhoneNumber());
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_applet_user.insert"));
sqlsDataA.add(new Object[]{
IDGenerator.nextSnowId(), openId, unionId, wxMaPhoneNumberInfo.getPhoneNumber(), wxMaPhoneNumberInfo.getPurePhoneNumber()
, wxMaPhoneNumberInfo.getCountryCode(), type
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_APPLET_USER_INSERT_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
return ResponseDto.success(userInfo); return ResponseDto.success(userInfo);
} catch (Exception e) { } catch (Exception e) {
log.error("WechatUserInfoError", e); log.error("WechatUserInfoError", e);
......
...@@ -66,4 +66,6 @@ sweet_answer.insert=INSERT INTO sweet_answer (answer_id,phone,answer_json,img_ur ...@@ -66,4 +66,6 @@ sweet_answer.insert=INSERT INTO sweet_answer (answer_id,phone,answer_json,img_ur
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.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_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 (?,?,?,?) sweet_remind.insert=INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?)
\ No newline at end of file # --------------------------小程序登录记录用户解密后信息--------------------------
sweet_applet_user.insert=INSERT INTO sweet_applet_user (user_id,openId,unionId,getPhoneNumber,getPurePhoneNumber,getCountryCode,type) 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