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

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

Merge branch 'dev' into test

parents 947f52c9 b2f609c7
...@@ -290,6 +290,23 @@ public abstract class DateUtil { ...@@ -290,6 +290,23 @@ public abstract class DateUtil {
} }
} }
/**
* 比较日期
*/
public static int compareStrDayyyyMMdd(String date1, String date2) {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date1L = LocalDateTime.parse(date1, df);
LocalDateTime date2L = LocalDateTime.parse(date2, df);
if (date1L.isAfter(date2L)) {// 大于
return 1;
} else if (date1L.isBefore(date2L)) { //小于
return -1;
} else { // 相等
return 0;
}
}
/** /**
* 间隔天数 * 间隔天数
* *
......
...@@ -171,9 +171,6 @@ public class HttpUtil { ...@@ -171,9 +171,6 @@ public class HttpUtil {
public static void main(String[] args) { public static void main(String[] args) {
// String result = httpGetRequest("http://10.0.129.161:9080/globalId?code=YGOL&num=2");
// JSONObject jo = JSONObject.parseObject(result);
// System.out.println(result);
Map<String,Object> header = new HashMap<String,Object>(); Map<String,Object> header = new HashMap<String,Object>();
Map<String,Object> param = new HashMap<String,Object>(); Map<String,Object> param = new HashMap<String,Object>();
param.put("globalId","002"); param.put("globalId","002");
......
...@@ -4,6 +4,7 @@ public class MQConst { ...@@ -4,6 +4,7 @@ public class MQConst {
public enum AdamQueue { public enum AdamQueue {
SMS_NOTICE("adam:stream:rk.sms.notice", "group.sms.sender", "短信通知"), SMS_NOTICE("adam:stream:rk.sms.notice", "group.sms.sender", "短信通知"),
// SMS_SPREAD("adam:stream:rk.sms.spread", "group.sms.sender", "短信推广"), // SMS_SPREAD("adam:stream:rk.sms.spread", "group.sms.sender", "短信推广"),
SQL_UREGISTER("adam:stream:rk.sql.uregister", "group.sql.ucenter", "用户注册"), SQL_UREGISTER("adam:stream:rk.sql.uregister", "group.sql.ucenter", "用户注册"),
SQL_UCENTER("adam:stream:rk.sql.ucenter", "group.sql.ucenter", "用户中心"), SQL_UCENTER("adam:stream:rk.sql.ucenter", "group.sql.ucenter", "用户中心"),
SQL_UMEMBER("adam:stream:rk.sql.umember", "group.sql.ucenter", "购买会员"), SQL_UMEMBER("adam:stream:rk.sql.umember", "group.sql.ucenter", "购买会员"),
...@@ -30,4 +31,41 @@ public class MQConst { ...@@ -30,4 +31,41 @@ public class MQConst {
return desc; return desc;
} }
} }
public enum KylinQueue {
SMS_NOTICE("adam:stream:rk.sms.notice", "group.sms.sender", "短信通知"),
// SMS_SPREAD("adam:stream:rk.sms.spread", "group.sms.sender", "短信推广"),
SQL_PERFORMANCE_LACK("kylin:stream:rk.performance.lack", "group.performance.lack", "缺票登记"),
SQL_ORDER_CREATE("kylin:stream:rk.order.create", "group.order.create", "创建订单"),
SQL_ORDER_AGAIN("kylin:stream:rk.order.again", "group.order.again", "订单再次支付"),
SQL_ORDER_CLOSE("kylin:stream:rk.order.close", "group.order.close", "订单关闭"),
SQL_ORDER_PAY("kylin:stream:rk.order.pay", "group.order.pay", "订单支付"),
SQL_ORDER_REFUND("kylin:stream:rk.order.refund", "group.order.refund", "订单申请退款"),
SQL_ORDER_WITHDRAW("kylin:stream:rk.order.withdraw", "group.order.withdraw", "订单申请撤回"),
SQL_ORDER_OVERTIME_REFUND("kylin:stream:rk.order.overtime.refund", "group.order.overtime.refund", "超时支付申请退款"),
SQL_STATION("kylin:stream:rk.station", "group.station", "验票更新"),
;
private final String key;
private final String group;
private final String desc;
KylinQueue(String key, String group, String desc) {
this.key = key;
this.group = group;
this.desc = desc;
}
public String getKey() {
return key;
}
public String getGroup() {
return group;
}
public String getDesc() {
return desc;
}
}
} }
...@@ -32,6 +32,10 @@ liquidnet: ...@@ -32,6 +32,10 @@ liquidnet:
host: 39.106.122.201 host: 39.106.122.201
port: 6379 port: 6379
password: 3Xa%8p password: 3Xa%8p
dragon:
host: 39.106.122.201
port: 6379
password: 3Xa%8p
mongodb: mongodb:
host: 39.106.122.201:27017 host: 39.106.122.201:27017
port: 27017 port: 27017
......
...@@ -32,6 +32,10 @@ liquidnet: ...@@ -32,6 +32,10 @@ liquidnet:
host: r-2ze7002ckw5u75fgukpd.redis.rds.aliyuncs.com host: r-2ze7002ckw5u75fgukpd.redis.rds.aliyuncs.com
port: 6380 port: 6380
password: PO@B!Iud32 password: PO@B!Iud32
dragon:
host: r-2ze7002ckw5u75fgukpd.redis.rds.aliyuncs.com
port: 6380
password: PO@B!Iud32
mongodb: mongodb:
host: s-2zef656730e5a1d4-pub.mongodb.rds.aliyuncs.com:3717,s-2ze49872ed6aeb14-pub.mongodb.rds.aliyuncs.com:3717 host: s-2zef656730e5a1d4-pub.mongodb.rds.aliyuncs.com:3717,s-2ze49872ed6aeb14-pub.mongodb.rds.aliyuncs.com:3717
port: 3717 port: 3717
......
...@@ -3,7 +3,7 @@ liquidnet: ...@@ -3,7 +3,7 @@ liquidnet:
updating: updating:
switch: false switch: false
info: info:
port: 9007 port: 9997
context: context:
# context: /service-consumer # context: /service-consumer
name: liquidnet-service-consumer-dragon name: liquidnet-service-consumer-dragon
......
...@@ -3,7 +3,7 @@ liquidnet: ...@@ -3,7 +3,7 @@ liquidnet:
updating: updating:
switch: false switch: false
info: info:
port: 9007 port: 9997
context: context:
# context: /service-consumer # context: /service-consumer
name: liquidnet-service-consumer-dragon name: liquidnet-service-consumer-dragon
......
...@@ -70,9 +70,9 @@ spring: ...@@ -70,9 +70,9 @@ spring:
acknowledge-mode: manual acknowledge-mode: manual
redis: redis:
database: 15 database: 15
port: ${liquidnet.redis.port} port: ${liquidnet.redis.dragon.port}
host: ${liquidnet.redis.host} host: ${liquidnet.redis.dragon.host}
password: ${liquidnet.redis.password} password: ${liquidnet.redis.dragon.password}
lettuce: lettuce:
pool: pool:
max-active: 8 max-active: 8
......
package com.liquidnet.service.consumer.adam; package com.liquidnet.service;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
package com.liquidnet.service.consumer.adam.service.config; package com.liquidnet.service.consumer.adam.config;
import com.liquidnet.service.consumer.adam.service.receiver.ConsumerAdamSmsNoticeRdsReceiver; import com.liquidnet.service.consumer.adam.receiver.ConsumerAdamSmsNoticeRdsReceiver;
import lombok.var; import lombok.var;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
......
package com.liquidnet.service.consumer.adam.service.config; package com.liquidnet.service.consumer.adam.config;
import com.liquidnet.service.consumer.adam.service.receiver.ConsumerAdamUCenterRdsReceiverSql; import com.liquidnet.service.consumer.adam.receiver.ConsumerAdamSqlUCenterRdsReceiver;
import com.liquidnet.service.consumer.adam.service.receiver.ConsumerAdamUMemberRdsReceiverSql; import com.liquidnet.service.consumer.adam.receiver.ConsumerAdamSqlUMemberRdsReceiver;
import com.liquidnet.service.consumer.adam.service.receiver.ConsumerAdamURegisterRdsReceiverSql; import com.liquidnet.service.consumer.adam.receiver.ConsumerAdamSqlURegisterRdsReceiver;
import lombok.var; import lombok.var;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -22,11 +22,11 @@ import static com.liquidnet.service.base.constant.MQConst.*; ...@@ -22,11 +22,11 @@ import static com.liquidnet.service.base.constant.MQConst.*;
@Configuration @Configuration
public class ConsumerAdamSqlUcenterRedisStreamConfig { public class ConsumerAdamSqlUcenterRedisStreamConfig {
@Autowired @Autowired
ConsumerAdamURegisterRdsReceiverSql consumerAdamURegisterRdsReceiver; ConsumerAdamSqlURegisterRdsReceiver consumerAdamURegisterRdsReceiver;
@Autowired @Autowired
ConsumerAdamUCenterRdsReceiverSql consumerAdamUCenterRdsReceiver; ConsumerAdamSqlUCenterRdsReceiver consumerAdamUCenterRdsReceiver;
@Autowired @Autowired
ConsumerAdamUMemberRdsReceiverSql consumerAdamUMemberRdsReceiver; ConsumerAdamSqlUMemberRdsReceiver consumerAdamUMemberRdsReceiver;
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) { private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer var options = StreamMessageListenerContainer
......
package com.liquidnet.service.consumer.adam.service.receiver; package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.common.sms.processor.SmsProcessor; import com.liquidnet.common.sms.processor.SmsProcessor;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SmsMessage; import com.liquidnet.service.base.SmsMessage;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.consumer.adam.service.IBaseDao;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord; import org.springframework.data.redis.connection.stream.MapRecord;
......
package com.liquidnet.service.consumer.adam.service.receiver; package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
......
package com.liquidnet.service.consumer.adam.service.receiver; package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Slf4j
@Component @Component
public class ConsumerAdamSmsNoticeRdsReceiver extends AbstractSmsRedisReceiver { public class ConsumerAdamSmsNoticeRdsReceiver extends AbstractSmsRedisReceiver {
@Override @Override
......
package com.liquidnet.service.consumer.adam.service.receiver; package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Slf4j
@Component @Component
public class ConsumerAdamUCenterRdsReceiverSql extends AbstractSqlRedisReceiver { public class ConsumerAdamSqlUCenterRdsReceiver extends AbstractSqlRedisReceiver {
@Override @Override
protected String getRedisStreamKey() { protected String getRedisStreamKey() {
return MQConst.AdamQueue.SQL_UCENTER.getKey(); return MQConst.AdamQueue.SQL_UCENTER.getKey();
......
package com.liquidnet.service.consumer.adam.service.receiver; package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Slf4j
@Component @Component
public class ConsumerAdamUMemberRdsReceiverSql extends AbstractSqlRedisReceiver { public class ConsumerAdamSqlUMemberRdsReceiver extends AbstractSqlRedisReceiver {
@Override @Override
protected String getRedisStreamKey() { protected String getRedisStreamKey() {
return MQConst.AdamQueue.SQL_UMEMBER.getKey(); return MQConst.AdamQueue.SQL_UMEMBER.getKey();
......
package com.liquidnet.service.consumer.adam.service.receiver; package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Slf4j
@Component @Component
public class ConsumerAdamURegisterRdsReceiverSql extends AbstractSqlRedisReceiver { public class ConsumerAdamSqlURegisterRdsReceiver extends AbstractSqlRedisReceiver {
@Override @Override
protected String getRedisStreamKey() { protected String getRedisStreamKey() {
return MQConst.AdamQueue.SQL_UREGISTER.getKey(); return MQConst.AdamQueue.SQL_UREGISTER.getKey();
......
package com.liquidnet.service.consumer.dragon; package com.liquidnet.service;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
package com.liquidnet.service.consumer.dragon.service.config; package com.liquidnet.service.consumer.dragon.config;
import com.liquidnet.service.consumer.dragon.service.receiver.*; import com.liquidnet.service.consumer.dragon.receiver.*;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import lombok.var; import lombok.var;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
package com.liquidnet.service.consumer.dragon.service.config; package com.liquidnet.service.consumer.dragon.config;
import com.liquidnet.service.consumer.dragon.service.receiver.*; import com.liquidnet.service.consumer.dragon.receiver.*;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import lombok.var; import lombok.var;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
package com.liquidnet.service.consumer.dragon.service.receiver; package com.liquidnet.service.consumer.dragon.receiver;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
...@@ -18,7 +18,7 @@ import java.util.HashMap; ...@@ -18,7 +18,7 @@ import java.util.HashMap;
* @version V1.0 * @version V1.0
* @Description: TODO * @Description: TODO
* @class: AbstractRedisReceiver * @class: AbstractRedisReceiver
* @Package com.liquidnet.service.consumer.dragon.service.receiver * @Package com.liquidnet.service.consumer.dragon.receiver
* @Copyright: LightNet @ Copyright (c) 2021 * @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/22 20:28 * @date 2021/7/22 20:28
*/ */
......
package com.liquidnet.service.consumer.dragon.service.receiver; package com.liquidnet.service.consumer.dragon.receiver;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
package com.liquidnet.service.consumer.dragon.service.receiver; package com.liquidnet.service.consumer.dragon.receiver;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
package com.liquidnet.service.consumer.dragon.service.receiver; package com.liquidnet.service.consumer.dragon.receiver;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
package com.liquidnet.service.consumer.dragon.service.receiver; package com.liquidnet.service.consumer.dragon.receiver;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
package com.liquidnet.service.consumer.dragon.service.receiver; package com.liquidnet.service.consumer.dragon.receiver;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
......
package com.liquidnet.service.consumer.kylin; package com.liquidnet.service;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
package com.liquidnet.service.consumer.kylin.service.Utils; package com.liquidnet.service.consumer.kylin.Utils;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
......
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.common.sms.processor.SmsProcessor;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SmsMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener;
import javax.annotation.Resource;
@Slf4j
public abstract class AbstractSmsRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Resource
SmsProcessor smsProcessor;
@Autowired
StringRedisTemplate stringRedisTemplate;
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.info("CONSUMER SMS[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerSmsSendHandler(message.getValue().get("message"));
log.debug("CONSUMER SMS RESULT:{}", result);
// 消费成功确认,消息删除和消息确认是一个事务
if (result) {
log.info("CONSUMER SMS SUCC ==> MESSAGE_ID:{}", message.getId());
try {
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("CONSUMER SMS SUC ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{}]", message.getId(), e);
}
}
}
private boolean consumerSmsSendHandler(String msg) {
try {
SmsMessage smsMessage = JsonUtils.fromJson(msg, SmsMessage.class);
return smsProcessor.send(smsMessage.getPhone(), smsMessage.getSignName(), smsMessage.getTemplateCode(), smsMessage.getTemplateParam().toString());
} catch (Exception e) {
log.error("CONSUMER SMS FAIL ==> {}", e.getMessage(), e);
return false;
}
}
protected abstract String getRedisStreamKey();
}
\ No newline at end of file
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.OrderCloseMapping;
import com.liquidnet.service.consumer.kylin.Utils.KylinUtils;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener;
@Slf4j
public abstract class AbstractSqlOptOrderCloseRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisUtil redisUtil;
@Autowired
private KylinUtils kylinUtils;
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.info("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerSqlOperationOrderCloseHandler(message.getValue().get("message"));
log.debug("CONSUMER SQL RESULT:{}", result);
// 消费成功确认,消息删除和消息确认是一个事务
if (result) {
log.info("CONSUMER SMS SUCC ==> MESSAGE_ID:{}", message.getId());
try {
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("CONSUMER SMS SUCC ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{}]", message.getId(), e);
}
}
}
private boolean consumerSqlOperationOrderCloseHandler(String msg) {
try {
OrderCloseMapping.orderCloseMessage mqMessage = JsonUtils.fromJson(msg, OrderCloseMapping.orderCloseMessage.class);
for (int x = 0; x < mqMessage.getOrderTicketIds().size(); x++) {
String t = mqMessage.getOrderTicketIds().get(x);
String orderTicketId = t.split(",")[0];
String uid = t.split(",")[1];
KylinOrderTicketVo vo = kylinUtils.getOrderTicketVo(orderTicketId);
vo.setStatus(2);
redisUtil.set("kylin:order:id:" + orderTicketId, vo);
kylinUtils.resetOrderListVo(uid, 2, orderTicketId, vo);
// redis 限购
for (int i = 0; i < vo.getEntitiesVoList().size(); i++) {
KylinOrderTicketEntitiesVo items = vo.getEntitiesVoList().get(i);
kylinUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1);
}
}
return true;
} catch (Exception e) {
log.error("CONSUMER SMS FAIL ==> {}", e.getMessage(), e);
return false;
}
}
protected abstract String getRedisStreamKey();
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.consumer.service.IBaseDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener;
@Slf4j
public abstract class AbstractSqlRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired
private IBaseDao baseDao;
@Autowired
StringRedisTemplate stringRedisTemplate;
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.info("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerSqlDaoHandler(message.getValue().get("message"));
log.debug("CONSUMER SQL RESULT:{}", result);
// 消费成功确认,消息删除和消息确认是一个事务
if (result) {
log.info("CONSUMER SMS SUCC ==> MESSAGE_ID:{}", message.getId());
try {
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("CONSUMER SMS SUCC ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{}]", message.getId(), e);
}
}
}
private boolean consumerSqlDaoHandler(String msg) {
try {
SqlMapping.SqlMessage sqlMessage = JsonUtils.fromJson(msg, SqlMapping.SqlMessage.class);
return baseDao.batchSqls(sqlMessage.getSqls(), sqlMessage.getArgs());
} catch (Exception e) {
log.error("CONSUMER SMS FAIL ==> {}", e.getMessage(), e);
return false;
}
}
protected abstract String getRedisStreamKey();
}
\ No newline at end of file
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSmsNoticeRdsReceiver extends AbstractSmsRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SMS_NOTICE.getKey();
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSqlOptOrderCloseRedisReceiver extends AbstractSqlOptOrderCloseRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_ORDER_CLOSE.getKey();
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSqlOrderAgainRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return null;
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSqlOrderCreateRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return null;
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSqlOrderOvertimeRefundRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return null;
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSqlOrderPayRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return null;
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSqlOrderRefundRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return null;
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSqlOrderWithdrawRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return null;
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSqlPerformanceLackRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return null;
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSqlStationRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return null;
}
}
...@@ -5,7 +5,7 @@ import com.liquidnet.common.mq.constant.MQConst; ...@@ -5,7 +5,7 @@ import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.OrderCloseMapping; import com.liquidnet.service.base.OrderCloseMapping;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.consumer.kylin.service.Utils.KylinUtils; import com.liquidnet.service.consumer.kylin.Utils.KylinUtils;
import com.liquidnet.service.consumer.service.IBaseDao; import com.liquidnet.service.consumer.service.IBaseDao;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
......
...@@ -11,4 +11,4 @@ liquidnet: ...@@ -11,4 +11,4 @@ liquidnet:
spring: spring:
profiles: profiles:
include: service-consumer include: service-consumer-kylin
...@@ -11,4 +11,4 @@ liquidnet: ...@@ -11,4 +11,4 @@ liquidnet:
spring: spring:
profiles: profiles:
include: service-consumer include: service-consumer-kylin
\ No newline at end of file \ No newline at end of file
...@@ -11,4 +11,4 @@ liquidnet: ...@@ -11,4 +11,4 @@ liquidnet:
spring: spring:
profiles: profiles:
include: service-consumer include: service-consumer-kylin
\ No newline at end of file \ No newline at end of file
spring: spring:
application: application:
name: liquidnet-service-consumer name: liquidnet-service-consumer-kylin
profiles: profiles:
active: dev active: dev
\ No newline at end of file
package com.liquidnet.service.kylin.service.impl; package com.liquidnet.service.kylin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.entity.KylinLackRegisters; import com.liquidnet.service.kylin.entity.KylinLackRegisters;
import com.liquidnet.service.kylin.mapper.KylinLackRegistersMapper;
import com.liquidnet.service.kylin.service.IKylinLackRegistersService; import com.liquidnet.service.kylin.service.IKylinLackRegistersService;
import com.liquidnet.service.kylin.utils.QueueUtils; import com.liquidnet.service.kylin.utils.QueueUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -37,8 +34,7 @@ public class KylinLackRegistersServiceImpl implements IKylinLackRegistersService ...@@ -37,8 +34,7 @@ public class KylinLackRegistersServiceImpl implements IKylinLackRegistersService
lackRegisters.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), "")); lackRegisters.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), ""));
lackRegisters.setIpAddress(CurrentUtil.getCliIpAddr()); lackRegisters.setIpAddress(CurrentUtil.getCliIpAddr());
lackRegisters.setCreatedAt(LocalDateTime.now()); lackRegisters.setCreatedAt(LocalDateTime.now());
queueUtils.sendSqlRabbit(MQConst.EXCHANGES_LIQUIDNET_SQL_PERFORMANCE_LACK, MQConst.ROUTING_KEY_SQL_PERFORMANCE_LACK, queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_PERFORMANCE_LACK.getKey(),SqlMapping.get("kylin_lack_register.insert", lackRegisters.getInsertObj()));
SqlMapping.get("kylin_lack_register.insert", lackRegisters.getInsertObj()));
return ResponseDto.success("登记成功"); return ResponseDto.success("登记成功");
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
......
package com.liquidnet.service.kylin.service.impl; package com.liquidnet.service.kylin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.dto.param.KylinStationUploadParam; import com.liquidnet.service.kylin.dto.param.KylinStationUploadParam;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntities;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketEntitiesMapper;
import com.liquidnet.service.kylin.service.IKylinOrderTicketEntitiesService; import com.liquidnet.service.kylin.service.IKylinOrderTicketEntitiesService;
import com.liquidnet.service.kylin.utils.QueueUtils; import com.liquidnet.service.kylin.utils.QueueUtils;
import com.mongodb.bulk.BulkWriteResult; import com.mongodb.bulk.BulkWriteResult;
...@@ -16,7 +13,6 @@ import com.mongodb.client.model.UpdateOneModel; ...@@ -16,7 +13,6 @@ import com.mongodb.client.model.UpdateOneModel;
import com.mongodb.client.model.WriteModel; import com.mongodb.client.model.WriteModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bson.Document; import org.bson.Document;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
...@@ -82,8 +78,7 @@ public class KylinOrderTicketEntitiesServiceImpl implements IKylinOrderTicketEn ...@@ -82,8 +78,7 @@ public class KylinOrderTicketEntitiesServiceImpl implements IKylinOrderTicketEn
}); });
BulkWriteResult bulkWriteResult = mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).bulkWrite(list); BulkWriteResult bulkWriteResult = mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).bulkWrite(list);
log.info("bulkWriteResult:{}", JsonUtils.toJson(bulkWriteResult)); log.info("bulkWriteResult:{}", JsonUtils.toJson(bulkWriteResult));
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_STATION.getKey(),
queueUtils.sendSqlRabbit(MQConst.EX_LNS_SQL_STATION, MQConst.RK_SQL_STATION,
SqlMapping.get("kylin_order_ticket_entities.updateStatusByStation", paramsList)); SqlMapping.get("kylin_order_ticket_entities.updateStatusByStation", paramsList));
} }
} }
...@@ -2,7 +2,6 @@ package com.liquidnet.service.kylin.service.impl; ...@@ -2,7 +2,6 @@ package com.liquidnet.service.kylin.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
...@@ -10,6 +9,7 @@ import com.liquidnet.service.base.ErrorMapping; ...@@ -10,6 +9,7 @@ import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.UserPathDto; import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
...@@ -29,7 +29,6 @@ import com.mongodb.BasicDBObject; ...@@ -29,7 +29,6 @@ import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.bson.Document; import org.bson.Document;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
...@@ -538,8 +537,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -538,8 +537,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
sqls.add(SqlMapping.get("kylin_order_ticket_status.withDraw")); sqls.add(SqlMapping.get("kylin_order_ticket_status.withDraw"));
sqls.add(SqlMapping.get("kylin_order_ticket_entities.withDraw")); sqls.add(SqlMapping.get("kylin_order_ticket_entities.withDraw"));
sqls.add(SqlMapping.get("kylin_order_refund.withDraw")); sqls.add(SqlMapping.get("kylin_order_refund.withDraw"));
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_WITHDRAW.getKey(),
queueUtils.sendSqlRabbit(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_WITHDRAW, MQConst.ROUTING_KEY_SQL_ORDER_WITHDRAW,
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC)); SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC));
return ResponseDto.success(true); return ResponseDto.success(true);
} catch (Exception e) { } catch (Exception e) {
......
package com.liquidnet.service.kylin.service.impl; package com.liquidnet.service.kylin.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.mongo.*; import com.liquidnet.service.kylin.dto.vo.mongo.*;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
...@@ -15,7 +15,6 @@ import com.mongodb.BasicDBObject; ...@@ -15,7 +15,6 @@ import com.mongodb.BasicDBObject;
import com.mongodb.client.result.UpdateResult; import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
...@@ -189,7 +188,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -189,7 +188,7 @@ public class KylinRefundsStatusServiceImpl {
kylinOrderRefunds.getRefundCate(), kylinOrderRefunds.getCreatedAt() kylinOrderRefunds.getRefundCate(), kylinOrderRefunds.getCreatedAt()
}); });
queueUtils.sendSqlRabbit(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_OVERTIME_REFUND, MQConst.ROUTING_KEY_SQL_ORDER_OVERTIME_REFUND, queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_OVERTIME_REFUND.getKey(),
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD)); SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD));
return true; return true;
...@@ -337,8 +336,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -337,8 +336,7 @@ public class KylinRefundsStatusServiceImpl {
orderRefundPic.getOrderRefundsId(), orderRefundPic.getOrderRefundsId(), orderRefundPic.getPicUrl(), orderRefundPic.getCreatedAt() orderRefundPic.getOrderRefundsId(), orderRefundPic.getOrderRefundsId(), orderRefundPic.getPicUrl(), orderRefundPic.getCreatedAt()
}); });
//TODO 生成新QUERY queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_REFUND.getKey(),
queueUtils.sendSqlRabbit(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_REFUND, MQConst.ROUTING_KEY_SQL_ORDER_REFUND,
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD, sqlsDataE)); SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD, sqlsDataE));
return kylinOrderRefunds.getOrderRefundsId(); return kylinOrderRefunds.getOrderRefundsId();
......
...@@ -421,7 +421,6 @@ public class DataUtils { ...@@ -421,7 +421,6 @@ public class DataUtils {
canRefundSinglePrice = singlePrice.subtract(item.getRefundPrice() == null ? BigDecimal.valueOf(0.00) : item.getRefundPrice()); canRefundSinglePrice = singlePrice.subtract(item.getRefundPrice() == null ? BigDecimal.valueOf(0.00) : item.getRefundPrice());
} }
} }
System.out.println("单票剩余未退款金额 : " + canRefundSinglePrice);
//订单锁定金额 //订单锁定金额
BigDecimal orderLockPrice = new BigDecimal("0.00"); BigDecimal orderLockPrice = new BigDecimal("0.00");
for (KylinOrderRefundsVo refundVo : kylinOrderRefundsVoBaseList) { for (KylinOrderRefundsVo refundVo : kylinOrderRefundsVoBaseList) {
...@@ -435,10 +434,8 @@ public class DataUtils { ...@@ -435,10 +434,8 @@ public class DataUtils {
} }
} }
} }
System.out.println("订单锁定金额 : " + orderLockPrice);
//订单可退金额 //订单可退金额
BigDecimal refundSinglePrice = canRefundSinglePrice.subtract(orderLockPrice); BigDecimal refundSinglePrice = canRefundSinglePrice.subtract(orderLockPrice);
System.out.println("订单可退金额 : " + refundSinglePrice);
//是否包含快递费 //是否包含快递费
if (orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).subtract(orderTicketVo.getPriceRefund()).compareTo(canRefundSinglePrice) == 0) { if (orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).subtract(orderTicketVo.getPriceRefund()).compareTo(canRefundSinglePrice) == 0) {
refundSinglePrice = refundSinglePrice.add(orderTicketVo.getPriceExpress()); refundSinglePrice = refundSinglePrice.add(orderTicketVo.getPriceExpress());
......
package com.liquidnet.service.kylin.utils; package com.liquidnet.service.kylin.utils;
import com.liquidnet.common.exception.LiquidnetServiceException;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.StreamRecords; import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -19,27 +17,25 @@ public class QueueUtils { ...@@ -19,27 +17,25 @@ public class QueueUtils {
StringRedisTemplate stringRedisTemplate; StringRedisTemplate stringRedisTemplate;
/** /**
* 发送 SqlMapping Json 字符串 * 发送消息 - RABBIT
* *
* @param exchange 交换机 * @param exchange 交换机
* @param route 路径 * @param routeKey 路径
* @param sqlStr Json字符串 * @param jsonMsg Json字符串
*/ */
public void sendSqlRabbit(String exchange, String route, String sqlStr) { public void sendSqlRabbit(String exchange, String routeKey, String jsonMsg) {
rabbitTemplate.convertAndSend(exchange, route, sqlStr); rabbitTemplate.convertAndSend(exchange, routeKey, jsonMsg);
} }
/** /**
* 给 REDIS 队列发送消息 数据库相关 * 发送消息 - REDIS
* *
* @param redisKey RedisKey 消费Key * @param streamKey Redis消费Key
* @param sqlStr Json字符串 * @param jsonMsg Json字符串
* @return
*/ */
public void sendSqlRedis(String redisKey, String sqlStr) { public void sendMsgByRedis(String streamKey, String jsonMsg) {
HashMap<String, String> map = new HashMap<>(); HashMap<String, String> map = new HashMap<>();
map.put("message", sqlStr); map.put("message", jsonMsg);
MapRecord<String, String, String> record = StreamRecords.mapBacked(map).withStreamKey(redisKey); stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
stringRedisTemplate.opsForStream().add(record);
} }
} }
...@@ -24,25 +24,25 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -24,25 +24,25 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("refund") @RequestMapping("refund")
public class OrderRefundOvertimeController { public class OrderRefundOvertimeController {
@Autowired // @Autowired
private OrderRefundOvertimeServiceImpl orderRefundOvertimeServiceImpl; // private OrderRefundOvertimeServiceImpl orderRefundOvertimeServiceImpl;
//
@PostMapping("apply") // @PostMapping("apply")
@ApiOperation("超时退款") // @ApiOperation("超时退款")
@ApiImplicitParams({ // @ApiImplicitParams({
@ApiImplicitParam(type = "body", dataType = "String", name = "orderTicketsId", value = "订单ID", required = true), // @ApiImplicitParam(type = "body", dataType = "String", name = "orderTicketsId", value = "订单ID", required = true),
}) // })
public Boolean refundApply(@RequestParam() String orderTicketsId) { // public Boolean refundApply(@RequestParam() String orderTicketsId) {
try { // try {
Boolean res = orderRefundOvertimeServiceImpl.refundApply(orderTicketsId); // Boolean res = orderRefundOvertimeServiceImpl.refundApply(orderTicketsId);
if (res) { // if (res) {
return true; // return true;
} else { // } else {
return false; // return false;
} // }
} catch (Exception e) { // } catch (Exception e) {
return false; // return false;
} // }
} // }
} }
package com.liquidnet.service.order.service.impl; package com.liquidnet.service.order.service.impl;
import com.alibaba.fastjson.JSON;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil; import com.liquidnet.common.cache.redisson.util.RedisLockUtil;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.common.sms.constant.SmsEnum; import com.liquidnet.common.sms.constant.SmsEnum;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo; import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo; import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.*; import com.liquidnet.service.base.*;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.param.PayAgainParam; import com.liquidnet.service.kylin.dto.param.PayAgainParam;
...@@ -28,14 +27,11 @@ import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus; ...@@ -28,14 +27,11 @@ import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
import com.liquidnet.service.kylin.entity.KylinOrderTickets; import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsOrderService; import com.liquidnet.service.kylin.service.IKylinOrderTicketsOrderService;
import com.liquidnet.service.order.utils.*; import com.liquidnet.service.order.utils.*;
import com.mongodb.BasicDBObject;
import com.taobao.api.TaobaoClient; import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaDamaiMevOpenBatchpushticketRequest; import com.taobao.api.request.AlibabaDamaiMevOpenBatchpushticketRequest;
import com.taobao.api.response.AlibabaDamaiMevOpenBatchpushticketResponse; import com.taobao.api.response.AlibabaDamaiMevOpenBatchpushticketResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -588,7 +584,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -588,7 +584,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
// 执行sql // 执行sql
String sqlData = SqlMapping.gets(sqls, sqlsDataB, sqlsDataC, sqlsDataD, sqlsDataA); String sqlData = SqlMapping.gets(sqls, sqlsDataB, sqlsDataC, sqlsDataD, sqlsDataA);
currentTime = System.currentTimeMillis(); currentTime = System.currentTimeMillis();
queueUtils.sendSqlRabbit(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE, MQConst.ROUTING_KEY_SQL_ORDER_CREATE, queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_CREATE.getKey(),
sqlData); sqlData);
currentTime = System.currentTimeMillis() - currentTime; currentTime = System.currentTimeMillis() - currentTime;
log.debug("MQ 发送 -> time:" + (currentTime) + "毫秒"); log.debug("MQ 发送 -> time:" + (currentTime) + "毫秒");
...@@ -711,7 +707,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -711,7 +707,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
sqlsDataD.add(objectD); sqlsDataD.add(objectD);
String sqlData = SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD); String sqlData = SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD);
queueUtils.sendSqlRabbit(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_AGAIN, MQConst.ROUTING_KEY_SQL_ORDER_AGAIN, sqlData); queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_AGAIN.getKey(), sqlData);
log.info(UserPathDto.setData("再次支付", payAgainParam, payResultVo.getData())); log.info(UserPathDto.setData("再次支付", payAgainParam, payResultVo.getData()));
return ResponseDto.success(payResultVo.getData()); return ResponseDto.success(payResultVo.getData());
} }
...@@ -772,10 +768,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -772,10 +768,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if (orderTicketData.getStatus() == 2) { if (orderTicketData.getStatus() == 2) {
orderUtils.resetOrderListVo(orderTicketData.getUserId(), 2, orderTicketData.getOrderTicketsId(), null); orderUtils.resetOrderListVo(orderTicketData.getUserId(), 2, orderTicketData.getOrderTicketsId(), null);
log.error("订单号 {} 的订单超时支付", syncOrderParam.getOrderCode()); log.error("订单号 {} 的订单超时支付", syncOrderParam.getOrderCode());
orderRefundsCallbackService.refundApply(orderTicketData.getOrderTicketsId()); orderRefundsCallbackService.refundApply(orderTicketData.getOrderTicketsId(),syncOrderParam.getPaymentId());
} else if (orderTicketData.getStatus() == 3 || orderTicketData.getStatus() == 4) { } else if (orderTicketData.getStatus() == 3 || orderTicketData.getStatus() == 4) {
log.error("订单号 {} 的订单正在退款 或者已退款", syncOrderParam.getOrderCode()); log.error("订单号 {} 的订单正在退款 或者已退款", syncOrderParam.getOrderCode());
} else { } else {
orderTickets.setOrderTicketsId(orderTicketData.getOrderTicketsId()); orderTickets.setOrderTicketsId(orderTicketData.getOrderTicketsId());
orderTickets.setPaymentType(syncOrderParam.getPaymentType()); orderTickets.setPaymentType(syncOrderParam.getPaymentType());
...@@ -833,7 +829,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -833,7 +829,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
ObjectUtil.cloneBasicDBObject().append("$set", mongoConverter.convertToMongoType(orderTicketEntitiesVo)) ObjectUtil.cloneBasicDBObject().append("$set", mongoConverter.convertToMongoType(orderTicketEntitiesVo))
); );
queueUtils.sendSqlRabbit(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY, MQConst.ROUTING_KEY_SQL_ORDER_PAY, queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_PAY.getKey(),
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD)); SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD));
//生成vo redis //生成vo redis
...@@ -867,12 +863,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -867,12 +863,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
adTemplate = SmsEnum.ADTemplate.SMS_181490473; adTemplate = SmsEnum.ADTemplate.SMS_181490473;
} 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_171358560 : SmsEnum.ADTemplate.SMS_181500419;
} }
if (null != adTemplate) { if (null != adTemplate) {
queueUtils.sendSqlRabbit(MQConst.EX_LNS_SMS_SENDER, MQConst.RK_SMS_NOTICE, queueUtils.sendMsgByRedis(MQConst.KylinQueue.SMS_NOTICE.getKey(),
SmsMessage.builder().setPhone(orderTicketData.getUserMobile()) SmsMessage.builder().setPhone(orderTicketData.getUserMobile())
.setSignName(SmsEnum.ADSignName.M02.getVal()) .setSignName(SmsEnum.ADSignName.M02.getVal())
.setTemplateCode(adTemplate.name()) .setTemplateCode(adTemplate.name())
......
package com.liquidnet.service.order.service.impl; package com.liquidnet.service.order.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.liquidnet.common.mq.constant.MQConst;
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.commons.lang.util.IDGenerator; 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.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundPicVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
...@@ -19,10 +18,8 @@ import com.liquidnet.service.order.utils.ObjectUtil; ...@@ -19,10 +18,8 @@ import com.liquidnet.service.order.utils.ObjectUtil;
import com.liquidnet.service.order.utils.OrderUtils; import com.liquidnet.service.order.utils.OrderUtils;
import com.liquidnet.service.order.utils.QueueUtils; import com.liquidnet.service.order.utils.QueueUtils;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
...@@ -61,7 +58,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -61,7 +58,7 @@ public class KylinRefundsStatusServiceImpl {
public Boolean orderTicketRefunding( public Boolean orderTicketRefunding(
KylinOrderTicketVo orderInfo, String orderTicketsId, KylinOrderTicketVo orderInfo, String orderTicketsId,
BigDecimal RefundPriceExpress, BigDecimal RefundPriceExpress,
List<String> ticketEntityIds, List<BigDecimal> entitiesPrice List<String> ticketEntityIds, List<BigDecimal> entitiesPrice,String paymentId
) { ) {
if (CollectionUtil.isEmpty(ticketEntityIds)) { if (CollectionUtil.isEmpty(ticketEntityIds)) {
return false; return false;
...@@ -179,11 +176,21 @@ public class KylinRefundsStatusServiceImpl { ...@@ -179,11 +176,21 @@ public class KylinRefundsStatusServiceImpl {
LinkedList<String> sqls = ObjectUtil.cloneLinkedListStr(); LinkedList<String> sqls = ObjectUtil.cloneLinkedListStr();
LinkedList<Object[]> sqlsDataA = ObjectUtil.cloneLinkedListObj(); LinkedList<Object[]> sqlsDataA = ObjectUtil.cloneLinkedListObj();
LinkedList<Object[]> sqlsDataC = ObjectUtil.cloneLinkedListObj(); LinkedList<Object[]> sqlsDataC = ObjectUtil.cloneLinkedListObj();
LinkedList<Object[]> sqlsDataE = ObjectUtil.cloneLinkedListObj();
sqls.add(SqlMapping.get("kylin_order_ticket_status.overtimeRefund")); sqls.add(SqlMapping.get("kylin_order_ticket_status.overtimeRefund"));
sqls.add(SqlMapping.get("kylin_order_ticket_entities.overtimeRefund")); sqls.add(SqlMapping.get("kylin_order_ticket_entities.overtimeRefund"));
sqls.add(SqlMapping.get("kylin_order_refund.overtimeRefund")); sqls.add(SqlMapping.get("kylin_order_refund.overtimeRefund"));
sqls.add(SqlMapping.get("kylin_order_refund_entities.overtimeRefund")); sqls.add(SqlMapping.get("kylin_order_refund_entities.overtimeRefund"));
sqls.add(SqlMapping.get("kylin_order_tickets.overtimeRefund"));
Object[] objectE = ObjectUtil.cloneObjectsArray();
objectE[0]=paymentId;
objectE[1]=orderStatusTable.getUpdatedAt();
objectE[2]=orderInfo.getOrderTicketsId();
objectE[3]=orderInfo.getChangeDate();
objectE[4]=orderInfo.getChangeDate();
sqlsDataE.add(objectE);
Object[] objectA = ObjectUtil.cloneObjectsArray(); Object[] objectA = ObjectUtil.cloneObjectsArray();
objectA[0]=orderStatusTable.getStatus(); objectA[0]=orderStatusTable.getStatus();
...@@ -209,8 +216,8 @@ public class KylinRefundsStatusServiceImpl { ...@@ -209,8 +216,8 @@ public class KylinRefundsStatusServiceImpl {
objectC[12]=kylinOrderRefunds.getCreatedAt(); objectC[12]=kylinOrderRefunds.getCreatedAt();
sqlsDataC.add(objectC); sqlsDataC.add(objectC);
queueUtils.sendSqlRabbit(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_OVERTIME_REFUND, MQConst.ROUTING_KEY_SQL_ORDER_OVERTIME_REFUND, queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_OVERTIME_REFUND.getKey(),
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD)); SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD,sqlsDataE));
return true; return true;
} }
......
...@@ -34,7 +34,7 @@ public class OrderRefundOvertimeServiceImpl implements IKylinOrderRefundsService ...@@ -34,7 +34,7 @@ public class OrderRefundOvertimeServiceImpl implements IKylinOrderRefundsService
@Autowired @Autowired
private DataUtils dataUtils; private DataUtils dataUtils;
public Boolean refundApply(String orderTicketsId) { public Boolean refundApply(String orderTicketsId,String paymentId) {
KylinOrderTicketVo orderInfo = dataUtils.getOrderTicketVo(orderTicketsId); KylinOrderTicketVo orderInfo = dataUtils.getOrderTicketVo(orderTicketsId);
// 快递费 未进行判断 // 快递费 未进行判断
BigDecimal RefundPriceExpress = orderInfo.getPriceExpress(); BigDecimal RefundPriceExpress = orderInfo.getPriceExpress();
...@@ -57,7 +57,7 @@ public class OrderRefundOvertimeServiceImpl implements IKylinOrderRefundsService ...@@ -57,7 +57,7 @@ public class OrderRefundOvertimeServiceImpl implements IKylinOrderRefundsService
boolean res = kylinRefundsStatusServiceImpl.orderTicketRefunding( boolean res = kylinRefundsStatusServiceImpl.orderTicketRefunding(
orderInfo, orderTicketsId, orderInfo, orderTicketsId,
RefundPriceExpress, RefundPriceExpress,
ticketEntityIds, entitiesPrice ticketEntityIds, entitiesPrice,paymentId
); );
if (res) { if (res) {
// 超时直接退还库存 // 超时直接退还库存
......
...@@ -29,16 +29,14 @@ public class QueueUtils { ...@@ -29,16 +29,14 @@ public class QueueUtils {
} }
/** /**
* 给 REDIS 队列发送消息 数据库相关 * 发送消息 - REDIS
* *
* @param redisKey RedisKey 消费Key * @param streamKey Redis消费Key
* @param sqlStr Json字符串 * @param jsonMsg Json字符串
* @return
*/ */
public void sendSqlRedis(String redisKey, String sqlStr) { public void sendMsgByRedis(String streamKey, String jsonMsg) {
HashMap<String, String> map = ObjectUtil.cloneHashMapStringAndString(); HashMap<String, String> map = new HashMap<>();
map.put("message", sqlStr); map.put("message", jsonMsg);
MapRecord<String, String, String> record = StreamRecords.mapBacked(map).withStreamKey(redisKey); stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
stringRedisTemplate.opsForStream().add(record);
} }
} }
...@@ -46,9 +46,11 @@ kylin_order_refund.withDraw=UPDATE kylin_order_refunds SET status = ? ,updated_a ...@@ -46,9 +46,11 @@ kylin_order_refund.withDraw=UPDATE kylin_order_refunds SET status = ? ,updated_a
# ------------------------超时支付申请退款---------------------------- # ------------------------超时支付申请退款----------------------------
kylin_order_ticket_status.overtimeRefund=UPDATE kylin_order_ticket_status SET status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ?) kylin_order_ticket_status.overtimeRefund=UPDATE kylin_order_ticket_status SET status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ?)
kylin_order_tickets.overtimeRefund=UPDATE kylin_order_tickets SET payment_id = ? ,updated_at = ? WHERE order_tickets_id = ? and (updated_at <= ? or created_at = ?)
kylin_order_ticket_entities.overtimeRefund=UPDATE kylin_order_ticket_entities SET is_payment = ? ,updated_at = ? WHERE order_ticket_entities_id = ? and (updated_at <= ? or created_at = ?) kylin_order_ticket_entities.overtimeRefund=UPDATE kylin_order_ticket_entities SET is_payment = ? ,updated_at = ? WHERE order_ticket_entities_id = ? and (updated_at <= ? or created_at = ?)
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(?,?,?,?,?)
...@@ -2,9 +2,9 @@ package com.liquidnet.service.platform.service.impl.kylin; ...@@ -2,9 +2,9 @@ package com.liquidnet.service.platform.service.impl.kylin;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.OrderCloseMapping; import com.liquidnet.service.base.OrderCloseMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dao.OrderScriptDto; import com.liquidnet.service.kylin.dao.OrderScriptDto;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
...@@ -57,7 +57,6 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K ...@@ -57,7 +57,6 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K
private KylinOrderTicketRelationsMapper orderTicketRelationsMapper; private KylinOrderTicketRelationsMapper orderTicketRelationsMapper;
public boolean checkOrderTime(String userId) { public boolean checkOrderTime(String userId) {
String lock = "order_lock:checkOrderTime:" + userId;
List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId); List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId);
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
Long currentTime = System.currentTimeMillis(); Long currentTime = System.currentTimeMillis();
...@@ -137,7 +136,7 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K ...@@ -137,7 +136,7 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K
} }
} }
log.debug("MQLIST SIZE = " + mqList.size()); log.debug("MQLIST SIZE = " + mqList.size());
queueUtils.sendSqlRabbit(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE, MQConst.ROUTING_KEY_SQL_ORDER_CLOSE, OrderCloseMapping.get(mqList)); queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_CLOSE.getKey(), OrderCloseMapping.get(mqList));
} }
} }
return true; return true;
......
...@@ -460,7 +460,6 @@ public class DataImpl { ...@@ -460,7 +460,6 @@ public class DataImpl {
con = DriverManager.getConnection(url, username, password); //获取连接 con = DriverManager.getConnection(url, username, password); //获取连接
String sqlAllCount = "select count(0) as 'allCount' from order_tickets where performance_id > 5721 and status != 2 and status != -1 and created_at like '2021-" + month + "%'"; //设置的预编译语句格式 String sqlAllCount = "select count(0) as 'allCount' from order_tickets where performance_id > 5721 and status != 2 and status != -1 and created_at like '2021-" + month + "%'"; //设置的预编译语句格式
// String sqlAllCount = "select count(0) as 'allCount' from order_tickets where performance_id = "+month + " and status != 2 and status !=-1"; //设置的预编译语句格式 // String sqlAllCount = "select count(0) as 'allCount' from order_tickets where performance_id = "+month + " and status != 2 and status !=-1"; //设置的预编译语句格式
System.out.println(" SQL COUNT = " + sqlAllCount);
pstmt = con.prepareStatement(sqlAllCount); pstmt = con.prepareStatement(sqlAllCount);
ResultSet allCount = pstmt.executeQuery(); ResultSet allCount = pstmt.executeQuery();
int allCountResult = 0;//共多少条 int allCountResult = 0;//共多少条
...@@ -482,7 +481,6 @@ public class DataImpl { ...@@ -482,7 +481,6 @@ public class DataImpl {
//订单 //订单
String sql = "select * from order_tickets where performance_id > 5721 and status != 2 and status != -1 and created_at like '2021-" + month + "%' limit " + count * page + " ," + count; //设置的预编译语句格式 String sql = "select * from order_tickets where performance_id > 5721 and status != 2 and status != -1 and created_at like '2021-" + month + "%' limit " + count * page + " ," + count; //设置的预编译语句格式
// String sql = "select * from order_tickets where performance_id = "+month +" and status != 2 limit " + count * page + " ," + count; // String sql = "select * from order_tickets where performance_id = "+month +" and status != 2 limit " + count * page + " ," + count;
System.out.println(" SQL DATA = " + sql);
pstmt = con.prepareStatement(sql); pstmt = con.prepareStatement(sql);
ResultSet orderData = pstmt.executeQuery(); ResultSet orderData = pstmt.executeQuery();
while (orderData.next()) { while (orderData.next()) {
...@@ -554,6 +552,7 @@ public class DataImpl { ...@@ -554,6 +552,7 @@ public class DataImpl {
orderTickets.setPriceVoucher(orderData.getBigDecimal("price_voucher")); orderTickets.setPriceVoucher(orderData.getBigDecimal("price_voucher"));
orderTickets.setPriceActual(orderData.getBigDecimal("price_actual")); orderTickets.setPriceActual(orderData.getBigDecimal("price_actual"));
orderTickets.setPriceExpress(orderData.getBigDecimal("price_express")); orderTickets.setPriceExpress(orderData.getBigDecimal("price_express"));
orderTickets.setPaymentId(orderData.getString("in_pay_code"));
orderTickets.setPriceRefund(refundPrice); orderTickets.setPriceRefund(refundPrice);
orderTickets.setRefundNumber(refundNumber); orderTickets.setRefundNumber(refundNumber);
......
...@@ -306,6 +306,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -306,6 +306,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
return ResponseDto.success("保存成功"); return ResponseDto.success("保存成功");
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
return ResponseDto.failure(ErrorMapping.get(20115)); return ResponseDto.failure(ErrorMapping.get(20115));
} }
} }
...@@ -542,6 +543,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -542,6 +543,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
return ResponseDto.failure(ErrorMapping.get(20109)); return ResponseDto.failure(ErrorMapping.get(20109));
} }
} }
...@@ -576,6 +578,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -576,6 +578,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
} }
return performancePartnerVo.getPerformancesId(); return performancePartnerVo.getPerformancesId();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
return null; return null;
} }
} }
...@@ -666,6 +669,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -666,6 +669,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
return ResponseDto.failure(ErrorMapping.get(20116)); return ResponseDto.failure(ErrorMapping.get(20116));
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
return ResponseDto.failure(ErrorMapping.get(20117)); return ResponseDto.failure(ErrorMapping.get(20117));
} }
} }
......
...@@ -239,7 +239,6 @@ public class DataUtils { ...@@ -239,7 +239,6 @@ public class DataUtils {
e.printStackTrace(); e.printStackTrace();
} }
} else { } else {
System.out.println("创建Vo异常");
} }
} }
......
...@@ -39,9 +39,6 @@ public class OrderUtils { ...@@ -39,9 +39,6 @@ public class OrderUtils {
} else { } else {
integers = roadShowOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName); integers = roadShowOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
} }
System.out.println("integers PERFORMANCE= " + integers[0]);
System.out.println("integers TICKETS= " + integers[1]);
return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, ticketLimitCount, ticketMemberLimitCount, memberType, integers[0], integers[1]); return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, ticketLimitCount, ticketMemberLimitCount, memberType, integers[0], integers[1]);
} }
......
...@@ -28,17 +28,16 @@ public class QueueUtils { ...@@ -28,17 +28,16 @@ public class QueueUtils {
rabbitTemplate.convertAndSend(exchange, route, sqlStr); rabbitTemplate.convertAndSend(exchange, route, sqlStr);
} }
/** /**
* 给 REDIS 队列发送消息 数据库相关 * 发送消息 - REDIS
* *
* @param redisKey RedisKey 消费Key * @param streamKey Redis消费Key
* @param sqlStr Json字符串 * @param jsonMsg Json字符串
* @return
*/ */
public void sendSqlRedis(String redisKey, String sqlStr) { public void sendMsgByRedis(String streamKey, String jsonMsg) {
HashMap<String, String> map = new HashMap<>(); HashMap<String, String> map = new HashMap<>();
map.put("message", sqlStr); map.put("message", jsonMsg);
MapRecord<String, String, String> record = StreamRecords.mapBacked(map).withStreamKey(redisKey); stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
stringRedisTemplate.opsForStream().add(record);
} }
} }
...@@ -27,9 +27,5 @@ public class SweetConstant { ...@@ -27,9 +27,5 @@ public class SweetConstant {
public String getMessage() { public String getMessage() {
return message; return message;
} }
public String getMessageByCode(String code) {
return ManualPosition.valueOf(code).getMessage();
}
} }
} }
package com.liquidnet.service.sweet.controller;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
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.entity.SweetManualNotify;
import com.liquidnet.service.sweet.entity.SweetRichtext;
import com.liquidnet.service.sweet.entity.SweetStage;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "小程序")
@RestController
@RequestMapping("/sweet-applet")
public class SweetAppletController {
@Autowired
private RedisDataUtils redisDataUtils;
@GetMapping("timeSelect")
@ApiOperation("场次选择")
public ResponseDto<List<SweetManualAppletDto>> timeSelect() {
return ResponseDto.success(redisDataUtils.getPushList());
}
@GetMapping("details")
@ApiOperation("详情")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true),
})
public ResponseDto<SweetManualAppletDto> details(@RequestParam(defaultValue = "1") String manualId) {
return ResponseDto.success(redisDataUtils.getAppletPerformance(manualId));
}
@GetMapping("notify")
@ApiOperation("通知")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true),
})
public ResponseDto<List<SweetManualNotify>> notify(@RequestParam(defaultValue = "1") String manualId) {
return ResponseDto.success(redisDataUtils.getNotifyRedisData(manualId));
}
@GetMapping("tags")
@ApiOperation("标签")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true),
})
public ResponseDto<List<String>> tag(@RequestParam(defaultValue = "1") String manualId) {
return ResponseDto.success(redisDataUtils.getTagRedisData(manualId));
}
@GetMapping("timeList")
@ApiOperation("时间表")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "dateTime", value = "时间 全部传 \"\"", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "stage", value = "舞台 全部传 \"\"", required = true),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isSign", value = "是否签名(1是0否)", required = true),
})
public ResponseDto<SweetManualArtistList2Dto> timeList(@RequestParam(defaultValue = "1") String manualId,
@RequestParam(defaultValue = "2021-12-01") String dateTime,
@RequestParam(defaultValue = "测试舞台") String stage,
@RequestParam(defaultValue = "isSign") Integer isSign) {
SweetManualArtistList2Dto data = redisDataUtils.getTimeList(manualId, dateTime);
List<SweetManualArtistListDto> artistData = data.getData();
List<SweetManualArtistListDto> returnArtist = data.getData();
for (SweetManualArtistListDto item : artistData) {
boolean isSave = false;
if (isSign == 1) {
if (item.getSignatureStart() != null) {
//保留
isSave = true;
}
}
if (!dateTime.isEmpty()) {
if (item.getPerformanceStart().contains(dateTime)) {
//保留
isSave = true;
}
}
if (!stage.isEmpty()) {
if (item.getTitle().equalsIgnoreCase(stage)) {
//保留
isSave = true;
}
}
if (isSave) {
returnArtist.add(item);
}
}
data.setData(returnArtist);
return ResponseDto.success(data);
}
@GetMapping("richText")
@ApiOperation("富文本")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "type", value = "类型 (1签售时间 2现场地图 3官方大巴 4公共交通 5自驾导航坐标 6官方支持 7观众须知 8防疫指南 9观演攻略)", required = true),
})
public ResponseDto<SweetRichtext> richText(@RequestParam(defaultValue = "1") String manualId,
@RequestParam(defaultValue = "1") String type) {
return ResponseDto.success(redisDataUtils.getRichTextRedisData(manualId, type));
}
@GetMapping("artistDetails")
@ApiOperation("艺人详情")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "type", value = "类型 (1签售时间 2现场地图 3官方大巴 4公共交通 5自驾导航坐标 6官方支持 7观众须知 8防疫指南 9观演攻略)", required = true),
})
public ResponseDto<SweetRichtext> artistDetails(@RequestParam(defaultValue = "1") String manualId,
@RequestParam(defaultValue = "1") String type) {
return ResponseDto.success(redisDataUtils.getRichTextRedisData(manualId, type));
}
}
...@@ -58,7 +58,7 @@ public class SweetArtistsController { ...@@ -58,7 +58,7 @@ public class SweetArtistsController {
return sweetArtistsService.add(picUrl, name, pinyin, describe); return sweetArtistsService.add(picUrl, name, pinyin, describe);
} }
@PostMapping("detail") @GetMapping("detail")
@ApiOperation("艺人详情") @ApiOperation("艺人详情")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "artistsId", value = "艺人Id", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "artistsId", value = "艺人Id", required = true),
......
...@@ -12,11 +12,7 @@ import io.swagger.annotations.ApiImplicitParam; ...@@ -12,11 +12,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/** /**
* <p> * <p>
...@@ -56,7 +52,7 @@ public class SweetManualArtistsController { ...@@ -56,7 +52,7 @@ public class SweetManualArtistsController {
return sweetManualArtistsService.details(manualRelationId); return sweetManualArtistsService.details(manualRelationId);
} }
@GetMapping("add") @PostMapping("add")
@ApiOperation("宣传手册艺人添加") @ApiOperation("宣传手册艺人添加")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "手册id", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "手册id", required = true),
...@@ -77,7 +73,7 @@ public class SweetManualArtistsController { ...@@ -77,7 +73,7 @@ public class SweetManualArtistsController {
return sweetManualArtistsService.add(manualId, artistId, stageId, performanceStart, performanceEnd, signatureStart, signatureEnd); return sweetManualArtistsService.add(manualId, artistId, stageId, performanceStart, performanceEnd, signatureStart, signatureEnd);
} }
@GetMapping("change") @PostMapping("change")
@ApiOperation("宣传手册艺人修改") @ApiOperation("宣传手册艺人修改")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualRelationId", value = "手册艺人id", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "manualRelationId", value = "手册艺人id", required = true),
...@@ -98,7 +94,7 @@ public class SweetManualArtistsController { ...@@ -98,7 +94,7 @@ public class SweetManualArtistsController {
return sweetManualArtistsService.change(manualRelationId, artistId, stageId, performanceStart, performanceEnd, signatureStart, signatureEnd); return sweetManualArtistsService.change(manualRelationId, artistId, stageId, performanceStart, performanceEnd, signatureStart, signatureEnd);
} }
@GetMapping("delete") @DeleteMapping("delete")
@ApiOperation("宣传手册艺人删除") @ApiOperation("宣传手册艺人删除")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualRelationId", value = "手册艺人id", required = true) @ApiImplicitParam(type = "query", dataType = "String", name = "manualRelationId", value = "手册艺人id", required = true)
......
...@@ -12,11 +12,7 @@ import io.swagger.annotations.ApiImplicitParam; ...@@ -12,11 +12,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/** /**
* <p> * <p>
...@@ -47,7 +43,7 @@ public class SweetManualController { ...@@ -47,7 +43,7 @@ public class SweetManualController {
return sweetManualService.getManualList(page, size, name); return sweetManualService.getManualList(page, size, name);
} }
@GetMapping("changeRelease") @PostMapping("changeRelease")
@ApiOperation("修改是否发布") @ApiOperation("修改是否发布")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "Integer", name = "page", value = "页数", required = true), @ApiImplicitParam(type = "query", dataType = "Integer", name = "page", value = "页数", required = true),
...@@ -58,7 +54,7 @@ public class SweetManualController { ...@@ -58,7 +54,7 @@ public class SweetManualController {
return sweetManualService.changeRelease(manualId, isRelease); return sweetManualService.changeRelease(manualId, isRelease);
} }
@GetMapping("changeStatus") @PostMapping("changeStatus")
@ApiOperation("修改是否开启") @ApiOperation("修改是否开启")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true),
......
...@@ -59,7 +59,7 @@ public class SweetManualNotifyController { ...@@ -59,7 +59,7 @@ public class SweetManualNotifyController {
return sweetManualNotifyService.add(manualId, title, content); return sweetManualNotifyService.add(manualId, title, content);
} }
@PostMapping("detail") @GetMapping("detail")
@ApiOperation("通知详情") @ApiOperation("通知详情")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "手册id", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "手册id", required = true),
...@@ -81,7 +81,7 @@ public class SweetManualNotifyController { ...@@ -81,7 +81,7 @@ public class SweetManualNotifyController {
return sweetManualNotifyService.change(manualId, title, content); return sweetManualNotifyService.change(manualId, title, content);
} }
@PostMapping("delete") @DeleteMapping("delete")
@ApiOperation("删除通知") @ApiOperation("删除通知")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualNotifyId", value = "手册通知id", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "manualNotifyId", value = "手册通知id", required = true),
......
...@@ -9,11 +9,7 @@ import io.swagger.annotations.ApiImplicitParam; ...@@ -9,11 +9,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/** /**
* <p> * <p>
...@@ -32,7 +28,7 @@ public class SweetManualSortController { ...@@ -32,7 +28,7 @@ public class SweetManualSortController {
private ISweetManualSortService sweetManualSortService; private ISweetManualSortService sweetManualSortService;
@GetMapping("add") @PostMapping("add")
@ApiOperation("操作 电子手册tag") @ApiOperation("操作 电子手册tag")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true),
......
...@@ -12,11 +12,7 @@ import io.swagger.annotations.ApiImplicitParam; ...@@ -12,11 +12,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/** /**
* <p> * <p>
...@@ -62,7 +58,7 @@ public class SweetRichtextController { ...@@ -62,7 +58,7 @@ public class SweetRichtextController {
return sweetRichtextService.add(manualId, details, local, picUrl, type); return sweetRichtextService.add(manualId, details, local, picUrl, type);
} }
@GetMapping("change") @PostMapping("change")
@ApiOperation("修改富文本") @ApiOperation("修改富文本")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "Integer", name = "manualId", value = "页数", required = true), @ApiImplicitParam(type = "query", dataType = "Integer", name = "manualId", value = "页数", required = true),
......
...@@ -50,7 +50,7 @@ public class SweetStageController { ...@@ -50,7 +50,7 @@ public class SweetStageController {
return sweetStageService.add(name); return sweetStageService.add(name);
} }
@PostMapping("detail") @GetMapping("detail")
@ApiOperation("舞台详情") @ApiOperation("舞台详情")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "stageId", value = "舞台Id", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "stageId", value = "舞台Id", required = true),
......
package com.liquidnet.service.sweet.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class SweetManualAppletDto implements Serializable {
private String manualId;
private String performancesId;
private String title;
private String fieldId;
private String fieldName;
private String cityName;
private String timeStart;
private String timeEnd;
private String longitude;
private String latitude;
}
package com.liquidnet.service.sweet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class SweetManualArtistList2Dto implements Serializable {
private List<SweetManualArtistListDto> data;
private List<String> date;
private List<SweetManualArtistStageListDto> stage;
}
...@@ -3,6 +3,7 @@ package com.liquidnet.service.sweet.dto; ...@@ -3,6 +3,7 @@ package com.liquidnet.service.sweet.dto;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
@Data @Data
public class SweetManualArtistListDto implements Serializable { public class SweetManualArtistListDto implements Serializable {
...@@ -15,4 +16,5 @@ public class SweetManualArtistListDto implements Serializable { ...@@ -15,4 +16,5 @@ public class SweetManualArtistListDto implements Serializable {
private String signatureStart; private String signatureStart;
private String signatureEnd; private String signatureEnd;
private ArrayList<String> date;
} }
package com.liquidnet.service.sweet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
@Data
public class SweetManualArtistStageListDto implements Serializable {
private String title;
}
...@@ -16,5 +16,4 @@ public class SweetManualDto implements Serializable { ...@@ -16,5 +16,4 @@ public class SweetManualDto implements Serializable {
private Integer status; private Integer status;
private Integer manualStatus; private Integer manualStatus;
private Integer isRelease; private Integer isRelease;
} }
package com.liquidnet.service.sweet.mapper; package com.liquidnet.service.sweet.mapper;
import com.liquidnet.service.sweet.dto.SweetManualArtistListDto; import com.liquidnet.service.sweet.dto.SweetManualArtistListDto;
import com.liquidnet.service.sweet.dto.SweetManualArtistStageListDto;
import com.liquidnet.service.sweet.dto.SweetManualDto; import com.liquidnet.service.sweet.dto.SweetManualDto;
import com.liquidnet.service.sweet.entity.SweetManualArtists; import com.liquidnet.service.sweet.entity.SweetManualArtists;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
...@@ -22,4 +23,5 @@ public interface SweetManualArtistsMapper extends BaseMapper<SweetManualArtists> ...@@ -22,4 +23,5 @@ public interface SweetManualArtistsMapper extends BaseMapper<SweetManualArtists>
SweetManualArtistListDto getManualDetails(Map<String, Object> map); SweetManualArtistListDto getManualDetails(Map<String, Object> map);
List<SweetManualArtistStageListDto> getStageNameList(Map<String, Object> map);
} }
package com.liquidnet.service.sweet.mapper; package com.liquidnet.service.sweet.mapper;
import com.liquidnet.service.sweet.dto.SweetManualAppletDto;
import com.liquidnet.service.sweet.dto.SweetManualDto; import com.liquidnet.service.sweet.dto.SweetManualDto;
import com.liquidnet.service.sweet.entity.SweetManual; import com.liquidnet.service.sweet.entity.SweetManual;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
...@@ -19,4 +20,5 @@ public interface SweetManualMapper extends BaseMapper<SweetManual> { ...@@ -19,4 +20,5 @@ public interface SweetManualMapper extends BaseMapper<SweetManual> {
List<SweetManualDto> getManualList(Map<String,Object> map); List<SweetManualDto> getManualList(Map<String,Object> map);
List<SweetManualAppletDto> getManualAppletDto();
} }
package com.liquidnet.service.sweet.utils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.sweet.constant.SweetConstant;
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.entity.SweetManualNotify;
import com.liquidnet.service.sweet.entity.SweetManualSort;
import com.liquidnet.service.sweet.entity.SweetRichtext;
import com.liquidnet.service.sweet.mapper.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Component
public class RedisDataUtils {
@Autowired
private RedisUtil redisUtil;
@Autowired
private SweetManualMapper sweetManualMapper;
@Autowired
private SweetManualArtistsMapper sweetManualArtistsMapper;
@Autowired
private SweetRichtextMapper sweetRichtextMapper;
@Autowired
private SweetManualSortMapper sweetManualSortMapper;
@Autowired
private SweetManualNotifyMapper sweetManualNotifyMapper;
public List<SweetManualAppletDto> setPushList() {
String redisKey = "";
List<SweetManualAppletDto> data = sweetManualMapper.getManualAppletDto();
for (SweetManualAppletDto item : data) {
item.setFieldName((String) redisUtil.hget("kylin:fields:id" + ":" + item.getFieldId(), "name"));
item.setLatitude((String) redisUtil.hget("kylin:fields:id" + ":" + item.getFieldId(), "latitude"));
item.setLongitude((String) redisUtil.hget("kylin:fields:id" + ":" + item.getFieldId(), "longitude"));
}
redisUtil.set(redisKey, data);
return data;
}
public List<SweetManualAppletDto> getPushList() {
String redisKey = "";
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return setPushList();
} else {
return (List<SweetManualAppletDto>) obj;
}
}
public SweetManualAppletDto getAppletPerformance(String manualId) {
List<SweetManualAppletDto> data = getPushList();
SweetManualAppletDto returnData = new SweetManualAppletDto();
for (SweetManualAppletDto item : data) {
if (item.getManualId().equalsIgnoreCase(manualId)) {
returnData = item;
break;
}
}
return returnData;
}
public SweetManualArtistList2Dto setTimeList(String manualId, String dateTime) {
String redisKey = "".concat(manualId).concat(dateTime);
HashMap<String, Object> map = new HashMap<>();
map.put("manualId", manualId);
List<SweetManualArtistListDto> data = sweetManualArtistsMapper.getManualList(map);
//获取时间
SweetManualAppletDto sweetManualAppletDto = getAppletPerformance(manualId);
int intervalDay = (int) DateUtil.intervalDays(DateUtil.parse(sweetManualAppletDto.getTimeStart(), "yyyyMMdd"), (DateUtil.parse(sweetManualAppletDto.getTimeEnd(), "yyyyMMdd")));
Date timeStartDate = DateUtil.parse(sweetManualAppletDto.getTimeStart(), "yyyyMMdd");
ArrayList<String> list = new ArrayList<>();
list.add(DateUtil.format(timeStartDate, DateUtil.Formatter.yyyy_MM_dd));
for (int i = 0; i < intervalDay; i++) {
list.add(DateUtil.format(DateUtil.addDay(timeStartDate, 1), DateUtil.Formatter.yyyy_MM_dd));
}
//获取舞台
List<SweetManualArtistStageListDto> stageData = sweetManualArtistsMapper.getStageNameList(map);
SweetManualArtistList2Dto returnData = new SweetManualArtistList2Dto();
returnData.setDate(list);
returnData.setData(data);
returnData.setStage(stageData);
redisUtil.set(redisKey, returnData);
return returnData;
}
public SweetManualArtistList2Dto getTimeList(String manualId, String dateTime) {
String redisKey = "".concat(manualId).concat(dateTime);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return setTimeList(manualId, dateTime);
} else {
return (SweetManualArtistList2Dto) obj;
}
}
public SweetRichtext setRichTextRedisData(String manualId, String type) {
String redisKey = "".concat(manualId).concat(type);
SweetRichtext sweetRichtext = sweetRichtextMapper.selectOne(Wrappers.lambdaQuery(SweetRichtext.class).eq(SweetRichtext::getManualId, manualId).eq(SweetRichtext::getType, type));
redisUtil.set(redisKey, sweetRichtext);
return sweetRichtext;
}
public SweetRichtext getRichTextRedisData(String manualId, String type) {
String redisKey = "".concat(manualId).concat(type);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return setRichTextRedisData(manualId, type);
} else {
return (SweetRichtext) obj;
}
}
public List<String> setTagRedisData(String manualId) {
String redisKey = "".concat(manualId);
SweetManualSort data = sweetManualSortMapper.selectOne(Wrappers.lambdaQuery(SweetManualSort.class).eq(SweetManualSort::getManualId, manualId));
String[] arrays = data.getShowPosition().split(",");
List<String> returnData = new ArrayList<>();
for (String item : arrays) {
returnData.add(SweetConstant.ManualPosition.valueOf(item).getMessage());
}
redisUtil.set(redisKey, returnData);
return returnData;
}
public List<String> getTagRedisData(String manualId) {
String redisKey = "".concat(manualId);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return setTagRedisData(manualId);
} else {
return (List<String>) obj;
}
}
public List<SweetManualNotify> setNotifyRedisData(String manualId) {
String redisKey = "".concat(manualId);
List<SweetManualNotify> data = sweetManualNotifyMapper.selectList(Wrappers.lambdaQuery(SweetManualNotify.class).eq(SweetManualNotify::getManualId, manualId).eq(SweetManualNotify::getStatus, 1));
redisUtil.set(redisKey, data);
return data;
}
public List<SweetManualNotify> getNotifyRedisData(String manualId) {
String redisKey = "".concat(manualId);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return setNotifyRedisData(manualId);
} else {
return (List<SweetManualNotify>) obj;
}
}
}
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
<result column="signature_end" property="signatureEnd"/> <result column="signature_end" property="signatureEnd"/>
</resultMap> </resultMap>
<resultMap id="getStageNameListResult" type="com.liquidnet.service.sweet.dto.SweetManualArtistStageListDto">
<result column="title" property="title"/>
</resultMap>
<select id="getManualList" parameterType="java.util.Map" resultMap="getManualListResult"> <select id="getManualList" parameterType="java.util.Map" resultMap="getManualListResult">
select manual_relation_id, select manual_relation_id,
sa.`name`, sa.`name`,
...@@ -23,7 +27,9 @@ ...@@ -23,7 +27,9 @@
from sweet_manual_artists as sma from sweet_manual_artists as sma
left join sweet_artists as sa on sa.artists_id = sma.artists_id left join sweet_artists as sa on sa.artists_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id left join sweet_stage as ss on ss.stage_id = sma.stage_id
where manual_id = #{manualId} <where>
sma.status = 1 and manual_id = #{manualId}
</where>
</select> </select>
<select id="getManualDetails" parameterType="java.util.Map" resultMap="getManualListResult"> <select id="getManualDetails" parameterType="java.util.Map" resultMap="getManualListResult">
...@@ -39,4 +45,15 @@ ...@@ -39,4 +45,15 @@
left join sweet_stage as ss on ss.stage_id = sma.stage_id left join sweet_stage as ss on ss.stage_id = sma.stage_id
where manual_relation_id = #{manualRelationId} where manual_relation_id = #{manualRelationId}
</select> </select>
<select id="getStageNameList" parameterType="java.util.Map" resultMap="getStageNameListResult">
select ss.title
from sweet_manual_artists as sma
left join sweet_artists as sa on sa.artists_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
where sma.status = 1
and manual_id = #{manualId}
group by ss.title;
</select>
</mapper> </mapper>
...@@ -14,6 +14,16 @@ ...@@ -14,6 +14,16 @@
<result column="is_release" property="isRelease"/> <result column="is_release" property="isRelease"/>
</resultMap> </resultMap>
<resultMap id="getManualAppletListResult" type="com.liquidnet.service.sweet.dto.SweetManualAppletDto">
<result column="manual_id" property="manualId"/>
<result column="performances_id" property="performancesId"/>
<result column="title" property="title"/>
<result column="field_id" property="fieldId"/>
<result column="city_name" property="cityName"/>
<result column="time_start" property="timeStart"/>
<result column="time_end" property="timeEnd"/>
</resultMap>
<!-- 电子手册列表 --> <!-- 电子手册列表 -->
<select id="getManualList" parameterType="java.util.Map" resultMap="partnerPerformanceListResult"> <select id="getManualList" parameterType="java.util.Map" resultMap="partnerPerformanceListResult">
SELECT SELECT
...@@ -57,4 +67,13 @@ ...@@ -57,4 +67,13 @@
ORDER BY p.created_at desc ORDER BY p.created_at desc
</select> </select>
<select id="getManualAppletList" resultMap="getManualAppletListResult">
select manual_id, performances_id, title, field_id, city_name, time_start, time_end
from kylin_performances as kp
left join sweet_manual as sw on sw.performance_id = kp.performances_id
left join kylin_performance_relations as kpr on kpr.performance_id = kp.performances_id
where sw.`status` = 1
and sw.is_release = 1
</select>
</mapper> </mapper>
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