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

Commit 003a09fa authored by 胡佳晨's avatar 胡佳晨

Merge branch 'dev' into test

parents f64dac58 8d7edb3b
package com.liquidnet.service.adam.constant; package com.liquidnet.service.adam.constant;
/**
* @author Li Chen
* @date 2020-11-04 14:02
*/
public class AdamRedisConst { public class AdamRedisConst {
public static final String ADAM = "adam:"; public static final String ADAM = "adam:";
......
...@@ -63,6 +63,9 @@ public class AdamMemberOrderVo implements Serializable, Cloneable { ...@@ -63,6 +63,9 @@ public class AdamMemberOrderVo implements Serializable, Cloneable {
@ApiModelProperty(position = 21, value = "兑换码") @ApiModelProperty(position = 21, value = "兑换码")
private String memberCode; private String memberCode;
@ApiModelProperty(position = 22, value = "会员须知")
private String memberNotes;
public static final AdamMemberOrderVo obj = new AdamMemberOrderVo(); public static final AdamMemberOrderVo obj = new AdamMemberOrderVo();
public static AdamMemberOrderVo getNew() { public static AdamMemberOrderVo getNew() {
......
...@@ -133,7 +133,7 @@ public class AdamMemberOrderController { ...@@ -133,7 +133,7 @@ public class AdamMemberOrderController {
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "code", value = "支付订单号", example = "20210616153954199964032352974P"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "code", value = "支付订单号", example = "20210616153954199964032352974P"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "type", value = "购买类型", example = "VIP"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "type", value = "购买类型", example = "VIP"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "price", value = "支付金额", example = "0.01"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "price", value = "支付金额", example = "0.01"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payment_type", value = "支付类型", example = "WAPALIPAY"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payment_type", value = "支付类型", example = "APPALIPAY"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payment_at", value = "支付时间", example = "2021-06-16 15:40:02"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payment_at", value = "支付时间", example = "2021-06-16 15:40:02"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payment_id", value = "支付ID", example = "2021061622001468121421203878"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payment_id", value = "支付ID", example = "2021061622001468121421203878"),
}) })
...@@ -147,15 +147,23 @@ public class AdamMemberOrderController { ...@@ -147,15 +147,23 @@ public class AdamMemberOrderController {
!parameter.getType().equals("VIP") || !parameter.getType().equals("VIP") ||
null == parameter.getOrderCode() || null == parameter.getOrderCode() ||
null == parameter.getCode()) { null == parameter.getCode()) {
log.error("会员支付回调参数有误:{}", JsonUtils.toJson(parameter)); log.error("###购买会员支付回调参数有误:{}", JsonUtils.toJson(parameter));
return "fail"; return "fail";
} }
if (!"dev".equals(env.getProperty("spring.profiles.active"))) {
ResponseDto<Integer> checkOrderResult = this.checkOrderResult(parameter.getOrderCode());
if (!checkOrderResult.isSuccess() || checkOrderResult.getData() != 1) {
log.warn("###购买会员支付回调支付中心验证不通过,无法处理[{}]", JsonUtils.toJson(parameter));
return "fail";
}
}
ResponseDto<Object> dto = adamMemberOrderService.paymentNotifyCallBack(parameter); ResponseDto<Object> dto = adamMemberOrderService.paymentNotifyCallBack(parameter);
if (!dto.isSuccess()) { if (!dto.isSuccess()) {
log.warn("###会员支付回调处理失败:handleDto:{},CallbackParam:{}", JsonUtils.toJson(dto), JsonUtils.toJson(parameter)); log.warn("###购买会员支付回调处理失败:dto:{},CallbackParam:{}", JsonUtils.toJson(dto), JsonUtils.toJson(parameter));
return "fail"; return "fail";
} }
...@@ -230,11 +238,14 @@ public class AdamMemberOrderController { ...@@ -230,11 +238,14 @@ public class AdamMemberOrderController {
@ApiOperation(value = "会员订单详情") @ApiOperation(value = "会员订单详情")
@GetMapping("info/{orderNo}") @GetMapping("info/{orderNo}")
public ResponseDto<AdamMemberOrderVo> getMemberOrderList(@NotBlank @PathVariable String orderNo) { public ResponseDto<AdamMemberOrderVo> getMemberOrderList(@NotBlank @PathVariable String orderNo) {
return ResponseDto.success(adamRdmService.getShotMemberOrderVoByOrderNo(orderNo)); AdamMemberOrderVo mOrderVo = adamRdmService.getShotMemberOrderVoByOrderNo(orderNo);
AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(mOrderVo.getMemberId());
mOrderVo.setMemberNotes(memberVo.getNotes());
return ResponseDto.success(mOrderVo);
} }
@ApiOperationSupport(order = 7) @ApiOperationSupport(order = 7)
@ApiOperation(value = "会员订单状态") @ApiOperation(value = "会员订单状态", notes = "响应参数[`data`:0-未支付|1-已支付]")
@GetMapping("check") @GetMapping("check")
public ResponseDto<Integer> checkOrderResult(@NotBlank @RequestParam String orderNo) { public ResponseDto<Integer> checkOrderResult(@NotBlank @RequestParam String orderNo) {
AdamMemberOrderVo memberOrderInfo = adamRdmService.getShotMemberOrderVoByOrderNo(orderNo); AdamMemberOrderVo memberOrderInfo = adamRdmService.getShotMemberOrderVoByOrderNo(orderNo);
......
...@@ -41,7 +41,7 @@ import java.util.*; ...@@ -41,7 +41,7 @@ import java.util.*;
@RequestMapping("user") @RequestMapping("user")
public class AdamUserController { public class AdamUserController {
@Autowired @Autowired
Environment environment; Environment env;
@Autowired @Autowired
IAdamRdmService adamRdmService; IAdamRdmService adamRdmService;
@Autowired @Autowired
...@@ -180,7 +180,7 @@ public class AdamUserController { ...@@ -180,7 +180,7 @@ public class AdamUserController {
@ApiOperation(value = "手机号修改", notes = "手机号修改会刷新TOKEN,刷新后的TOKEN对应响应参数中[`data`]") @ApiOperation(value = "手机号修改", notes = "手机号修改会刷新TOKEN,刷新后的TOKEN对应响应参数中[`data`]")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mobile", 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 = "String", name = "code", value = "验证码", example = "111111"),
}) })
@PostMapping(value = {"edit/mobile"}) @PostMapping(value = {"edit/mobile"})
public ResponseDto<String> editMobile(@Pattern(regexp = "\\d{11}", message = "手机号格式有误") public ResponseDto<String> editMobile(@Pattern(regexp = "\\d{11}", message = "手机号格式有误")
...@@ -301,8 +301,10 @@ public class AdamUserController { ...@@ -301,8 +301,10 @@ public class AdamUserController {
/* ---------------------------- Internal Method ---------------------------- */ /* ---------------------------- Internal Method ---------------------------- */
private static final String PHP_API_SMS_CODE_VALID = "/smsValidation";
private boolean checkSmsCode(String mobile, String code) { private boolean checkSmsCode(String mobile, String code) {
if (Arrays.asList("dev", "test").contains(environment.getProperty("spring.profiles.active"))) { if (Arrays.asList("dev", "test").contains(env.getProperty("spring.profiles.active"))) {
return "111111".equals(code); return "111111".equals(code);
} }
...@@ -311,11 +313,9 @@ public class AdamUserController { ...@@ -311,11 +313,9 @@ public class AdamUserController {
paramsMap.add("code", code); paramsMap.add("code", code);
LinkedMultiValueMap<String, String> headersMap = new LinkedMultiValueMap<>(); LinkedMultiValueMap<String, String> headersMap = new LinkedMultiValueMap<>();
headersMap.add("token", null); headersMap.add("token", null);
try { try {
// TODO: 2021/5/12 String respStr = HttpUtil.get(env.getProperty("liquidnet.url-service.url") + PHP_API_SMS_CODE_VALID, paramsMap, headersMap);
String respStr = HttpUtil.get("https://service.zhengzai.tv/smsValidation", paramsMap, headersMap); log.debug("###PHP.API.RESP:{}", respStr);
log.info("###PHP.API.RESP:{}", respStr);
Map respMap = JsonUtils.fromJson(respStr, Map.class); Map respMap = JsonUtils.fromJson(respStr, Map.class);
......
...@@ -101,13 +101,9 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -101,13 +101,9 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
@Autowired @Autowired
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;
@Autowired @Autowired
private FeignAdamBaseClient feignAdamBaseClient;
@Autowired
private TaobaoTicketUtils taobaoTicketUtils; private TaobaoTicketUtils taobaoTicketUtils;
@Autowired @Autowired
private KylinOrderTicketsMapper orderTicketsMapper; private KylinOrderTicketsMapper orderTicketsMapper;
@Autowired
private KylinOrderTicketEntitiesMapper entitiesMapper;
ArrayList<Integer> canBuyStatus = new ArrayList() {{ ArrayList<Integer> canBuyStatus = new ArrayList() {{
add(6); add(6);
...@@ -123,9 +119,9 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -123,9 +119,9 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
boolean isDownGeneral = false; boolean isDownGeneral = false;
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
String lock = "userId:" + uid; String lock = "userId:" + uid;
// if (!redisLockUtil.tryLock(lock, 2, 2)) { if (!redisLockUtil.tryLock(lock, 1, 5)) {
// return ResponseDto.failure("请求频繁");//参数错误 return ResponseDto.failure("请求频繁");//参数错误
// } }
try { try {
currentTime = System.currentTimeMillis(); currentTime = System.currentTimeMillis();
KylinPerformanceVo performanceData = dataUtils.getPerformanceVo(payOrderParam.getPerformanceId()); KylinPerformanceVo performanceData = dataUtils.getPerformanceVo(payOrderParam.getPerformanceId());
...@@ -149,20 +145,20 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -149,20 +145,20 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
} }
if (performanceData == null || ticketTimesData == null || ticketData == null) { if (performanceData == null || ticketTimesData == null || ticketData == null) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20004"));//参数错误 return ResponseDto.failure(ErrorMapping.get("20004"));//参数错误
} }
if (!ticketData.getTimeId().equals(payOrderParam.getTimeId()) || !ticketTimesData.getPerformanceId().equals(payOrderParam.getPerformanceId())) { if (!ticketData.getTimeId().equals(payOrderParam.getTimeId()) || !ticketTimesData.getPerformanceId().equals(payOrderParam.getPerformanceId())) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20004"));//参数错误 return ResponseDto.failure(ErrorMapping.get("20004"));//参数错误
} }
if (payOrderParam.getNumber() % ticketData.getCounts() != 0) { if (payOrderParam.getNumber() % ticketData.getCounts() != 0) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20007"));//数量错误 return ResponseDto.failure(ErrorMapping.get("20007"));//数量错误
} }
//判断代理 //判断代理
if (!checkAgent(payOrderParam.getAgentId(), ticketData)) { if (!checkAgent(payOrderParam.getAgentId(), ticketData)) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20008"));//无权购买 return ResponseDto.failure(ErrorMapping.get("20008"));//无权购买
} }
...@@ -173,15 +169,14 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -173,15 +169,14 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
String timeEnd = ticketData.getTimeEnd(); // 购票停售时间 String timeEnd = ticketData.getTimeEnd(); // 购票停售时间
String timeExpressEnd = ticketData.getTimeEndExpress(); // 快递停售时间 String timeExpressEnd = ticketData.getTimeEndExpress(); // 快递停售时间
currentTime = System.currentTimeMillis(); currentTime = System.currentTimeMillis();
boolean isMember = feignAdamBaseClient.isMember(uid).getData();//获取是否是会员 boolean isMember = orderUtils.isMember(uid);//feignAdamBaseClient.isMember(uid).getData();//获取是否是会员
currentTime = System.currentTimeMillis() - currentTime; currentTime = System.currentTimeMillis() - currentTime;
log.debug("fegin 会员 -> time:" + (currentTime) + "毫秒"); log.debug("fegin 会员 -> time:" + (currentTime) + "毫秒");
// boolean isMember = true;
int memberType; //会员状态 不需要判断会员 1判断会员逻辑 2会员专属 int memberType; //会员状态 不需要判断会员 1判断会员逻辑 2会员专属
if (ticketData.getIsExclusive() == 1) { if (ticketData.getIsExclusive() == 1) {
memberType = 2; memberType = 2;
if (!isMember) { if (!isMember) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限 return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限
} }
} else { } else {
...@@ -189,7 +184,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -189,7 +184,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 会员购买逻辑 // 会员购买逻辑
memberType = 1; memberType = 1;
if (!isMember) { if (!isMember) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限 return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限
} }
} else { } else {
...@@ -216,38 +211,38 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -216,38 +211,38 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
//通用判断时间 //通用判断时间
if (isMember) { if (isMember) {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == -1) { if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == -1) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20011"));//未开始 return ResponseDto.failure(ErrorMapping.get("20011"));//未开始
} }
} else { } else {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1) { if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20011"));//未开始 return ResponseDto.failure(ErrorMapping.get("20011"));//未开始
} }
} }
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeEnd) == 1) { if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeEnd) == 1) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20012"));//已结束 return ResponseDto.failure(ErrorMapping.get("20012"));//已结束
} }
//快递票判断 //快递票判断
if (payOrderParam.getIsExpress() != null) { if (payOrderParam.getIsExpress() != null) {
if (payOrderParam.getIsExpress() == 1 && DateUtil.compareStrDay(DateUtil.getNowTime(), timeExpressEnd) == 1) { if (payOrderParam.getIsExpress() == 1 && DateUtil.compareStrDay(DateUtil.getNowTime(), timeExpressEnd) == 1) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20013"));//快递票不卖 return ResponseDto.failure(ErrorMapping.get("20013"));//快递票不卖
} }
if (payOrderParam.getIsExpress() == 1 && payOrderParam.getAddressId().isEmpty()) { if (payOrderParam.getIsExpress() == 1 && payOrderParam.getAddressId().isEmpty()) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20014"));//快递票未填写收货地址 return ResponseDto.failure(ErrorMapping.get("20014"));//快递票未填写收货地址
} }
} }
//实名判断 //实名判断
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() <= 0) { if (isTrueName == 1 && payOrderParam.getEnterIdList().size() <= 0) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20015"));//需要实名 未实名 return ResponseDto.failure(ErrorMapping.get("20015"));//需要实名 未实名
} }
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() != payOrderParam.getNumber()) { if (isTrueName == 1 && payOrderParam.getEnterIdList().size() != payOrderParam.getNumber()) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20015"));//入场人数量错误 return ResponseDto.failure(ErrorMapping.get("20015"));//入场人数量错误
} }
...@@ -270,7 +265,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -270,7 +265,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber()); dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
currentTime = System.currentTimeMillis() - currentTime; currentTime = System.currentTimeMillis() - currentTime;
log.debug("redis 修改库存 售罄 -> time:" + (currentTime) + "毫秒"); log.debug("redis 修改库存 售罄 -> time:" + (currentTime) + "毫秒");
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20016"));//没抢到 return ResponseDto.failure(ErrorMapping.get("20016"));//没抢到
} else { } else {
isDownGeneral = true; isDownGeneral = true;
...@@ -280,12 +275,12 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -280,12 +275,12 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
if (isTrueName == 1) { if (isTrueName == 1) {
currentTime = System.currentTimeMillis(); currentTime = System.currentTimeMillis();
for (String enterId : payOrderParam.getEnterIdList()) { for (String enterId : payOrderParam.getEnterIdList()) {
AdamEntersVo adamEnters = feignAdamBaseClient.queryEnters(enterId, uid).getData(); AdamEntersVo adamEnters = orderUtils.getEnters(uid,enterId);//feignAdamBaseClient.queryEnters(enterId, uid).getData();
entersVoList.add(adamEnters); entersVoList.add(adamEnters);
if (isStudent == 1) { if (isStudent == 1) {
int age = IDCard.getAgeByIdCard(adamEnters.getIdCard()); int age = IDCard.getAgeByIdCard(adamEnters.getIdCard());
if (age > 25) { if (age > 25) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20017"));//年龄超了 return ResponseDto.failure(ErrorMapping.get("20017"));//年龄超了
} }
} }
...@@ -307,7 +302,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -307,7 +302,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, 1, 1, memberType, isTrueName); 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) + "毫秒"); log.debug("redis 判断库存 -> time:" + (currentTime) + "毫秒");
if (!res1.equals("")) { if (!res1.equals("")) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(res1);//乱七八糟异常 return ResponseDto.failure(res1);//乱七八糟异常
} }
} }
...@@ -319,14 +314,14 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -319,14 +314,14 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, payOrderParam.getNumber(), payOrderParam.getNumber(), memberType, isTrueName); 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; currentTime = System.currentTimeMillis() - currentTime;
if (!res1.equals("")) { if (!res1.equals("")) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(res1);//乱七八糟异常 return ResponseDto.failure(res1);//乱七八糟异常
} }
currentTime = System.currentTimeMillis() - currentTime; currentTime = System.currentTimeMillis() - currentTime;
} }
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData, entersVoList, isStudent, ticketTimesData, currentTime); return order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData, entersVoList, isStudent, ticketTimesData, currentTime);
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -338,7 +333,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -338,7 +333,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
} }
e.printStackTrace(); e.printStackTrace();
log.error("Kylin Order Pay Error = " + e.getMessage()); log.error("Kylin Order Pay Error = " + e.getMessage());
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20018"));//乱七八糟异常 return ResponseDto.failure(ErrorMapping.get("20018"));//乱七八糟异常
} }
} }
...@@ -357,8 +352,6 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -357,8 +352,6 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
Map token = CurrentUtil.getTokenClaims(); Map token = CurrentUtil.getTokenClaims();
orderTickets.setUserName(StringUtils.defaultString(((String) token.get("nickname")), "")); orderTickets.setUserName(StringUtils.defaultString(((String) token.get("nickname")), ""));
orderTickets.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), "")); orderTickets.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), ""));
// orderTickets.setUserName("");
// orderTickets.setUserMobile("");
orderTickets.setPerformanceTitle(performanceData.getTitle()); orderTickets.setPerformanceTitle(performanceData.getTitle());
orderTickets.setOrderCode(IDGenerator.ticketOrderCode(orderTicketId)); orderTickets.setOrderCode(IDGenerator.ticketOrderCode(orderTicketId));
orderTickets.setPayCode(""); orderTickets.setPayCode("");
...@@ -389,7 +382,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -389,7 +382,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTickets.setTimePay(null); orderTickets.setTimePay(null);
if (payOrderParam.getIsExpress() == 1) { if (payOrderParam.getIsExpress() == 1) {
currentTime = System.currentTimeMillis(); currentTime = System.currentTimeMillis();
AdamAddressesVo addressesVo = feignAdamBaseClient.queryAddresses(payOrderParam.getAddressId(), uid).getData(); AdamAddressesVo addressesVo = orderUtils.getAddress(uid,payOrderParam.getAddressId());//feignAdamBaseClient.queryAddresses(payOrderParam.getAddressId(), uid).getData();
orderTickets.setExpressContacts(addressesVo.getName()); orderTickets.setExpressContacts(addressesVo.getName());
orderTickets.setExpressAddress(addressesVo.getAddress()); orderTickets.setExpressAddress(addressesVo.getAddress());
orderTickets.setExpressPhone(addressesVo.getPhone()); orderTickets.setExpressPhone(addressesVo.getPhone());
...@@ -564,43 +557,43 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -564,43 +557,43 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
httpData.add("return_url", payOrderParam.getReturnUrl() + orderTicketId); httpData.add("return_url", payOrderParam.getReturnUrl() + orderTicketId);
} }
// currentTime = System.currentTimeMillis(); currentTime = System.currentTimeMillis();
// String returnData = HttpUtil.post(payUrl + payOrderParam.getDeviceFrom() + "/" + payOrderParam.getPayType(), httpData); String returnData = HttpUtil.post(payUrl + payOrderParam.getDeviceFrom() + "/" + payOrderParam.getPayType(), httpData);
// currentTime = System.currentTimeMillis() - currentTime; currentTime = System.currentTimeMillis() - currentTime;
// log.debug("调用 PHP 支付 -> time:" + (currentTime) + "毫秒"); log.debug("调用 PHP 支付 -> time:" + (currentTime) + "毫秒");
// PayResultVo payResultVo = JsonUtils.fromJson(returnData, PayResultVo.class); PayResultVo payResultVo = JsonUtils.fromJson(returnData, PayResultVo.class);
PayResultVo payResultVo = null; // PayResultVo payResultVo = null;
try { // try {
payResultVo = JsonUtils.fromJson("{\n" + // payResultVo = JsonUtils.fromJson("{\n" +
" \"code\": \"20210618130049218267704668657P\",\n" + // " \"code\": \"20210618130049218267704668657P\",\n" +
" \"order_code\": \"T7774750254320448484\",\n" + // " \"order_code\": \"T7774750254320448484\",\n" +
" \"status\": null,\n" + // " \"status\": null,\n" +
" \"order_id\": \"77747502543208448\",\n" + // " \"order_id\": \"77747502543208448\",\n" +
" \"showUrl\": \"http://devm.zhengzai.tv/#/ticket/purchase/detail?id=5936241&amp;type=purchase&amp;performance_id=5936241&amp;ticket_id=10981&amp;amount=1&amp;products_array=&amp;amount_array=&amp;express=077747502543208448\",\n" + // " \"showUrl\": \"http://devm.zhengzai.tv/#/ticket/purchase/detail?id=5936241&amp;type=purchase&amp;performance_id=5936241&amp;ticket_id=10981&amp;amount=1&amp;products_array=&amp;amount_array=&amp;express=077747502543208448\",\n" +
" \"returnUrl\": \"http://devm.zhengzai.tv/#/order/status?order_type=ticket&amp;order_id=77747502543208448\",\n" + // " \"returnUrl\": \"http://devm.zhengzai.tv/#/order/status?order_type=ticket&amp;order_id=77747502543208448\",\n" +
" \"price\": 0.01,\n" + // " \"price\": 0.01,\n" +
" \"pay_data\": {\n" + // " \"pay_data\": {\n" +
" \"packages\": null,\n" + // " \"packages\": null,\n" +
" \"partnerid\": null,\n" + // " \"partnerid\": null,\n" +
" \"prepayid\": null,\n" + // " \"prepayid\": null,\n" +
" \"sign\": null,\n" + // " \"sign\": null,\n" +
" \"mweb_url\": null,\n" + // " \"mweb_url\": null,\n" +
" \"paySign\": null,\n" + // " \"paySign\": null,\n" +
" \"signType\": null,\n" + // " \"signType\": null,\n" +
" \"redirect_url\": \"https://openapi.alipay.com/gateway.do?alipay_sdk=lokielse%2Fomnipay-alipay&app_id=2019082866535131&biz_content=%7B%22product_code%22%3A%22QUICK_WAP_PAY%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%2206%5Cu670830%5Cu65e5%5Cu5355%5Cu65e5%5Cu7968%5Cu80e1%5Cu5927%5Cu7f8e%5Cu5e76%5Cu53d1%5Cu4e0b%5Cu5355%22%2C%22body%22%3A%22%5Cu80e1%5Cu5927%5Cu7f8e%5Cu5e76%5Cu53d1%5Cu4e0b%5Cu5355%5Cu5355%5Cu65e5%5Cu796806%5Cu670830%5Cu65e5%22%2C%22out_trade_no%22%3A%2220210618130049218267704668657P%22%2C%22time_expire%22%3A%222021-06-18+13%3A06%22%2C%22quit_url%22%3A%22http%3A%5C%2F%5C%2Fdevm.zhengzai.tv%5C%2F%23%5C%2Fticket%5C%2Fpurchase%5C%2Fdetail%3Fid%3D5936241%26amp%3Btype%3Dpurchase%26amp%3Bperformance_id%3D5936241%26amp%3Bticket_id%3D10981%26amp%3Bamount%3D1%26amp%3Bproducts_array%3D%26amp%3Bamount_array%3D%26amp%3Bexpress%3D077747502543208448%22%7D&charset=utf-8&format=JSON&method=alipay.trade.wap.pay&notify_url=http%3A%2F%2Ftestpay.zhengzai.tv%2Fnotify%2Fwap%2Falipay%2F1&return_url=http%3A%2F%2Fdevm.zhengzai.tv%2F%23%2Forder%2Fstatus%3Forder_type%3Dticket%26amp%3Border_id%3D77747502543208448&sign_type=RSA2&timestamp=2021-06-18+13%3A00%3A49&version=1.0&sign=UaHmNdI1cXjjSkR4gwrnELSWXqb1Icg1uCOe0vEo5yHCqWOy4JZCZbjCR1xOHQKowSMBAr6U2XLtMAaNXr6mX%2B%2F5IiaChsD4IPoODNT7F4GckVcqP3GkdLZTro%2FGmBau6VoYw1uVpyutQTJsjEU1fQ%2F5KDAKLvg0XG%2F1D%2BXb%2Bv6LdLDvehCEPzy4W%2BCT0qPANU4ysgZkt9hP1ljH61%2FBWiDnfz%2BOdust4KBoJYQzNWO3XSwvc17OxdGHn8EBmYRJz6sr1nt0i2h4BGQtjrOHRB3dToVkxrlsHtbrOmiCdRFH6utSVA8UjeKtlEB%2FH%2BkQfVxPkpOicTjkokhDNK6svg%3D%3D\",\n" + // " \"redirect_url\": \"https://openapi.alipay.com/gateway.do?alipay_sdk=lokielse%2Fomnipay-alipay&app_id=2019082866535131&biz_content=%7B%22product_code%22%3A%22QUICK_WAP_PAY%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%2206%5Cu670830%5Cu65e5%5Cu5355%5Cu65e5%5Cu7968%5Cu80e1%5Cu5927%5Cu7f8e%5Cu5e76%5Cu53d1%5Cu4e0b%5Cu5355%22%2C%22body%22%3A%22%5Cu80e1%5Cu5927%5Cu7f8e%5Cu5e76%5Cu53d1%5Cu4e0b%5Cu5355%5Cu5355%5Cu65e5%5Cu796806%5Cu670830%5Cu65e5%22%2C%22out_trade_no%22%3A%2220210618130049218267704668657P%22%2C%22time_expire%22%3A%222021-06-18+13%3A06%22%2C%22quit_url%22%3A%22http%3A%5C%2F%5C%2Fdevm.zhengzai.tv%5C%2F%23%5C%2Fticket%5C%2Fpurchase%5C%2Fdetail%3Fid%3D5936241%26amp%3Btype%3Dpurchase%26amp%3Bperformance_id%3D5936241%26amp%3Bticket_id%3D10981%26amp%3Bamount%3D1%26amp%3Bproducts_array%3D%26amp%3Bamount_array%3D%26amp%3Bexpress%3D077747502543208448%22%7D&charset=utf-8&format=JSON&method=alipay.trade.wap.pay&notify_url=http%3A%2F%2Ftestpay.zhengzai.tv%2Fnotify%2Fwap%2Falipay%2F1&return_url=http%3A%2F%2Fdevm.zhengzai.tv%2F%23%2Forder%2Fstatus%3Forder_type%3Dticket%26amp%3Border_id%3D77747502543208448&sign_type=RSA2&timestamp=2021-06-18+13%3A00%3A49&version=1.0&sign=UaHmNdI1cXjjSkR4gwrnELSWXqb1Icg1uCOe0vEo5yHCqWOy4JZCZbjCR1xOHQKowSMBAr6U2XLtMAaNXr6mX%2B%2F5IiaChsD4IPoODNT7F4GckVcqP3GkdLZTro%2FGmBau6VoYw1uVpyutQTJsjEU1fQ%2F5KDAKLvg0XG%2F1D%2BXb%2Bv6LdLDvehCEPzy4W%2BCT0qPANU4ysgZkt9hP1ljH61%2FBWiDnfz%2BOdust4KBoJYQzNWO3XSwvc17OxdGHn8EBmYRJz6sr1nt0i2h4BGQtjrOHRB3dToVkxrlsHtbrOmiCdRFH6utSVA8UjeKtlEB%2FH%2BkQfVxPkpOicTjkokhDNK6svg%3D%3D\",\n" +
" \"order_str\": null,\n" + // " \"order_str\": null,\n" +
" \"appId\": null,\n" + // " \"appId\": null,\n" +
" \"appid\": null,\n" + // " \"appid\": null,\n" +
" \"nonceStr\": null,\n" + // " \"nonceStr\": null,\n" +
" \"noncestr\": null,\n" + // " \"noncestr\": null,\n" +
" \"timeStamp\": null,\n" + // " \"timeStamp\": null,\n" +
" \"timestamp\": null,\n" + // " \"timestamp\": null,\n" +
" \"package\": null\n" + // " \"package\": null\n" +
" }\n" + // " }\n" +
" }", PayResultVo.class); // " }", PayResultVo.class);
} catch (Exception e) { // } catch (Exception e) {
payResultVo = new PayResultVo(); // payResultVo = new PayResultVo();
} // }
payResultVo.setOrder_id(orderTicketId); payResultVo.setOrder_id(orderTicketId);
payResultVo.setPrice(orderTickets.getPriceActual()); payResultVo.setPrice(orderTickets.getPriceActual());
orderTickets.setPayCode(payResultVo.getCode()); orderTickets.setPayCode(payResultVo.getCode());
...@@ -757,31 +750,31 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -757,31 +750,31 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
//支付时间 //支付时间
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
String lock = "order_lock:" + syncOrderParam.getOrder_code(); String lock = "order_lock:" + syncOrderParam.getOrder_code();
// if (!redisLockUtil.tryLock(lock, 240, 240)) { if (!redisLockUtil.tryLock(lock, 1, 5)) {
// return "fail";//参数错误 return "fail";//参数错误
// } }
String timePay = DateUtil.Formatter.yyyyMMddHHmmss.format(now); String timePay = DateUtil.Formatter.yyyyMMddHHmmss.format(now);
KylinOrderTicketVo orderTicketData = mongoTemplate.findOne(Query.query(Criteria.where("orderCode").is(syncOrderParam.getOrder_code())), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName()); KylinOrderTicketVo orderTicketData = mongoTemplate.findOne(Query.query(Criteria.where("orderCode").is(syncOrderParam.getOrder_code())), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
if (orderTicketData == null) { if (orderTicketData == null) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return "fail";//订单不存在 return "fail";//订单不存在
} }
if (orderTicketData.getStatus() != KylinTableStatusConst.ORDER_STATUS0) { if (orderTicketData.getStatus() != KylinTableStatusConst.ORDER_STATUS0) {
if (orderTicketData.getPayCode().equals(syncOrderParam.getCode()) && orderTicketData.getStatus() == KylinTableStatusConst.ORDER_STATUS1) { if (orderTicketData.getPayCode().equals(syncOrderParam.getCode()) && orderTicketData.getStatus() == KylinTableStatusConst.ORDER_STATUS1) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return "success";//已经支付 return "success";//已经支付
} }
if (!orderTicketData.getPayCode().equals(syncOrderParam.getCode())) { if (!orderTicketData.getPayCode().equals(syncOrderParam.getCode())) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return "fail";//重复支付 return "fail";//重复支付
} }
} }
if (orderTicketData.getPriceActual().compareTo(syncOrderParam.getPrice()) != 0) { if (orderTicketData.getPriceActual().compareTo(syncOrderParam.getPrice()) != 0) {
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return "fail";//价格不符 return "fail";//价格不符
} }
...@@ -890,7 +883,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -890,7 +883,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 大麦回调 // 大麦回调
sycDamaiOrder(orderTickets.getOrderTicketsId()); sycDamaiOrder(orderTickets.getOrderTicketsId());
//redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return "success"; return "success";
} }
......
package com.liquidnet.service.kylin.utils; package com.liquidnet.service.kylin.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import io.swagger.models.auth.In; import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -8,12 +14,15 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -8,12 +14,15 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
@Component @Component
public class OrderUtils { public class OrderUtils {
@Autowired @Autowired
private DataUtils dataUtils; private DataUtils dataUtils;
@Autowired
private RedisUtil redisUtil;
public String judgeOrderLimit( public String judgeOrderLimit(
int type, int type,
...@@ -32,11 +41,11 @@ public class OrderUtils { ...@@ -32,11 +41,11 @@ public class OrderUtils {
) { ) {
Integer[] integers; Integer[] integers;
if (103 == type) { if (103 == type) {
integers=roadShowOrderLimit(userId,idCard,performanceId,ticketId,performanceBuyCount,ticketBuyCount,isTrueName); integers = roadShowOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
} else { } else {
integers=festivalOrderLimit(userId,idCard,performanceId,ticketId,performanceBuyCount,ticketBuyCount,isTrueName); integers = festivalOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
} }
return judgeMemberType(performanceLimitCount,performanceMemberLimitCount,ticketLimitCount,ticketMemberLimitCount,memberType,integers[0],integers[1]); return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, ticketLimitCount, ticketMemberLimitCount, memberType, integers[0], integers[1]);
} }
public Integer[] roadShowOrderLimit( public Integer[] roadShowOrderLimit(
...@@ -55,7 +64,7 @@ public class OrderUtils { ...@@ -55,7 +64,7 @@ public class OrderUtils {
performanceBuyCount += dataUtils.getUserPBuyCount(userId, performanceId); performanceBuyCount += dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId); ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
} }
return new Integer[]{performanceBuyCount,ticketBuyCount}; return new Integer[]{performanceBuyCount, ticketBuyCount};
} }
public Integer[] festivalOrderLimit( public Integer[] festivalOrderLimit(
...@@ -75,7 +84,7 @@ public class OrderUtils { ...@@ -75,7 +84,7 @@ public class OrderUtils {
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId); ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
} }
return new Integer[]{performanceBuyCount,ticketBuyCount}; return new Integer[]{performanceBuyCount, ticketBuyCount};
} }
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int ticketLimitCount, int ticketMemberLimitCount, int memberType, int performanceBuyCount, int ticketBuyCount) { public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int ticketLimitCount, int ticketMemberLimitCount, int memberType, int performanceBuyCount, int ticketBuyCount) {
...@@ -97,4 +106,21 @@ public class OrderUtils { ...@@ -97,4 +106,21 @@ public class OrderUtils {
return ""; return "";
} }
public boolean isMember(String uid) {
String rk = AdamRedisConst.INFO_USER_MEMBER.concat(uid);
AdamUserMemberVo vo = (AdamUserMemberVo) redisUtil.get(rk);
return null != vo && vo.isActive();
}
public AdamAddressesVo getAddress(String uid, String addressesId) {
String rk = AdamRedisConst.INFO_ADDRESSES.concat(uid);
List<AdamAddressesVo> vos = (List<AdamAddressesVo>) redisUtil.get(rk);
return vos.stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
}
public AdamEntersVo getEnters(String uid, String entersId) {
String rk = AdamRedisConst.INFO_ENTERS.concat(uid);
List<AdamEntersVo> vos = (List<AdamEntersVo>) redisUtil.get(rk);
return vos.stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
}
} }
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