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

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

非法途径 申请退款

下单接口增加锁
parent 7be6f7a1
......@@ -1148,14 +1148,13 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
String uid = CurrentUtil.getCurrentUid();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
List<KylinOrderRefundsVo> kylinOrderRefundsVoBaseList = dataUtils.getOrderRefundVoByOrderId(orderTicketVo.getOrderTicketsId());
String ticketId = orderTicketVo.getTicketId();
if (!orderTicketVo.getUserId().equals(uid)) {
return "无权查看";
}
if (!orderTicketVo.getPayStatus().equals(1)) {
return "暂不支持退款";
}
}or
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
KylinTicketVo ticketVo = null;
......
......@@ -109,12 +109,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
Long currentTime;
boolean isDownGeneral = false;
List<AdamEntersVo> entersVoList = new ArrayList<>();
Long startTime = System.currentTimeMillis();
String uid = CurrentUtil.getCurrentUid();
String lock = "userId:" + uid;
// if (!redisLockUtil.tryLock(lock, 1, 5)) {
// return ResponseDto.failure(ErrorMapping.get("20023"));//参数错误
// }
if (!redisLockUtil.tryLock(lock, 1, 5)) {
return ResponseDto.failure(ErrorMapping.get("20023"));//参数错误
}
try {
currentTime = System.currentTimeMillis();
KylinPerformanceVo performanceData = dataUtils.getPerformanceVo(payOrderParam.getPerformanceId());
......@@ -138,20 +137,20 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
if (performanceData == null || ticketTimesData == null || ticketData == null) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20004"));//参数错误
}
if (!ticketData.getTimeId().equals(payOrderParam.getTimeId()) || !ticketTimesData.getPerformanceId().equals(payOrderParam.getPerformanceId())) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20004"));//参数错误
}
if (payOrderParam.getNumber() % ticketData.getCounts() != 0) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20007"));//数量错误
}
//判断代理
if (!checkAgent(payOrderParam.getAgentId(), ticketData)) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20008"));//无权购买
}
......@@ -169,7 +168,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
if (ticketData.getIsExclusive() == 1) {
memberType = 2;
if (!isMember) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限
}
} else {
......@@ -177,7 +176,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
// 会员购买逻辑
memberType = 1;
if (!isMember) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限
}
} else {
......@@ -199,45 +198,45 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
if (!canBuyStatus.contains(performanceData.getAppStatus())) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20010"));//当前不可购买
}
//通用判断时间
if (isMember) {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == -1) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20011"));//未开始
}
} else {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20011"));//未开始
}
}
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeEnd) == 1) {
// redisLockUtil.unlock(lock);
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);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20013"));//快递票不卖
}
if (payOrderParam.getIsExpress() == 1 && payOrderParam.getAddressId().isEmpty()) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20014"));//快递票未填写收货地址
}
}
//实名判断
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() <= 0) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20015"));//需要实名 未实名
}
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() != payOrderParam.getNumber()) {
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20015"));//入场人数量错误
}
......@@ -255,7 +254,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
currentTime = System.currentTimeMillis() - currentTime;
log.debug("redis 修改库存 售罄 -> time:" + (currentTime) + "毫秒");
log.debug("TAG_REDIS 售罄 回滚库存1 -> count:" + payOrderParam.getNumber());
// redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20016"));//没抢到
} else {
isDownGeneral = true;
......@@ -270,9 +269,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
if (isStudent == 1) {
int age = IDCard.getAgeByIdCard(adamEnters.getIdCard());
if (age > 25) {
// redisLockUtil.unlock(lock);
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
log.debug("TAG_REDIS 学生票 回滚库存2 -> count:" + payOrderParam.getNumber());
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20017"));//年龄超了
}
}
......@@ -288,9 +287,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, 1, 1, memberType, isTrueName);
log.debug("redis 判断库存 -> time:" + (currentTime) + "毫秒");
if (!res1.equals("")) {
// redisLockUtil.unlock(lock);
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
log.debug("TAG_REDIS 限购 回滚库存3 -> count:" + payOrderParam.getNumber());
redisLockUtil.unlock(lock);
return ResponseDto.failure(res1);//乱七八糟异常
}
}
......@@ -302,9 +301,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, payOrderParam.getNumber(), payOrderParam.getNumber(), memberType, isTrueName);
currentTime = System.currentTimeMillis() - currentTime;
if (!res1.equals("")) {
// redisLockUtil.unlock(lock);
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;
......@@ -312,9 +311,8 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
ResponseDto<PayResultVo> resultData = order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData, entersVoList, isStudent, ticketTimesData, currentTime);
// redisLockUtil.unlock(lock);
isDownGeneral = false;
log.debug("总耗时 ->" + (System.currentTimeMillis() - startTime) + "毫秒");
redisLockUtil.unlock(lock);
return resultData;
}
} catch (Exception e) {
......@@ -335,6 +333,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
e.printStackTrace();
log.error("Kylin Order Pay Error = " + e.getMessage());
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20018"));//乱七八糟异常
}
}
......
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