perf:下单优化

This commit is contained in:
xiang
2025-07-30 23:04:08 +08:00
parent 03b540b2ae
commit f25e8638d2
3 changed files with 18 additions and 16 deletions

View File

@@ -31,7 +31,7 @@ public interface IPerformServiceHttp {
* @param req 创建请求参数 * @param req 创建请求参数
* @return ProjectOrderCreateResp * @return ProjectOrderCreateResp
*/ */
ProjectOrderCreateResp createProjectOrder(ProjectOrderCreateReq req); ProjectOrderCreateResp createProjectOrder(ProjectOrderCreateReq req, String token);
/** /**
* http请求查询演出票务信息 * http请求查询演出票务信息

View File

@@ -85,8 +85,8 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
} }
@Override @Override
public ProjectOrderCreateResp createProjectOrder(ProjectOrderCreateReq req) { public ProjectOrderCreateResp createProjectOrder(ProjectOrderCreateReq req, String token) {
String respStr = HttpUtils.doPost(UrlConstants.PROJECT_ORDER_CREATE_URL, buildFWDHeaders(UrlConstants.token), JsonUtils.toJsonString(req)); String respStr = HttpUtils.doPost(UrlConstants.PROJECT_ORDER_CREATE_URL, buildFWDHeaders(token), JsonUtils.toJsonString(req));
if (StringUtils.isBlank(respStr)) { if (StringUtils.isBlank(respStr)) {
return null; return null;
} }
@@ -100,14 +100,6 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
} }
return projectOrderCreateResp; return projectOrderCreateResp;
} }
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.LIMIT)) {
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
return null; return null;
} }
@@ -180,16 +172,19 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
private Map<String, String> buildFWDHeaders(String token) { private Map<String, String> buildFWDHeaders(String token) {
Map<String, String> headers = Maps.newHashMap(); Map<String, String> headers = Maps.newHashMap();
headers.put("content-type", "application/json");
headers.put("Host", "api.livelab.com.cn"); headers.put("Host", "api.livelab.com.cn");
headers.put("Connection", "keep-alive"); headers.put("Connection", "keep-alive");
headers.put("Content-Length", "316");
headers.put("platform-type", "%E7%BA%B7%E7%8E%A9%E5%B2%9B%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F"); headers.put("platform-type", "%E7%BA%B7%E7%8E%A9%E5%B2%9B%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F");
headers.put("content-type", "application/json");
headers.put("x-fwd-anonymousId", "ocXac5C25MY5O3UM_EfL0oTgm7Jw"); headers.put("x-fwd-anonymousId", "ocXac5C25MY5O3UM_EfL0oTgm7Jw");
headers.put("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.61(0x18003d2e) NetType/WIFI Language/zh_CN"); headers.put("platform-version", "3.12.0");
headers.put("X-REQUEST-STARTTIME", String.valueOf(System.currentTimeMillis()));
if (StringUtils.isNotBlank(token)) { if (StringUtils.isNotBlank(token)) {
headers.put("Authorization", token); headers.put("Authorization", token);
} }
headers.put("Accept-Encoding", "gzip,compress,br,deflate");
headers.put("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.61(0x18003d30) NetType/4G Language/zh_CN");
headers.put("Referer", "https://servicewechat.com/wx5a8f481d967649eb/114/page-frame.html");
return headers; return headers;
} }
} }

View File

@@ -6,11 +6,13 @@ import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService;
import com.xiang.xservice.fwd.entity.pojo.FPerformConfig; import com.xiang.xservice.fwd.entity.pojo.FPerformConfig;
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo; import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
import com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo; import com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo;
import com.xiang.xservice.fwd.entity.pojo.FUserConfig;
import com.xiang.xservice.fwd.entity.req.ProjectOrderCreateReq; import com.xiang.xservice.fwd.entity.req.ProjectOrderCreateReq;
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectOrderCreateResp; import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectOrderCreateResp;
import com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper; import com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper;
import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper; import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper;
import com.xiang.xservice.fwd.mapper.FwdPerformSeatInfoMapper; import com.xiang.xservice.fwd.mapper.FwdPerformSeatInfoMapper;
import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper;
import com.xiang.xservice.fwd.service.IPerformService; import com.xiang.xservice.fwd.service.IPerformService;
import com.xiang.xservice.fwd.service.IPerformServiceHttp; import com.xiang.xservice.fwd.service.IPerformServiceHttp;
import com.xiang.xservice.http.helper.HttpRequestHelper; import com.xiang.xservice.http.helper.HttpRequestHelper;
@@ -44,6 +46,7 @@ public class PerformServiceImpl implements IPerformService {
private final FwdPerformConfigMapper fwdPerformConfigMapper; private final FwdPerformConfigMapper fwdPerformConfigMapper;
private final IPerformServiceHttp performServiceHttp; private final IPerformServiceHttp performServiceHttp;
private final DingTalkService dingTalkService; private final DingTalkService dingTalkService;
private final FwdUserConfigMapper fwdUserConfigMapper;
@Value("${DingTalk.chatId}") @Value("${DingTalk.chatId}")
private String chatId; private String chatId;
private final HttpRequestHelper httpRequestHelper; private final HttpRequestHelper httpRequestHelper;
@@ -69,6 +72,10 @@ public class PerformServiceImpl implements IPerformService {
@Override @Override
public Boolean createProjectOrder(Long projectId, List<Long> frequentIds) throws Exception { public Boolean createProjectOrder(Long projectId, List<Long> frequentIds) throws Exception {
List<FUserConfig> availableUser = fwdUserConfigMapper.getAvailableUser();
if (CollectionUtils.isEmpty(availableUser)) {
return Boolean.FALSE;
}
FPerformProjectInfo performByProjectId = getPerformByProjectId(projectId); FPerformProjectInfo performByProjectId = getPerformByProjectId(projectId);
if (Objects.isNull(performByProjectId)) { if (Objects.isNull(performByProjectId)) {
log.info("该projectId:{}暂无演出信息", projectId); log.info("该projectId:{}暂无演出信息", projectId);
@@ -98,8 +105,8 @@ public class PerformServiceImpl implements IPerformService {
projectOrderCreateReq.setBlackBox("0"); projectOrderCreateReq.setBlackBox("0");
projectOrderCreateReq.setCombineTicketVos(null); projectOrderCreateReq.setCombineTicketVos(null);
projectOrderCreateReq.setOrdinaryTicketVos(null); projectOrderCreateReq.setOrdinaryTicketVos(null);
for (int i = 1; i <= 30; i++) { for (int i = 1; i <= 10; i++) {
ProjectOrderCreateResp projectOrder = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.createProjectOrder(projectOrderCreateReq), "create-project-order"); ProjectOrderCreateResp projectOrder = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.createProjectOrder(projectOrderCreateReq, availableUser.get(0).getToken()), "create-project-order");
if (Objects.nonNull(projectOrder)) { if (Objects.nonNull(projectOrder)) {
log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder)); log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder));
String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + "请在2分钟内完成付款"; String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + "请在2分钟内完成付款";