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

Commit 910b1824 authored by 张禹's avatar 张禹

Merge branch 'pre' into 'master'

Pre

See merge request !259
parents a325b2b7 df3e283d
package com.liquidnet.service.goblin.dto.manage;
import com.liquidnet.commons.lang.constant.LnsRegex;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo;
......@@ -10,6 +11,7 @@ import org.apache.commons.lang3.StringUtils;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
......@@ -53,9 +55,10 @@ public class GoblinStoreMgtDigitalGoodsAddParam implements Serializable {
// @NotBlank(message = "注意事项不能为空")
@Size(max = 256, message = "注意事项内容过长")
private String attention;
@ApiModelProperty(position = 20, required = true, value = "创作者[25]", example = "创作者...")
@ApiModelProperty(position = 20, required = true, value = "创作者[20]", example = "创作者...")
@NotBlank(message = "创作者不能为空")
@Size(max = 25, message = "创作者内容过长")
@Size(max = 20, message = "创作者内容过长")
@Pattern(regexp = LnsRegex.Valid.ALPHABET_HANZI_SPACE_DOT, message = "创作者格式有误,仅支持中英文")
private String author;
@ApiModelProperty(position = 21, required = true, value = "发行方[25]", example = "发行方...")
@NotBlank(message = "发行方不能为空")
......
......@@ -34,10 +34,12 @@ public class GoblinStoreMgtDigitalGoodsAddSkuParam implements Serializable {
@ApiModelProperty(position = 13, required = true, value = "藏品名称[36]", example = "藏品名称...")
@NotBlank(message = "藏品名称不能为空")
@Size(max = 36, message = "藏品名称内容过长")
@Pattern(regexp = LnsRegex.Valid.ALPHABET_NUMBER_HANZI_SPACE_DOT, message = "藏品名称格式有误,仅支持中英文数字")
private String name;
@ApiModelProperty(position = 14, required = true, value = "副标题[36],`unbox=0`时必传", example = "副标题...")
@NotBlank(message = "副标题不能为空")
@Size(max = 36, message = "副标题内容过长")
@Pattern(regexp = LnsRegex.Valid.ALPHABET_NUMBER_HANZI_SPACE_DOT, message = "副标题格式有误,仅支持中英文数字")
private String subtitle;
@ApiModelProperty(position = 15, required = true, value = "藏品封面图片URL[256]", example = "https://img.zhengzai.tv/files/2020/08/31/5f4c75095e9bc.png")
@NotBlank(message = "藏品封面图片不能为空")
......
......@@ -11,9 +11,45 @@ public class LnsRegex {
*/
public static final String DATETIME_YMD = "^(((((0[48]|[2468][048]|[3579][26])00))|(([0-9]{2})(0[48]|[2468][048]|[13579][26])))[-|.|/| ]0?2[-|.|/| ]29|(((?!0{1,4})[0-9]{1,4})[-|.|/| ](((0[13-9]|1[0-2]|[13-9])[-|.|/| ](29|30))|((0[13578]|(10|12)|[13578])[-|.|/| ]31)|((0(?:[1-9])|1(?:[0-2])|[1-9])[-|.|/| ](0(?:[1-9])|1[0-9]|2[0-8]|[1-9])))))$";
/**
* 字母、数字组合
* 大写字母 || 数字
*/
public static final String LETTER_NUMBER = "^[A-Z0-9]+$";
/**
* 大小字母 || 数字
*/
public static final String ALPHABET_NUMBER = "^[a-zA-Z0-9]+$";
/**
* 大小字母 || 汉字
*/
public static final String ALPHABET_HANZI = "^[a-zA-Z\\u4e00-\\u9fa5]+$";
/**
* (大小字母 || 汉字 || 空格) && 首尾非空字符
*/
public static final String ALPHABET_HANZI_SPACE = "^(?!\\u0020)(?!.*?\\u0020$)[a-zA-Z\\u4e00-\\u9fa5\\u0020]+$";
/**
* (大小字母 || 汉字 || 空格 || ·) && 首尾非空字符非·
*/
public static final String ALPHABET_HANZI_SPACE_DOT = "^(?![·\\u0020])(?!.*?[·\\u0020]$)[a-zA-Z\\u4e00-\\u9fa5\\u0020·]+$";
/**
* 大小字母 || 数字 || 汉字
*/
public static final String ALPHABET_NUMBER_HANZI = "^[a-zA-Z0-9\\u4e00-\\u9fa5]+$";
/**
* (大小字母 || 数字 || 汉字 || 空格) && 首尾非空字符
*/
public static final String ALPHABET_NUMBER_HANZI_SPACE = "^(?!\\u0020)(?!.*?\\u0020$)[a-zA-Z0-9\\u4e00-\\u9fa5\\u0020]+$";
/**
* (大小字母 || 数字 || 汉字 || 空格 || ·) && 首尾非空字符非·
*/
public static final String ALPHABET_NUMBER_HANZI_SPACE_DOT = "^(?![·\\u0020])(?!.*?[·\\u0020]$)[a-zA-Z0-9\\u4e00-\\u9fa5\\u0020·]+$";
/**
* 大小字母 || 数字 || 下划线 || 汉字
*/
public static final String ALPHABET_NUMBER_UNDER_HANZI = "^[a-zA-Z0-9_\\u4e00-\\u9fa5]+$";
/**
* (大小字母 || 数字 || 下划线 || 汉字 || 空格) && 首尾非空字符非下划线
*/
public static final String ALPHABET_NUMBER_UNDER_HANZI_SPACE = "^(?![_\\u0020])(?!.*?[_\\u0020]$)[a-zA-Z0-9_\\u4e00-\\u9fa5\\u0020]+$";
/**
* 汉字-姓名(2~20位)
*/
......
......@@ -53,29 +53,29 @@ public class ConsumerKylinSqlOrderPayRedisStreamConfig extends RedisStreamConfig
return subscription;
}
//
// @Bean
// public Subscription subscriptionSqlOrderPay2(RedisConnectionFactory factory) {
// var listenerContainer = this.buildStreamMessageListenerContainer(factory);
// var subscription = receiveSqlOrderPay(listenerContainer, 2);
// listenerContainer.start();
// return subscription;
// }
//
// @Bean
// public Subscription subscriptionSqlOrderPay3(RedisConnectionFactory factory) {
// var listenerContainer = this.buildStreamMessageListenerContainer(factory);
// var subscription = receiveSqlOrderPay(listenerContainer, 3);
// listenerContainer.start();
// return subscription;
// }
//
// @Bean
// public Subscription subscriptionSqlOrderPay4(RedisConnectionFactory factory) {
// var listenerContainer = this.buildStreamMessageListenerContainer(factory);
// var subscription = receiveSqlOrderPay(listenerContainer, 4);
// listenerContainer.start();
// return subscription;
// }
@Bean
public Subscription subscriptionSqlOrderPay2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlOrderPay(listenerContainer, 2);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlOrderPay3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlOrderPay(listenerContainer, 3);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlOrderPay4(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlOrderPay(listenerContainer, 4);
listenerContainer.start();
return subscription;
}
//
// @Bean
// public Subscription subscriptionSqlOrderPay5(RedisConnectionFactory factory) {
......
package com.liquidnet.service.consumer.order.receiver;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
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.order.utils.GoblinNftUtils;
import com.liquidnet.service.consumer.order.utils.KylinOrderUtils;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.param.BackCouponParam;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
import com.liquidnet.service.kylin.entity.KylinOrderTicketRelations;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import com.mongodb.BasicDBObject;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
......@@ -40,6 +51,8 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
@Autowired
private RedisUtil redisUtil;
@Autowired
private KylinOrderUtils kylinOrderUtils;
@Autowired
private GoblinNftUtils goblinNftUtils;
@Autowired
private MongoTemplate mongoTemplate;
......@@ -81,6 +94,8 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
return checkOrderTime(orderCode, type);
case "NFT":
return checkNftOrderTime(orderCode);
case "TICKET":
return checkTicketOrderTime(orderCode);
default:
return false;
}
......@@ -173,12 +188,12 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
/*if (StringUtils.isEmpty(nftOrder.getBoxSkuId())) {// 购买藏品
GoblinListCollectVo goblinListCollectVo = goblinNftUtils.getCollectByNowNext(nowTime, nftOrder.getSkuId());
String listId = (null == goblinListCollectVo) ? null : goblinListCollectVo.getListId();
log.debug("listId : {}",listId);
log.debug("listId : {}", listId);
goblinNftUtils.incrSkuStock(listId, nftOrder.getSkuId(), nftOrder.getNum());
} else {// 购买盲盒
GoblinListCollectVo goblinListCollectVo = goblinNftUtils.getCollectByNowNext(nowTime, nftOrder.getBoxSkuId());
String listId = (null == goblinListCollectVo) ? null : goblinListCollectVo.getListId();
log.debug("listId : {}",listId);
log.debug("listId : {}", listId);
goblinNftUtils.incrSkuStock(listId, nftOrder.getBoxSkuId(), nftOrder.getNum());
}*/
GoblinListCollectVo goblinListCollectVo = goblinNftUtils.getCollectByNowNext(nowTime, nftOrder.getSkuId());
......@@ -213,6 +228,80 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
}
}
public boolean checkTicketOrderTime(String orderId) {
LocalDateTime now = LocalDateTime.now();
try {
KylinOrderTicketVo kylinOrderTicketVo = kylinOrderUtils.getOrderTicketVo(orderId);
if (kylinOrderTicketVo.getStatus().equals(KylinTableStatusConst.ORDER_STATUS0)) {//待支付
//改mongo
HashMap<String, Object> mapMongo = CollectionUtil.mapStringObject();
mapMongo.put("status", KylinTableStatusConst.ORDER_STATUS2);
mapMongo.put("updatedAt", DateUtil.Formatter.yyyyMMddHHmmssSSS.format(now));
mapMongo.put("changeDate", now);
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateMany(
Query.query(Criteria.where("orderTicketsId").in(kylinOrderTicketVo.getOrderTicketsId())).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(mapMongo))
);
//改redis
kylinOrderTicketVo.setStatus(2);
kylinOrderUtils.setOrderTicketVo(kylinOrderTicketVo.getOrderTicketsId(), kylinOrderTicketVo);
kylinOrderUtils.resetOrderListVo(kylinOrderTicketVo.getUserId(), 2, kylinOrderTicketVo.getOrderTicketsId(), kylinOrderTicketVo);
// redis 改限购
for (int i = 0; i < kylinOrderTicketVo.getEntitiesVoList().size(); i++) {
KylinOrderTicketEntitiesVo items = kylinOrderTicketVo.getEntitiesVoList().get(i);
kylinOrderUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1);
}
//改库存
kylinOrderUtils.changeSurplusGeneral(kylinOrderTicketVo.getTicketId(), kylinOrderTicketVo.getNumber());
// //处理券
ArrayList<KylinOrderCoupons> orderCoupons = kylinOrderUtils.getOrderCoupon(kylinOrderTicketVo.getOrderTicketsId());
if (orderCoupons.size() > 0) {
for (KylinOrderCoupons item : orderCoupons) {
if (item.getCouponType() != 101) {
kylinOrderUtils.backCoupon(item.getCouponCode(), kylinOrderTicketVo.getUserId());
}
}
}
//mysql
KylinOrderTickets orderTickets = KylinOrderTickets.getNew();
orderTickets.setUpdatedAt(now);
// orderTicketsMapper.update(orderTickets, new UpdateWrapper<KylinOrderTickets>().in("order_tickets_id", orderIdList));
KylinOrderTicketStatus orderTicketStatus = KylinOrderTicketStatus.getNew();
orderTicketStatus.setStatus(2);
orderTicketStatus.setUpdatedAt(now);
// orderTicketStatusMapper.update(orderTicketStatus, new UpdateWrapper<KylinOrderTicketStatus>().in("order_id", orderIdList));
KylinOrderTicketRelations orderTicketRelations = KylinOrderTicketRelations.getNew();
orderTicketRelations.setUpdatedAt(now);
// orderTicketRelationsMapper.update(orderTicketRelations, new UpdateWrapper<KylinOrderTicketRelations>().in("order_id", orderIdList));
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlDataOrder = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlDataOrderStatus = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlDataOrderRelation = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("kylin_order_tickets.close"));
sqls.add(SqlMapping.get("kylin_order_ticket_status.close"));
sqls.add(SqlMapping.get("kylin_order_ticket_relations.close"));
sqlDataOrder.add(new Object[]{
now, kylinOrderTicketVo.getOrderTicketsId(),
});
sqlDataOrderStatus.add(new Object[]{
2, now, kylinOrderTicketVo.getOrderTicketsId(),
});
sqlDataOrderRelation.add(new Object[]{
now, kylinOrderTicketVo.getOrderTicketsId(),
});
sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_PAY.getKey(),
SqlMapping.gets(sqls, sqlDataOrder, sqlDataOrderStatus, sqlDataOrderRelation));
}
return true;
} catch (Exception e) {
log.error("checkTicketOrderTime异常 [valueData:{}, e:{}]", orderId, e);
return false;
}
}
private UpdateResult updateGoblinStoreOrderVo(String orderId, GoblinStoreOrderVo data) {
BasicDBObject object = cloneBasicDBObject().append("$set", mongoConverter.convertToMongoType(data));
return mongoTemplate.getCollection(GoblinStoreOrderVo.class.getSimpleName()).updateOne(
......
package com.liquidnet.service.consumer.order.utils;
import com.alibaba.fastjson.JSON;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.service.candy.param.BackCouponParam;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.dto.vo.GoblinListCollectVo;
import com.liquidnet.service.goblin.dto.vo.GoblinNftOrderVo;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
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.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
import com.mongodb.BasicDBObject;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@Component
@Slf4j
public class KylinOrderUtils {
@Value("${liquidnet.service.candy.url}")
private String candyUrl;
@Autowired
private RedisUtil redisUtil;
@Autowired
private MongoTemplate mongoTemplate;
//-------- TICKET --------
/**
* 根据订单id 获取 订单vo 详情
*
* @param orderId
* @return
*/
public KylinOrderTicketVo getOrderTicketVo(String orderId) {
Object obj = redisUtil.get(KylinRedisConst.ORDER + orderId);
if (obj!=null) {
return (KylinOrderTicketVo)obj;
} else {
KylinOrderTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("orderTicketsId").is(orderId)), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = mongoTemplate.find(Query.query(Criteria.where("orderId").is(orderId)), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
ticketData.setEntitiesVoList(kylinOrderTicketEntitiesVoList);
redisUtil.set(KylinRedisConst.ORDER + orderId, ticketData);
return ticketData;
}
}
public void setOrderTicketVo(String orderId, KylinOrderTicketVo vo) {
String redisKey = KylinRedisConst.ORDER + orderId;
redisUtil.set(redisKey, vo);
}
/**
* @param userId 用户id
* @param type 1新增 2修改
* @param orderId 订单id [需要新增或者修改的订单id]
*/
public Boolean resetOrderListVo(String userId, Integer type, String orderId, KylinOrderTicketVo dataSingle) {
List<KylinOrderListVo> vo = new ArrayList<>();
List<KylinOrderListVo> redisVo = new ArrayList();
KylinOrderTicketVo data = dataSingle;
KylinOrderListVo voItem = KylinOrderListVo.getNew().copy(data);
List<KylinOrderListVo> redisData = (List<KylinOrderListVo>) redisUtil.get(KylinRedisConst.ORDER_LIST + userId);
if(redisData==null){
return false;
}
if (type == 1) {
redisVo.add(voItem);
if (redisData.size() > 0) {
if (redisData.get(0).getOrderTicketsId().equals(orderId)) {
redisData.remove(0);
}
}
}
redisVo.addAll(redisData);
switch (type) {
case 1:
for (int i = 0; i < redisVo.size(); i++) {
if (i == 40) {
break;
}
if (i == 0) {
vo.add(voItem);
} else {
vo.add(redisVo.get(i));
}
}
if (redisVo.size() == 0) {
vo.add(voItem);
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, vo);
return true;
case 2:
for (int i = 0; i < redisVo.size(); i++) {
if (i == 40) {
break;
}
if (redisVo.get(i).getOrderTicketsId().equals(orderId)) {
vo.add(voItem);
} else {
vo.add(redisVo.get(i));
}
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, vo);
return true;
default:
return false;
}
}
/**
* 限购处理
* @param userId
* @param idCard
* @param performanceId
* @param ticketId
* @param buyCount
*/
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
int isTrueName = getPerformanceIsTrueName(performanceId);
if (0 == isTrueName) {
redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
} else {
redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
}
String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (buyCount > 0) {
redisUtil.incr(ticketIdKey, buyCount);
redisUtil.incr(performanceIdKey, buyCount);
} else {
redisUtil.decr(ticketIdKey, Math.abs(buyCount));
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
}
}
/**
* 演出是否实名
*
* @param performanceId
*/
public int getPerformanceIsTrueName(String performanceId) {
Object obj = redisUtil.get(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId);
if (obj != null) {
return (int) obj;
} else {
int isTrueName = getPerformanceVo(performanceId).getIsTrueName();
redisUtil.set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId, isTrueName);
return isTrueName;
}
}
/**
* 根据演出id 获取 演出vo 详情
*
* @param performanceId
* @return
*/
public KylinPerformanceVo getPerformanceVo(String performanceId) {
if (redisUtil.hasKey(KylinRedisConst.PERFORMANCES + performanceId)) {
} else {
KylinPerformanceVo performanceData = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
redisUtil.set(KylinRedisConst.PERFORMANCES + performanceId, performanceData);
}
return (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES + performanceId);
}
/**
* 修改普通库存 并 返回修改后的数量
*
* @param ticketId 票id
* @param surplusGeneral 普通库存
* @return 普通剩余库存
*/
public int changeSurplusGeneral(String ticketId, int surplusGeneral) {
if (surplusGeneral > 0) {
return (int) redisUtil.incr(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId + ":" + KylinRedisConst.SURPLUS_GENERAL, surplusGeneral);
} else {
return (int) redisUtil.decr(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId + ":" + KylinRedisConst.SURPLUS_GENERAL, Math.abs(surplusGeneral));
}
}
// 获取订单券的使用情况
public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId) {
String redisKey = KylinRedisConst.ORDER_COUPON.concat(orderId);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return getKylinOrderCouponsArrayList();
} else {
return (ArrayList<KylinOrderCoupons>) obj;
}
}
public void backCoupon(String uCouponId, String uid) {
try {
BackCouponParam param = BackCouponParam.getNew();
param.setuCouponIds(uCouponId);
param.setUid(uid);
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Authorization", "Bearer " + CurrentUtil.getToken());
ArrayList<BackCouponParam> params = new ArrayList();
params.add(param);
String jsonString = JSON.toJSONString(params);
String returnData = HttpUtil.postRaw(candyUrl + "/candy-coupon/useBack", jsonString, header);
} catch (Exception e) {
log.error("回退券ERROR:{}", e);
}
}
private static final ArrayList<KylinOrderCoupons> kylinOrderCouponsArrayList = new ArrayList<>();
public static ArrayList<KylinOrderCoupons> getKylinOrderCouponsArrayList() {
return (ArrayList<KylinOrderCoupons>) kylinOrderCouponsArrayList.clone();
}
}
......@@ -4,6 +4,9 @@ goblin_order.close.sku=UPDATE goblin_order_sku SET status = ? ,updated_at = ? WH
goblin_user_coupon.updateState=UPDATE goblin_user_coupon SET state = ? , used_for = ? ,updated_at = ? where ucoupon_id = ?
#-------- NFT -------
goblin_nft_order.update.close=UPDATE goblin_nft_order SET status = ?, updated_at = ?, cancel_time = ?, cancel_reason = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
#---- 兑换码操作
goblin_activity.code.admin=UPDATE goblin_nft_ex_code SET admin_uid = ? where code = ?
#---- 关闭票务订单
kylin_order_tickets.close=UPDATE kylin_order_tickets SET updated_at = ? where order_tickets_id = ?
kylin_order_ticket_status.close=UPDATE kylin_order_ticket_status SET status = ? , updated_at = ? where order_id = ?
kylin_order_ticket_relations.close=UPDATE kylin_order_ticket_relations SET updated_at = ? where order_id = ?
\ No newline at end of file
......@@ -247,8 +247,8 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
initGoodsObjs.add(new Object[]{
spuId, goodsInfoVo.getSpuNo(), goodsInfoVo.getSpuType(), goodsInfoVo.getName(), goodsInfoVo.getIntro(),
goodsInfoVo.getAttention(), goodsInfoVo.getStoreId(), goodsInfoVo.getCateFid(), goodsInfoVo.getCateSid(), goodsInfoVo.getCateTid(),
goodsInfoVo.getVirtualFlg(), goodsInfoVo.getStatus(), goodsInfoVo.getShelvesStatus(), goodsInfoVo.getSpuAppear(), goodsInfoVo.getCreatedBy(),
goodsInfoVo.getCreatedAt()
goodsInfoVo.getVirtualFlg(), goodsInfoVo.getStatus(), goodsInfoVo.getShelvesStatus(), goodsInfoVo.getSpuAppear(), goodsInfoVo.getAuthor(),
goodsInfoVo.getPublisher(), goodsInfoVo.getCreatedBy(), goodsInfoVo.getCreatedAt()
});
toMqSqls.add(SqlMapping.get("goblin_goods_tag.insert_byreplace"));
LinkedList<Object[]> initGoodsTagObjs = CollectionUtil.linkedListObjectArr();
......
......@@ -35,7 +35,7 @@ goblin_goods_sku_spec_value.update_by_edit=UPDATE goblin_goods_sku_spec_value SE
goblin_goods_sku_spec_value.update_by_del_sku=UPDATE goblin_goods_sku_spec_value SET del_flg='1' WHERE sku_id=? AND del_flg='0'
#---- \u5546\u54C1\u4FE1\u606F
goblin_goods.insert=INSERT INTO goblin_goods (spu_id,spu_no,name,subtitle,sell_price, price_ge,price_le,intro,details,cover_pic, video,spec_mode,store_id,cate_fid,cate_sid, cate_tid,store_cate_fid,store_cate_sid,store_cate_tid,brand_id, shelves_handle,shelves_time,spu_validity,virtual_flg,status, shelves_status,spu_appear,shelves_at,created_by,created_at, logistics_template)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
goblin_goods.insert_for_digital=INSERT INTO goblin_goods (spu_id,spu_no,spu_type,name,intro,attention,store_id,cate_fid,cate_sid,cate_tid,virtual_flg,status,shelves_status,spu_appear,created_by,created_at)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
goblin_goods.insert_for_digital=INSERT INTO goblin_goods (spu_id,spu_no,spu_type,name,intro,attention,store_id,cate_fid,cate_sid,cate_tid,virtual_flg,status,shelves_status,spu_appear,author,publisher,created_by,created_at)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
goblin_goods.update_by_edit=UPDATE goblin_goods SET spu_no=?,name=?,subtitle=?,sell_price=?,intro=?,details=?,cover_pic=?,video=?,spec_mode=?,cate_fid=?,cate_sid=?,cate_tid=?,shelves_handle=?,shelves_time=?,spu_validity=?,virtual_flg=?,logistics_template=?,updated_by=?,updated_at=? WHERE spu_id=? AND del_flg='0'
goblin_goods.update_by_edit_for_digital=UPDATE goblin_goods SET name=?,intro=?,cate_fid=?,cate_sid=?,cate_tid=?,updated_by=?,updated_at=? WHERE spu_id=? AND del_flg='0'
goblin_goods.update_by_shelves=UPDATE goblin_goods SET shelves_status=?,shelves_at=?,updated_by=?,updated_at=? WHERE spu_id=? AND store_id=? AND spu_appear='0'
......
......@@ -502,7 +502,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
orderVo.setCreatedAt(nftOrder.getCreatedAt());
// 待支付发送队列
queueUtils.sendMsgByRedisGoblinStock(orderVo.getOrderId(), nftOrder.getCreatedAt(), "NFT");
queueUtils.sendMsgByRedisGoblinStock(orderVo.getOrderId(), nftOrder.getCreatedAt(), "NFT",5);
// redis 订单详情
nftOrderUtils.setNftOrder(orderVo);
......
......@@ -584,7 +584,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
GoblinOrderAttrVo orderAttrVo = GoblinOrderAttrVo.getNew().copy(orderAttr);
//待支付发送队列
queueUtils.sendMsgByRedisGoblinStock(orderVo.getMasterOrderCode(), storeOrder.getCreatedAt(), "GOBLIN");
queueUtils.sendMsgByRedisGoblinStock(orderVo.getMasterOrderCode(), storeOrder.getCreatedAt(), "GOBLIN",5);
//redis 赋值
orderVo.setOrderAttrVo(orderAttrVo);
orderVo.setOrderSkuVoIds(goblinOrderSkuIdList);
......
......@@ -337,7 +337,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
dataUtils.changeBuyInfo(uid, entersVoList.get(i).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), 1);
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, 1, 1, memberType, isTrueName);
if (!res1.equals("")) {
dataUtils.changeBuyInfo(uid, entersVoList.get(i).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), -1);
for (int x = 0; x <= i; x++) {
dataUtils.changeBuyInfo(uid, entersVoList.get(x).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), -1);
}
orderUtils.changeSurplus(isPay, payOrderParam.getTicketId(), payOrderParam.getNumber());
orderUtils.backAdvanceCoupon(payOrderParam.getAdvanceCode(), uid);
return ResponseDto.failure(res1);//乱七八糟异常
......@@ -690,6 +692,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
sqls.add(SqlMapping.get("kylin_order_ticket.add"));
LinkedList<Object[]> sqlsDataA = ObjectUtil.cloneLinkedListObj();
sqlsDataA.add(orderTickets.getAddObject(CurrentUtil.getCliIpAddr(), vo.getArea(), vo.getProvince(), vo.getCity(), vo.getCounty()));
// 待支付发送队列
queueUtils.sendMsgByRedisGoblinStock(orderTickets.getOrderTicketsId(), orderTickets.getCreatedAt(), "TICKET", performanceData.getPayCountdownMinute());
// 生成vo
KylinOrderTicketVo orderTicketVo = KylinOrderTicketVo.getNew();
orderTicketVo.setOrderTicket(orderTickets);
......
......@@ -51,7 +51,7 @@ public class QueueUtils {
* @param createTime 订单创建时间
* @param masterOrderCode Goblin主订单号
*/
public void sendMsgByRedisGoblinStock(String masterOrderCode, LocalDateTime createTime, String type) {
public void sendMsgByRedisGoblinStock(String masterOrderCode, LocalDateTime createTime, String type, int getPayCountdownMinute) {
String streamKey;
int key = createTime.getMinute() % 10;
switch (key) {
......@@ -89,7 +89,7 @@ public class QueueUtils {
HashMap<String, String> map = ObjectUtil.cloneHashMapStringAndString();
map.put("id", masterOrderCode);
map.put("type", type);
map.put("time", createTime.toString());
map.put("time", createTime.plusMinutes(getPayCountdownMinute-5).toString());
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
}
......
......@@ -253,8 +253,8 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
return ResponseDto.failure(rsp.getMessage());
}
} catch (Exception e) {
// e.printStackTrace();
return ResponseDto.failure("发送投失败!");
log.debug("e:{}",e);
return ResponseDto.failure("发送投失败!");
}
}
......
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