feat:芬玩岛演出详情接口以及下订单接口

This commit is contained in:
xiang
2025-07-22 23:56:46 +08:00
parent 91a40bd516
commit 1e41fb847a
18 changed files with 480 additions and 5 deletions

View File

@@ -0,0 +1,5 @@
package com.xiang.xservice.fwd.constants;
public class CodeConstants {
public static final Integer SUCCESS = 10000;
}

View File

@@ -2,6 +2,8 @@ package com.xiang.xservice.fwd.constants;
public class UrlConstants {
public static final String token = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJjdCI6MTc1MjYzODAwNTUxNywic3ViIjoiTDIxMTQzMjU2NDEiLCJhdWQiOiJMSVZFTEFCIiwiaXNzIjoiVElDS0VUIiwibWlkIjoxNzU4ODA4NTcxMzgzNjcxNTUzLCJ0eXBlIjoiYXBwbGV0IiwiaWF0IjoxNzUyNjM4MDA1LCJkaWQiOiI2RTRDMDQ5RS00RkFBLTQ0NDMtQjI3NC1DNjRBMjZEMUFGNTkiLCJrZXkiOiJMSVZFTEFCIn0.iw1u3LyCYlxYCI1gMwTeuJlPdv-rQKCVlO2ySF_UrJ-lrEH6fm5lGo4wGalLn1qGkyqZaxuTx1K6X7Oy7sHgBA";
/**
* 芬玩岛的基础URL
*/
@@ -11,4 +13,14 @@ public class UrlConstants {
* 全部演出列表URL
*/
public final static String PROJECTS_URL = BASE_URL + "/appShow/app/homepage/projects";
/**
* 查询演出详情URL
*/
public final static String PROJECTS_INFO_URL = BASE_URL + "/performance/app/project/get_project_info";
/**
* 创建订单URL
*/
public final static String PROJECT_ORDER_CREATE_URL = BASE_URL + "/order/app/center/v3/create";
}

View File

@@ -0,0 +1,13 @@
package com.xiang.xservice.fwd.entity.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.checkerframework.checker.units.qual.N;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PrivilegeCode {
}

View File

@@ -0,0 +1,27 @@
package com.xiang.xservice.fwd.entity.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.checkerframework.checker.units.qual.A;
import java.math.BigDecimal;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProjectOrderCreateReq {
private Integer deliveryType;
private String contactName;
private String contactPhone;
private Integer payment;
private BigDecimal totalPrice;
private Long performId;
private String projectId;
private List<PrivilegeCode> privilegeCodeList;
private Integer audienceCount;
private List<Long> frequentIds;
private List<Long> seatPlanId;
private String blackBox;
}

View File

@@ -0,0 +1,18 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeductionRuleDTO {
private BigDecimal commonRatio;
private BigDecimal commonMinUnit;
private BigDecimal commonThreshold;
private List<String> specialRefundBeanRuleDtoList;
}

View File

@@ -0,0 +1,32 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Notice {
private String searchValue;
private String createBy;
private LocalDateTime createTime;
private String updateBy;
private LocalDateTime updateTime;
private String remark;
private List<Object> params;
private Long id;
private Long projectId;
private String name;
private Integer choose;
private String content;
private String tag;
private Integer type;
private Integer enhanced;
private String description;
private Integer sort;
private String delFlag;
}

View File

@@ -0,0 +1,67 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProjectInfoResp {
private Long projectId;
private String projectName;
private String nameDisplay;
private Integer status;
private String projectSource;
private Integer isHasSeat;
private Integer isChoiceSeat;
private String poster;
private BigDecimal highPrice;
private BigDecimal lowPrice;
private String projectPrice;
private String projectStartDate;
private String projectEndDate;
private String timeDisplay;
private String projectCity;
private String subClassifyName;
private List<ProjectService> projectServices;
private Integer showFlag;
private String preSaleTime;
private String saleStartTime;
private Long lastTime;
private Integer buttonStatus;
private String deliveryType;
private String details;
private VenueInfo venueInfo;
private List<Notice> ticketNotices;
private List<Notice> watchNotices;
private List<StandByNotice> standByNotices;
private String bkImg;
private Integer dialogFlag;
private String dialogTitle;
private String dialogContent;
private Integer isPrivilegeCode;
private Integer canBuyQuantity;
private String dialogButtonContent;
private List<String> projectNoticeList;
private String dialogChangeTime;
private Integer dialogAlwayShow;
private Integer serviceSettingSwitch;
private String calendarRemindersTitle;
private String calendarRemindersContent;
private String dyProductId;
private Boolean showCalendar;
private Integer dyShelfStatus;
private String venueUnderlayUrl;
private String changeDialogContent;
private String licenseInfo;
private Integer isPreview;
private Boolean existGrabTicketActivity;
private Boolean existMoreTicketActivity;
private DeductionRuleDTO deductionRuleDto;
private RefundBeanRuleDTO refundBeanRuleDto;
private Boolean likesShowFlag;
}

View File

@@ -0,0 +1,37 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProjectOrderCreateResp {
private String orderNo;
private String totalPrice;
private Integer cancelTimestamp;
private List<Ticket> tickets;
private Integer deliveryType;
private String expressFee;
private BigDecimal price;
private String projectName;
private String poster;
private String projectCity;
private String performStartTime;
private String performEndTime;
private Integer performType;
private String venueName;
private String repeatBeardIds;
private Long projectId;
private Long performId;
private Long orderId;
private DeductionRuleDTO deductionRuleDto;
private RefundBeanRuleDTO refundBeanRuleDto;
private Integer refundBeanNum;
private Integer deductBeanNum;
private Integer sourceType;
}

View File

@@ -0,0 +1,18 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProjectService {
private String title;
private Integer type;
private List<String> description;
private List<RefundRule> refundRuleList;
}

View File

@@ -0,0 +1,16 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RefundBeanRuleDTO {
private BigDecimal commonRatio;
private List<String> specialRefundBeanRuleDtoList;
}

View File

@@ -0,0 +1,18 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RefundRule {
private String performId;
private String performName;
private String performStartTime;
private List<RefundRuleInfo> refundRules;
private String refundRuleUndeterminedStr;
}

View File

@@ -0,0 +1,17 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RefundRuleInfo {
private String entrances;
private String sourceTypes;
private String startTime;
private String endTime;
private String procedureFeeRatio;
private String expressFeeFlag;
}

View File

@@ -0,0 +1,4 @@
package com.xiang.xservice.fwd.entity.resp.perform;
public class StandByNotice {
}

View File

@@ -0,0 +1,18 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Ticket {
private Integer seatPlanType;
private String seatPlanName;
private Integer seatPlanQuantity;
private BigDecimal seatPlanPrice;
private Long seatPlanId;
}

View File

@@ -0,0 +1,32 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TicketNotice {
private String searchValue;
private String createBy;
private LocalDateTime createTime;
private String updateBy;
private LocalDateTime updateTime;
private String remark;
private List<Object> params;
private Long id;
private Long projectId;
private String name;
private Integer choose;
private String content;
private String tag;
private Integer type;
private Integer enhanced;
private String description;
private Integer sort;
private String delFlag;
}

View File

@@ -0,0 +1,39 @@
package com.xiang.xservice.fwd.entity.resp.perform;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class VenueInfo {
private String searchValue;
private String createBy;
private LocalDateTime createTime;
private String updateBy;
private LocalDateTime updateTime;
private String remark;
private List<Object> params;
private Integer id;
private String name;
private String province;
private String city;
private String area;
private String address;
private String planeImage;
private String panoramicImage;
private String contactsName;
private String contactsPhone;
private Integer enable;
private String code;
private Integer delFlag;
private BigDecimal lng;
private BigDecimal lat;
private Integer externalId;
}

View File

@@ -1,10 +1,31 @@
package com.xiang.xservice.fwd.service;
import com.xiang.xservice.fwd.entity.req.ProjectOrderCreateReq;
import com.xiang.xservice.fwd.entity.resp.perform.ProjectInfoResp;
import com.xiang.xservice.fwd.entity.resp.perform.ProjectOrderCreateResp;
import com.xiang.xservice.fwd.entity.resp.perform.ProjectsResp;
public interface IPerformServiceHttp {
/**
* http请求查询全部演出列表
* @return ProjectsResp
*/
ProjectsResp getShowProjectsFromHttp();
/**
* http请求根据projectId查询演出详情
* @param projectId projectId
* @return ProjectInfoResp
*/
ProjectInfoResp getProjectInfoFromHttp(Long projectId);
/**
* http请求创建演出订单
* @param req 创建请求参数
* @return ProjectOrderCreateResp
*/
ProjectOrderCreateResp createProjectOrder(ProjectOrderCreateReq req);
}

View File

@@ -1,9 +1,14 @@
package com.xiang.xservice.fwd.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.xiang.xservice.basic.utils.HttpUtils;
import com.xiang.xservice.fwd.constants.CodeConstants;
import com.xiang.xservice.fwd.constants.UrlConstants;
import com.xiang.xservice.fwd.entity.req.ProjectOrderCreateReq;
import com.xiang.xservice.fwd.entity.resp.perform.ProjectInfoResp;
import com.xiang.xservice.fwd.entity.resp.perform.ProjectOrderCreateResp;
import com.xiang.xservice.fwd.entity.resp.perform.ProjectsResp;
import com.xiang.xservice.fwd.service.IPerformServiceHttp;
import lombok.RequiredArgsConstructor;
@@ -13,6 +18,7 @@ import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@Service
@Slf4j
@@ -23,17 +29,62 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
public ProjectsResp getShowProjectsFromHttp() {
int pageNum = 1;
int pageSize = 9999;
Map<String, String> headers = Maps.newHashMap();
Map<String, String> params = Maps.newHashMap();
params.put("projectModuleId", "7");
params.put("pageNum", String.valueOf(pageNum));
params.put("pageSize", String.valueOf(pageSize));
String resp = HttpUtils.doGet(UrlConstants.PROJECTS_URL, buildFWDHeaders(null), params);
if (StringUtils.isBlank(resp)) {
String respStr = HttpUtils.doGet(UrlConstants.PROJECTS_URL, buildFWDHeaders(null), params);
if (StringUtils.isBlank(respStr)) {
return new ProjectsResp();
}
JSON.parse(resp).var
JSONObject resp = JSON.parseObject(respStr);
Integer code = (Integer) resp.get("code");
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.SUCCESS)) {
ProjectsResp projectsResp = JSON.parseObject(resp.get("data").toString(), ProjectsResp.class);
if (Objects.isNull(projectsResp)) {
return new ProjectsResp();
}
return projectsResp;
}
return new ProjectsResp();
}
@Override
public ProjectInfoResp getProjectInfoFromHttp(Long projectId) {
Map<String, String> params = Maps.newHashMap();
params.put("project_id", String.valueOf(projectId));
String respStr = HttpUtils.doGet(UrlConstants.PROJECTS_INFO_URL, buildFWDHeaders(UrlConstants.token), params);
if (StringUtils.isBlank(respStr)) {
return new ProjectInfoResp();
}
JSONObject resp = JSON.parseObject(respStr);
Integer code = (Integer) resp.get("code");
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.SUCCESS)) {
ProjectInfoResp projectInfoResp = JSON.parseObject(resp.get("data").toString(), ProjectInfoResp.class);
if (Objects.isNull(projectInfoResp)) {
return new ProjectInfoResp();
}
return projectInfoResp;
}
return new ProjectInfoResp();
}
@Override
public ProjectOrderCreateResp createProjectOrder(ProjectOrderCreateReq req) {
String respStr = HttpUtils.doPost(UrlConstants.PROJECT_ORDER_CREATE_URL, buildFWDHeaders(UrlConstants.token), JSON.toJSONString(req));
if (StringUtils.isBlank(respStr)) {
return new ProjectOrderCreateResp();
}
JSONObject resp = JSON.parseObject(respStr);
Integer code = (Integer) resp.get("code");
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.SUCCESS)) {
ProjectOrderCreateResp projectOrderCreateResp = JSON.parseObject(resp.get("data").toString(), ProjectOrderCreateResp.class);
if (Objects.isNull(projectOrderCreateResp)) {
return new ProjectOrderCreateResp();
}
return projectOrderCreateResp;
}
return new ProjectOrderCreateResp();
}
@@ -41,12 +92,42 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
Map<String, String> headers = Maps.newHashMap();
headers.put("content-type", "application/json");
headers.put("Host", "api.livelab.com.cn");
headers.put("Connection", "keep-alive");
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("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("X-REQUEST-STARTTIME", String.valueOf(System.currentTimeMillis()));
if (StringUtils.isNotBlank(token)) {
headers.put("Authorization", token);
}
return headers;
}
public static void main(String[] args) {
Map<String, String> params = Maps.newHashMap();
Long projectId = 7484116591L;
params.put("project_id", String.valueOf(projectId));
Map<String, String> headers = Maps.newHashMap();
headers.put("content-type", "application/json");
headers.put("Host", "api.livelab.com.cn");
headers.put("Connection", "keep-alive");
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("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("X-REQUEST-STARTTIME", String.valueOf(System.currentTimeMillis()));
headers.put("Authorization", UrlConstants.token);
String respStr = HttpUtils.doGet(UrlConstants.PROJECTS_INFO_URL, headers, params);
if (StringUtils.isBlank(respStr)) {
log.info("1");
}
JSONObject resp = JSON.parseObject(respStr);
Integer code = (Integer) resp.get("code");
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.SUCCESS)) {
ProjectInfoResp projectInfoResp = JSON.parseObject(resp.get("data").toString(), ProjectInfoResp.class);
if (Objects.isNull(projectInfoResp)) {
log.info("2");
}
log.info("查询结果:{}", projectInfoResp);
}
}
}