Commit 9d163ab4 by xieshaohua

麦当劳peopleCenter用户同步

parent 13f9a9ee
......@@ -157,6 +157,12 @@
<artifactId>crypto</artifactId>
<version>1.1.5-release</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
</dependencies>
<dependencyManagement>
......
......@@ -4,10 +4,12 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableAsync
public class LoginApplication {
public static void main(String[] args) {
......
package com.keymobile.login.api;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.keymobile.login.persistence.SsoOrganMcclRepository;
import com.keymobile.login.persistence.SsoOrganRepository;
import com.keymobile.login.persistence.SsoUserMcclRepository;
import com.keymobile.login.persistence.SsoUserRepository;
import com.keymobile.login.persistence.model.SsoOrganAbstract;
import com.keymobile.login.persistence.model.SsoOrganMcclAbstract;
import com.keymobile.login.persistence.model.SsoUserAbstract;
import com.keymobile.login.persistence.model.SsoUserMcclAbstract;
import com.keymobile.login.util.HttpUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.*;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.*;
import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;
import javax.transaction.Transactional;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.ParseException;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* @author xiesh
* @version 1.0.0
* @date 2024/4/26
* @desc 用户中心api
*/
@RestController
@RequestMapping(value = "/peopleCenter")
@Api(value = "用户中心", tags = {"用户中心"})
public class PeopleCenterApi {
private static final Logger log = LoggerFactory.getLogger(LoginManagement.class);
@Value("${peopleCenter.sysSecret}")
private String sysSecret;
@Value("${peopleCenter.sysId}")
private String sysId;
@Value("${peopleCenter.tokenUrl}")
private String tokenUrl;
@Value("${peopleCenter.userUrl}")
private String userUrl;
@Value("${peopleCenter.organUrl}")
private String organUrl;
@Value("${peopleCenter.organRoot:81}")
private String organRootId;
private final String HEADER_AUTHORIZATION = "Authorization";
private final String HEADER_SYSID = "SysId";
@Autowired
private DataSource dataSource;
@Autowired
private SsoUserRepository ssoUserRepository;
@Autowired
private SsoUserMcclRepository ssoUserMcclRepository;
@Autowired
private SsoOrganRepository ssoOrganRepository;
@Autowired
private SsoOrganMcclRepository ssoOrganMcclRepository;
@Autowired
private RedisTemplate<String, String> redisTemplate;
@PostMapping(value = "/deleteAllUsers")
public void deleteAllUsers(@RequestParam(required = false) String type) {
if (StringUtils.equalsIgnoreCase(type, "mccl")) {
ssoUserMcclRepository.deleteAll();
} else {
ssoUserRepository.deleteAll();
}
}
@PostMapping(value = "/deleteUsers")
public void deleteUsers(@RequestParam(required = false) String type, @RequestParam List<String> ids) {
if (StringUtils.equalsIgnoreCase(type, "mccl")) {
ssoUserMcclRepository.findAllById(ids).forEach(e -> ssoUserMcclRepository.delete(e));
} else {
ssoUserRepository.findAllById(ids).forEach(e -> ssoUserRepository.delete(e));
}
}
@PostMapping(value = "/deleteAllOrgans")
public void deleteAllOrgans(@RequestParam(required = false) String type) {
if (StringUtils.equalsIgnoreCase(type, "mccl")) {
ssoOrganMcclRepository.deleteAll();
} else {
ssoOrganRepository.deleteAll();
}
}
@PostMapping(value = "/deleteOrgans")
public void deleteOrgans(@RequestParam(required = false) String type, @RequestParam List<String> ids) {
if (StringUtils.equalsIgnoreCase(type, "mccl")) {
ssoOrganMcclRepository.findAllById(ids).forEach(e -> ssoOrganMcclRepository.delete(e));
} else {
ssoOrganRepository.findAllById(ids).forEach(e -> ssoOrganRepository.delete(e));
}
}
@PostMapping(value = "/pageMcclUser")
public Page<SsoUserMcclAbstract> pageMcclUser(@RequestParam(required = false) String keyword,
@RequestParam(required = false) String username,
@RequestParam(required = false) String chinesename,
@RequestParam(required = false) String employeenumber,
@RequestParam(required = false) String organizationid,
@RequestParam(required = false, defaultValue = "true") Boolean isalllevel,
@RequestParam(required = false) String organizationname,
@ApiParam("排序字段") @RequestParam(required = false) String sortingType,
@ApiParam("排序规则 ASC DESC") @RequestParam(required = false) String sortingRule,
@RequestParam(required = false, defaultValue = "1") Integer pageNo,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
String sortField = "";
if (StringUtils.isNotBlank(sortingType)) {
sortField = sortingType;
} else {
sortField = "employeenumber";
}
Sort.Direction direction = null;
if (StringUtils.equalsIgnoreCase(sortingRule, "DESC")) {
direction = Sort.Direction.DESC;
} else {
direction = Sort.Direction.ASC;
}
Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by(direction, sortField));
Specification<SsoUserMcclAbstract> specification = getSpecification(keyword, username, chinesename, employeenumber, organizationid, isalllevel, organizationname);
Page<SsoUserMcclAbstract> pages = ssoUserMcclRepository.findAll(specification, pageable);
return pages;
}
@PostMapping(value = "/listMcclUser")
public List<SsoUserMcclAbstract> listMcclUser(@RequestParam(required = false) String keyword,
@RequestParam(required = false) String username,
@RequestParam(required = false) String chinesename,
@RequestParam(required = false) String employeenumber,
@RequestParam(required = false) String organizationid,
@RequestParam(required = false, defaultValue = "true") Boolean isalllevel,
@RequestParam(required = false) String organizationname,
@ApiParam("排序字段") @RequestParam(required = false) String sortingType,
@ApiParam("排序规则 ASC DESC") @RequestParam(required = false) String sortingRule) {
String sortField = "";
if (StringUtils.isNotBlank(sortingType)) {
sortField = sortingType;
} else {
sortField = "employeenumber";
}
Sort.Direction direction = null;
if (StringUtils.equalsIgnoreCase(sortingRule, "DESC")) {
direction = Sort.Direction.DESC;
} else {
direction = Sort.Direction.ASC;
}
Specification<SsoUserMcclAbstract> specification = getSpecification(keyword, username, chinesename, employeenumber, organizationid, isalllevel, organizationname);
List<SsoUserMcclAbstract> list = ssoUserMcclRepository.findAll(specification, Sort.by(direction, sortField));
return list;
}
@PostMapping(value = "/syncMccl")
public void syncMccl() {
try (Connection conn = dataSource.getConnection();
Statement st = conn.createStatement()) {
String deleteOrganMccl = "delete from sso_organ_mccl";
String deleteUserMccl = "delete from sso_user_mccl";
String insertOrganMccl = "insert into sso_organ_mccl select * from sso_organ so where organizationname like '%MCCL%' or organizationid ='" + organRootId + "'";
String insertUserMccl = "insert into sso_user_mccl select * from sso_user so where organizationname like '%MCCL%' or organizationid ='" + 81 + "'";
String updateOrganRootPath = "update sso_organ_mccl a left join sso_organ_mccl b on a.parentorganizationid = b.organizationid " +
" set a.path=concat('/',a.organizationname), " +
" a.idpath=concat('/',a.organizationid) " +
" where b.organizationid is null and a.path is null;";
String updateOrganPathSql = "update sso_organ_mccl a " +
" join sso_organ_mccl b on a.parentorganizationid =b.organizationid " +
" set a.path=concat(b.path,'/',a.organizationname), " +
" a.idpath=concat(b.idpath,'/',a.organizationid) " +
" where a.path is null and b.path is not null";
String updateUserPathSql = "update sso_user_mccl a " +
" join sso_organ_mccl b on a.organizationid =b.organizationid " +
" set a.path=b.path, " +
" a.idpath=b.idpath " +
" where a.path is null and b.path is not null";
st.executeUpdate(deleteOrganMccl);
st.executeUpdate(deleteUserMccl);
st.executeUpdate(insertOrganMccl);
st.executeUpdate(insertUserMccl);
st.executeUpdate(updateOrganRootPath);
int index = 0;
while (true) {
int updateSize = st.executeUpdate(updateOrganPathSql);
if (updateSize < 1) {
break;
}
if (index++ > 20) {
break;
}
}
st.executeUpdate(updateUserPathSql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
@PostMapping(value = "/getMcclTree")
public SsoOrganMcclAbstract getTree(@RequestParam(required = false) String rootId) {
Map<String, SsoOrganMcclAbstract> userMap = new LinkedHashMap<>();
ssoOrganMcclRepository.findAll().forEach(e -> userMap.put(e.getOrganizationid(), e));
if (StringUtils.isBlank(rootId)) {
rootId = organRootId;
}
SsoOrganMcclAbstract root = userMap.get(rootId);
if (root == null) {
return null;
}
buildTree(userMap, root);
return root;
}
@RequestMapping(value = "/userSync", method = {RequestMethod.POST, RequestMethod.GET})
@Async
public void userSync(HttpServletRequest request, @RequestParam(required = false) Integer startPage,
@RequestParam(required = false, defaultValue = "false") Boolean isDelete) {
log.info("开始用户同步");
String token = redisTemplate.opsForValue().get("pcToken");
if (StringUtils.isBlank(token)) {
token = getToken();
redisTemplate.opsForValue().set("pcToken", token, 60 * 60, TimeUnit.SECONDS);
}
if (StringUtils.isBlank(token)) {
log.info("token获取失败");
return;
}
int count = 0;
int page = 1;
JSONArray searchAfters = null;
Map<String, String> header = new HashMap<>();
header.put(HEADER_AUTHORIZATION, token);
header.put("SysId", sysId);
if (startPage == null && isDelete) {
ssoUserRepository.deleteAll();
}
while (true) {
Map<String, Object> body = new HashMap<>();
body.put("page", page);
if (searchAfters != null) {
body.put("searchAfters", searchAfters);
}
String result = HttpUtil.doPost(userUrl, header, JSON.toJSONString(body));
JSONObject resultJson = JSON.parseObject(result);
if (StringUtils.equalsIgnoreCase(resultJson.getString("code"), "SUCCESS")) {
JSONObject dataJson = resultJson.getJSONObject("data");
if (dataJson.get("list") != null) {
List<SsoUserAbstract> users = JSON.parseArray(JSON.toJSONString(dataJson.get("list")), SsoUserAbstract.class);
users.forEach(e -> ssoUserRepository.save(e));
count = Integer.valueOf(dataJson.get("total").toString());
if (page % 10 == 0) {
log.info("用户总数:{},已完成分页:{},数量:{}", count, page, page * 50);
}
page++;
if (startPage != null && startPage > 1) {
page = startPage;
startPage = 0;
}
searchAfters = dataJson.getJSONArray("searchAfters");
} else {
break;
}
} else {
break;
}
if ((page - 1) * 50 > count) {
log.info("用户分页:{},总数:{},跳出", page, count);
break;
}
}
log.info("完成用户同步");
}
@RequestMapping(value = "/organSync", method = {RequestMethod.POST, RequestMethod.GET})
@Async
public void organSync(HttpServletRequest request, @RequestParam(required = false) Integer startPage,
@RequestParam(required = false, defaultValue = "false") Boolean isDelete) {
String token = redisTemplate.opsForValue().get("pcToken");
if (StringUtils.isBlank(token)) {
token = getToken();
redisTemplate.opsForValue().set("pcToken", token, 60 * 60, TimeUnit.SECONDS);
}
if (StringUtils.isBlank(token)) {
log.info("token获取失败");
return;
}
int count = 0;
int page = 1;
JSONArray searchAfters = null;
Map<String, String> header = new HashMap<>();
header.put(HEADER_AUTHORIZATION, token);
header.put("SysId", sysId);
if (startPage == null && isDelete) {
ssoOrganRepository.deleteAll();
}
while (true) {
Map<String, Object> body = new HashMap<>();
body.put("page", page);
if (searchAfters != null) {
body.put("searchAfters", searchAfters);
}
String result = HttpUtil.doPost(organUrl, header, JSON.toJSONString(body));
JSONObject resultJson = JSON.parseObject(result);
if (StringUtils.equalsIgnoreCase(resultJson.getString("code"), "SUCCESS")) {
JSONObject dataJson = resultJson.getJSONObject("data");
if (dataJson.get("list") != null) {
List<SsoOrganAbstract> organs = JSON.parseArray(JSON.toJSONString(dataJson.get("list")), SsoOrganAbstract.class);
organs.forEach(e -> {
ssoOrganRepository.save(e);
});
count = Integer.valueOf(dataJson.get("total").toString());
if (page % 10 == 0) {
log.info("机构总数:{},已完成分页:{},数量:{}", count, page, page * 50);
}
page++;
if (startPage != null && startPage > 1) {
page = startPage;
startPage = 0;
}
searchAfters = dataJson.getJSONArray("searchAfters");
} else {
break;
}
} else {
break;
}
if ((page - 1) * 50 > count) {
log.info("机构分页:{},总数:{},跳出", page, count);
break;
}
}
log.info("完成机构同步");
}
private String getToken() {
Map<String, String> body = new HashMap<>();
body.put("sysSecret", sysSecret);
body.put("sysId", sysId);
JSON.toJSONString(body);
String result = HttpUtil.doPost(tokenUrl, null, JSON.toJSONString(body));
JSONObject jsonObject = JSON.parseObject(result);
if (StringUtils.equalsIgnoreCase(jsonObject.getString("code"), "success")) {
return jsonObject.getJSONObject("data").getString("access_token");
}
return null;
}
private void buildTree(Map<String, SsoOrganMcclAbstract> map, SsoOrganMcclAbstract node) {
for (SsoOrganMcclAbstract item : map.values()) {
if (StringUtils.equals(item.getParentorganizationid(), node.getOrganizationid())) {
node.getChildren().add(item);
buildTree(map, item);
}
}
}
private Specification<SsoUserMcclAbstract> getSpecification(String keyword,
String username,
String chinesename,
String employeenumber,
String organizationid,
Boolean isalllevel,
String organizationname) {
Specification<SsoUserMcclAbstract> specification = (root, cq, cb) -> {
List<Predicate> list = new ArrayList<>();
if (StringUtils.isNotEmpty(username)) {
list.add(cb.equal(root.get("username"), username));
}
if (StringUtils.isNotBlank(keyword)) {
list.add(cb.or(cb.like(root.get("username"), "%" + username + "%"),
cb.like(root.get("chinesename"), "%" + chinesename + "%"),
cb.like(root.get("employeenumber"), "%" + employeenumber + "%")));
}
if (StringUtils.isNotEmpty(chinesename)) {
list.add(cb.like(root.get("chinesename"), "%" + chinesename + "%"));
}
if (StringUtils.isNotEmpty(employeenumber)) {
list.add(cb.equal(root.get("employeenumber"), employeenumber));
}
if (StringUtils.isNotEmpty(organizationid)) {
if (isalllevel) {
list.add(cb.or(cb.like(root.get("idpath"), "%/" + organizationid + "/%"),
cb.like(root.get("idpath"), "%/" + organizationid)));
} else {
list.add(cb.equal(root.get("organizationid"), organizationid));
}
}
if (StringUtils.isNotEmpty(organizationname)) {
list.add(cb.equal(root.get("organizationname"), organizationname));
}
cq.where(cb.and(list.toArray(new Predicate[0])));
return cq.getRestriction();
};
return specification;
}
}
package com.keymobile.login.conf;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.keymobile.login.api"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("DATA MODEL RESTful APIs")
.description("Spring Boot Swagger2")
.termsOfServiceUrl("http://www.keymobile.com.cn/")
.contact("keymobile")
.version("1.0")
.build();
}
}
......@@ -10,7 +10,7 @@ import org.springframework.web.context.request.RequestContextHolder;
import javax.servlet.*;
import java.io.IOException;
@Component
//@Component
public class MdcLogEnhancerFilter implements Filter {
@Override
......
package com.keymobile.login.persistence;
import com.keymobile.login.persistence.model.SsoOrganMcclAbstract;
import org.springframework.data.repository.CrudRepository;
import javax.transaction.Transactional;
import java.util.List;
@Transactional
public interface SsoOrganMcclRepository extends CrudRepository<SsoOrganMcclAbstract, String> {
List<SsoOrganMcclAbstract> getByOrganizationname(String name);
}
package com.keymobile.login.persistence;
import com.keymobile.login.persistence.model.SsoOrganAbstract;
import com.keymobile.login.persistence.model.SsoUserAbstract;
import org.springframework.data.repository.CrudRepository;
import javax.transaction.Transactional;
import java.util.List;
@Transactional
public interface SsoOrganRepository extends CrudRepository<SsoOrganAbstract, String> {
List<SsoUserAbstract> getByOrganizationname(String name);
}
package com.keymobile.login.persistence;
import com.keymobile.login.persistence.model.SsoUserAbstract;
import com.keymobile.login.persistence.model.SsoUserMcclAbstract;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.repository.CrudRepository;
import javax.transaction.Transactional;
import java.util.List;
@Transactional
public interface SsoUserMcclRepository extends CrudRepository<SsoUserMcclAbstract, String> {
List<SsoUserMcclAbstract> getByUsername(String name);
List<SsoUserMcclAbstract> getByOrganizationnameLike(String organName);
Page<SsoUserMcclAbstract> findAll(Specification<SsoUserMcclAbstract> spec, Pageable pageable);
List<SsoUserMcclAbstract> findAll(Specification<SsoUserMcclAbstract> spec, Sort sort);
}
package com.keymobile.login.persistence;
import com.keymobile.login.persistence.model.SsoUserAbstract;
import org.springframework.data.repository.CrudRepository;
import javax.transaction.Transactional;
import java.util.List;
@Transactional
public interface SsoUserRepository extends CrudRepository<SsoUserAbstract, String> {
List<SsoUserAbstract> getByUsername(String name);
List<SsoUserAbstract> getByOrganizationnameLike(String organName);
}
package com.keymobile.login.persistence.model;
import javax.persistence.*;
/**
* @author xiesh
* @version 1.0.0
* @date 2024/4/26
* @desc
*/
@Entity
@Table(name = "sso_organ")
public class SsoOrganAbstract {
@Id
private String organizationid;
private String orgtype;
private String isstore;
private String orgmail;
private String address;
private String telephonenumber;
private String cityname;
private String parentorganizationid;
private String internalexternal;
private String opstype;
private String storemanagernum;
private String postalcode;
private String citycode;
private String organizationname;
private String company;
private String location;
private String datefrom;
private String parentorganization;
private String costcenter;
private String path;
private String idpath;
public SsoOrganAbstract() {
}
public String getOrganizationid() {
return organizationid;
}
public void setOrganizationid(String organizationid) {
this.organizationid = organizationid;
}
public String getOrgtype() {
return orgtype;
}
public void setOrgtype(String orgtype) {
this.orgtype = orgtype;
}
public String getIsstore() {
return isstore;
}
public void setIsstore(String isstore) {
this.isstore = isstore;
}
public String getOrgmail() {
return orgmail;
}
public void setOrgmail(String orgmail) {
this.orgmail = orgmail;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTelephonenumber() {
return telephonenumber;
}
public void setTelephonenumber(String telephonenumber) {
this.telephonenumber = telephonenumber;
}
public String getCityname() {
return cityname;
}
public void setCityname(String cityname) {
this.cityname = cityname;
}
public String getParentorganizationid() {
return parentorganizationid;
}
public void setParentorganizationid(String parentorganizationid) {
this.parentorganizationid = parentorganizationid;
}
public String getInternalexternal() {
return internalexternal;
}
public void setInternalexternal(String internalexternal) {
this.internalexternal = internalexternal;
}
public String getOpstype() {
return opstype;
}
public void setOpstype(String opstype) {
this.opstype = opstype;
}
public String getStoremanagernum() {
return storemanagernum;
}
public void setStoremanagernum(String storemanagernum) {
this.storemanagernum = storemanagernum;
}
public String getPostalcode() {
return postalcode;
}
public void setPostalcode(String postalcode) {
this.postalcode = postalcode;
}
public String getCitycode() {
return citycode;
}
public void setCitycode(String citycode) {
this.citycode = citycode;
}
public String getOrganizationname() {
return organizationname;
}
public void setOrganizationname(String organizationname) {
this.organizationname = organizationname;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getDatefrom() {
return datefrom;
}
public void setDatefrom(String datefrom) {
this.datefrom = datefrom;
}
public String getParentorganization() {
return parentorganization;
}
public void setParentorganization(String parentorganization) {
this.parentorganization = parentorganization;
}
public String getCostcenter() {
return costcenter;
}
public void setCostcenter(String costcenter) {
this.costcenter = costcenter;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getIdpath() {
return idpath;
}
public void setIdpath(String idpath) {
this.idpath = idpath;
}
@Override
public String toString() {
return "SsoOrganAbstract{" +
"organizationid='" + organizationid + '\'' +
", orgtype='" + orgtype + '\'' +
", isstore='" + isstore + '\'' +
", orgmail='" + orgmail + '\'' +
", address='" + address + '\'' +
", telephonenumber='" + telephonenumber + '\'' +
", cityname='" + cityname + '\'' +
", parentorganizationid='" + parentorganizationid + '\'' +
", internalexternal='" + internalexternal + '\'' +
", opstype='" + opstype + '\'' +
", storemanagernum='" + storemanagernum + '\'' +
", postalcode='" + postalcode + '\'' +
", citycode='" + citycode + '\'' +
", organizationname='" + organizationname + '\'' +
", company='" + company + '\'' +
", location='" + location + '\'' +
", datefrom='" + datefrom + '\'' +
", parentorganization='" + parentorganization + '\'' +
", costcenter='" + costcenter + '\'' +
'}';
}
}
package com.keymobile.login.persistence.model;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.ArrayList;
import java.util.List;
/**
* @author xiesh
* @version 1.0.0
* @date 2024/4/26
* @desc
*/
@Entity
@Table(name = "sso_organ_mccl")
public class SsoOrganMcclAbstract {
@Id
private String organizationid;
private String orgtype;
private String isstore;
private String orgmail;
private String address;
private String telephonenumber;
private String cityname;
private String parentorganizationid;
private String internalexternal;
private String opstype;
private String storemanagernum;
private String postalcode;
private String citycode;
private String organizationname;
private String company;
private String location;
private String datefrom;
private String parentorganization;
private String costcenter;
private String path;
private String idpath;
@Transient
private List<SsoOrganMcclAbstract> children = new ArrayList<>();
public String getOrganizationid() {
return organizationid;
}
public void setOrganizationid(String organizationid) {
this.organizationid = organizationid;
}
public String getOrgtype() {
return orgtype;
}
public void setOrgtype(String orgtype) {
this.orgtype = orgtype;
}
public String getIsstore() {
return isstore;
}
public void setIsstore(String isstore) {
this.isstore = isstore;
}
public String getOrgmail() {
return orgmail;
}
public void setOrgmail(String orgmail) {
this.orgmail = orgmail;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTelephonenumber() {
return telephonenumber;
}
public void setTelephonenumber(String telephonenumber) {
this.telephonenumber = telephonenumber;
}
public String getCityname() {
return cityname;
}
public void setCityname(String cityname) {
this.cityname = cityname;
}
public String getParentorganizationid() {
return parentorganizationid;
}
public void setParentorganizationid(String parentorganizationid) {
this.parentorganizationid = parentorganizationid;
}
public String getInternalexternal() {
return internalexternal;
}
public void setInternalexternal(String internalexternal) {
this.internalexternal = internalexternal;
}
public String getOpstype() {
return opstype;
}
public void setOpstype(String opstype) {
this.opstype = opstype;
}
public String getStoremanagernum() {
return storemanagernum;
}
public void setStoremanagernum(String storemanagernum) {
this.storemanagernum = storemanagernum;
}
public String getPostalcode() {
return postalcode;
}
public void setPostalcode(String postalcode) {
this.postalcode = postalcode;
}
public String getCitycode() {
return citycode;
}
public void setCitycode(String citycode) {
this.citycode = citycode;
}
public String getOrganizationname() {
return organizationname;
}
public void setOrganizationname(String organizationname) {
this.organizationname = organizationname;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getDatefrom() {
return datefrom;
}
public void setDatefrom(String datefrom) {
this.datefrom = datefrom;
}
public String getParentorganization() {
return parentorganization;
}
public void setParentorganization(String parentorganization) {
this.parentorganization = parentorganization;
}
public String getCostcenter() {
return costcenter;
}
public void setCostcenter(String costcenter) {
this.costcenter = costcenter;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getIdpath() {
return idpath;
}
public void setIdpath(String idpath) {
this.idpath = idpath;
}
public List<SsoOrganMcclAbstract> getChildren() {
return children;
}
public void setChildren(List<SsoOrganMcclAbstract> children) {
this.children = children;
}
@Override
public String toString() {
return "SsoOrganAbstract{" +
"organizationid='" + organizationid + '\'' +
", orgtype='" + orgtype + '\'' +
", isstore='" + isstore + '\'' +
", orgmail='" + orgmail + '\'' +
", address='" + address + '\'' +
", telephonenumber='" + telephonenumber + '\'' +
", cityname='" + cityname + '\'' +
", parentorganizationid='" + parentorganizationid + '\'' +
", internalexternal='" + internalexternal + '\'' +
", opstype='" + opstype + '\'' +
", storemanagernum='" + storemanagernum + '\'' +
", postalcode='" + postalcode + '\'' +
", citycode='" + citycode + '\'' +
", organizationname='" + organizationname + '\'' +
", company='" + company + '\'' +
", location='" + location + '\'' +
", datefrom='" + datefrom + '\'' +
", parentorganization='" + parentorganization + '\'' +
", costcenter='" + costcenter + '\'' +
'}';
}
}
package com.keymobile.login.persistence.model;
import javax.persistence.*;
@Entity
@Table(name = "sso_user")
public class SsoUserAbstract {
@Id
private String employeenumber;
private String organizationid;
private String firstname;
private String adid;
private String organizationname;
private String workcity;
private String chinesename;
private String persontype;
private String jobname;
private String lastname;
private String username;
private String path;
private String idpath;
public SsoUserAbstract() {
}
public String getOrganizationid() {
return organizationid;
}
public void setOrganizationid(String organizationid) {
this.organizationid = organizationid;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getAdid() {
return adid;
}
public void setAdid(String adid) {
this.adid = adid;
}
public String getEmployeenumber() {
return employeenumber;
}
public void setEmployeenumber(String employeenumber) {
this.employeenumber = employeenumber;
}
public String getOrganizationname() {
return organizationname;
}
public void setOrganizationname(String organizationname) {
this.organizationname = organizationname;
}
public String getWorkcity() {
return workcity;
}
public void setWorkcity(String workcity) {
this.workcity = workcity;
}
public String getChinesename() {
return chinesename;
}
public void setChinesename(String chinesename) {
this.chinesename = chinesename;
}
public String getPersontype() {
return persontype;
}
public void setPersontype(String persontype) {
this.persontype = persontype;
}
public String getJobname() {
return jobname;
}
public void setJobname(String jobname) {
this.jobname = jobname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getIdpath() {
return idpath;
}
public void setIdpath(String idpath) {
this.idpath = idpath;
}
}
package com.keymobile.login.persistence.model;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
@Entity
@Table(name = "sso_user_mccl")
public class SsoUserMcclAbstract {
@Id
protected String employeenumber;
protected String organizationid;
protected String firstname;
protected String adid;
protected String organizationname;
protected String workcity;
protected String chinesename;
protected String persontype;
protected String jobname;
protected String lastname;
protected String username;
protected String path;
protected String idpath;
public SsoUserMcclAbstract() {
}
public String getEmployeenumber() {
return employeenumber;
}
public void setEmployeenumber(String employeenumber) {
this.employeenumber = employeenumber;
}
public String getOrganizationid() {
return organizationid;
}
public void setOrganizationid(String organizationid) {
this.organizationid = organizationid;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getAdid() {
return adid;
}
public void setAdid(String adid) {
this.adid = adid;
}
public String getOrganizationname() {
return organizationname;
}
public void setOrganizationname(String organizationname) {
this.organizationname = organizationname;
}
public String getWorkcity() {
return workcity;
}
public void setWorkcity(String workcity) {
this.workcity = workcity;
}
public String getChinesename() {
return chinesename;
}
public void setChinesename(String chinesename) {
this.chinesename = chinesename;
}
public String getPersontype() {
return persontype;
}
public void setPersontype(String persontype) {
this.persontype = persontype;
}
public String getJobname() {
return jobname;
}
public void setJobname(String jobname) {
this.jobname = jobname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getIdpath() {
return idpath;
}
public void setIdpath(String idpath) {
this.idpath = idpath;
}
@Override
public String toString() {
return "SsoUserMcclAbstract{" +
"employeenumber='" + employeenumber + '\'' +
", organizationid='" + organizationid + '\'' +
", firstname='" + firstname + '\'' +
", adid='" + adid + '\'' +
", organizationname='" + organizationname + '\'' +
", workcity='" + workcity + '\'' +
", chinesename='" + chinesename + '\'' +
", persontype='" + persontype + '\'' +
", jobname='" + jobname + '\'' +
", lastname='" + lastname + '\'' +
", username='" + username + '\'' +
", path='" + path + '\'' +
", idpath='" + idpath + '\'' +
'}';
}
}
package com.keymobile.login.util;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.util.Map;
/**
* @author xiesh
* @version 1.0.0
* @date 2024/4/26
* @desc http工具类
*/
public class HttpUtil {
public static String doGet(String url, Map<String, String> headerMap) {
CloseableHttpClient client = null;
CloseableHttpResponse response = null;
String res = "";
try {
client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);
if (!CollectionUtils.isEmpty(headerMap)) {
headerMap.forEach((k, v) -> request.setHeader(k, v));
}
request.setHeader("Content-Type", "application/json");
response = client.execute(request);
res = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(res);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (client != null) {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (response != null) {
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return res;
}
public static String doPost(String url, Map<String, String> headerMap, String bodyJsonStr) {
CloseableHttpClient client = null;
CloseableHttpResponse response = null;
String res = "";
try {
client = HttpClientBuilder.create().build();
HttpPost request = new HttpPost(url);
if (!CollectionUtils.isEmpty(headerMap)) {
headerMap.forEach((k, v) -> request.setHeader(k, v));
}
request.setHeader("Content-Type", "application/json");
if (StringUtils.isNotBlank(bodyJsonStr)) {
StringEntity entity = new StringEntity(bodyJsonStr, "UTF-8");
request.setEntity(entity);
}
response = client.execute(request);
res = EntityUtils.toString(response.getEntity(), "UTF-8");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (client != null) {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (response != null) {
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return res;
}
}
......@@ -43,3 +43,13 @@ Mcd:
deepSso:
url: https://boss.sit.mcd.com.cn/api/inner/boss-api/foundation/user/whoami
peopleCenter:
sysSecret: 3522f512-6549-4b38-8d1d-03161d5f2148
sysId: 169623376
tokenUrl: http://mcd-biz-gateway-sit.mcdchina.net/token/getToken
userUrl: http://mcd-biz-gateway-sit.mcdchina.net/people-center/people-query/employee/list
organUrl: http://mcd-biz-gateway-sit.mcdchina.net/people-center/people-query/organization/page
server:
port: 9764
eureka:
client:
registerWithEureka: true
region: default
registryFetchIntervalSeconds: 5
serviceUrl:
defaultZone: http://10.126.158.215:8081/eureka/
enabled: false
spring:
session:
store-type: redis
redis:
namespace: dgrcb
redis:
host: 10.126.158.214
port: 6379
password: letmein
datasource:
continue-on-error: true
hikari:
maximum-pool-size: 5
initialization-mode: always
url: jdbc:mysql://10.126.158.214:22698/dgrcb?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
username: poc
password: Km@38497130
jpa:
hibernate:
ddl-auto: update
# show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
ribbon:
ReadTimeout: 60000
ConnectTimeout: 60000
OkToRetryOnAllOperations: true
MaxAutoRetries: 3
logging:
level:
# 设置Hibernate的日志级别
org.hibernate: ERROR
feign:
client:
config:
default:
connectTimeout: 60000
ReadTimeout: 60000
security:
authUser: root
authPwd: pwd
permit: true
allowRootLogin: true
Mcd:
sso:
url: https://boss.sit.mcd.com.cn/api/inner/boss-api/foundation/sso/authenticate
header: McD-BOSS;PC
redirectUrl: http://10.126.147.58/center-home/menu/index
deepSso:
url: https://boss.sit.mcd.com.cn/api/inner/boss-api/foundation/user/whoami
peopleCenter:
sysSecret: 3522f512-6549-4b38-8d1d-03161d5f2148
sysId: 169623376
tokenUrl: http://mcd-biz-gateway-sit.mcdchina.net/token/getToken
userUrl: http://mcd-biz-gateway-sit.mcdchina.net/people-center/people-query/employee/list
organUrl: http://mcd-biz-gateway-sit.mcdchina.net/people-center/people-query/organization/page
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment