feat:保存配置信息

This commit is contained in:
xiang
2025-07-26 23:33:55 +08:00
parent f0104bf168
commit da2bebc80d
18 changed files with 366 additions and 83 deletions

57
pom.xml
View File

@@ -30,68 +30,13 @@
<dependency> <dependency>
<groupId>com.xiang</groupId> <groupId>com.xiang</groupId>
<artifactId>xservice-common</artifactId> <artifactId>xservice-common</artifactId>
<version>1.0-snapshot</version> <version>1.0.1-snapshot</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.xiang</groupId> <groupId>com.xiang</groupId>
<artifactId>xservice-third-part</artifactId> <artifactId>xservice-third-part</artifactId>
<version>1.0-snapshot</version> <version>1.0-snapshot</version>
</dependency> </dependency>
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.51</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.1-android</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.15.0</version>
</dependency>-->
</dependencies> </dependencies>
<build> <build>

View File

@@ -32,4 +32,9 @@ public class UrlConstants {
* 获取演出座位信息 * 获取演出座位信息
*/ */
public final static String PROJECT_SEAT_STATUS_URL = BASE_URL + "/performance/app/project/seatPlanStatus"; public final static String PROJECT_SEAT_STATUS_URL = BASE_URL + "/performance/app/project/seatPlanStatus";
/**
* 查询观影人列表
*/
public final static String PROJECT_AUDIENCE_MEMBER_INFO = BASE_URL + "/member/member/bearer/app/list";
} }

View File

@@ -0,0 +1,19 @@
package com.xiang.xservice.fwd.entity.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FAudienceConfig {
private Long id;
private Integer status;
private Long frequentId;
private String frequentName;
private String frequentNo;
private String frequentPhone;
private Integer delFlag;
private Long userId;
}

View File

@@ -0,0 +1,17 @@
package com.xiang.xservice.fwd.entity.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FPerformConfig {
private Long id;
private Long projectId;
private LocalDateTime time;
private Integer delFlag;
}

View File

@@ -0,0 +1,15 @@
package com.xiang.xservice.fwd.entity.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FUserConfig {
private Long id;
private String name;
private String token;
private Integer status;
}

View File

@@ -0,0 +1,18 @@
package com.xiang.xservice.fwd.entity.resp.http.audience;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AudienceMemberInfo {
private Long frequentContactsId;
private String name;
private String idTypeCode;
private String idType;
private String idTypeDesc;
private String idCard;
private String phone;
}

View File

@@ -0,0 +1,17 @@
package com.xiang.xservice.fwd.mapper;
import com.xiang.xservice.fwd.entity.pojo.FAudienceConfig;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface FwdAudienceConfigMapper {
List<FAudienceConfig> getAudienceByUserId(Long userId);
int batchSave(List<FAudienceConfig> list);
int delByUserId(Long userId);
}

View File

@@ -0,0 +1,18 @@
package com.xiang.xservice.fwd.mapper;
import com.xiang.xservice.fwd.entity.pojo.FPerformConfig;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Mapper
public interface FwdPerformConfigMapper {
List<FPerformConfig> getAvailablePerform();
int delPerforms();
int insertPerforms(List<FPerformConfig> list);
}

View File

@@ -0,0 +1,18 @@
package com.xiang.xservice.fwd.mapper;
import com.xiang.xservice.fwd.entity.pojo.FUserConfig;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Mapper
public interface FwdUserConfigMapper {
/**
* 查询可用配置用户
* @return
*/
List<FUserConfig> getAvailableUser();
}

View File

@@ -1,9 +1,12 @@
package com.xiang.xservice.fwd.schedule; package com.xiang.xservice.fwd.schedule;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.google.common.collect.Lists;
import com.xiang.xservice.basic.utils.DateUtils; import com.xiang.xservice.basic.utils.DateUtils;
import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService; import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService;
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.mapper.FwdPerformConfigMapper;
import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper; import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper;
import com.xiang.xservice.fwd.service.IPerformService; import com.xiang.xservice.fwd.service.IPerformService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -17,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @Author: xiang * @Author: xiang
@@ -29,6 +33,7 @@ import java.util.List;
public class FwdImportantMsgJob { public class FwdImportantMsgJob {
private final FwdPerformProjectInfoMapper performProjectInfoMapper; private final FwdPerformProjectInfoMapper performProjectInfoMapper;
private final FwdPerformConfigMapper performConfigMapper;
private final IPerformService performService; private final IPerformService performService;
private final DingTalkService dingTalkService; private final DingTalkService dingTalkService;
@@ -40,6 +45,9 @@ public class FwdImportantMsgJob {
public void preSaleReminderJob() throws Exception { public void preSaleReminderJob() throws Exception {
log.info("【芬玩岛】演唱会预售定时任务开始time:{}", System.currentTimeMillis()); log.info("【芬玩岛】演唱会预售定时任务开始time:{}", System.currentTimeMillis());
// 删除配置表里面今日配置的项目信息
performConfigMapper.delPerforms();
// 查询所有即将今天预售的演唱会信息 // 查询所有即将今天预售的演唱会信息
LocalDate now = LocalDate.now(); LocalDate now = LocalDate.now();
List<FPerformProjectInfo> saleTodayData = performProjectInfoMapper.getPreSaleTodayData(now.atTime(0, 0, 0), now.atTime(23, 59, 59)); List<FPerformProjectInfo> saleTodayData = performProjectInfoMapper.getPreSaleTodayData(now.atTime(0, 0, 0), now.atTime(23, 59, 59));
@@ -48,6 +56,17 @@ public class FwdImportantMsgJob {
return; return;
} }
log.info("【芬玩岛】 即将:{}预售的演唱会门票信息:{}", now, JSONObject.toJSONString(saleTodayData)); log.info("【芬玩岛】 即将:{}预售的演唱会门票信息:{}", now, JSONObject.toJSONString(saleTodayData));
List<FPerformConfig> addList = saleTodayData.stream().map(data -> {
FPerformConfig performConfig = new FPerformConfig();
performConfig.setTime(data.getPreSaleTime());
performConfig.setProjectId(data.getProjectId());
performConfig.setDelFlag(0);
return performConfig;
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(addList)) {
performConfigMapper.insertPerforms(addList);
}
StringBuilder msg = new StringBuilder("今日" + now + "演唱会门票预售信息:\n"); StringBuilder msg = new StringBuilder("今日" + now + "演唱会门票预售信息:\n");
for (FPerformProjectInfo data : saleTodayData) { for (FPerformProjectInfo data : saleTodayData) {
msg.append("演唱会名称:").append(data.getProjectName()).append("预售时间:").append(DateUtils.getDateTimeStr(data.getPreSaleTime())).append("\n"); msg.append("演唱会名称:").append(data.getProjectName()).append("预售时间:").append(DateUtils.getDateTimeStr(data.getPreSaleTime())).append("\n");
@@ -58,6 +77,7 @@ public class FwdImportantMsgJob {
} }
@Scheduled(cron = "0 0 12 * * ? ") @Scheduled(cron = "0 0 12 * * ? ")
@PostMapping("/orderCreateJob")
public void orderCreateJob() throws Exception { public void orderCreateJob() throws Exception {
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
performService.createProjectOrder(1295746988L); performService.createProjectOrder(1295746988L);

View File

@@ -5,8 +5,11 @@ import com.google.common.collect.Maps;
import com.xiang.xservice.basic.common.req.BaseRequest; import com.xiang.xservice.basic.common.req.BaseRequest;
import com.xiang.xservice.basic.config.MyThreadFactory; import com.xiang.xservice.basic.config.MyThreadFactory;
import com.xiang.xservice.basic.utils.DateUtils; import com.xiang.xservice.basic.utils.DateUtils;
import com.xiang.xservice.fwd.entity.pojo.FAudienceConfig;
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.resp.http.audience.AudienceMemberInfo;
import com.xiang.xservice.fwd.entity.resp.http.perform.Perform; import com.xiang.xservice.fwd.entity.resp.http.perform.Perform;
import com.xiang.xservice.fwd.entity.resp.http.perform.PerformDetail; import com.xiang.xservice.fwd.entity.resp.http.perform.PerformDetail;
import com.xiang.xservice.fwd.entity.resp.http.perform.PerformInfo; import com.xiang.xservice.fwd.entity.resp.http.perform.PerformInfo;
@@ -15,8 +18,10 @@ import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectList;
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectsResp; import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectsResp;
import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlan; import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlan;
import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlanStatus; import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlanStatus;
import com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper;
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.IPerformServiceHttp; import com.xiang.xservice.fwd.service.IPerformServiceHttp;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -53,6 +58,8 @@ public class PullDataFromFWDJob {
private final IPerformServiceHttp performServiceHttp; private final IPerformServiceHttp performServiceHttp;
private final FwdPerformProjectInfoMapper performProjectInfoMapper; private final FwdPerformProjectInfoMapper performProjectInfoMapper;
private final FwdPerformSeatInfoMapper performSeatInfoMapper; private final FwdPerformSeatInfoMapper performSeatInfoMapper;
private final FwdUserConfigMapper userConfigMapper;
private final FwdAudienceConfigMapper audienceConfigMapper;
private final ExecutorService es = private final ExecutorService es =
new ThreadPoolExecutor( new ThreadPoolExecutor(
@@ -268,6 +275,32 @@ public class PullDataFromFWDJob {
} }
} }
@Scheduled(cron = "0 0 0 1 1/1 ? ")
public void pullAudienceMemberInfo() {
List<FUserConfig> availableUser = userConfigMapper.getAvailableUser();
if (CollectionUtils.isEmpty(availableUser)) {
return;
}
availableUser.forEach(user -> {
List<AudienceMemberInfo> audienceMemberInfo = performServiceHttp.getAudienceMemberInfo(user.getToken());
if (CollectionUtils.isNotEmpty(audienceMemberInfo)) {
List<FAudienceConfig> list = audienceMemberInfo.stream().map(audience -> {
FAudienceConfig info = new FAudienceConfig();
info.setDelFlag(0);
info.setFrequentId(audience.getFrequentContactsId());
info.setFrequentNo(audience.getIdCard());
info.setFrequentName(audience.getName());
info.setStatus(1);
info.setFrequentPhone(audience.getPhone());
info.setUserId(user.getId());
return info;
}).collect(Collectors.toList());
audienceConfigMapper.delByUserId(user.getId());
audienceConfigMapper.batchSave(list);
}
});
}
private Map<Long, Boolean> getSeatMap(List<Long> seatPlanIds) { private Map<Long, Boolean> getSeatMap(List<Long> seatPlanIds) {
List<SeatPlanStatus> statusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds); List<SeatPlanStatus> statusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds);
if (CollectionUtils.isEmpty(statusFromHttp)) { if (CollectionUtils.isEmpty(statusFromHttp)) {

View File

@@ -2,6 +2,7 @@ package com.xiang.xservice.fwd.service;
import com.xiang.xservice.basic.common.req.BaseRequest; import com.xiang.xservice.basic.common.req.BaseRequest;
import com.xiang.xservice.fwd.entity.req.ProjectOrderCreateReq; import com.xiang.xservice.fwd.entity.req.ProjectOrderCreateReq;
import com.xiang.xservice.fwd.entity.resp.http.audience.AudienceMemberInfo;
import com.xiang.xservice.fwd.entity.resp.http.perform.Perform; import com.xiang.xservice.fwd.entity.resp.http.perform.Perform;
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectInfoResp; import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectInfoResp;
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectOrderCreateResp; import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectOrderCreateResp;
@@ -46,5 +47,12 @@ public interface IPerformServiceHttp {
*/ */
List<SeatPlanStatus> getSeatPlanStatusFromHttp(List<Long> seatPlanIds); List<SeatPlanStatus> getSeatPlanStatusFromHttp(List<Long> seatPlanIds);
/**
* http请求查询观影人信息
* @param token
* @return
*/
List<AudienceMemberInfo> getAudienceMemberInfo(String token);
} }

View File

@@ -10,6 +10,7 @@ import com.xiang.xservice.basic.utils.JsonUtils;
import com.xiang.xservice.fwd.constants.CodeConstants; import com.xiang.xservice.fwd.constants.CodeConstants;
import com.xiang.xservice.fwd.constants.UrlConstants; import com.xiang.xservice.fwd.constants.UrlConstants;
import com.xiang.xservice.fwd.entity.req.ProjectOrderCreateReq; import com.xiang.xservice.fwd.entity.req.ProjectOrderCreateReq;
import com.xiang.xservice.fwd.entity.resp.http.audience.AudienceMemberInfo;
import com.xiang.xservice.fwd.entity.resp.http.perform.Perform; import com.xiang.xservice.fwd.entity.resp.http.perform.Perform;
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectInfoResp; import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectInfoResp;
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectOrderCreateResp; import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectOrderCreateResp;
@@ -149,6 +150,26 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
return Lists.newArrayList(); return Lists.newArrayList();
} }
@Override
public List<AudienceMemberInfo> getAudienceMemberInfo(String token) {
Map<String, String> params = Maps.newHashMap();
String respStr = HttpUtils.doGet(UrlConstants.PROJECT_AUDIENCE_MEMBER_INFO, buildFWDHeaders(token), params);
if (StringUtils.isBlank(respStr)) {
return Lists.newArrayList();
}
log.info("【Http请求】 根据token:{}http请求查询观影人信息结果:{}", token, respStr);
JSONObject resp = JSON.parseObject(respStr);
Integer code = (Integer) resp.get("code");
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.SUCCESS)) {
List<AudienceMemberInfo> data = JSON.parseArray(resp.get("data").toString(), AudienceMemberInfo.class);
if (CollectionUtils.isEmpty(data)) {
return Lists.newArrayList();
}
return data;
}
return Lists.newArrayList();
}
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("content-type", "application/json");

View File

@@ -2,12 +2,16 @@ package com.xiang.xservice.fwd.service.impl;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService; import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService;
import com.xiang.xservice.fwd.entity.pojo.FAudienceConfig;
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.FwdAudienceConfigMapper;
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 lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -21,6 +25,7 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* @Author: xiang * @Author: xiang
@@ -35,9 +40,11 @@ public class PerformServiceImpl implements IPerformService {
private final FwdPerformProjectInfoMapper fwdPerformProjectInfoMapper; private final FwdPerformProjectInfoMapper fwdPerformProjectInfoMapper;
private final IPerformServiceHttp performServiceHttp; private final IPerformServiceHttp performServiceHttp;
private final DingTalkService dingTalkService; private final DingTalkService dingTalkService;
private final FwdUserConfigMapper userConfigMapper;
private final FwdAudienceConfigMapper audienceConfigMapper;
@Value("${DingTalk.chatId}") @Value("${DingTalk.chatId}")
private String chatId; private String chatId;
private static final List<Long> FREQUENT_IDS = List.of(50438548L, 35320661L, 50436621L, 50442739L);
@Override @Override
public FPerformProjectInfo getPerformByProjectId(Long projectId) { public FPerformProjectInfo getPerformByProjectId(Long projectId) {
return fwdPerformProjectInfoMapper.getProjectByProjectId(projectId); return fwdPerformProjectInfoMapper.getProjectByProjectId(projectId);
@@ -60,31 +67,42 @@ public class PerformServiceImpl implements IPerformService {
log.info("该projectId:{}暂无座位信息", projectId); log.info("该projectId:{}暂无座位信息", projectId);
return Boolean.FALSE; return Boolean.FALSE;
} }
for (FPerformSeatInfo fPerformSeatInfo : seatInfoByProjectId) { List<FUserConfig> availableUser = userConfigMapper.getAvailableUser();
if (1 == fPerformSeatInfo.getSoldOut()) { if (CollectionUtils.isEmpty(availableUser)) {
continue; return Boolean.FALSE;
} }
ProjectOrderCreateReq projectOrderCreateReq = new ProjectOrderCreateReq(); for (FUserConfig userConfig : availableUser) {
projectOrderCreateReq.setDeliveryType(1); List<FAudienceConfig> audiences = audienceConfigMapper.getAudienceByUserId(userConfig.getId());
projectOrderCreateReq.setContactName("朱吉祥"); if (CollectionUtils.isNotEmpty(audiences)) {
projectOrderCreateReq.setContactPhone("15858717571"); List<Long> frequentIds = audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList());
projectOrderCreateReq.setPayment(fPerformSeatInfo.getPrice().multiply(BigDecimal.valueOf(FREQUENT_IDS.size())).setScale(2)); for (FPerformSeatInfo fPerformSeatInfo : seatInfoByProjectId) {
projectOrderCreateReq.setTotalPrice(fPerformSeatInfo.getPrice().multiply(BigDecimal.valueOf(FREQUENT_IDS.size())).setScale(2, BigDecimal.ROUND_HALF_UP)); if (1 == fPerformSeatInfo.getSoldOut()) {
projectOrderCreateReq.setPerformId(fPerformSeatInfo.getPerformId()); continue;
projectOrderCreateReq.setProjectId(projectId.toString()); }
projectOrderCreateReq.setPrivilegeCodeList(new ArrayList<>()); ProjectOrderCreateReq projectOrderCreateReq = new ProjectOrderCreateReq();
projectOrderCreateReq.setAudienceCount(FREQUENT_IDS.size()); projectOrderCreateReq.setDeliveryType(1);
projectOrderCreateReq.setFrequentIds(FREQUENT_IDS); projectOrderCreateReq.setContactName("朱吉祥");
projectOrderCreateReq.setSeatPlanIds(Collections.singletonList(fPerformSeatInfo.getSeatPlanId())); projectOrderCreateReq.setContactPhone("15858717571");
projectOrderCreateReq.setBlackBox("0"); projectOrderCreateReq.setPayment(fPerformSeatInfo.getPrice().multiply(BigDecimal.valueOf(frequentIds.size())).setScale(2));
projectOrderCreateReq.setCombineTicketVos(null); projectOrderCreateReq.setTotalPrice(fPerformSeatInfo.getPrice().multiply(BigDecimal.valueOf(frequentIds.size())).setScale(2, BigDecimal.ROUND_HALF_UP));
projectOrderCreateReq.setOrdinaryTicketVos(null); projectOrderCreateReq.setPerformId(fPerformSeatInfo.getPerformId());
ProjectOrderCreateResp projectOrder = performServiceHttp.createProjectOrder(projectOrderCreateReq); projectOrderCreateReq.setProjectId(projectId.toString());
if (Objects.nonNull(projectOrder)) { projectOrderCreateReq.setPrivilegeCodeList(new ArrayList<>());
log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder)); projectOrderCreateReq.setAudienceCount(frequentIds.size());
String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + "请在2分钟内完成付款"; projectOrderCreateReq.setFrequentIds(frequentIds);
dingTalkService.sendChatMessage(chatId, msg); projectOrderCreateReq.setSeatPlanIds(Collections.singletonList(fPerformSeatInfo.getSeatPlanId()));
return Boolean.TRUE; projectOrderCreateReq.setBlackBox("0");
projectOrderCreateReq.setCombineTicketVos(null);
projectOrderCreateReq.setOrdinaryTicketVos(null);
ProjectOrderCreateResp projectOrder = performServiceHttp.createProjectOrder(projectOrderCreateReq);
if (Objects.nonNull(projectOrder)) {
log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder));
String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + "请在2分钟内完成付款";
dingTalkService.sendChatMessage(chatId, msg);
return Boolean.TRUE;
}
}
} }
} }
return Boolean.FALSE; return Boolean.FALSE;

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper">
<resultMap id="BaseResultMap" type="com.xiang.xservice.fwd.entity.pojo.FAudienceConfig">
<result column="id" property="id"/>
<result column="frequent_id" property="frequentId"/>
<result column="frequent_name" property="frequentName"/>
<result column="status" property="status"/>
<result column="frequent_no" property="frequentNo"/>
<result column="frequent_phone" property="frequentPhone"/>
<result column="del_flag" property="delFlag"/>
<result column="user_id" property="userId"/>
</resultMap>
<sql id="Base_Column_List">
id, frequent_id, frequent_name, status,frequent_no,frequent_phone,del_flag,user_id
</sql>
<delete id="delByUserId">
delete
from fwd_audience_config
where user_id = #{user_id}
</delete>
<insert id="batechSave">
INSERT INTO fwd_audience_config (
status,
frequent_id,
frequent_name,
frequent_no,
frequent_phone,
del_flag,
user_id
)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.status},
#{item.frequentId},
#{item.frequentName},
#{item.frequentNo},
#{item.frequentPhone},
#{item.delFlag},
#{item.userId}
)
</foreach>
</insert>
<select id="getAudienceByUserId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from fwd_audience_config where user_id = #{userId} and status = 1
</select>
</mapper>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper">
<resultMap id="BaseResultMap" type="com.xiang.xservice.fwd.entity.pojo.FPerformConfig" >
<result column="id" property="id"/>
<result column="project_id" property="projectId"/>
<result column="time" property="time"/>
<result column="del_flag" property="delFlag"/>
</resultMap>
<sql id="Base_Column_List">
id, project_id, time, del_flag
</sql>
<update id="delPerforms">
update fwd_perform_config set del_flag = 1 where 1=1
</update>
<insert id="insertPerforms">
insert into fwd_perform_config(project_id, time, del_flag)
values
<foreach collection="list" item="item" separator=",">
(#{item.projectId}, #{item.time}, #{item.delFlag})
</foreach>
</insert>
<select id="getAvailableUser" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from fwd_perform_config where del_flag = 0
</select>
</mapper>

View File

@@ -281,7 +281,7 @@
<select id="getPerformSeatByProjectId" resultType="com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo"> <select id="getPerformSeatByProjectId" resultType="com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo">
select <include refid="Base_Column_List"/> select <include refid="Base_Column_List"/>
from fwd_perform_seat_info from fwd_perform_seat_info
where project_id = #{projectId} where project_id = #{projectId} and sold_out = 0
</select> </select>
</mapper> </mapper>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiang.xservice.fwd.mapper.FwdUserConfigMapper">
<resultMap id="BaseResultMap" type="com.xiang.xservice.fwd.entity.pojo.FUserConfig" >
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="token" property="token"/>
<result column="status" property="status"/>
</resultMap>
<sql id="Base_Column_List">
id, name, token, status
</sql>
<select id="getAvailableUser" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from fwd_user_config where status = 1
</select>
</mapper>