提交 6bad79ed authored 作者: 黄承天's avatar 黄承天

[用户模块]增加同步秘钥、用户、组织架构信息相关功能

上级 5b3474bf
package com.tykj.workflowcore.base.result; package com.tykj.workflowcore.base.result;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
...@@ -9,6 +10,7 @@ import lombok.NoArgsConstructor; ...@@ -9,6 +10,7 @@ import lombok.NoArgsConstructor;
* @author dengdiyi * @author dengdiyi
* @description 接口返回统一标准类 * @description 接口返回统一标准类
*/ */
@JsonIgnoreProperties(ignoreUnknown = true)
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
......
package com.tykj.workflowcore.user.controller;
import com.google.common.collect.ImmutableMap;
import com.tykj.workflowcore.user.service.impl.SyncDataService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "数据同步")
@RequestMapping("/sync/data")
@RestController
public class SyncDataController {
@Autowired
private SyncDataService syncDataService;
@ApiOperation("主动触发一次数据同步操作")
@PostMapping("/execute")
public ResponseEntity execute() {
syncDataService.execute();
return ResponseEntity.ok(ImmutableMap.of("msg", "同步完成"));
}
}
package com.tykj.workflowcore.user.pojo; package com.tykj.workflowcore.user.pojo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.tykj.workflowcore.user.pojo.vo.OrganizationVo; import com.tykj.workflowcore.user.pojo.vo.OrganizationVo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -10,6 +11,7 @@ import lombok.NoArgsConstructor; ...@@ -10,6 +11,7 @@ import lombok.NoArgsConstructor;
import javax.persistence.*; import javax.persistence.*;
import java.util.ArrayList; import java.util.ArrayList;
@JsonIgnoreProperties(ignoreUnknown = true)
@Entity @Entity
@Data @Data
@NoArgsConstructor @NoArgsConstructor
......
package com.tykj.workflowcore.user.pojo; package com.tykj.workflowcore.user.pojo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -8,6 +9,7 @@ import lombok.NoArgsConstructor; ...@@ -8,6 +9,7 @@ import lombok.NoArgsConstructor;
import javax.persistence.*; import javax.persistence.*;
@JsonIgnoreProperties(ignoreUnknown = true)
@Entity @Entity
@Data @Data
@NoArgsConstructor @NoArgsConstructor
......
package com.tykj.workflowcore.user.pojo; package com.tykj.workflowcore.user.pojo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.programmaticallyspeaking.aptdemo.NoAutoIncreament; import com.programmaticallyspeaking.aptdemo.NoAutoIncreament;
import com.tykj.workflowcore.user.pojo.vo.OrganizationVo; import com.tykj.workflowcore.user.pojo.vo.OrganizationVo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -14,6 +15,7 @@ import javax.persistence.*; ...@@ -14,6 +15,7 @@ import javax.persistence.*;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@JsonIgnoreProperties(ignoreUnknown = true)
@Entity @Entity
@Data @Data
@NoArgsConstructor @NoArgsConstructor
...@@ -43,7 +45,7 @@ public class User { ...@@ -43,7 +45,7 @@ public class User {
private Integer locked = 0; private Integer locked = 0;
@ApiModelProperty(value = "用户的性别") @ApiModelProperty(value = "用户的性别")
private char sex ; private String sex ;
@ApiModelProperty(value = "身份证号") @ApiModelProperty(value = "身份证号")
private String idCardNumber; private String idCardNumber;
......
package com.tykj.workflowcore.user.service.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.tykj.workflowcore.base.result.ResultObj;
import com.tykj.workflowcore.user.dao.OrganizationDao;
import com.tykj.workflowcore.user.dao.StorageKeyDao;
import com.tykj.workflowcore.user.dao.UserDao;
import com.tykj.workflowcore.user.pojo.Organization;
import com.tykj.workflowcore.user.pojo.StorageKey;
import com.tykj.workflowcore.user.pojo.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.List;
import static java.util.Objects.nonNull;
@Slf4j
@Service
public class SyncDataService {
@Autowired
private OrganizationDao organizationDao;
@Autowired
private UserDao userDao;
@Autowired
private StorageKeyDao storageKeyDao;
private RestTemplate restTemplate = new RestTemplate();
@Value("${sync.ip}")
private String ip;
@Value("${sync.port}")
private Integer port = 8880;
private String url = String.format("http://%s:%s", ip, port);
@Scheduled(cron = "0 0 */1 * * ?")
public void execute() {
syncKey();
syncUser();
syncOrganization();
}
private void syncKey() {
log.info("开始同步秘钥信息...");
ResponseEntity<String> entity = restTemplate.postForEntity(url + "/storageKey/getKeys", null, String.class, new HashMap<>());
if (nonNull(entity) && nonNull(entity.getBody())) {
try {
ResultObj<StorageKey> resultObj = new ObjectMapper().readValue(entity.getBody(), new TypeReference<ResultObj<StorageKey>>() {
});
StorageKey key = resultObj.getData();
storageKeyDao.save(key);
} catch (JsonProcessingException e) {
e.printStackTrace();
log.error("解析json数据失败");
}
}
}
private void syncUser() {
log.info("开始同步用户信息...");
ResponseEntity<String> entity = restTemplate.getForEntity(url + "/user/all", String.class, new HashMap<>());
if (nonNull(entity) && nonNull(entity.getBody())) {
try {
ResultObj<List<User>> resultObj = new ObjectMapper().readValue(entity.getBody(), new TypeReference<ResultObj<List<User>>>() {
});
List<User> users = resultObj.getData();
userDao.saveAll(users);
} catch (JsonProcessingException e) {
e.printStackTrace();
log.error("解析json数据失败");
}
}
}
private void syncOrganization() {
log.info("开始同步组织架构信息...");
ResponseEntity<String> entity = restTemplate.getForEntity(url + "/organization/all", String.class, new HashMap<>());
if (nonNull(entity) && nonNull(entity.getBody())) {
try {
ResultObj<List<Organization>> resultObj = new ObjectMapper().readValue(entity.getBody(), new TypeReference<ResultObj<List<Organization>>>() {
});
List<Organization> organizations = resultObj.getData();
organizationDao.saveAll(organizations);
} catch (JsonProcessingException e) {
e.printStackTrace();
log.error("解析json数据失败");
}
}
}
}
...@@ -17,12 +17,15 @@ spring: ...@@ -17,12 +17,15 @@ spring:
maximum-pool-size: 60 maximum-pool-size: 60
minimum-idle: 10 minimum-idle: 10
jpa: jpa:
show-sql: true show-sql: false
hibernate: hibernate:
naming: naming:
physical-strategy: com.tykj.workflow2.base.config.ToUpperCase physical-strategy: com.tykj.workflowcore.base.config.ToUpperCase
ddl-auto: update ddl-auto: update
database-platform: org.hibernate.dialect.MySQL8Dialect database-platform: org.hibernate.dialect.MySQL8Dialect
sync:
ip: 192.168.102.171
port: 8880
server: server:
port: 8088 port: 8800
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论