feat:芬玩岛定时任务拉取数据
This commit is contained in:
@@ -11,7 +11,7 @@ import java.time.LocalDate;
|
|||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class FPerformProject {
|
public class FPerformProjectInfo {
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
private String projectName;
|
private String projectName;
|
||||||
@@ -44,7 +44,7 @@ public class FPerformProject {
|
|||||||
|
|
||||||
private BigDecimal highestPrice;
|
private BigDecimal highestPrice;
|
||||||
|
|
||||||
private String projectPrice;
|
private BigDecimal projectPrice;
|
||||||
|
|
||||||
private LocalDate projectStartDate;
|
private LocalDate projectStartDate;
|
||||||
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.xiang.xservice.fwd.mapper;
|
||||||
|
|
||||||
|
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: xiang
|
||||||
|
* @Date: 2025-07-24 17:22
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
@Mapper
|
||||||
|
public interface FwdPerformProjectInfoMapper {
|
||||||
|
FPerformProjectInfo getProjectByProjectId(Long projectId);
|
||||||
|
|
||||||
|
int insert(FPerformProjectInfo fPerformProjectInfo);
|
||||||
|
|
||||||
|
int update(FPerformProjectInfo fPerformProjectInfo);
|
||||||
|
}
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
package com.xiang.xservice.fwd.schedule;
|
||||||
|
|
||||||
|
import com.xiang.xservice.basic.utils.DateUtils;
|
||||||
|
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
|
||||||
|
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectInfoResp;
|
||||||
|
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.mapper.FwdPerformProjectInfoMapper;
|
||||||
|
import com.xiang.xservice.fwd.service.IPerformServiceHttp;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 芬玩岛拉取数据定时任务
|
||||||
|
*
|
||||||
|
* @Author: xiang
|
||||||
|
* @Date: 2025-07-24 17:19
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Slf4j
|
||||||
|
@RestController
|
||||||
|
public class PullDataFromFWDJob {
|
||||||
|
|
||||||
|
private final IPerformServiceHttp performServiceHttp;
|
||||||
|
private final FwdPerformProjectInfoMapper performProjectInfoMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定时任务 每日2点爬取芬玩岛数据演出列表数据
|
||||||
|
*/
|
||||||
|
@Scheduled(cron = "0 0 2 1/1 * ?")
|
||||||
|
@PostMapping("/pullProjectsDataJob")
|
||||||
|
public void pullProjectsDataJob() {
|
||||||
|
ProjectsResp showProjectsFromHttp = performServiceHttp.getShowProjectsFromHttp();
|
||||||
|
if (Objects.isNull(showProjectsFromHttp)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<ProjectList> projectList = showProjectsFromHttp.getList();
|
||||||
|
for (ProjectList project : projectList) {
|
||||||
|
ProjectInfoResp projectInfoFromHttp = performServiceHttp.getProjectInfoFromHttp(project.getProjectId());
|
||||||
|
if (Objects.nonNull(projectInfoFromHttp)) {
|
||||||
|
FPerformProjectInfo projectInfo = performProjectInfoMapper.getProjectByProjectId(project.getProjectId());
|
||||||
|
if (Objects.nonNull(projectInfo)) {
|
||||||
|
// 更新projectInfo的信息
|
||||||
|
projectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay());
|
||||||
|
projectInfo.setStatus(projectInfoFromHttp.getStatus());
|
||||||
|
projectInfo.setProjectSource(projectInfoFromHttp.getProjectSource());
|
||||||
|
projectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
|
||||||
|
projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
|
||||||
|
projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
|
||||||
|
projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
|
||||||
|
projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
|
||||||
|
projectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName());
|
||||||
|
projectInfo.setProjectName(project.getName());
|
||||||
|
projectInfo.setBizId(project.getBizId());
|
||||||
|
projectInfo.setTagName(project.getTagName());
|
||||||
|
projectInfo.setTagRemark(project.getTagRemark());
|
||||||
|
projectInfo.setProjectCity(project.getCity());
|
||||||
|
projectInfo.setShortCity(project.getShortCity());
|
||||||
|
projectInfo.setVenueName(project.getVenueName());
|
||||||
|
projectInfo.setLowestPrice(project.getLowestPrice());
|
||||||
|
// projectInfo.setProjectPrice(StringUtils.isBlank(projectInfoFromHttp.getProjectPrice()) ? BigDecimal.ZERO : new BigDecimal(projectInfoFromHttp.getProjectPrice()));
|
||||||
|
performProjectInfoMapper.update(projectInfo);
|
||||||
|
} else {
|
||||||
|
// 新增projectInfo的信息
|
||||||
|
FPerformProjectInfo fPerformProjectInfo = new FPerformProjectInfo();
|
||||||
|
fPerformProjectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay());
|
||||||
|
fPerformProjectInfo.setStatus(projectInfoFromHttp.getStatus());
|
||||||
|
fPerformProjectInfo.setProjectSource(projectInfoFromHttp.getProjectSource());
|
||||||
|
fPerformProjectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
|
||||||
|
fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
|
||||||
|
fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
|
||||||
|
fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
|
||||||
|
fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
|
||||||
|
fPerformProjectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName());
|
||||||
|
|
||||||
|
fPerformProjectInfo.setProjectName(project.getName());
|
||||||
|
fPerformProjectInfo.setBizId(project.getBizId());
|
||||||
|
fPerformProjectInfo.setProjectId(project.getProjectId());
|
||||||
|
fPerformProjectInfo.setTagName(project.getTagName());
|
||||||
|
fPerformProjectInfo.setTagRemark(project.getTagRemark());
|
||||||
|
fPerformProjectInfo.setProjectCity(project.getCity());
|
||||||
|
fPerformProjectInfo.setShortCity(project.getShortCity());
|
||||||
|
fPerformProjectInfo.setVenueName(project.getVenueName());
|
||||||
|
fPerformProjectInfo.setLowestPrice(project.getLowestPrice());
|
||||||
|
// fPerformProjectInfo.setProjectPrice(StringUtils.isBlank(projectInfoFromHttp.getProjectPrice()) ? BigDecimal.ZERO : new BigDecimal(projectInfoFromHttp.getProjectPrice()));
|
||||||
|
performProjectInfoMapper.insert(fPerformProjectInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,5 +2,5 @@ spring:
|
|||||||
datasource:
|
datasource:
|
||||||
url: jdbc:mysql:///xservice-script?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
|
url: jdbc:mysql:///xservice-script?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
|
||||||
username: root
|
username: root
|
||||||
password: Admin@123
|
password: 12345678
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
<?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.FwdPerformProjectInfoMapper">
|
||||||
|
|
||||||
|
<resultMap id="BaseResultMap" type="com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo" >
|
||||||
|
<result column="id" property="id"/>
|
||||||
|
<result column="project_name" property="projectName" />
|
||||||
|
<result column="status" property="status" />
|
||||||
|
<result column="project_source" property="projectSource" />
|
||||||
|
<result column="is_has_seat" property="isHasSeat" />
|
||||||
|
<result column="is_choice_seat" property="isChoiceSeat" />
|
||||||
|
<result column="biz_id" property="bizId" />
|
||||||
|
<result column="project_id" property="projectId" />
|
||||||
|
<result column="tag_name" property="tagName" />
|
||||||
|
<result column="tag_remark" property="tagRemark" />
|
||||||
|
<result column="project_city" property="projectCity" />
|
||||||
|
<result column="short_city" property="shortCity" />
|
||||||
|
<result column="venue_name" property="venueName" />
|
||||||
|
<result column="lowest_price" property="lowestPrice" />
|
||||||
|
<result column="highest_price" property="highestPrice" />
|
||||||
|
<result column="project_price" property="projectPrice" />
|
||||||
|
<result column="project_start_date" property="projectStartDate" />
|
||||||
|
<result column="project_end_date" property="projectEndDate" />
|
||||||
|
<result column="sub_classify_name" property="subClassifyName" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
id, project_name,
|
||||||
|
status,
|
||||||
|
project_source,
|
||||||
|
is_has_seat,
|
||||||
|
is_choice_seat,
|
||||||
|
biz_id,
|
||||||
|
project_id,
|
||||||
|
tag_name,
|
||||||
|
tag_remark,
|
||||||
|
project_city,
|
||||||
|
short_city,
|
||||||
|
venue_name,
|
||||||
|
lowest_price,
|
||||||
|
highest_price,
|
||||||
|
project_price,
|
||||||
|
project_start_date,
|
||||||
|
project_end_date,
|
||||||
|
sub_classify_name
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<insert id="insert" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo">
|
||||||
|
INSERT INTO fwd_perform_project_info
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="null != projectName and '' != projectName">
|
||||||
|
project_name,
|
||||||
|
</if>
|
||||||
|
<if test="null != status ">
|
||||||
|
status,
|
||||||
|
</if>
|
||||||
|
<if test="null != projectSource and '' != projectSource">
|
||||||
|
project_source,
|
||||||
|
</if>
|
||||||
|
<if test="null != isHasSeat ">
|
||||||
|
is_has_seat,
|
||||||
|
</if>
|
||||||
|
<if test="null != isChoiceSeat ">
|
||||||
|
is_choice_seat,
|
||||||
|
</if>
|
||||||
|
<if test="null != bizId ">
|
||||||
|
biz_id,
|
||||||
|
</if>
|
||||||
|
<if test="null != projectId ">
|
||||||
|
project_id,
|
||||||
|
</if>
|
||||||
|
<if test="null != tagName and '' != tagName">
|
||||||
|
tag_name,
|
||||||
|
</if>
|
||||||
|
<if test="null != tagRemark and '' != tagRemark">
|
||||||
|
tag_remark,
|
||||||
|
</if>
|
||||||
|
<if test="null != projectCity and '' != projectCity">
|
||||||
|
project_city,
|
||||||
|
</if>
|
||||||
|
<if test="null != shortCity and '' != shortCity">
|
||||||
|
short_city,
|
||||||
|
</if>
|
||||||
|
<if test="null != venueName and '' != venueName">
|
||||||
|
venue_name,
|
||||||
|
</if>
|
||||||
|
<if test="null != lowestPrice ">
|
||||||
|
lowest_price,
|
||||||
|
</if>
|
||||||
|
<if test="null != highestPrice ">
|
||||||
|
highest_price,
|
||||||
|
</if>
|
||||||
|
<if test="null != projectPrice ">
|
||||||
|
project_price,
|
||||||
|
</if>
|
||||||
|
<if test="null != projectStartDate ">
|
||||||
|
project_start_date,
|
||||||
|
</if>
|
||||||
|
<if test="null != projectEndDate ">
|
||||||
|
project_end_date,
|
||||||
|
</if>
|
||||||
|
<if test="null != subClassifyName and '' != subClassifyName">
|
||||||
|
sub_classify_name
|
||||||
|
</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="null != projectName and '' != projectName">
|
||||||
|
#{projectName},
|
||||||
|
</if>
|
||||||
|
<if test="null != status ">
|
||||||
|
#{status},
|
||||||
|
</if>
|
||||||
|
<if test="null != projectSource and '' != projectSource">
|
||||||
|
#{projectSource},
|
||||||
|
</if>
|
||||||
|
<if test="null != isHasSeat ">
|
||||||
|
#{isHasSeat},
|
||||||
|
</if>
|
||||||
|
<if test="null != isChoiceSeat ">
|
||||||
|
#{isChoiceSeat},
|
||||||
|
</if>
|
||||||
|
<if test="null != bizId ">
|
||||||
|
#{bizId},
|
||||||
|
</if>
|
||||||
|
<if test="null != projectId ">
|
||||||
|
#{projectId},
|
||||||
|
</if>
|
||||||
|
<if test="null != tagName and '' != tagName">
|
||||||
|
#{tagName},
|
||||||
|
</if>
|
||||||
|
<if test="null != tagRemark and '' != tagRemark">
|
||||||
|
#{tagRemark},
|
||||||
|
</if>
|
||||||
|
<if test="null != projectCity and '' != projectCity">
|
||||||
|
#{projectCity},
|
||||||
|
</if>
|
||||||
|
<if test="null != shortCity and '' != shortCity">
|
||||||
|
#{shortCity},
|
||||||
|
</if>
|
||||||
|
<if test="null != venueName and '' != venueName">
|
||||||
|
#{venueName},
|
||||||
|
</if>
|
||||||
|
<if test="null != lowestPrice ">
|
||||||
|
#{lowestPrice},
|
||||||
|
</if>
|
||||||
|
<if test="null != highestPrice ">
|
||||||
|
#{highestPrice},
|
||||||
|
</if>
|
||||||
|
<if test="null != projectPrice ">
|
||||||
|
#{projectPrice},
|
||||||
|
</if>
|
||||||
|
<if test="null != projectStartDate ">
|
||||||
|
#{projectStartDate},
|
||||||
|
</if>
|
||||||
|
<if test="null != projectEndDate ">
|
||||||
|
#{projectEndDate},
|
||||||
|
</if>
|
||||||
|
<if test="null != subClassifyName and '' != subClassifyName">
|
||||||
|
#{subClassifyName}
|
||||||
|
</if>
|
||||||
|
</trim>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<update id="update" parameterType="com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo">
|
||||||
|
UPDATE fwd_perform_project_info
|
||||||
|
<set>
|
||||||
|
<if test="null != projectName and '' != projectName">project_name = #{projectName},</if>
|
||||||
|
<if test="null != status ">status = #{status},</if>
|
||||||
|
<if test="null != projectSource and '' != projectSource">project_source = #{projectSource},</if>
|
||||||
|
<if test="null != isHasSeat ">is_has_seat = #{isHasSeat},</if>
|
||||||
|
<if test="null != isChoiceSeat ">is_choice_seat = #{isChoiceSeat},</if>
|
||||||
|
<if test="null != bizId ">biz_id = #{bizId},</if>
|
||||||
|
<if test="null != projectId ">project_id = #{projectId},</if>
|
||||||
|
<if test="null != tagName and '' != tagName">tag_name = #{tagName},</if>
|
||||||
|
<if test="null != tagRemark and '' != tagRemark">tag_remark = #{tagRemark},</if>
|
||||||
|
<if test="null != projectCity and '' != projectCity">project_city = #{projectCity},</if>
|
||||||
|
<if test="null != shortCity and '' != shortCity">short_city = #{shortCity},</if>
|
||||||
|
<if test="null != venueName and '' != venueName">venue_name = #{venueName},</if>
|
||||||
|
<if test="null != lowestPrice ">lowest_price = #{lowestPrice},</if>
|
||||||
|
<if test="null != highestPrice ">highest_price = #{highestPrice},</if>
|
||||||
|
<if test="null != projectPrice ">project_price = #{projectPrice},</if>
|
||||||
|
<if test="null != projectStartDate ">project_start_date = #{projectStartDate},</if>
|
||||||
|
<if test="null != projectEndDate ">project_end_date = #{projectEndDate},</if>
|
||||||
|
<if test="null != subClassifyName and '' != subClassifyName">sub_classify_name = #{subClassifyName}</if>
|
||||||
|
</set>
|
||||||
|
WHERE id = #{id}
|
||||||
|
</update>
|
||||||
|
<select id="getProjectByProjectId" resultMap="BaseResultMap">
|
||||||
|
select <include refid="Base_Column_List"/>
|
||||||
|
from fwd_perform_project_info
|
||||||
|
where project_id = #{projectId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Reference in New Issue
Block a user