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

Commit 04dd4852 authored by anjiabin's avatar anjiabin

Merge remote-tracking branch 'origin/test'

# Conflicts:
#	liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-dragon/src/main/java/com/liquidnet/service/consumer/dragon/receiver/AbstractRedisReceiver.java
#	liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-dragon/src/main/java/com/liquidnet/service/consumer/dragon/receiver/RedisRefundReceiver.java
parents 2fdbf9b6 34917a50
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-bus-feign</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-api-feign-sweet</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
</dependencies>
</project>
\ No newline at end of file
package com.liquidnet.service.feign.sweet.task;
import com.liquidnet.service.base.ResponseDto;
import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
@Component
@FeignClient(name = "liquidnet-service-sweet",
contextId = "FeignSweetWechatClient", path = "",
url = "",
fallback = FallbackFactory.Default.class)
public interface FeignSweetWechatClient {
@GetMapping("sweet/wechatTemplate/send")
ResponseDto send();
}
......@@ -15,6 +15,7 @@
<module>liquidnet-api-feign-kylin</module>
<module>liquidnet-api-feign-dragon</module>
<module>liquidnet-api-feign-platform</module>
<module>liquidnet-api-feign-sweet</module>
<!-- <module>liquidnet-api-feign-sequence</module>-->
<!-- <module>liquidnet-api-feign-example</module>-->
<!-- <module>liquidnet-api-feign-account</module>-->
......
package com.liquidnet.service.adam.constant;
public class AdamConst {
public static final String DEF_URL_AVATAR = "https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png";
public static final String DEF_URL_BACKGROUND = "https://img.zhengzai.tv/other/2021/07/27/150eeb0e20af4fc88e8a1ec57c46c362.png";
}
package com.liquidnet.service.adam.constant;
public class AdamUserConst {
public enum UserAuthTypeEnum {
EMAIL,
SMS_CODE
}
public enum UserAuthResultEnum {
SUCCESS,
FAILURE,
PENDING
}
public enum UserRoleEnum {
Administrator, Executor, Viewer;
}
public enum Logical {
AND, OR;
}
public enum UserStatusEnum{
REMOVED("0","Removed"),
ACTIVE("1","Active"),
INVITED("2","Invited");
private String code;
private String desc;
UserStatusEnum(String code,String desc) {
this.code = code;
this.desc = desc;
}
public static UserStatusEnum byCode(String code) {
UserStatusEnum[] values = UserStatusEnum.values();
for (UserStatusEnum v : values) {
if (v.code.equals(code)) {
return v;
}
}
return null;
}
public String getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
}
......@@ -183,14 +183,15 @@ public class AdamLoginController {
@ApiOperationSupport(order = 3)
@ApiOperation(value = "手机验证码登录")
@ApiImplicitParams({
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "mobile", value = "手机号"),
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "code", value = "验证码"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mobile", value = "手机号"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "code", value = "验证码"),
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "skip", value = "是否跳过完善资料[1-跳过]"),
})
@PostMapping(value = {"login/sms"})
public ResponseDto<AdamLoginInfoVo> loginBySms(@Pattern(regexp = "\\d{11}", message = "手机号格式有误")
@RequestParam String mobile,
@Pattern(regexp = "\\d{6}", message = "验证码格式有误")
@RequestParam String code) {
@RequestParam String code, @RequestParam(required = false) Integer skip) {
log.debug("mobile:{},code:{}", mobile, code);
ResponseDto<AdamLoginInfoVo> checkSmsCodeDto = this.checkSmsCode(mobile, code);
if (!checkSmsCodeDto.isSuccess()) return checkSmsCodeDto;
......@@ -208,6 +209,11 @@ public class AdamLoginController {
userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
}
if (0 == userInfoVo.getIsComplete() && null != skip && 1 == skip) {
// 根据skip值,设置IsComplete(考虑到已存在用户未完善信息的情况,这里只对返回数据单独设置IsComplete)
userInfoVo.setIsComplete(1);
}
AdamLoginInfoVo loginInfoVo = AdamLoginInfoVo.getNew();
if (!toRegister) {
// loginInfoVo.setRealNameInfo(adamRdmService.getRealInfoVoByUid(userInfoVo.getUid()));
......@@ -299,44 +305,6 @@ public class AdamLoginController {
}
@ApiOperationSupport(order = 6)
@ApiOperation(value = "第三方账号登录v1")
@PostMapping(value = {"login/tpa_v1"})
public ResponseDto<AdamLoginInfoVo> loginByTpaV1(@Valid @RequestBody AdamThirdPartParam parameter) {
log.debug("login by tpa:{}", JsonUtils.toJson(parameter));
boolean toRegister = false;
AdamLoginInfoVo loginInfoVo = AdamLoginInfoVo.getNew();
if (StringUtils.isEmpty(parameter.getMobile())) {
String uid = adamRdmService.getUidByPlatformOpenId(parameter.getPlatform(), parameter.getOpenId());
if (StringUtils.isEmpty(uid)) return ResponseDto.failure(ErrorMapping.get("10006"));
loginInfoVo.setUserInfo(adamRdmService.getUserInfoVoByUid(uid));
// loginInfoVo.setRealNameInfo(adamRdmService.getRealInfoVoByUid(uid));
// loginInfoVo.setThirdPartInfo(adamRdmService.getThirdPartVoListByUid(uid));
loginInfoVo.setUserMemberVo(adamRdmService.getUserMemberVoByUid(uid));
// loginInfoVo.setMemberVo(adamRdmService.getMemberSimpleVo());
} else {// 新账号注册
ResponseDto<AdamLoginInfoVo> checkSmsCodeDto = this.checkSmsCode(parameter.getMobile(), parameter.getCode());
if (!checkSmsCodeDto.isSuccess()) {
return checkSmsCodeDto;
}
ResponseDto<AdamUserInfoVo> registerRespDto = adamUserService.register(parameter);
if (!registerRespDto.isSuccess()) {
return ResponseDto.failure(registerRespDto.getCode(), registerRespDto.getMessage());
} else {
AdamUserInfoVo registerUserInfo = registerRespDto.getData();
loginInfoVo.setUserInfo(registerUserInfo);
loginInfoVo.setThirdPartInfo(adamRdmService.getThirdPartVoListByUid(registerUserInfo.getUid()));
// loginInfoVo.setMemberVo(adamRdmService.getMemberSimpleVo());
}
toRegister = true;
}
loginInfoVo.setToken(this.ssoProcess(loginInfoVo.getUserInfo()));
loginInfoVo.getUserInfo().setMobile(SensitizeUtil.custom(loginInfoVo.getUserInfo().getMobile(), 3, 4));
log.info(UserPathDto.setData(toRegister ? "注册" : "登录", ServletUtils.getRequest().getParameterMap(), loginInfoVo));
return ResponseDto.success(loginInfoVo);
}
@ApiOperationSupport(order = 7)
@ApiOperation(value = "登出")
@PostMapping(value = {"out"})
public void logout() {
......@@ -345,7 +313,7 @@ public class AdamLoginController {
redisUtil.del(jwtValidator.getSsoRedisKey().concat(CurrentUtil.getCurrentUid()));
}
@ApiOperationSupport(order = 8)
@ApiOperationSupport(order = 7)
@ApiOperation(value = "注销")
@PostMapping(value = {"close"})
public ResponseDto<Object> close() {
......@@ -358,14 +326,14 @@ public class AdamLoginController {
return ResponseDto.success();
}
@ApiOperationSupport(order = 9)
@ApiOperationSupport(order = 8)
@ApiOperation(value = "时间戳")
@GetMapping(value = {"ts"})
public ResponseDto<Long> timestamp() {
return ResponseDto.success(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli());
}
@ApiOperationSupport(order = 10)
@ApiOperationSupport(order = 9)
@ApiOperation(value = "微信小程序登录凭证校验", notes = "这里仅用于获取OPENID使用。登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。更多使用方法详见 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html")
@GetMapping(value = {"wxa/code2session"})
public ResponseDto<String> wxaCode2Session(@RequestParam String jsCode) {
......@@ -388,7 +356,7 @@ public class AdamLoginController {
return ResponseDto.success(openId);
}
@ApiOperationSupport(order = 11)
@ApiOperationSupport(order = 10)
@ApiOperation(value = "微信网站应用登录", notes = "这里仅用于获取OPENID使用。方法详见 https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html")
@GetMapping(value = {"wx/oauth2/access_token"})
public ResponseDto<String> wxOauth2AccessToken(@RequestParam String code) {
......
......@@ -8,6 +8,7 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.SensitizeUtil;
import com.liquidnet.service.adam.constant.AdamConst;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.AdamUserInfoParam;
import com.liquidnet.service.adam.dto.vo.*;
......@@ -53,9 +54,6 @@ public class AdamUserController {
@Autowired
IAdamUserInfoService adamUserInfoService;
private static final String avatarDefUrl = "https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png";
private static final String backgroundDefUrl = "https://img.zhengzai.tv/other/2021/07/27/150eeb0e20af4fc88e8a1ec57c46c362.png";
@ApiOperationSupport(order = 1)
@ApiOperation(value = "资料编辑")
@PostMapping(value = {"edit"})
......@@ -125,8 +123,8 @@ public class AdamUserController {
// editVo.setAvatar(parameter.getAvatar());
// editVo.setBackground(parameter.getBackground());
// editVo.setNickname(parameter.getNickname());
editVo.setAvatar(StringUtils.isEmpty(editVo.getAvatar()) ? avatarDefUrl : editVo.getAvatar());
editVo.setBackground(StringUtils.isEmpty(editVo.getBackground()) ? backgroundDefUrl : editVo.getBackground());
editVo.setAvatar(StringUtils.isEmpty(editVo.getAvatar()) ? AdamConst.DEF_URL_AVATAR : editVo.getAvatar());
editVo.setBackground(StringUtils.isEmpty(editVo.getBackground()) ? AdamConst.DEF_URL_BACKGROUND : editVo.getBackground());
editVo.setNickname(editVo.getNickname());
editVo.setSex(sex);
editVo.setBirthday(parameter.getBirthday());
......
......@@ -3,6 +3,7 @@ package com.liquidnet.service.adam.service.impl;
import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.constant.AdamConst;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
......@@ -63,16 +64,17 @@ public class AdamUserServiceImpl implements IAdamUserService {
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public AdamUserInfoVo register(String mobile) {
LocalDateTime now = LocalDateTime.now();
AdamUserInfoVo userInfoVo = null;
userInfoVo = AdamUserInfoVo.getNew();
userInfoVo.setUid(IDGenerator.nextSnowId() + "");
AdamUserInfoVo userInfoVo = AdamUserInfoVo.getNew();
userInfoVo.setUid(IDGenerator.nextSnowId());
userInfoVo.setMobile(mobile);
userInfoVo.setNickname(NknameUtil.randomNkname());
userInfoVo.setIsComplete(0);
userInfoVo.setState(1);
userInfoVo.setQrCode("lN".concat(userInfoVo.getUid()).concat(RandomStringUtils.randomAlphanumeric(5).toUpperCase()));
userInfoVo.setAvatar(AdamConst.DEF_URL_AVATAR);
userInfoVo.setBackground(AdamConst.DEF_URL_BACKGROUND);
userInfoVo.setCreateAt(now);
userInfoVo.setIsComplete(0);
userInfoVo.setQrCode("lN".concat(userInfoVo.getUid()).concat(RandomStringUtils.randomAlphanumeric(5).toUpperCase()));
// long s = System.currentTimeMillis();
// mongoTemplate.insert(userInfoVo, AdamUserInfoVo.class.getSimpleName());
......
package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.common.sms.processor.SmsProcessor;
import com.liquidnet.commons.lang.util.CollectionUtil;
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.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener;
import javax.annotation.Resource;
import java.util.HashMap;
@Slf4j
public abstract class AbstractSmsRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
......@@ -21,33 +24,43 @@ public abstract class AbstractSmsRedisReceiver implements StreamListener<String,
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.info("CONSUMER SMS[streamKey:{},messageId:{},stream:{},body:{}]",
log.debug("CONSUMER SMS[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerSmsSendHandler(message.getValue().get("message"));
log.info("CONSUMER SMS RESULT:{} ==> MESSAGE_ID:{}", result, message.getId());
log.debug("CONSUMER SMS RESULT:{}", result);
// 消费成功确认,消息删除和消息确认是一个事务
if (result) {
log.info("CONSUMER SMS SUCC ==> MESSAGE_ID:{}", message.getId());
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("#CONSUMER SMS RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e);
} finally {
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);
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
} catch (Exception ignored) {
}
}
}
private boolean consumerSmsSendHandler(String msg) {
boolean aBoolean = false;
try {
SmsMessage smsMessage = JsonUtils.fromJson(msg, SmsMessage.class);
return smsProcessor.send(smsMessage.getPhone(), smsMessage.getSignName(), smsMessage.getTemplateCode(), smsMessage.getTemplateParam().toString());
aBoolean = smsProcessor.send(smsMessage.getPhone(), smsMessage.getSignName(), smsMessage.getTemplateCode(), smsMessage.getTemplateParam().toString());
} catch (Exception e) {
log.error("CONSUMER SMS FAIL ==> {}", e.getMessage(), e);
return false;
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
protected abstract String getRedisStreamKey();
protected abstract String getRedisStreamGroup();
}
package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.consumer.adam.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.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener;
import java.util.HashMap;
@Slf4j
public abstract class AbstractSqlRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired
......@@ -18,33 +23,43 @@ public abstract class AbstractSqlRedisReceiver implements StreamListener<String,
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.info("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
log.debug("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerSqlDaoHandler(message.getValue().get("message"));
log.info("CONSUMER SQL RESULT:{} ==> MESSAGE_ID:{}", result, message.getId());
log.debug("CONSUMER SQL RESULT:{}", result);
// 消费成功确认,消息删除和消息确认是一个事务
if (result) {
log.info("CONSUMER SMS SUCC ==> MESSAGE_ID:{}", message.getId());
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("#CONSUMER SQL RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e);
} finally {
try {
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("CONSUMER SMS SUCC ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{}]", message.getId(), e);
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
} catch (Exception ignored) {
}
}
}
private boolean consumerSqlDaoHandler(String msg) {
Boolean aBoolean = false;
try {
SqlMapping.SqlMessage sqlMessage = JsonUtils.fromJson(msg, SqlMapping.SqlMessage.class);
return baseDao.batchSqls(sqlMessage.getSqls(), sqlMessage.getArgs());
aBoolean = baseDao.batchSqls(sqlMessage.getSqls(), sqlMessage.getArgs());
} catch (Exception e) {
log.error("CONSUMER SMS FAIL ==> {}", e.getMessage(), e);
return false;
log.error("CONSUMER SQL FAIL ==> {}", e.getMessage(), e);
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
protected abstract String getRedisStreamKey();
protected abstract String getRedisStreamGroup();
}
......@@ -9,4 +9,9 @@ public class ConsumerAdamSmsNoticeRdsReceiver extends AbstractSmsRedisReceiver {
protected String getRedisStreamKey() {
return MQConst.AdamQueue.SMS_NOTICE.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.AdamQueue.SMS_NOTICE.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerAdamSqlUCenterRdsReceiver extends AbstractSqlRedisReceiver
protected String getRedisStreamKey() {
return MQConst.AdamQueue.SQL_UCENTER.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.AdamQueue.SQL_UCENTER.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerAdamSqlUMemberRdsReceiver extends AbstractSqlRedisReceiver
protected String getRedisStreamKey() {
return MQConst.AdamQueue.SQL_UMEMBER.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.AdamQueue.SQL_UMEMBER.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerAdamSqlURegisterRdsReceiver extends AbstractSqlRedisReceive
protected String getRedisStreamKey() {
return MQConst.AdamQueue.SQL_UREGISTER.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.AdamQueue.SQL_UREGISTER.getGroup();
}
}
......@@ -3,7 +3,6 @@ package com.liquidnet.service.consumer.dragon.receiver;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.consumer.dragon.service.IBaseDao;
import com.liquidnet.service.dragon.constant.DragonConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord;
......@@ -37,19 +36,26 @@ public abstract class AbstractRedisReceiver implements StreamListener<String, Ma
log.info("body " + message.getValue());
boolean result = this.consumerSqlDaoHandler(message.getValue().get("message"));
if(result){
// if(result){
// 消费成功确认,消息删除和消息确认是一个事务
log.info("consumer success delete message messageId:{} ",message.getId());
try {
// stringRedisTemplate.multi();
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
// stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
// stringRedisTemplate.exec();
} catch (Exception e) {
e.printStackTrace();
log.error("delete redis queue message error messageId:{} errMsg:{}",message.getId(),e.getMessage());
}finally {
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("error: {}",e);
}
}
}
// }
}
private boolean consumerSqlDaoHandler(String msg) {
......@@ -61,6 +67,8 @@ public abstract class AbstractRedisReceiver implements StreamListener<String, Ma
log.debug("CONSUMER SQL result of execution:{}", rstBatchSqls);
if (rstBatchSqls) {
return true;
}else{
sendMySqlRedis(msg);
}
} catch (Exception e) {
e.printStackTrace();
......@@ -79,7 +87,7 @@ public abstract class AbstractRedisReceiver implements StreamListener<String, Ma
try {
HashMap<String, String> map = new HashMap<>();
map.put("message", msg);
MapRecord<String, String, String> record = StreamRecords.mapBacked(map).withStreamKey(DragonConstant.MysqlRedisQueueEnum.DRAGON_PAY_KEY.getCode());
MapRecord<String, String, String> record = StreamRecords.mapBacked(map).withStreamKey(getRedisStreamKey());
stringRedisTemplate.opsForStream().add(record);
return true;
} catch (Exception e) {
......
......@@ -31,18 +31,21 @@ public class RedisRefundReceiver implements StreamListener<String, MapRecord<Str
log.info("stream " + message.getStream());
log.info("body " + message.getValue());
boolean result = this.consumerSqlDaoHandler(message.getValue().get("message"));
if(result){
// if(result){
log.error("consumer success delete message messageId:{} ",message.getId());
try {
// stringRedisTemplate.multi();
stringRedisTemplate.opsForStream().acknowledge(DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_GROUP.getCode(), message);
stringRedisTemplate.opsForStream().delete(DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode(), message.getId());
// stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
// stringRedisTemplate.exec();
} catch (Exception e) {
log.error("delete redis queue message Exception error: {} ",e);
log.error("delete redis queue message error messageId:{} errMsg:{}",message.getId(),e.getMessage());
}finally {
stringRedisTemplate.opsForStream().acknowledge(DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_GROUP.getCode(), message);
stringRedisTemplate.opsForStream().delete(DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode(), message.getId());
}
}
// }
}
private boolean consumerSqlDaoHandler(String msg) {
......@@ -54,6 +57,8 @@ public class RedisRefundReceiver implements StreamListener<String, MapRecord<Str
log.debug("CONSUMER SQL result of execution:{}", rstBatchSqls);
if (rstBatchSqls) {
return true;
}else{
sendMySqlRedis(msg);
}
} catch (Exception e) {
e.printStackTrace();
......
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.common.sms.processor.SmsProcessor;
import com.liquidnet.commons.lang.util.CollectionUtil;
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.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener;
import javax.annotation.Resource;
import java.util.HashMap;
@Slf4j
public abstract class AbstractSmsRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
......@@ -21,33 +24,44 @@ public abstract class AbstractSmsRedisReceiver implements StreamListener<String,
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.info("CONSUMER SMS[streamKey:{},messageId:{},stream:{},body:{}]",
log.debug("CONSUMER SMS[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerSmsSendHandler(message.getValue().get("message"));
log.info("CONSUMER SMS RESULT:{} ==> MESSAGE_ID:{}", result, message.getId());
log.debug("CONSUMER SMS RESULT:{}", result);
// 消费成功确认,消息删除和消息确认是一个事务
if (result) {
log.info("CONSUMER SMS SUCC ==> MESSAGE_ID:{}", message.getId());
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("#CONSUMER SMS RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e);
} finally {
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("CONSUMER SMS SUC ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{}]", message.getId(), e);
} catch (Exception ignored) {
}
}
}
private boolean consumerSmsSendHandler(String msg) {
boolean aBoolean = false;
try {
SmsMessage smsMessage = JsonUtils.fromJson(msg, SmsMessage.class);
return smsProcessor.send(smsMessage.getPhone(), smsMessage.getSignName(), smsMessage.getTemplateCode(), smsMessage.getTemplateParam().toString());
aBoolean = smsProcessor.send(smsMessage.getPhone(), smsMessage.getSignName(), smsMessage.getTemplateCode(), smsMessage.getTemplateParam().toString());
} catch (Exception e) {
log.error("CONSUMER SMS FAIL ==> {}", e.getMessage(), e);
return false;
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
protected abstract String getRedisStreamKey();
protected abstract String getRedisStreamGroup();
}
\ 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.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.OrderCloseMapping;
import com.liquidnet.service.consumer.kylin.Utils.KylinUtils;
......@@ -9,9 +10,12 @@ 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.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener;
import java.util.HashMap;
@Slf4j
public abstract class AbstractSqlOptOrderCloseRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired
......@@ -23,25 +27,28 @@ public abstract class AbstractSqlOptOrderCloseRedisReceiver implements StreamLis
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.info("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
log.debug("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerSqlOperationOrderCloseHandler(message.getValue().get("message"));
log.info("CONSUMER SQL RESULT:{} ==> MESSAGE_ID:{}", result, message.getId());
log.debug("CONSUMER SQL RESULT:{}", result);
// 消费成功确认,消息删除和消息确认是一个事务
if (result) {
log.info("CONSUMER SMS SUCC ==> MESSAGE_ID:{}", message.getId());
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("#CONSUMER SQL RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e);
} finally {
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("CONSUMER SMS SUCC ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{}]", message.getId(), e);
} catch (Exception ignored) {
}
}
}
private boolean consumerSqlOperationOrderCloseHandler(String msg) {
boolean aBoolean = false;
try {
OrderCloseMapping.orderCloseMessage mqMessage = JsonUtils.fromJson(msg, OrderCloseMapping.orderCloseMessage.class);
......@@ -61,12 +68,20 @@ public abstract class AbstractSqlOptOrderCloseRedisReceiver implements StreamLis
}
}
return true;
aBoolean = true;
} catch (Exception e) {
log.error("CONSUMER SMS FAIL ==> {}", e.getMessage(), e);
return false;
log.error("CONSUMER SQL FAIL ==> {}", e.getMessage(), e);
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
protected abstract String getRedisStreamKey();
protected abstract String getRedisStreamGroup();
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.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.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener;
import java.util.HashMap;
@Slf4j
public abstract class AbstractSqlRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired
......@@ -18,33 +22,44 @@ public abstract class AbstractSqlRedisReceiver implements StreamListener<String,
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.info("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
log.debug("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerSqlDaoHandler(message.getValue().get("message"));
log.info("CONSUMER SQL RESULT:{} ==> MESSAGE_ID:{}", result, message.getId());
log.debug("CONSUMER SQL RESULT:{}", result);
// 消费成功确认,消息删除和消息确认是一个事务
if (result) {
log.info("CONSUMER SMS SUCC ==> MESSAGE_ID:{}", message.getId());
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("#CONSUMER SQL RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e);
} finally {
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("CONSUMER SMS SUCC ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{}]", message.getId(), e);
} catch (Exception ignored) {
}
}
}
private boolean consumerSqlDaoHandler(String msg) {
Boolean aBoolean = false;
try {
SqlMapping.SqlMessage sqlMessage = JsonUtils.fromJson(msg, SqlMapping.SqlMessage.class);
return baseDao.batchSqls(sqlMessage.getSqls(), sqlMessage.getArgs());
aBoolean = baseDao.batchSqls(sqlMessage.getSqls(), sqlMessage.getArgs());
} catch (Exception e) {
log.error("CONSUMER SMS FAIL ==> {}", e.getMessage(), e);
return false;
log.error("CONSUMER SQL FAIL ==> {}", e.getMessage(), e);
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
protected abstract String getRedisStreamKey();
protected abstract String getRedisStreamGroup();
}
\ No newline at end of file
......@@ -9,4 +9,9 @@ public class ConsumerKylinSmsNoticeRdsReceiver extends AbstractSmsRedisReceiver
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SMS_NOTICE.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SMS_NOTICE.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerKylinSqlOptOrderCloseRedisReceiver extends AbstractSqlOptOr
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_ORDER_CLOSE.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_ORDER_CLOSE.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerKylinSqlOrderAgainRdsReceiver extends AbstractSqlRedisRecei
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_ORDER_AGAIN.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_ORDER_AGAIN.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerKylinSqlOrderCreateRdsReceiver extends AbstractSqlRedisRece
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_ORDER_CREATE.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_ORDER_CREATE.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerKylinSqlOrderOvertimeRefundRdsReceiver extends AbstractSqlR
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_ORDER_OVERTIME_REFUND.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_ORDER_OVERTIME_REFUND.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerKylinSqlOrderPayRdsReceiver extends AbstractSqlRedisReceive
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_ORDER_PAY.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_ORDER_PAY.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerKylinSqlOrderRefundRdsReceiver extends AbstractSqlRedisRece
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_ORDER_REFUND.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_ORDER_REFUND.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerKylinSqlOrderWithdrawRdsReceiver extends AbstractSqlRedisRe
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_ORDER_WITHDRAW.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_ORDER_WITHDRAW.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerKylinSqlPerformanceLackRdsReceiver extends AbstractSqlRedis
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_PERFORMANCE_LACK.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_PERFORMANCE_LACK.getGroup();
}
}
......@@ -9,4 +9,9 @@ public class ConsumerKylinSqlStationRdsReceiver extends AbstractSqlRedisReceiver
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_STATION.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_STATION.getGroup();
}
}
......@@ -158,6 +158,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
String sign = PayWepayUtils.getInstance().createSign(parameters);
parameters.put("sign", sign);
String data = PayWepayUtils.getInstance().getRequestXml(parameters);
String refundError = "";
try {
HttpPost httpost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/refund");
httpost.setEntity(new StringEntity(data, "UTF-8"));
......@@ -170,7 +171,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
WePayRefundReturnDto wePayRefundReturnDto = XmlUtil.toBean(jsonStr, WePayRefundReturnDto.class);
if (wePayRefundReturnDto.getErrCodeDes() != null) {
channelDto.setResult("error");
channelDto.setMessage(paymentType + " refund error: " + wePayRefundReturnDto.getErrCodeDes());
channelDto.setMessage( wePayRefundReturnDto.getErrCodeDes());
contentDto.setRequest(data);
contentDto.setResponse(jsonStr);
channelDto.setContent(contentDto);
......@@ -178,7 +179,6 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
}
if (!wePayRefundReturnDto.getReturnCode().equalsIgnoreCase("SUCCESS") || wePayRefundReturnDto.getReturnCode() == null) {
try {
String refundError = "";
refundStatus = DragonConstant.RefundStatusEnum.STATUS_ERROR.getCode();
if (null == wePayRefundReturnDto.getReturnMsg()) {
refundError = "退款失败,原因未知";
......@@ -203,7 +203,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
return channelDto;
}
channelDto.setResult("error");
channelDto.setMessage(paymentType + " refund error: ");
channelDto.setMessage(refundError);
contentDto.setRequest(data);
contentDto.setResponse(jsonStr);
channelDto.setContent(contentDto);
......@@ -262,6 +262,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
RefundContentDto contentDto = new RefundContentDto();
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();//创建API对应的request类
try {
String refundError = "";
request.setBizContent("{" +
"\"out_trade_no\":\"" + code + "\"," +
"\"trade_no\":\"" + paymentId + "\"," +
......@@ -269,9 +270,8 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
"\"refund_reason\":\"" + reason + "\"," +
"\"refund_amount\":\"" + price.doubleValue() + "\"}"); //设置业务参数
AlipayTradeRefundResponse response = PayAlipayUtils.getInstance().getHttpClient().execute(request);
if (response.getFundChange().equals("N") || response.getFundChange() == null) {
if (response.getFundChange() == null || response.getFundChange().equals("N")) {
try {
String refundError = "";
refundStatus = DragonConstant.RefundStatusEnum.STATUS_ERROR.getCode();
if (null == response.getSubMsg()) {
refundError = "退款失败,原因未知";
......@@ -296,7 +296,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
return channelDto;
}
channelDto.setResult("error");
channelDto.setMessage(paymentType + " refund error: ");
channelDto.setMessage(refundError);
contentDto.setRequest(JSON.toJSONString(response.getParams()));
contentDto.setResponse(response.getBody());
channelDto.setContent(contentDto);
......
......@@ -32,6 +32,12 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-api-feign-sweet</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
......
package com.liquidnet.service.executor.main.handler;
import com.liquidnet.service.feign.sweet.task.FeignSweetWechatClient;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* sweet
*/
@Component
public class SweetWechatTaskHandler {
private static final Logger log = LoggerFactory.getLogger(SweetWechatTaskHandler.class);
@Autowired
private FeignSweetWechatClient feignSweetWechatClient;
@XxlJob(value = "sev-sweet:sendMsg")
public ReturnT<String> sendWechatMsgHandler() {
try {
feignSweetWechatClient.send().getData();
log.info("sendWechatMsgHandler:结果:success");
return ReturnT.SUCCESS;
} catch (Exception e) {
return ReturnT.FAIL;
}
}
}
......@@ -22,26 +22,49 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO="sweet:wechatUser:unionId:";
public enum ManualPosition {
artist("艺人"),
signingTime("签售时间"),
foodAndAmusement("吃喝玩乐"),
siteMap("现场地图"),
howToReach("如何到达"),
// POSITION_6("官方售卖"),
officialSupport("官方支持"),
audienceNotice("观众须知"),
preventionGuidelines("防疫指南"),
notice("通知"),
strategy("观演攻略");
artist("艺人","artist"),
signingTime("签售时间","signingTime"),
foodAndAmusement("吃喝玩乐","foodAndAmusement"),
siteMap("现场地图","siteMap"),
howToReach("如何到达","howToReach"),
relatedProduct ("官方售卖","relatedProduct"),
officialSupport("官方支持","officialSupport"),
audienceNotice("观众须知","audienceNotice"),
preventionGuidelines("防疫指南","preventionGuidelines"),
notice("通知","notice"),
strategy("观演攻略","strategy");
private String message;
private String code;
ManualPosition(String message) {
private ManualPosition(String message, String code) {
this.message = message;
this.code = code;
}
public void setCode(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public static String getMessage(String code) {
for (ManualPosition c : ManualPosition.values()) {
if (c.getCode().equalsIgnoreCase(code)) {
return c.message;
}
}
return null;
}
}
}
......@@ -86,12 +86,13 @@ public class RedisDataUtils {
//获取时间
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");
Date dateEnd=DateUtil.parse(sweetManualAppletDto.getTimeEnd(), DateUtil.DATE_SMALL_STR);
Date dateStart=DateUtil.parse(sweetManualAppletDto.getTimeStart(), DateUtil.DATE_SMALL_STR);
int intervalDay = (int) DateUtil.intervalDays(dateStart,dateEnd );
ArrayList<String> list = new ArrayList<>();
list.add(DateUtil.format(timeStartDate, DateUtil.Formatter.yyyy_MM_dd));
list.add(DateUtil.format(dateStart, 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.add(DateUtil.format(DateUtil.addDay(dateStart, i+1), DateUtil.Formatter.yyyy_MM_dd));
}
//获取舞台
......@@ -145,7 +146,8 @@ public class RedisDataUtils {
String[] arrays = data.getShowPosition().split(",");
List<String> returnData = new ArrayList<>();
for (String item : arrays) {
returnData.add(SweetConstant.ManualPosition.valueOf(item).getMessage());
returnData.add(item);
// returnData.add(SweetConstant.ManualPosition.getMessage(item));
}
redisUtil.set(redisKey, returnData);
return returnData;
......
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