|
|
@@ -51,6 +51,7 @@ import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.StopWatch;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
@@ -112,14 +113,15 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
|
|
|
UserCountModel userCountModel = resultContent.getContent();
|
|
|
|
|
|
// 验证学校信息
|
|
|
-
|
|
|
+ String mid = UnionPaymentConfig.mid;
|
|
|
// 商户签约协议号 商户生成。在该商户号下唯一
|
|
|
String contractNo = collectionIdService.getNextNo();
|
|
|
- UnionUserOpenInfo unionUserOpenInfo = unionUserOpenInfoDao.findTopByUserId(userId);
|
|
|
+ UnionUserOpenInfo unionUserOpenInfo = unionUserOpenInfoDao.findTopByUserIdAndMid(userId, mid);
|
|
|
if (ObjectUtils.isEmpty(unionUserOpenInfo)) {
|
|
|
unionUserOpenInfo = new UnionUserOpenInfo();
|
|
|
unionUserOpenInfo.setShopOid(shopOid);
|
|
|
unionUserOpenInfo.setUserId(userId);
|
|
|
+ unionUserOpenInfo.setMid(mid);
|
|
|
unionUserOpenInfo.setUnionUserOpenType(UnionUserOpenType.User);
|
|
|
unionUserOpenInfo.setContractState(ContractState.UNSIGNED);
|
|
|
}
|
|
|
@@ -247,11 +249,26 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
|
|
|
public ResultContent createAndPayOrder(CreateOrderParam param) {
|
|
|
// 查询是否签约
|
|
|
String userId = param.getUserId();
|
|
|
+
|
|
|
+ StopWatch watch = new StopWatch();
|
|
|
+ watch.start("查询用户信息");
|
|
|
+ // 查询用户在学校的信息
|
|
|
+ OrgUserDetailParam orgUserDetailParam = new OrgUserDetailParam();
|
|
|
+ orgUserDetailParam.setOid(param.getSchoolId());
|
|
|
+ orgUserDetailParam.setUserId(userId);
|
|
|
+ ResultContent<OrganizationUserModel> orgUserDetail = organizationFeignService.getOrgUserDetail(orgUserDetailParam);
|
|
|
+ if (orgUserDetail.isFailed()) {
|
|
|
+ return ResultContent.buildFail("获取用户信息失败");
|
|
|
+ }
|
|
|
+ OrganizationUserModel userModel = orgUserDetail.getContent();
|
|
|
+ watch.stop();
|
|
|
+ watch.start("2");
|
|
|
+
|
|
|
String shopId = param.getShopId();
|
|
|
// 创建订单
|
|
|
String outTradeNo = param.getOutTradeNo();
|
|
|
BigDecimal total = param.getTotal();
|
|
|
-
|
|
|
+ String mid = UnionPaymentConfig.mid;
|
|
|
RechargeRecord rechargeRecord = rechargeRecordDao.findByOutTradeNo(outTradeNo);
|
|
|
if (rechargeRecord == null) {
|
|
|
// 创建充值订单
|
|
|
@@ -285,31 +302,51 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
|
|
|
// 订单过期时间
|
|
|
rechargeRecord.setExpireTime(createTIme + TimeConfig.rechargeExpireTime);
|
|
|
|
|
|
- // 查询用户在学校的信息
|
|
|
- OrgUserDetailParam orgUserDetailParam = new OrgUserDetailParam();
|
|
|
- orgUserDetailParam.setOid(param.getSchoolId());
|
|
|
- orgUserDetailParam.setUserId(userId);
|
|
|
- ResultContent<OrganizationUserModel> orgUserDetail = organizationFeignService.getOrgUserDetail(orgUserDetailParam);
|
|
|
- if (orgUserDetail.isFailed()) {
|
|
|
- return ResultContent.buildFail("获取用户信息失败");
|
|
|
- }
|
|
|
- rechargeRecord.setUserInfo(orgUserDetail.getContent());
|
|
|
+ rechargeRecord.setUserInfo(userModel);
|
|
|
rechargeRecord.setAttach(param.getAttach());
|
|
|
+ }
|
|
|
+ watch.stop();
|
|
|
+ watch.start("3");
|
|
|
+ // 查询无感支付签约信息
|
|
|
+ UnionUserOpenInfo unionUserOpenInfo = unionUserOpenInfoDao.findTopByUserIdAndMid(userId, mid);
|
|
|
+ if (ObjectUtils.isEmpty(unionUserOpenInfo)) {
|
|
|
+ rechargeRecord.setRechargeState(OrderState.CLOSED);
|
|
|
rechargeRecordDao.save(rechargeRecord);
|
|
|
+ log.info("{}", watch.prettyPrint());
|
|
|
+ return ResultContent.buildFail(String.format("%s用户未签约", userModel.getRealName()));
|
|
|
}
|
|
|
|
|
|
- SenselessPayParam senselessPayParam = new SenselessPayParam();
|
|
|
- senselessPayParam.setRequestTimestamp(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
|
|
|
-
|
|
|
+ SenselessPayParam requestParam = new SenselessPayParam();
|
|
|
+ requestParam.setRequestTimestamp(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
|
|
|
+ if (ObjectUtils.isNotEmpty(unionUserOpenInfo)) {
|
|
|
+ requestParam.setMid(unionUserOpenInfo.getMid());
|
|
|
+ requestParam.setTid(payConfig.getTid());
|
|
|
+ requestParam.setContractId(unionUserOpenInfo.getContractId());
|
|
|
+ requestParam.setPlanId(unionUserOpenInfo.getPlanId());
|
|
|
+ }
|
|
|
+ requestParam.setMerOrderId(outTradeNo);
|
|
|
+ requestParam.setMsgId(CommonUtil.UUID());
|
|
|
+ requestParam.setOrderDesc(param.getDescription());
|
|
|
+ requestParam.setTotalAmount(param.getTotal().intValue());
|
|
|
+ requestParam.setSrcReserve(outTradeNo);
|
|
|
+ requestParam.setNotifyUrl(payConfig.getPayNotifyUrl() + "/" + outTradeNo);
|
|
|
+
|
|
|
+ rechargeRecord.setGoodsInfo(param.getGoodsInfo());
|
|
|
+ rechargeRecord.setRequestParam(requestParam);
|
|
|
String url = payApiConfig.getUrl(UnionFrictionlessPayApiConfig.senselessPay);
|
|
|
- SuperResponseModel requestAPI = unionRequestService.requestUnionAPI(url, senselessPayParam, SenselessPayResponse.class);
|
|
|
+ SuperResponseModel requestAPI = unionRequestService.requestUnionAPI(url, requestParam, SenselessPayResponse.class);
|
|
|
+ rechargeRecord.setResponseParam(requestAPI);
|
|
|
if (requestAPI.isFailed()) {
|
|
|
+ rechargeRecord.setRechargeState(OrderState.CLOSED);
|
|
|
+ rechargeRecord.setOrderMsg("支付服务调用失败");
|
|
|
+ rechargeRecordDao.save(rechargeRecord);
|
|
|
return ResultContent.buildFail(requestAPI.getMsg());
|
|
|
}
|
|
|
SenselessPayResponse response = (SenselessPayResponse) requestAPI;
|
|
|
log.info("state: {}", response.isSuccess());
|
|
|
-
|
|
|
- return ResultContent.buildSuccess();
|
|
|
+ rechargeRecord.setRechargeState(OrderState.PAY_IN_PROGRESS);
|
|
|
+ rechargeRecordDao.save(rechargeRecord);
|
|
|
+ return ResultContent.buildSuccess(rechargeRecord);
|
|
|
}
|
|
|
|
|
|
/**
|