|
|
@@ -0,0 +1,329 @@
|
|
|
+package com.template.controller;
|
|
|
+
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
|
+import com.alibaba.fastjson2.JSONArray;
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
+import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.template.model.pojo.Organization;
|
|
|
+import com.template.config.WeixiaoConfig;
|
|
|
+import com.template.model.dto.OrganDto;
|
|
|
+import com.template.services.OrganizationService;
|
|
|
+import org.apache.velocity.util.ArrayListWrapper;
|
|
|
+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.http.*;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
+
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Author:liu
|
|
|
+ * @Date: 2022/9/6 9:47
|
|
|
+ * @Version 1.0
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@RequestMapping("auto/getOrgan")
|
|
|
+public class GetSchoolUserController {
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(GetSchoolUserController.class);
|
|
|
+
|
|
|
+// @Autowired
|
|
|
+// RestTemplate restTemplate;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private WeixiaoConfig weixiaoConfig;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrganizationService organizationService;
|
|
|
+
|
|
|
+
|
|
|
+ public String getCardNumber() {
|
|
|
+ String access_token = "";
|
|
|
+ String grant_type = "authorization_code";
|
|
|
+// String redirect_uri = "http://5d519a3d.cpolar.top/warning/getCardNumber";
|
|
|
+// String redirect_uri = "http://binguo.vaiwan.com/wx/getCardNumber";
|
|
|
+ String url = "https://open.wecard.qq.com/cgi-bin/oauth2/token"; //用于用户 获取基础的access_token
|
|
|
+ Map<String, String> param = new HashMap<>();
|
|
|
+// param.put("wxcode", wxcode);
|
|
|
+ param.put("app_key", weixiaoConfig.getAppKey());
|
|
|
+ param.put("app_secret", weixiaoConfig.getAppSecret());
|
|
|
+ param.put("grant_type", "client_credentials");
|
|
|
+ param.put("scope", "base");
|
|
|
+ param.put("ocode", weixiaoConfig.getOcode());
|
|
|
+// param.put("redirect_uri", redirect_uri);
|
|
|
+ try {
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
+ headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
+ HttpEntity<Map<String, String>> request = new HttpEntity<>(param, headers);
|
|
|
+ ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
|
|
|
+ String body = responseEntity.getBody();
|
|
|
+// System.out.println("body = " + body);
|
|
|
+ HashMap<String, String> parse = JSON.parseObject(body, HashMap.class);
|
|
|
+ String token = parse.get("access_token");
|
|
|
+ access_token = token;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.info(e.getMessage());
|
|
|
+ }
|
|
|
+ return access_token;
|
|
|
+ }
|
|
|
+
|
|
|
+ //现在不需要获取微校数据
|
|
|
+// @Scheduled(cron = "0 0 0/2 * * ? ") //从0时开始,每2小时运行一次
|
|
|
+ public String token() {
|
|
|
+ String cardNumber = getCardNumber();
|
|
|
+ return cardNumber;
|
|
|
+ }
|
|
|
+
|
|
|
+// 获取组织架构
|
|
|
+ @GetMapping("/get")
|
|
|
+ @Scheduled(cron = "0 22 05 * * ? ")
|
|
|
+ @Transactional(rollbackFor = {Exception.class})
|
|
|
+ public void get() {
|
|
|
+ RestTemplate restTemplate=new RestTemplate();
|
|
|
+ String token = this.token();
|
|
|
+ System.out.println("token = " + token);
|
|
|
+ String url = "https://open.wecard.qq.com/cgi-bin/user/org-edu-list";
|
|
|
+ Map<String, String> param = new HashMap<>();
|
|
|
+ param.put("access_token", token);
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
+ headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
+ HttpEntity<Map<String, String>> request = new HttpEntity<>(param, headers);
|
|
|
+ ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
|
|
|
+ String body = responseEntity.getBody();
|
|
|
+ System.out.println("body = " + body);
|
|
|
+ JSONObject jsonObject=JSONObject.parseObject(body);
|
|
|
+ JSONArray jsonArray=jsonObject.getJSONArray("organization");
|
|
|
+ List<OrganDto> users= jsonArray.toJavaList(OrganDto.class);
|
|
|
+ List<Organization> organizations=new ArrayList();
|
|
|
+ for(OrganDto dto:users){
|
|
|
+ if ("573084".equals(dto.getParent_id())){
|
|
|
+ Organization organization=new Organization();
|
|
|
+ organization.setId(dto.getId());
|
|
|
+ organization.setName(dto.getName());
|
|
|
+ organization.setParentId(dto.getParent_id());
|
|
|
+ organization.setUpdatedAt(dto.getUpdated_at());
|
|
|
+ organizations.add(organization);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ boolean a =organizationService.saveOrUpdateBatch(organizations);
|
|
|
+ log.info("更新部门完成:"+a);
|
|
|
+
|
|
|
+
|
|
|
+ return ;
|
|
|
+ }
|
|
|
+
|
|
|
+// //获取组织架构成员
|
|
|
+// @GetMapping("/list")
|
|
|
+// @DSTransactional
|
|
|
+// public List<String> getMessong(Integer page) throws JsonProcessingException {
|
|
|
+// String token = this.token();
|
|
|
+// String url = "https://open.wecard.qq.com/cgi-bin/user/get-org-users";
|
|
|
+// Map<String, Object> param = new HashMap<>();
|
|
|
+// ObjectMapper mapper = new ObjectMapper();
|
|
|
+// param.put("access_token", token);
|
|
|
+// param.put("org_id", 578692);
|
|
|
+// param.put("fetch_child", 1);
|
|
|
+// param.put("page", page);
|
|
|
+//// param.put("page", 2);
|
|
|
+// param.put("page_size", 1000);
|
|
|
+// HttpHeaders headers = new HttpHeaders();
|
|
|
+// headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
+// HttpEntity<Map<String, Object>> request = new HttpEntity<>(param, headers);
|
|
|
+// ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
|
|
|
+// String body = responseEntity.getBody();
|
|
|
+// JSONObject jsonObject = JSON.parseObject(body);
|
|
|
+// JSONArray userlist = jsonObject.getJSONArray("userlist");
|
|
|
+// ArrayList<String> strings = new ArrayList<>();
|
|
|
+// for (Object o : userlist) {
|
|
|
+// Map<String, Object> stringObjectMap = mapper.readValue(o.toString(), new TypeReference<Map<String, Object>>() {
|
|
|
+// });
|
|
|
+// if (stringObjectMap.get("card_number") != null) {
|
|
|
+// String card_number = stringObjectMap.get("card_number").toString();
|
|
|
+// strings.add(card_number);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return strings;
|
|
|
+// }
|
|
|
+//
|
|
|
+// @GetMapping
|
|
|
+// public Boolean a(Integer page) throws JsonProcessingException {
|
|
|
+// List<String> messong = this.getMessong(page);
|
|
|
+// String token = this.token();
|
|
|
+// System.out.println("token = " + token);
|
|
|
+// String url = "https://open.wecard.qq.com/cgi-bin/user/get-user-by-card-numbers";
|
|
|
+// Map<String, Object> param = new HashMap<>();
|
|
|
+// param.put("access_token", token);
|
|
|
+// param.put("card_numbers", messong);
|
|
|
+// HttpHeaders headers = new HttpHeaders();
|
|
|
+// headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
+// HttpEntity<Map<String, Object>> request = new HttpEntity<>(param, headers);
|
|
|
+// ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
|
|
|
+// String body = responseEntity.getBody();
|
|
|
+// JSONObject jsonObject = JSON.parseObject(body);
|
|
|
+// JSONArray userlist = jsonObject.getJSONArray("userlist");
|
|
|
+// ArrayList<OldSchooluser> addOldSchoolUsers = new ArrayList<>();
|
|
|
+// ArrayList<OldSchooluser> updatOldSchoolUsers = new ArrayList<>();
|
|
|
+// ObjectMapper mapper = new ObjectMapper();
|
|
|
+// for (Object o : userlist) {
|
|
|
+// Map<String, Object> stringObjectMap = mapper.readValue(o.toString(), new TypeReference<Map<String, Object>>() {
|
|
|
+// });
|
|
|
+// if (ObjectUtils.isNotEmpty(stringObjectMap)) {
|
|
|
+// OldSchooluser oldSchooluser1 = new OldSchooluser();
|
|
|
+// String head_image = stringObjectMap.get("head_image").toString();
|
|
|
+// oldSchooluser1.setHeadImage(head_image);
|
|
|
+//
|
|
|
+// oldSchooluser1.setCardNumber(stringObjectMap.get("card_number").toString());
|
|
|
+// oldSchooluser1.setName(stringObjectMap.get("name").toString());
|
|
|
+// oldSchooluser1.setGender(stringObjectMap.get("gender").toString());
|
|
|
+// oldSchooluser1.setIdentityType(stringObjectMap.get("identity_type").toString());
|
|
|
+// oldSchooluser1.setGrade(stringObjectMap.get("grade").toString());
|
|
|
+// oldSchooluser1.setCampus(stringObjectMap.get("campus").toString());
|
|
|
+// oldSchooluser1.setDormNumber(stringObjectMap.get("dorm_number").toString());
|
|
|
+// oldSchooluser1.setPhysicalChipNumber(stringObjectMap.get("physical_chip_number").toString());
|
|
|
+// oldSchooluser1.setPhysicalCardNumber(stringObjectMap.get("physical_card_number").toString());
|
|
|
+// oldSchooluser1.setNation(stringObjectMap.get("nation").toString());
|
|
|
+// oldSchooluser1.setOriginPlace(stringObjectMap.get("origin_place").toString());
|
|
|
+// oldSchooluser1.setGraduatedSchool(stringObjectMap.get("graduated_school").toString());
|
|
|
+// oldSchooluser1.setAddress(stringObjectMap.get("address").toString());
|
|
|
+// oldSchooluser1.setQq(stringObjectMap.get("qq").toString());
|
|
|
+// oldSchooluser1.setEmail(stringObjectMap.get("email").toString());
|
|
|
+// oldSchooluser1.setCardType(stringObjectMap.get("card_type").toString());
|
|
|
+// oldSchooluser1.setIdentityTitle(stringObjectMap.get("identity_title").toString());
|
|
|
+// oldSchooluser1.setCollege(stringObjectMap.get("college").toString());
|
|
|
+// oldSchooluser1.setProfession(stringObjectMap.get("profession").toString());
|
|
|
+// oldSchooluser1.setClazz(stringObjectMap.get("class").toString());
|
|
|
+// oldSchooluser1.setIdCard(stringObjectMap.get("id_card").toString());
|
|
|
+// oldSchooluser1.setCountry(stringObjectMap.get("country").toString());
|
|
|
+// oldSchooluser1.setTelephone(stringObjectMap.get("telephone").toString());
|
|
|
+// oldSchooluser1.setDataSource(stringObjectMap.get("data_source").toString());
|
|
|
+// oldSchooluser1.setStartAt(stringObjectMap.get("start_at").toString());
|
|
|
+// oldSchooluser1.setExpireAt(stringObjectMap.get("expire_at").toString());
|
|
|
+// if (stringObjectMap.containsKey("serial_number")) {
|
|
|
+// String serial_number = stringObjectMap.get("serial_number").toString();
|
|
|
+// oldSchooluser1.setSerialNumber(serial_number);
|
|
|
+// }
|
|
|
+// if (stringObjectMap.containsKey("job_title")) {
|
|
|
+// oldSchooluser1.setJobTitle(stringObjectMap.get("job_title").toString());
|
|
|
+// }
|
|
|
+// if (stringObjectMap.containsKey("school_period")) {
|
|
|
+// oldSchooluser1.setSchoolPeriod(stringObjectMap.get("school_period").toString());
|
|
|
+// }
|
|
|
+// if (stringObjectMap.containsKey("register_year")) {
|
|
|
+// oldSchooluser1.setRegisterYear(stringObjectMap.get("register_year").toString());
|
|
|
+// }
|
|
|
+// oldSchooluser1.setOrganization(stringObjectMap.get("organization").toString());
|
|
|
+// oldSchooluser1.setDepartment(stringObjectMap.get("department").toString());
|
|
|
+////判断该学生信息是否存在数据库中
|
|
|
+// OldSchooluser oldSchooluser = queryOldSchoolUser(oldSchooluser1.getIdCard());
|
|
|
+// if (ObjectUtils.isNotEmpty(oldSchooluser)) {
|
|
|
+//// oldSchooluser1.setId(oldSchooluser.getId());
|
|
|
+// oldSchooluser1.setId(oldSchooluser.getId());
|
|
|
+//
|
|
|
+// updatOldSchoolUsers.add(oldSchooluser1);
|
|
|
+// oldSchooluserService.update(oldSchooluser1, Wrappers.<OldSchooluser>lambdaUpdate().eq(OldSchooluser::getId, oldSchooluser.getId()));
|
|
|
+// } else {
|
|
|
+// addOldSchoolUsers.add(oldSchooluser1);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// boolean b = oldSchooluserService.saveBatch(addOldSchoolUsers);
|
|
|
+//// oldSchooluserService.updateBatchById(updatOldSchoolUsers);
|
|
|
+// return b;
|
|
|
+//// return JSONObject.parseObject(body,Map.class);
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 定时获取微校数据
|
|
|
+////
|
|
|
+// Integer i = 30;
|
|
|
+//
|
|
|
+// //
|
|
|
+//// @Scheduled(cron = "0 0/1 * * * ? ")
|
|
|
+// public void getSchoolUser() {
|
|
|
+// i = i + 1;
|
|
|
+// try {
|
|
|
+// boolean a = this.a(i);
|
|
|
+// System.out.println("a = " + a);
|
|
|
+// } catch (JsonProcessingException e) {
|
|
|
+// throw new RuntimeException(e);
|
|
|
+// }
|
|
|
+// System.out.println(i);
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 通过身份证号判断该用户是否存在于数据库OldSchoolUser表当中
|
|
|
+// *
|
|
|
+// * @param idCard
|
|
|
+// * @param
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public OldSchooluser queryOldSchoolUser(String idCard) {
|
|
|
+// OldSchooluser oldSchooluser = null;
|
|
|
+// try {
|
|
|
+// oldSchooluser = oldSchooluserService.list(Wrappers.<OldSchooluser>lambdaQuery().eq(OldSchooluser::getIdCard, idCard)).get(0);
|
|
|
+// }catch (Exception e){
|
|
|
+//
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+// return oldSchooluser;
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+////通过card_numbers获取图片
|
|
|
+// public String getHeadImage(List<String> messong) throws JsonProcessingException {
|
|
|
+// String token = this.token();
|
|
|
+// System.out.println("token = " + token);
|
|
|
+// String url = "https://open.wecard.qq.com/cgi-bin/user/get-user-by-card-numbers";
|
|
|
+// Map<String, Object> param = new HashMap<>();
|
|
|
+// param.put("access_token", token);
|
|
|
+// param.put("card_numbers", messong);
|
|
|
+// HttpHeaders headers = new HttpHeaders();
|
|
|
+// headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
+// HttpEntity<Map<String, Object>> request = new HttpEntity<>(param, headers);
|
|
|
+// ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
|
|
|
+// String body = responseEntity.getBody();
|
|
|
+// JSONObject jsonObject = JSON.parseObject(body);
|
|
|
+// JSONArray userlist = jsonObject.getJSONArray("userlist");
|
|
|
+// ObjectMapper mapper = new ObjectMapper();
|
|
|
+// String headImage="";
|
|
|
+// for (Object o : userlist) {
|
|
|
+// Map<String, Object> stringObjectMap = mapper.readValue(o.toString(), new TypeReference<Map<String, Object>>() {
|
|
|
+// });
|
|
|
+// if (ObjectUtils.isNotEmpty(stringObjectMap)) {
|
|
|
+// headImage= stringObjectMap.get("head_image").toString();
|
|
|
+//
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return headImage;
|
|
|
+// }
|
|
|
+//
|
|
|
+//// @Scheduled(cron = "0 0/1 * * * ? ")
|
|
|
+// public Boolean b() throws JsonProcessingException {
|
|
|
+// String token = this.token();
|
|
|
+// System.out.println("token = " + token);
|
|
|
+// String url = "https://open.wecard.qq.com/cgi-bin/user/search";
|
|
|
+// Map<String, Object> param = new HashMap<>();
|
|
|
+// param.put("access_token", token);
|
|
|
+// param.put("keywords", "360102200406033352");
|
|
|
+// HttpHeaders headers = new HttpHeaders();
|
|
|
+// headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
+// HttpEntity<Map<String, Object>> request = new HttpEntity<>(param, headers);
|
|
|
+// ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
|
|
|
+// String body = responseEntity.getBody();
|
|
|
+// JSONObject jsonObject = JSON.parseObject(body);
|
|
|
+// System.out.println("jsonObject = " + jsonObject);
|
|
|
+// return null;
|
|
|
+// }
|
|
|
+}
|