|
@@ -0,0 +1,300 @@
|
|
|
|
|
+package com.chuanghai.student_portrait.controller;
|
|
|
|
|
+
|
|
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
|
|
|
+import com.alibaba.fastjson2.JSONArray;
|
|
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
+import com.chuanghai.student_portrait.entity.FaceDiscern;
|
|
|
|
|
+import com.chuanghai.student_portrait.entity.OldSchooluser;
|
|
|
|
|
+import com.chuanghai.student_portrait.service.FaceDiscernService;
|
|
|
|
|
+import com.chuanghai.student_portrait.service.OldSchooluserService;
|
|
|
|
|
+import com.chuanghai.student_portrait.utils.Base64Utils;
|
|
|
|
|
+import com.chuanghai.student_portrait.utils.FileUtil;
|
|
|
|
|
+import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
|
|
+import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
+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.io.IOException;
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * @Author:liu
|
|
|
|
|
+ * @Date: 2022/9/6 9:47
|
|
|
|
|
+ * @Version 1.0
|
|
|
|
|
+ */
|
|
|
|
|
+@RestController
|
|
|
|
|
+@RequestMapping("/warning")
|
|
|
|
|
+public class GetSchoolUserController {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ RestTemplate restTemplate;
|
|
|
|
|
+
|
|
|
|
|
+ @Value("${weixiao.app_key}")
|
|
|
|
|
+ private String key;
|
|
|
|
|
+
|
|
|
|
|
+ @Value("${weixiao.response_type}")
|
|
|
|
|
+ private String type;
|
|
|
|
|
+
|
|
|
|
|
+ @Value("${weixiao.scope}")
|
|
|
|
|
+ private String scope;
|
|
|
|
|
+
|
|
|
|
|
+ @Value("${weixiao.ocode}")
|
|
|
|
|
+ private String ocode;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ OldSchooluserService oldSchooluserService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ FaceDiscernService faceDiscernService;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ 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", "DB60250B489345ED");
|
|
|
|
|
+ param.put("app_secret", "68ED5D4B98DD8817C1558A8FCAF9D1BF");
|
|
|
|
|
+ param.put("grant_type", "client_credentials");
|
|
|
|
|
+ param.put("scope", "base");
|
|
|
|
|
+ param.put("ocode", "1015730314");
|
|
|
|
|
+ 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();
|
|
|
|
|
+ }
|
|
|
|
|
+ return access_token;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //现在不需要获取微校数据
|
|
|
|
|
+ @Scheduled(cron = "0 0 0/2 * * ? ") //从0时开始,每2小时运行一次
|
|
|
|
|
+ public String token() {
|
|
|
|
|
+ String cardNumber = getCardNumber();
|
|
|
|
|
+ return cardNumber;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //获取组织架构
|
|
|
|
|
+// @GetMapping("/get")
|
|
|
|
|
+// public Map get() {
|
|
|
|
|
+// 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);
|
|
|
|
|
+// HashMap<String, String> parse = JSON.parseObject(body, HashMap.class);
|
|
|
|
|
+//
|
|
|
|
|
+// return parse;
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+ //获取组织架构成员
|
|
|
|
|
+// @GetMapping("/list")
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ 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", 560291);
|
|
|
|
|
+ param.put("fetch_child", 1);
|
|
|
|
|
+ param.put("page", page);
|
|
|
|
|
+ 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 = 45;
|
|
|
|
|
+
|
|
|
|
|
+ //
|
|
|
|
|
+// @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 = oldSchooluserService.list(Wrappers.<OldSchooluser>lambdaQuery().eq(OldSchooluser::getIdCard, idCard)).get(0);
|
|
|
|
|
+ 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;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+}
|