feat:保存配置信息
This commit is contained in:
57
pom.xml
57
pom.xml
@@ -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>
|
||||||
|
|||||||
@@ -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";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
|||||||
@@ -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)) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
22
script/src/main/resources/mapper/fwd/FwdUserConfigMapper.xml
Normal file
22
script/src/main/resources/mapper/fwd/FwdUserConfigMapper.xml
Normal 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>
|
||||||
Reference in New Issue
Block a user