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

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

Merge branch 'dev' into test

parents d7f68029 32c78e5b
......@@ -3,6 +3,7 @@ package com.liquidnet.service.kylin.constant;
public class KylinRedisConst {
public static final String FIELDS = "kylin:fields:id";
public static final String PERFORMANCES = "kylin:performances:id:";
public static final String PERFORMANCES_TRUE_NAME = "kylin:performances_true_name:id:";
public static final String PERFORMANCES_LIST_CITYNAME = "kylin:performances:cityName:";
public static final String PERFORMANCES_LIST_ALL = "kylin:performances:cityName*";
public static final String PERFORMANCES_LIST_SYSTEM_RECOMMEND = "kylin:performances:systemRecommend";
......
......@@ -114,13 +114,14 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
map.put("auditStatus", auditStatus);
map.put("updatedAt", updatedAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
BasicDBObject objectPerformanceVo = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
Document doc = mongoTemplate.getCollection(PerformancePartnerVo.class.getSimpleName()).findOneAndUpdate(
mongoTemplate.getCollection(PerformancePartnerVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("performancesId").is(performancesId)).getQueryObject(),
objectPerformanceVo,
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
KylinPerformanceStatus sqlStatus = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
dataUtils.setPerformanceIsTrueName(performancesId,sqlStatus.getIsTrueName());
if (sqlStatus.getStatus() == 1) {
log.info(" PERFORMANCE 演出审核 第一次");
//修改
......@@ -163,6 +164,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
performanceVoUtils.performanceVoStatus(performancesId);
}
}
dataUtils.delPerformanceRedis(performancesId);
} else if (status == 4) {
log.info(" PERFORMANCE 演出审核 拒绝");
......
......@@ -82,6 +82,16 @@ public class DataUtils {
redisUtil.del(KylinRedisConst.PERFORMANCES + performanceId);
}
/**
* 演出是否实名
*
* @param performanceId
* @param isTrueName
*/
public void setPerformanceIsTrueName(String performanceId,int isTrueName) {
redisUtil.set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId,isTrueName);
}
/**
* 删除场次redis
*
......@@ -219,6 +229,22 @@ public class DataUtils {
return (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES + performanceId);
}
/**
* 演出是否实名
*
* @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;
}
}
/**
* @param performanceId 演出id
* @param ticketId 票种id
......@@ -227,8 +253,7 @@ public class DataUtils {
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
KylinPerformanceVo vo = getPerformanceVo(performanceId);
int isTrueName = vo.getIsTrueName();
int isTrueName = getPerformanceIsTrueName(performanceId);
// String useTime = "";
// HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
// for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
......
package com.liquidnet.commons.lang.util;
import com.liquidnet.commons.lang.util.spring.RestTemplateConfig;
import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
......@@ -14,7 +15,7 @@ public class HttpUtil {
private static RestTemplate restTemplate;
static {
restTemplate = new RestTemplate();
restTemplate = RestTemplateConfig.getRestTemplate();
}
/**
......
package com.liquidnet.commons.lang.util.spring;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.DefaultResponseErrorHandler;
import org.springframework.web.client.RestTemplate;
import java.util.concurrent.TimeUnit;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: RestTemplateConfig
* @Package com.liquidnet.commons.lang.util.spring
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/31 14:57
*/
public class RestTemplateConfig {
private static RestTemplate restTemplate;
static {
// 长链接保持时间长度20秒
PoolingHttpClientConnectionManager poolConnManager =
new PoolingHttpClientConnectionManager(20, TimeUnit.SECONDS);
// 设置最大链接数
poolConnManager.setMaxTotal(500*getMaxCpuCore() + 500 );
// 单路由的并发数
poolConnManager.setDefaultMaxPerRoute(500*getMaxCpuCore());
HttpClientBuilder httpClientBuilder = HttpClients.custom();
httpClientBuilder.setConnectionManager(poolConnManager);
// 重试次数3次,并开启
// httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(3,true));
HttpClient httpClient = httpClientBuilder.build();
// // 保持长链接配置,keep-alive
// httpClientBuilder.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy());
HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
// 链接超时配置 5秒
httpComponentsClientHttpRequestFactory.setConnectTimeout(5000);
// 连接读取超时配置
// httpComponentsClientHttpRequestFactory.setReadTimeout(10000);
// 连接池不够用时候等待时间长度设置,分词那边 500毫秒 ,我们这边设置成1秒
httpComponentsClientHttpRequestFactory.setConnectionRequestTimeout(5000);
// 缓冲请求数据,POST大量数据,可以设定为true 我们这边机器比较内存较大
httpComponentsClientHttpRequestFactory.setBufferRequestBody(true);
restTemplate = new RestTemplate();
restTemplate.setRequestFactory(httpComponentsClientHttpRequestFactory);
restTemplate.setErrorHandler(new DefaultResponseErrorHandler());
}
public static RestTemplate getRestTemplate(){
return restTemplate;
}
private static int getMaxCpuCore(){
int cpuCore = Runtime.getRuntime().availableProcessors();
return cpuCore;
}
}
......@@ -87,8 +87,7 @@ public class KylinUtils {
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
KylinPerformanceVo vo = getPerformanceVo(performanceId);
int isTrueName = vo.getIsTrueName();
int isTrueName = getPerformanceIsTrueName(performanceId);
// String useTime = "";
// HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
// for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
......@@ -141,6 +140,22 @@ public class KylinUtils {
return (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES + performanceId);
}
/**
* 演出是否实名
*
* @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 详情
*
......
......@@ -15,4 +15,4 @@ db.KylinTicketTimesPartnerVo.deleteMany({});
db.PerformanceMemberAuditParam.deleteMany({});
db.AdminUpushVo.deleteMany({});
-- db.KylinOrderTicketVo.deleteMany({createdAt:/^2021-04.*/})
......@@ -74,8 +74,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
@Autowired
private OrderUtils orderUtils;
@Autowired
private RedisLockUtil redisLockUtil;
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private MongoConverter mongoConverter;
......@@ -126,20 +124,16 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
}
if (performanceData == null || ticketTimesData == null || ticketData == null) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20004"));//参数错误
}
if (!ticketData.getTimeId().equals(payOrderParam.getTimeId()) || !ticketTimesData.getPerformanceId().equals(payOrderParam.getPerformanceId())) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20004"));//参数错误
}
if (payOrderParam.getNumber() % ticketData.getCounts() != 0) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20007"));//数量错误
}
//判断代理
if (!checkAgent(payOrderParam.getAgentId(), ticketData)) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20008"));//无权购买
}
......@@ -157,7 +151,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if (ticketData.getIsExclusive() == 1) {
memberType = 2;
if (!isMember) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限
}
} else {
......@@ -165,7 +158,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
// 会员购买逻辑
memberType = 1;
if (!isMember) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限
}
} else {
......@@ -182,50 +174,41 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
int isTrueName = ticketData.getIsTrueName();//是否演出实名
if (!canBuyStatus.contains(performanceData.getAppStatus())) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20010"));//当前不可购买
}
if (!canBuyStatus.contains(performanceData.getAppStatus())) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20010"));//当前不可购买
}
//通用判断时间
if (isMember) {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == -1) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20011"));//未开始
}
} else {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20011"));//未开始
}
}
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeEnd) == 1) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20012"));//已结束
}
//快递票判断
if (payOrderParam.getIsExpress() != null) {
if (payOrderParam.getIsExpress() == 1 && DateUtil.compareStrDay(DateUtil.getNowTime(), timeExpressEnd) == 1) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20013"));//快递票不卖
}
if (payOrderParam.getIsExpress() == 1 && payOrderParam.getAddressId().isEmpty()) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20014"));//快递票未填写收货地址
}
}
//实名判断
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() <= 0) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20015"));//需要实名 未实名
}
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() != payOrderParam.getNumber()) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20015"));//入场人数量错误
}
......@@ -243,7 +226,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
currentTime = System.currentTimeMillis() - currentTime;
log.debug("redis 修改库存 售罄 -> time:" + (currentTime) + "毫秒");
log.debug("TAG_REDIS 售罄 回滚库存1 -> count:" + payOrderParam.getNumber());
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20016"));//没抢到
} else {
isDownGeneral = true;
......@@ -260,7 +242,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if (age > 25) {
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
log.debug("TAG_REDIS 学生票 回滚库存2 -> count:" + payOrderParam.getNumber());
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20017"));//年龄超了
}
}
......@@ -278,7 +259,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if (!res1.equals("")) {
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
log.debug("TAG_REDIS 限购 回滚库存3 -> count:" + payOrderParam.getNumber());
redisLockUtil.unlock(lock);
return ResponseDto.failure(res1);//乱七八糟异常
}
}
......@@ -292,7 +272,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if (!res1.equals("")) {
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
log.debug("TAG_REDIS 限购 回滚库存3 -> count:" + payOrderParam.getNumber());
redisLockUtil.unlock(lock);
return ResponseDto.failure(res1);//乱七八糟异常
}
currentTime = System.currentTimeMillis() - currentTime;
......@@ -301,7 +280,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
ResponseDto<PayInnerResultVo> resultData = order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData, entersVoList, isStudent, ticketTimesData, currentTime);
isDownGeneral = false;
redisLockUtil.unlock(lock);
return resultData;
}
} catch (Exception e) {
......@@ -321,7 +299,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
}
}
}
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20018"));//乱七八糟异常
}
}
......@@ -733,27 +710,23 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
String timePay = syncOrderParam.getPaymentAt();
KylinOrderTicketVo orderTicketData = mongoTemplate.findOne(Query.query(Criteria.where("orderCode").is(syncOrderParam.getOrderCode())), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
if (orderTicketData == null) {
redisLockUtil.unlock(lock);
log.error("订单不存在");
return "fail";//订单不存在
}
if (orderTicketData.getStatus() != KylinTableStatusConst.ORDER_STATUS0) {
if (orderTicketData.getPayCode().equals(syncOrderParam.getCode()) && orderTicketData.getStatus() == KylinTableStatusConst.ORDER_STATUS1) {
redisLockUtil.unlock(lock);
log.error("已经支付");
return "success";//已经支付
}
if (!orderTicketData.getPayCode().equals(syncOrderParam.getCode())) {
redisLockUtil.unlock(lock);
log.error("重复支付");
return "fail";//重复支付
}
}
if (orderTicketData.getPriceActual().compareTo(syncOrderParam.getPrice()) != 0) {
redisLockUtil.unlock(lock);
log.error("价格不符");
return "fail";//价格不符
}
......@@ -883,7 +856,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
// 大麦回调
sycDamaiOrder(orderTickets.getOrderTicketsId());
}
redisLockUtil.unlock(lock);
log.info(UserPathDto.setData("订单支付成功回调", syncOrderParam, ""));
return "success";
} catch (Exception e) {
......
......@@ -102,8 +102,7 @@ public class DataUtils {
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
KylinPerformanceVo vo = getPerformanceVo(performanceId);
int isTrueName = vo.getIsTrueName();
int isTrueName = getPerformanceIsTrueName(performanceId);
// String useTime = "";
// HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
// for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
......@@ -204,6 +203,22 @@ public class DataUtils {
}
}
/**
* 演出是否实名
*
* @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;
}
}
public void delOrderRefundVoByOrderId(String orderId) {
redisUtil.del(KylinRedisConst.ORDER_REFUND_BY_ORDER_ID + orderId);
}
......
......@@ -250,8 +250,7 @@ public class DataUtils {
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
KylinPerformanceVo vo = getPerformanceVo(performanceId);
int isTrueName = vo.getIsTrueName();
int isTrueName = getPerformanceIsTrueName(performanceId);
// String useTime = "";
// HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
// for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
......@@ -354,6 +353,22 @@ public class DataUtils {
}
}
/**
* 演出是否实名
*
* @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;
}
}
public void delOrderRefundVo(String orderRefundsId){
redisUtil.del(KylinRedisConst.ORDER_REFUND + orderRefundsId);
......
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