提交 cb83bc8c authored 作者: 朱旭欣's avatar 朱旭欣

合并分支 'main' 到 'master'

Main 查看合并请求 !1
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
# Log file
*.log
.log
**/.log
*.gz
C:/*
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
*/target
log
### STS ###
\~*.xlsx
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
### VS Code ###
.vscode/
/dev-union/src/main/resources/excelTemplate/~$finalCheck.xlsx
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.example</groupId>
<artifactId>yl-data-synchronization</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<!-- swagger -->
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.1</version>
</dependency>
<!-- druid数据源驱动 1.1.10解决springboot从1.0——2.0版本问题-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.4</version>
</dependency>
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- canal -->
<dependency>
<groupId>com.alibaba.otter</groupId>
<artifactId>canal.client</artifactId>
<version>1.1.3</version>
</dependency>
<!-- modelmapper -->
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.yl.synchronization;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @author zxx
* @date 2023/4/21 14:41
*/
@EnableScheduling
@SpringBootApplication(scanBasePackages = {
"com.yl.synchronization.*"
}
)
@EnableJpaAuditing
@EnableSwagger2
public class YlSynchronizationApplication {
public static void main(String[] args) {
SpringApplication.run(YlSynchronizationApplication.class, args);
}
}
package com.yl.synchronization.bean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.modelmapper.ModelMapper;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* entity class for activities
*/
@Data
@Entity
@ApiModel("活动")
@Table(name = "share_yl_activities",schema = "activities")
public class Activity {
/**
* id
*/
@Id
@Column(name = "id")
@ApiModelProperty(name = "id")
private Long id;
/**
* 活动标题
*/
@Column(name = "title")
@ApiModelProperty(name = "活动标题")
private String title;
/**
* 封面
*/
@Column(name = "cover")
@ApiModelProperty(name = "封面")
private String cover;
/**
* 活动编码
*/
@Column(name = "code")
@ApiModelProperty(name = "活动编码")
private String code;
/**
* 活动类型 1线上2线下
*/
@Column(name = "type")
@ApiModelProperty(name = "活动类型 1线上2线下")
private String type;
/**
* 活动区域
*/
@Column(name = "area")
@ApiModelProperty(name = "活动区域")
private String area;
/**
* 详细地点
*/
@Column(name = "address")
@ApiModelProperty(name = "详细地点")
private String address;
/**
* 服务类别...
*/
@Column(name = "service_type")
@ApiModelProperty(name = "服务类别...")
private String serviceType;
/**
* 服务对象
*/
@Column(name = "service_obj")
@ApiModelProperty(name = "服务对象")
private String serviceObj;
/**
* 关联项目
*/
@Column(name = "project")
@ApiModelProperty(name = "关联项目")
private String project;
/**
* 主办单位
*/
@Column(name = "organizer")
@ApiModelProperty(name = "主办单位")
private String organizer;
/**
* 承办单位
*/
@Column(name = "contractor")
@ApiModelProperty(name = "承办单位")
private String contractor;
/**
* 协办单位
*/
@Column(name = "sponsor")
@ApiModelProperty(name = "协办单位")
private String sponsor;
/**
* 发布时间
*/
@Column(name = "release_time")
@ApiModelProperty(name = "发布时间")
private Date releaseTime;
/**
* 招募时间
*/
@Column(name = "recruit_time")
@ApiModelProperty(name = "招募时间")
private Date recruitTime;
/**
* 招募人数
*/
@Column(name = "recruit_number")
@ApiModelProperty(name = "招募人数")
private Integer recruitNumber;
/**
* 活动时间
*/
@Column(name = "activity_time")
@ApiModelProperty(name = "活动时间")
private Date activityTime;
/**
* 活动结束时间
*/
@Column(name = "activity_time_end")
@ApiModelProperty(name = "活动结束时间")
private Date activityTimeEnd;
/**
* 活动简介
*/
@Column(name = "introduction")
@ApiModelProperty(name = "活动简介")
private String introduction;
/**
* 活动要求
*/
@Column(name = "claim")
@ApiModelProperty(name = "活动要求")
private String claim;
/**
* 所属组织
*/
@Column(name = "adscription_org")
@ApiModelProperty(name = "所属组织")
private String adscriptionOrg;
/**
* 联系人
*/
@Column(name = "contact_person")
@ApiModelProperty(name = "联系人")
private String contactPerson;
/**
* 联系电话
*/
@Column(name = "contact_phone")
@ApiModelProperty(name = "联系电话")
private String contactPhone;
/**
* 联系邮箱
*/
@Column(name = "contact_email")
@ApiModelProperty(name = "联系邮箱")
private String contactEmail;
/**
* 网点id
*/
@Column(name = "branch_id")
@ApiModelProperty(name = "网点id")
private Long branchId;
/**
* 是否签到
*/
@Column(name = "is_sign")
@ApiModelProperty(name = "是否签到")
private Boolean isSign;
/**
* 签到精度/单位米
*/
@Column(name = "sign_precision")
@ApiModelProperty(name = "签到精度/单位米")
private Integer signPrecision;
/**
* 活动状态
*/
@Column(name = "status")
@ApiModelProperty(name = "活动状态")
private Integer status;
/**
* 纬度
*/
@Column(name = "latitude")
@ApiModelProperty(name = "纬度")
private String latitude;
/**
* 经度
*/
@Column(name = "longitude")
@ApiModelProperty(name = "经度")
private String longitude;
/**
* 人数限制0不限制
*/
@Column(name = "people_number")
@ApiModelProperty(name = "人数限制0不限制")
private Integer peopleNumber;
/**
* createdAt
*/
@Column(name = "created_at")
@ApiModelProperty(name = "null")
private Date createdAt;
/**
* updatedAt
*/
@Column(name = "updated_at")
@ApiModelProperty(name = "null")
private Date updatedAt;
/**
* 发布管理员
*/
@Column(name = "admin_id")
@ApiModelProperty(name = "发布管理员")
private Integer adminId;
/**
* 状态 1:正常 0:已删除
*/
@Column(name = "DATA_ACTIVE_STATUS")
@ApiModelProperty(name = "状态 1:正常 0:已删除")
private String dataActiveStatus;
}
package com.yl.synchronization.bean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.modelmapper.ModelMapper;
import javax.persistence.*;
import java.util.Date;
/**
* entity class for branches
*/
@Data
@Entity
@ApiModel("网点")
@Table(name = "share_yl_branches",schema = "branches")
public class Branches {
/**
* id
*/
@Id
@Column(name = "id")
@ApiModelProperty(name = "id")
private Long id;
/**
* 关联的平台用户
*/
@Column(name = "uid")
@ApiModelProperty(name = "关联的平台用户")
private Integer uid;
/**
* 申请的网点名
*/
@Column(name = "name")
@ApiModelProperty(name = "申请的网点名")
private String name;
/**
* 网点地址
*/
@Column(name = "address")
@ApiModelProperty(name = "网点地址")
private String address;
/**
* 联系人
*/
@Column(name = "contact_person")
@ApiModelProperty(name = "联系人")
private String contactPerson;
/**
* 联系电话
*/
@Column(name = "contact_phone")
@ApiModelProperty(name = "联系电话")
private String contactPhone;
// /**
// * 单位类型1中国科协2全国学会3地方科协
// */
// @Column(name = "unit_type")
// @ApiModelProperty(name = "单位类型1中国科协2全国学会3地方科协")
// private Boolean unitType;
/**
* 单位类型1中国科协2全国学会3地方科协
*/
@Column(name = "unit_type")
@ApiModelProperty(name = "单位类型1中国科协2全国学会3地方科协")
private Integer unitType;
/**
* 单位名称
*/
@Column(name = "unit_name")
@ApiModelProperty(name = "单位名称")
private String unitName;
/**
* 容量
*/
@Column(name = "capacity")
@ApiModelProperty(name = "容量")
private String capacity;
/**
* createdAt
*/
@Column(name = "created_at")
@ApiModelProperty(name = "null")
private Date createdAt;
/**
* updatedAt
*/
@Column(name = "updated_at")
@ApiModelProperty(name = "null")
private Date updatedAt;
/**
* 封面
*/
@Column(name = "cover")
@ApiModelProperty(name = "封面")
private String cover;
/**
* 纬度
*/
@Column(name = "latitude")
@ApiModelProperty(name = "纬度")
private String latitude;
/**
* 经度
*/
@Column(name = "longitude")
@ApiModelProperty(name = "经度")
private String longitude;
/**
* 街道
*/
@Column(name = "street")
@ApiModelProperty(name = "街道")
private String street;
/**
* 所在区330101
*/
@Column(name = "area")
@ApiModelProperty(name = "所在区330101")
private String area;
/**
* 队长姓名
*/
@Column(name = "leader_name")
@ApiModelProperty(name = "队长姓名")
private String leaderName;
/**
* 队长电话
*/
@Column(name = "leader_phone")
@ApiModelProperty(name = "队长电话")
private String leaderPhone;
/**
* 成立日期
*/
@Column(name = "found_date")
@ApiModelProperty(name = "成立日期")
private Date foundDate;
/**
* 网点详细地址
*/
@Column(name = "full_address")
@ApiModelProperty(name = "网点详细地址")
private String fullAddress;
@Transient
@Column(name = "activityApplyNum")
@ApiModelProperty(name = "培训人数")
private Long activityApplyNum;
/**
* 状态 1:正常 0:已删除
*/
@Column(name = "DATA_ACTIVE_STATUS")
@ApiModelProperty(name = "状态 1:正常 0:已删除")
private String dataActiveStatus;
public void view(){
this.contactPerson = null;
this.contactPhone = null;
this.leaderName = null;
this.leaderPhone = null;
}
}
package com.yl.synchronization.bean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* entity class for textbooks
*/
@Data
@Entity
@ApiModel("教科书")
@Table(name = "share_yl_textbooks",schema = "textbooks")
public class Textbook {
/**
* id
*/
@Id
@Column(name = "id")
@ApiModelProperty(name = "null")
private Long id;
/**
* 名称
*/
@Column(name = "name")
@ApiModelProperty(name = "名称")
private String name;
/**
* 制作单位
*/
@Column(name = "unit")
@ApiModelProperty(name = "制作单位")
private String unit;
/**
* 类型1图册2视频3音频
*/
@Column(name = "type")
@ApiModelProperty(name = "类型1图册2视频3音频")
private Boolean type;
/**
* 附件
*/
@Column(name = "file")
@ApiModelProperty(name = "附件")
private String file;
/**
* 备注
*/
@Column(name = "remarks")
@ApiModelProperty(name = "备注")
private String remarks;
/**
* createdAt
*/
@Column(name = "created_at")
@ApiModelProperty(name = "null")
private Date createdAt;
/**
* updatedAt
*/
@Column(name = "updated_at")
@ApiModelProperty(name = "null")
private Date updatedAt;
/**
* 封面
*/
@Column(name = "cover")
@ApiModelProperty(name = "封面")
private String cover;
/**
* 状态123
*/
@Column(name = "status")
@ApiModelProperty(name = "状态123")
private Boolean status;
/**
* 地区
*/
@Column(name = "area")
@ApiModelProperty(name = "地区")
private String area;
/**
* 发布管理员
*/
@Column(name = "admin_id")
@ApiModelProperty(name = "发布管理员")
private Integer adminId;
}
package com.yl.synchronization.bean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* entity class for volunteer_applys
*/
@Data
@Entity
@ApiModel("志愿者")
@Table(name = "share_yl_volunteer_applys",schema = "volunteer_applys")
public class VolunteerApply {
/**
* id
*/
@Id
@Column(name = "id")
@ApiModelProperty(name = "id")
private Long id;
/**
* 用户id
*/
@Column(name = "user_id")
@ApiModelProperty(name = "用户id")
private Integer userId;
/**
* 手机号
*/
@Column(name = "phone")
@ApiModelProperty(name = "手机号")
private String phone;
/**
* 姓名
*/
@Column(name = "name")
@ApiModelProperty(name = "姓名")
private String name;
/**
* 姓名
*/
@Column(name = "id_card")
@ApiModelProperty(name = "姓名")
private String idCard;
/**
* 所在区
*/
@Column(name = "area")
@ApiModelProperty(name = "所在区")
private String area;
/**
* 男 女
*/
@Column(name = "gender")
@ApiModelProperty(name = "男 女")
private String gender;
/**
* 面貌
*/
@Column(name = "face")
@ApiModelProperty(name = "面貌")
private Integer face;
/**
* 民族
*/
@Column(name = "nation")
@ApiModelProperty(name = "民族")
private String nation;
/**
* 学历
*/
@Column(name = "edu")
@ApiModelProperty(name = "学历")
private String edu;
/**
* 职称
*/
@Column(name = "job_title")
@ApiModelProperty(name = "职称")
private String jobTitle;
/**
* 从业类别
*/
@Column(name = "work_type")
@ApiModelProperty(name = "从业类别")
private Integer workType;
/**
* 所在单位
*/
@Column(name = "work")
@ApiModelProperty(name = "所在单位")
private String work;
/**
* 服务类别
*/
@Column(name = "service_type")
@ApiModelProperty(name = "服务类别")
private String serviceType;
/**
* 服务领域
*/
@Column(name = "service_domain")
@ApiModelProperty(name = "服务领域")
private String serviceDomain;
/**
* 是否有志愿经验1是0没有
*/
@Column(name = "is_exp")
@ApiModelProperty(name = "是否有志愿经验1是0没有")
private String isExp;
/**
* 志愿经验
*/
@Column(name = "exp")
@ApiModelProperty(name = "志愿经验")
private String exp;
/**
* 状态1待操作 2通过 3拒绝
*/
@Column(name = "status")
@ApiModelProperty(name = "状态1待操作 2通过 3拒绝")
private Boolean status;
/**
* createdAt
*/
@Column(name = "created_at")
@ApiModelProperty(name = "null")
private Date createdAt;
/**
* updatedAt
*/
@Column(name = "updated_at")
@ApiModelProperty(name = "null")
private Date updatedAt;
/**
* 所属网点
*/
@Column(name = "branch_id")
@ApiModelProperty(name = "所属网点")
private Long branchId;
/**
* 状态 1:正常 0:已删除
*/
@Column(name = "DATA_ACTIVE_STATUS")
@ApiModelProperty(name = "状态 1:正常 0:已删除")
private String dataActiveStatus;
}
package com.yl.synchronization.config;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
/**
* @author zjm
*/
@ComponentScan
@Configuration
@Slf4j
public class DataSourceConfig {
/**
* A数据源
* @return
*/
@Primary
@Bean(name = "remoteDataSource0")
@Qualifier("remoteDataSource0")
@ConfigurationProperties(prefix="spring.datasource.remote0")
public DataSource secondaryDataSource0() {
log.info("A数据源创建中————");
return DruidDataSourceBuilder.create()
.build();
}
/**
* B数据源
*
*/
@Bean(name = "remoteDataSource1")
@Qualifier("remoteDataSource1")
@ConfigurationProperties(prefix="spring.datasource.remote1")
public DataSource secondaryDataSource1() {
log.info("B数据源创建中————");
return DruidDataSourceBuilder.create()
.build();
}
}
package com.yl.synchronization.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManager;
import javax.sql.DataSource;
import java.util.Map;
/**
* @author zjm
*/
@SuppressWarnings("ALL")
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "entityManagerFactoryRemote0",
transactionManagerRef = "transactionManagerRemote0",
basePackages = {"com.yl.synchronization.repository"
}
)
@EnableConfigurationProperties(JpaProperties.class)
public class RemoteConfig0 {
@Autowired
@Qualifier("remoteDataSource0")
private DataSource remoteDataSource;
@Autowired
private HibernateProperties properties;
@Primary
@Bean(name = "entityManagerRemote0")
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return entityManagerFactoryRemote1(builder).getObject().createEntityManager();
}
@Primary
@Bean(name = "entityManagerFactoryRemote0")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryRemote1(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(remoteDataSource)
.properties(properties.determineHibernateProperties(jpaProperties.getProperties(), new
HibernateSettings()))
.packages(
"com.yl.synchronization.bean")
.persistenceUnit("remotePersistenceUnit0")
.build();
}
@Autowired
private JpaProperties jpaProperties;
private Map<String, String> getVendorProperties() {
return jpaProperties.getProperties();
}
@Primary
@Bean(name = "transactionManagerRemote0")
public PlatformTransactionManager transactionManagerRemote(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(entityManagerFactoryRemote1(builder).getObject());
}
}
package com.yl.synchronization.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManager;
import javax.sql.DataSource;
import java.util.Map;
/**
* @author zjm
*/
@SuppressWarnings("ALL")
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "entityManagerFactoryRemote1",
transactionManagerRef = "transactionManagerRemote1",
basePackages = {
"com.yl.synchronization.oldRepository"}
)
@EnableConfigurationProperties(JpaProperties.class)
public class RemoteConfig1 {
@Autowired
@Qualifier("remoteDataSource1")
private DataSource remoteDataSource;
@Autowired
private HibernateProperties properties;
@Bean(name = "entityManagerRemote1")
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return entityManagerFactoryRemote1(builder).getObject().createEntityManager();
}
@Bean(name = "entityManagerFactoryRemote1")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryRemote1(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(remoteDataSource)
.properties(properties.determineHibernateProperties(jpaProperties.getProperties(), new
HibernateSettings()))
.packages(
"com.yl.synchronization.oldBean")
.persistenceUnit("remotePersistenceUnit1")
.build();
}
@Autowired
private JpaProperties jpaProperties;
private Map<String, String> getVendorProperties() {
return jpaProperties.getProperties();
}
@Bean(name = "transactionManagerRemote1")
public PlatformTransactionManager transactionManagerRemote(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(entityManagerFactoryRemote1(builder).getObject());
}
}
package com.yl.synchronization.oldBean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.Date;
/**
* @author zxx
* @date 2023/4/21 17:52
*/
@Data
@Entity
@ApiModel("活动保存")
public class OldActivity {
/**
* id
*/
@Id
@Column(name = "id")
@ApiModelProperty(name = "id")
private Long id;
/**
* 活动标题
*/
@Column(name = "title")
@ApiModelProperty(name = "活动标题")
private String title;
/**
* 封面
*/
@Column(name = "cover")
@ApiModelProperty(name = "封面")
private String cover;
/**
* 活动编码
*/
@Column(name = "code")
@ApiModelProperty(name = "活动编码")
private String code;
/**
* 活动类型 1线上2线下
*/
@Column(name = "type")
@ApiModelProperty(name = "活动类型 1线上2线下")
private String type;
/**
* 活动区域
*/
@Column(name = "area")
@ApiModelProperty(name = "活动区域")
private String area;
/**
* 详细地点
*/
@Column(name = "address")
@ApiModelProperty(name = "详细地点")
private String address;
/**
* 服务类别...
*/
@Column(name = "service_type")
@ApiModelProperty(name = "服务类别...")
private String serviceType;
/**
* 服务对象
*/
@Column(name = "service_obj")
@ApiModelProperty(name = "服务对象")
private String serviceObj;
/**
* 关联项目
*/
@Column(name = "project")
@ApiModelProperty(name = "关联项目")
private String project;
/**
* 主办单位
*/
@Column(name = "organizer")
@ApiModelProperty(name = "主办单位")
private String organizer;
/**
* 承办单位
*/
@Column(name = "contractor")
@ApiModelProperty(name = "承办单位")
private String contractor;
/**
* 协办单位
*/
@Column(name = "sponsor")
@ApiModelProperty(name = "协办单位")
private String sponsor;
/**
* 发布时间
*/
@Column(name = "release_time")
@ApiModelProperty(name = "发布时间")
private Date releaseTime;
/**
* 招募时间
*/
@Column(name = "recruit_time")
@ApiModelProperty(name = "招募时间")
private Date recruitTime;
/**
* 招募人数
*/
@Column(name = "recruit_number")
@ApiModelProperty(name = "招募人数")
private Integer recruitNumber;
/**
* 活动时间
*/
@Column(name = "activity_time")
@ApiModelProperty(name = "活动时间")
private Date activityTime;
/**
* 活动结束时间
*/
@Column(name = "activity_time_end")
@ApiModelProperty(name = "活动结束时间")
private Date activityTimeEnd;
/**
* 活动简介
*/
@Column(name = "introduction")
@ApiModelProperty(name = "活动简介")
private String introduction;
/**
* 活动要求
*/
@Column(name = "claim")
@ApiModelProperty(name = "活动要求")
private String claim;
/**
* 所属组织
*/
@Column(name = "adscription_org")
@ApiModelProperty(name = "所属组织")
private String adscriptionOrg;
/**
* 联系人
*/
@Column(name = "contact_person")
@ApiModelProperty(name = "联系人")
private String contactPerson;
/**
* 联系电话
*/
@Column(name = "contact_phone")
@ApiModelProperty(name = "联系电话")
private String contactPhone;
/**
* 联系邮箱
*/
@Column(name = "contact_email")
@ApiModelProperty(name = "联系邮箱")
private String contactEmail;
/**
* 网点id
*/
@Column(name = "branch_id")
@ApiModelProperty(name = "网点id")
private Long branchId;
/**
* 是否签到
*/
@Column(name = "is_sign")
@ApiModelProperty(name = "是否签到")
private Boolean isSign;
/**
* 签到精度/单位米
*/
@Column(name = "sign_precision")
@ApiModelProperty(name = "签到精度/单位米")
private Integer signPrecision;
/**
* 活动状态
*/
@Column(name = "status")
@ApiModelProperty(name = "活动状态")
private Integer status;
/**
* 纬度
*/
@Column(name = "latitude")
@ApiModelProperty(name = "纬度")
private String latitude;
/**
* 经度
*/
@Column(name = "longitude")
@ApiModelProperty(name = "经度")
private String longitude;
/**
* 人数限制0不限制
*/
@Column(name = "people_number")
@ApiModelProperty(name = "人数限制0不限制")
private Integer peopleNumber;
/**
* createdAt
*/
@Column(name = "created_at")
@ApiModelProperty(name = "null")
private Date createdAt;
/**
* updatedAt
*/
@Column(name = "updated_at")
@ApiModelProperty(name = "null")
private Date updatedAt;
/**
* 发布管理员
*/
@Column(name = "admin_id")
@ApiModelProperty(name = "发布管理员")
private Integer adminId;
/**
* 状态 1:正常 0:已删除
*/
@Column(name = "DATA_ACTIVE_STATUS")
@ApiModelProperty(name = "状态 1:正常 0:已删除")
private String dataActiveStatus;
}
package com.yl.synchronization.oldBean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;
import java.util.Date;
/**
* @author zxx
* @date 2023/4/21 17:52
*/
@Data
@Entity
@ApiModel("网点保存")
public class OldBranches {
/**
* id
*/
@Id
@Column(name = "id")
@ApiModelProperty(name = "id")
private Long id;
/**
* 关联的平台用户
*/
@Column(name = "uid")
@ApiModelProperty(name = "关联的平台用户")
private Integer uid;
/**
* 申请的网点名
*/
@Column(name = "name")
@ApiModelProperty(name = "申请的网点名")
private String name;
/**
* 网点地址
*/
@Column(name = "address")
@ApiModelProperty(name = "网点地址")
private String address;
/**
* 联系人
*/
@Column(name = "contact_person")
@ApiModelProperty(name = "联系人")
private String contactPerson;
/**
* 联系电话
*/
@Column(name = "contact_phone")
@ApiModelProperty(name = "联系电话")
private String contactPhone;
// /**
// * 单位类型1中国科协2全国学会3地方科协
// */
// @Column(name = "unit_type")
// @ApiModelProperty(name = "单位类型1中国科协2全国学会3地方科协")
// private Boolean unitType;
/**
* 单位类型1中国科协2全国学会3地方科协
*/
@Column(name = "unit_type")
@ApiModelProperty(name = "单位类型1中国科协2全国学会3地方科协")
private Integer unitType;
/**
* 单位名称
*/
@Column(name = "unit_name")
@ApiModelProperty(name = "单位名称")
private String unitName;
/**
* 容量
*/
@Column(name = "capacity")
@ApiModelProperty(name = "容量")
private String capacity;
/**
* createdAt
*/
@Column(name = "created_at")
@ApiModelProperty(name = "null")
private Date createdAt;
/**
* updatedAt
*/
@Column(name = "updated_at")
@ApiModelProperty(name = "null")
private Date updatedAt;
/**
* 封面
*/
@Column(name = "cover")
@ApiModelProperty(name = "封面")
private String cover;
/**
* 纬度
*/
@Column(name = "latitude")
@ApiModelProperty(name = "纬度")
private String latitude;
/**
* 经度
*/
@Column(name = "longitude")
@ApiModelProperty(name = "经度")
private String longitude;
/**
* 街道
*/
@Column(name = "street")
@ApiModelProperty(name = "街道")
private String street;
/**
* 所在区330101
*/
@Column(name = "area")
@ApiModelProperty(name = "所在区330101")
private String area;
/**
* 队长姓名
*/
@Column(name = "leader_name")
@ApiModelProperty(name = "队长姓名")
private String leaderName;
/**
* 队长电话
*/
@Column(name = "leader_phone")
@ApiModelProperty(name = "队长电话")
private String leaderPhone;
/**
* 成立日期
*/
@Column(name = "found_date")
@ApiModelProperty(name = "成立日期")
private Date foundDate;
/**
* 网点详细地址
*/
@Column(name = "full_address")
@ApiModelProperty(name = "网点详细地址")
private String fullAddress;
@Transient
@Column(name = "activityApplyNum")
@ApiModelProperty(name = "培训人数")
private Long activityApplyNum;
/**
* 状态 1:正常 0:已删除
*/
@Column(name = "DATA_ACTIVE_STATUS")
@ApiModelProperty(name = "状态 1:正常 0:已删除")
private String dataActiveStatus;
}
package com.yl.synchronization.oldBean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.Date;
/**
* @author zxx
* @date 2023/4/21 17:52
*/
@Data
@Entity
@ApiModel("教科书保存")
public class OldTextbook {
/**
* id
*/
@Id
@Column(name = "id")
@ApiModelProperty(name = "null")
private Long id;
/**
* 名称
*/
@Column(name = "name")
@ApiModelProperty(name = "名称")
private String name;
/**
* 制作单位
*/
@Column(name = "unit")
@ApiModelProperty(name = "制作单位")
private String unit;
/**
* 类型1图册2视频3音频
*/
@Column(name = "type")
@ApiModelProperty(name = "类型1图册2视频3音频")
private Boolean type;
/**
* 附件
*/
@Column(name = "file")
@ApiModelProperty(name = "附件")
private String file;
/**
* 备注
*/
@Column(name = "remarks")
@ApiModelProperty(name = "备注")
private String remarks;
/**
* createdAt
*/
@Column(name = "created_at")
@ApiModelProperty(name = "null")
private Date createdAt;
/**
* updatedAt
*/
@Column(name = "updated_at")
@ApiModelProperty(name = "null")
private Date updatedAt;
/**
* 封面
*/
@Column(name = "cover")
@ApiModelProperty(name = "封面")
private String cover;
/**
* 状态123
*/
@Column(name = "status")
@ApiModelProperty(name = "状态123")
private Boolean status;
/**
* 地区
*/
@Column(name = "area")
@ApiModelProperty(name = "地区")
private String area;
/**
* 发布管理员
*/
@Column(name = "admin_id")
@ApiModelProperty(name = "发布管理员")
private Integer adminId;
}
package com.yl.synchronization.oldBean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.Date;
/**
* @author zxx
* @date 2023/4/21 17:52
*/
@Data
@Entity
@ApiModel("志愿者保存")
public class OldVolunteerApply {
/**
* id
*/
@Id
@Column(name = "id")
@ApiModelProperty(name = "id")
private Long id;
/**
* 用户id
*/
@Column(name = "user_id")
@ApiModelProperty(name = "用户id")
private Integer userId;
/**
* 手机号
*/
@Column(name = "phone")
@ApiModelProperty(name = "手机号")
private String phone;
/**
* 姓名
*/
@Column(name = "name")
@ApiModelProperty(name = "姓名")
private String name;
/**
* 姓名
*/
@Column(name = "id_card")
@ApiModelProperty(name = "姓名")
private String idCard;
/**
* 所在区
*/
@Column(name = "area")
@ApiModelProperty(name = "所在区")
private String area;
/**
* 男 女
*/
@Column(name = "gender")
@ApiModelProperty(name = "男 女")
private String gender;
/**
* 面貌
*/
@Column(name = "face")
@ApiModelProperty(name = "面貌")
private Integer face;
/**
* 民族
*/
@Column(name = "nation")
@ApiModelProperty(name = "民族")
private String nation;
/**
* 学历
*/
@Column(name = "edu")
@ApiModelProperty(name = "学历")
private String edu;
/**
* 职称
*/
@Column(name = "job_title")
@ApiModelProperty(name = "职称")
private String jobTitle;
/**
* 从业类别
*/
@Column(name = "work_type")
@ApiModelProperty(name = "从业类别")
private Integer workType;
/**
* 所在单位
*/
@Column(name = "work")
@ApiModelProperty(name = "所在单位")
private String work;
/**
* 服务类别
*/
@Column(name = "service_type")
@ApiModelProperty(name = "服务类别")
private String serviceType;
/**
* 服务领域
*/
@Column(name = "service_domain")
@ApiModelProperty(name = "服务领域")
private String serviceDomain;
/**
* 是否有志愿经验1是0没有
*/
@Column(name = "is_exp")
@ApiModelProperty(name = "是否有志愿经验1是0没有")
private String isExp;
/**
* 志愿经验
*/
@Column(name = "exp")
@ApiModelProperty(name = "志愿经验")
private String exp;
/**
* 状态1待操作 2通过 3拒绝
*/
@Column(name = "status")
@ApiModelProperty(name = "状态1待操作 2通过 3拒绝")
private Boolean status;
/**
* createdAt
*/
@Column(name = "created_at")
@ApiModelProperty(name = "null")
private Date createdAt;
/**
* updatedAt
*/
@Column(name = "updated_at")
@ApiModelProperty(name = "null")
private Date updatedAt;
/**
* 所属网点
*/
@Column(name = "branch_id")
@ApiModelProperty(name = "所属网点")
private Long branchId;
/**
* 状态 1:正常 0:已删除
*/
@Column(name = "DATA_ACTIVE_STATUS")
@ApiModelProperty(name = "状态 1:正常 0:已删除")
private String dataActiveStatus;
}
package com.yl.synchronization.oldRepository;
import com.yl.synchronization.oldBean.OldActivity;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author zxx
* @date 2023/4/21 17:57
*/
public interface OldActivityDao extends JpaRepository<OldActivity,Long> {
}
package com.yl.synchronization.oldRepository;
import com.yl.synchronization.oldBean.OldBranches;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author zxx
* @date 2023/4/21 17:57
*/
public interface OldBranchesDao extends JpaRepository<OldBranches,Long> {
}
package com.yl.synchronization.oldRepository;
import com.yl.synchronization.oldBean.OldTextbook;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author zxx
* @date 2023/4/21 17:57
*/
public interface OldTextbookDao extends JpaRepository<OldTextbook,Long> {
}
package com.yl.synchronization.oldRepository;
import com.yl.synchronization.oldBean.OldVolunteerApply;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author zxx
* @date 2023/4/21 17:57
*/
public interface OldVolunteerApplyDao extends JpaRepository<OldVolunteerApply,Long> {
}
package com.yl.synchronization.repository;
import com.yl.synchronization.bean.Activity;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author zxx
* @date 2023/4/21 17:19
*/
public interface ActivityDao extends JpaRepository<Activity,Long> {
}
package com.yl.synchronization.repository;
import com.yl.synchronization.bean.Branches;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author zxx
* @date 2023/4/21 17:19
*/
public interface BranchesDao extends JpaRepository<Branches,Long> {
}
package com.yl.synchronization.repository;
import com.yl.synchronization.bean.Textbook;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author zxx
* @date 2023/4/21 17:19
*/
public interface TextbookDao extends JpaRepository<Textbook,Long> {
}
package com.yl.synchronization.repository;
import com.yl.synchronization.bean.VolunteerApply;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author zxx
* @date 2023/4/21 17:19
*/
public interface VolunteerApplyDao extends JpaRepository<VolunteerApply,Long> {
}
package com.yl.synchronization.service.Impl;
import com.yl.synchronization.service.YlSynchronizationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author zxx
* @date 2023/4/21 17:28
*/
@Slf4j
@Service
public class YlSynchronizationServiceImpl implements YlSynchronizationService {
}
package com.yl.synchronization.service;
/**
* @author zxx
* @date 2023/4/21 17:27
*/
public interface YlSynchronizationService {
}
package com.yl.synchronization.task;
import com.yl.synchronization.bean.Activity;
import com.yl.synchronization.oldBean.OldActivity;
import com.yl.synchronization.oldRepository.OldActivityDao;
import com.yl.synchronization.oldRepository.OldBranchesDao;
import com.yl.synchronization.oldRepository.OldTextbookDao;
import com.yl.synchronization.oldRepository.OldVolunteerApplyDao;
import com.yl.synchronization.repository.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 定时同步数据
* @author zxx
* @date 2023/4/21 17:19
*/
@Slf4j
@Component
@EnableScheduling
public class OrgCache {
@Autowired
private ActivityDao activityDao;
@Autowired
private BranchesDao branchesDao;
@Autowired
private TextbookDao textbookDao;
@Autowired
private VolunteerApplyDao volunteerApplyDao;
@Autowired
private OldActivityDao oldActivityDao;
@Autowired
private OldBranchesDao oldBranchesDao;
@Autowired
private OldTextbookDao oldTextbookDao;
@Autowired
private OldVolunteerApplyDao oldVolunteerApplyDao;
@Scheduled(initialDelay = 1000, fixedRate = 3600 * 1000)
public void updateActivityData() {
log.info("活动数据同步中————");
//创建新的活动集合
List<Activity> activities = activityDao.findAll();
//旧的活动集合
List<OldActivity> oldActivities = oldActivityDao.findAll();
for (Activity activity : activities) {
for (OldActivity oldActivity : oldActivities) {
//判断id主键是否相同
assert activity != null;
if (activity.getId().equals(oldActivity.getId())) {
//判断更新时间是否相同
if (activity.getUpdatedAt() != oldActivity.getUpdatedAt()) {
//复制
BeanUtils.copyProperties(activity, oldActivity);
//更新保存
oldActivityDao.save(oldActivity);
}
//如果相同则设置为null
activity = null;
oldActivity = null;
}
//判断是否需要删除
if (oldActivity != null) {
oldActivityDao.deleteById(oldActivity.getId());
}
}
//判断是否新增
if (activity != null) {
OldActivity oldActivity = new OldActivity();
//复制
BeanUtils.copyProperties(activity, oldActivity);
oldActivityDao.save(oldActivity);
}
}
log.info("活动数据同步结束————");
}
}
server.port=8085
spring.aop.proxy-target-class= true
# true为使用CGLIB代理 #172.30.30.86
spring.datasource.remote0.url = jdbc:mysql://192.168.0.232:3306/yl_test?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
spring.datasource.remote0.username = root
spring.datasource.remote0.password = tykj@2022
spring.datasource.remote0.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.remote1.url = jdbc:mysql://192.168.0.232:3307/yl_test?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
spring.datasource.remote1.username = root
spring.datasource.remote1.password = tykj@2022
spring.datasource.remote1.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.type= com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initialSize = 5
spring.datasource.druid.min-idle = 5
spring.datasource.druid.max-active = 20
spring.datasource.druid.max-wait= 60000
spring.datasource.druid.time-between-eviction-runs-millis = 60000
spring.jpa.hibernate.ddl-auto=update
spring.mvc.async.request-timeout= -1
#172.30.30.89
spring.redis.host=192.168.0.233
spring.redis.password=
spring.redis.port=6379
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
## 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
## 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=20
## 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
## 连接超时时间(毫秒)
spring.redis.timeout=5000000
logging.file.name=./log/worksite.log
server.port=8085
spring.aop.proxy-target-class= true
# true为使用CGLIB代理 #172.30.30.86
spring.datasource.remote0.url = jdbc:mysql://192.168.0.232:3306/yl_test?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
spring.datasource.remote0.username = root
spring.datasource.remote0.password = tykj@2022
spring.datasource.remote0.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.remote1.url = jdbc:mysql://192.168.0.232:3307/yl_test?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
spring.datasource.remote1.username = root
spring.datasource.remote1.password = tykj@2022
spring.datasource.remote1.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.type= com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initialSize = 5
spring.datasource.druid.min-idle = 5
spring.datasource.druid.max-active = 20
spring.datasource.druid.max-wait= 60000
spring.datasource.druid.time-between-eviction-runs-millis = 60000
spring.jpa.hibernate.ddl-auto=update
spring.mvc.async.request-timeout= -1
#172.30.30.89
spring.redis.host=192.168.0.233
spring.redis.password=
spring.redis.port=6379
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
## 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
## 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=20
## 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
## 连接超时时间(毫秒)
spring.redis.timeout=5000000
logging.file.name=./log/worksite.log
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论