Commit eff94aa9bbbbd80ab8eed94ded152367de3a481e

Authored by baishou_zjx
1 parent a6e4f898
Exists in master

获取学生信息修改,微信模板推送

springboot/morning-check/src/main/java/com/sincere/morningcheck/common/AESDeEncoder.java 0 → 100644
@@ -0,0 +1,134 @@ @@ -0,0 +1,134 @@
  1 +package com.sincere.morningcheck.common;
  2 +
  3 +import sun.misc.BASE64Decoder;
  4 +import sun.misc.BASE64Encoder;
  5 +
  6 +import javax.crypto.Cipher;
  7 +import javax.crypto.KeyGenerator;
  8 +import javax.crypto.SecretKey;
  9 +import javax.crypto.spec.SecretKeySpec;
  10 +import java.security.SecureRandom;
  11 +
  12 +public class AESDeEncoder {
  13 + /*
  14 + * 加密
  15 + * 1.构造密钥生成器KeyGenerator
  16 + * 2.根据ecnodeRules规则初始化密钥生成器
  17 + * 3.产生密钥
  18 + * 4.创建和初始化密码器
  19 + * 5.内容加密
  20 + * 6.返回字符串
  21 + */
  22 + public static String AESEncode(String encodeRules, String content) {
  23 + try {
  24 + //1.构造密钥生成器,指定为AES算法,不区分大小写
  25 + /*javax.crypto
  26 + 类 KeyGenerator
  27 + * 此类提供(对称)密钥生成器的功能。
  28 + */
  29 + KeyGenerator keygen = KeyGenerator.getInstance("AES");
  30 + //2.根据ecnodeRules规则初始化密钥生成器
  31 + //生成一个128位的随机源,根据传入的字节数组
  32 + keygen.init(128, new SecureRandom(encodeRules.getBytes()));
  33 + //3.产生原始对称密钥
  34 + /*javax.crypto
  35 + 接口 SecretKey
  36 + 所有超级接口:
  37 + Key, Serializable
  38 + * SecretKey
  39 + * public interface SecretKey extends Key
  40 + * 秘密(对称)密钥。
  41 + * 此接口不包含方法或常量。其唯一目的是分组秘密密钥(并为其提供类型安全)。
  42 +此接口的提供者实现必须改写继承自 java.lang.Object 的 equals 和 hashCode 方法,
  43 +***以便根据底层密钥材料而不是根据引用进行秘密密钥比较***。
  44 +实现此接口的密钥以其编码格式(请参阅 getFormat)返回字符串 RAW,并返回作为 getEncoded 方法调用结果的原始密钥字节。
  45 +(getFormat 和 getEncoded 方法继承自 java.security.Key 父接口。)
  46 + 常用方法:
  47 + * byte[] getEncoded()
  48 + 返回基本编码格式的密钥,如果此密钥不支持编码,则返回 null。
  49 + *
  50 + */
  51 + SecretKey original_key = keygen.generateKey();
  52 + //4.获得原始 对称密钥 的字节数组
  53 + byte[] raw = original_key.getEncoded();
  54 + //5.根据字节数组生成AES密钥
  55 + /*
  56 + * SecretKeySpec
  57 + * public class SecretKeySpec extends Object implements KeySpec, SecretKey
  58 + * 此类以与 provider 无关的方式指定一个密钥。
  59 +此类仅对能表示为 一个字节数组 并且没有任何与之相关联的钥参数的 原始密钥 有用,如,DES 或者 Triple DES 密钥。
  60 + */
  61 + SecretKey key = new SecretKeySpec(raw, "AES");
  62 + //6.根据指定算法AES自成密码器
  63 + /*
  64 + * Cipher
  65 + * public class Cipher extends Object
  66 + * 此类为加密和解密提供密码功能。它构成了 Java Cryptographic Extension (JCE) 框架的核心。
  67 + * 为创建 Cipher 对象,应用程序调用 Cipher 的 getInstance 方法并将所请求转换 的名称传递给它。
  68 + 还可以指定提供者的名称(可选)。
  69 + 常用方法
  70 + byte[] doFinal()
  71 + 结束多部分加密或解密操作(具体取决于此 Cipher 的初始化方式)。
  72 +
  73 + */
  74 + Cipher cipher = Cipher.getInstance("AES");
  75 + //7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY
  76 + cipher.init(Cipher.ENCRYPT_MODE, key);
  77 + //8.获取加密内容的字节数组(这里要设置为utf-8)不然内容中如果有中文和英文混合中文就会解密为乱码
  78 + byte[] byte_encode = content.getBytes("utf-8");
  79 + //9.根据密码器的初始化方式--加密:将数据加密
  80 + byte[] byte_AES = cipher.doFinal(byte_encode);
  81 + //10.将加密后的数据转换为字符串
  82 + //这里用Base64Encoder中会找不到包
  83 + //解决办法:
  84 + //在项目的Build path中先移除JRE System Library,再添加库JRE System Library,重新编译后就一切正常了。
  85 + String AES_encode = new String(new BASE64Encoder().encode(byte_AES));
  86 + //11.将字符串返回
  87 + return AES_encode;
  88 + } catch (Exception e) {
  89 + e.printStackTrace();
  90 + }
  91 + //如果有错就返加nulll
  92 + return null;
  93 + }
  94 +
  95 + /*
  96 + * 解密
  97 + * 解密过程:
  98 + * 1.同加密1-4步
  99 + * 2.将加密后的字符串反纺成byte[]数组
  100 + * 3.将加密内容解密
  101 + */
  102 + public static String AESDncode(String encodeRules, String content) {
  103 + try {
  104 + //1.构造密钥生成器,指定为AES算法,不区分大小写
  105 + KeyGenerator keygen = KeyGenerator.getInstance("AES");
  106 + //2.根据ecnodeRules规则初始化密钥生成器
  107 + //生成一个128位的随机源,根据传入的字节数组
  108 + keygen.init(128, new SecureRandom(encodeRules.getBytes()));
  109 + //3.产生原始对称密钥
  110 + SecretKey original_key = keygen.generateKey();
  111 + //4.获得原始对称密钥的字节数组
  112 + byte[] raw = original_key.getEncoded();
  113 + //5.根据字节数组生成AES密钥
  114 + SecretKey key = new SecretKeySpec(raw, "AES");
  115 + //6.根据指定算法AES自成密码器
  116 + Cipher cipher = Cipher.getInstance("AES");
  117 + //7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密(Decrypt_mode)操作,第二个参数为使用的KEY
  118 + cipher.init(Cipher.DECRYPT_MODE, key);
  119 + //8.将加密并编码后的内容解码成字节数组
  120 + byte[] byte_content = new BASE64Decoder().decodeBuffer(content);
  121 + /*
  122 + * 解密
  123 + */
  124 + byte[] byte_decode = cipher.doFinal(byte_content);
  125 + String AES_decode = new String(byte_decode, "utf-8");
  126 + return AES_decode;
  127 + } catch (Exception e) {
  128 + e.printStackTrace();
  129 + }
  130 +
  131 + //如果有错就返加nulll
  132 + return null;
  133 + }
  134 +}
springboot/morning-check/src/main/java/com/sincere/morningcheck/controller/MorningCheckController.java
1 package com.sincere.morningcheck.controller; 1 package com.sincere.morningcheck.controller;
2 2
3 -import com.sincere.morningcheck.common.EhcacheUtil; 3 +import com.alibaba.fastjson.JSON;
  4 +import com.sincere.morningcheck.common.AESDeEncoder;
4 import com.sincere.morningcheck.common.MD5; 5 import com.sincere.morningcheck.common.MD5;
5 import com.sincere.morningcheck.common.ServerResponse; 6 import com.sincere.morningcheck.common.ServerResponse;
6 import com.sincere.morningcheck.model.*; 7 import com.sincere.morningcheck.model.*;
@@ -8,7 +9,7 @@ import com.sincere.morningcheck.service.FileUpAndDownService; @@ -8,7 +9,7 @@ import com.sincere.morningcheck.service.FileUpAndDownService;
8 import com.sincere.morningcheck.service.StudentCheckReportService; 9 import com.sincere.morningcheck.service.StudentCheckReportService;
9 import com.sincere.morningcheck.service.StudentService; 10 import com.sincere.morningcheck.service.StudentService;
10 import com.sincere.morningcheck.service.UserServer; 11 import com.sincere.morningcheck.service.UserServer;
11 -import com.sincere.morningcheck.service.impl.FileUpAndDownServiceImpl; 12 +import com.sincere.morningcheck.utils.ApiHelper;
12 import com.sincere.morningcheck.utils.DataConvertHelper; 13 import com.sincere.morningcheck.utils.DataConvertHelper;
13 import com.sincere.morningcheck.utils.LogUtil; 14 import com.sincere.morningcheck.utils.LogUtil;
14 import io.swagger.annotations.Api; 15 import io.swagger.annotations.Api;
@@ -21,22 +22,15 @@ import org.springframework.beans.factory.annotation.Value; @@ -21,22 +22,15 @@ import org.springframework.beans.factory.annotation.Value;
21 import org.springframework.web.bind.annotation.*; 22 import org.springframework.web.bind.annotation.*;
22 import org.springframework.web.multipart.MultipartFile; 23 import org.springframework.web.multipart.MultipartFile;
23 24
24 -import javax.servlet.http.HttpServletRequest;  
25 -import javax.servlet.http.HttpServletResponse;  
26 -import javax.servlet.http.HttpSession;  
27 import java.text.ParseException; 25 import java.text.ParseException;
28 import java.text.SimpleDateFormat; 26 import java.text.SimpleDateFormat;
29 -import java.util.Calendar;  
30 -import java.util.Date;  
31 -import java.util.HashMap;  
32 -import java.util.Map; 27 +import java.util.*;
33 28
34 @RestController 29 @RestController
35 @RequestMapping("user") 30 @RequestMapping("user")
36 @Api(value = "MorningCheckController", tags = "晨检机晨检接口说明") 31 @Api(value = "MorningCheckController", tags = "晨检机晨检接口说明")
37 public class MorningCheckController { 32 public class MorningCheckController {
38 33
39 - private String token = "CESHI651BB2B8AEBBF0DB2FFC9B4EAD5F04E2";  
40 34
41 @Value("${salt}") 35 @Value("${salt}")
42 private String salt; 36 private String salt;
@@ -60,10 +54,10 @@ public class MorningCheckController { @@ -60,10 +54,10 @@ public class MorningCheckController {
60 @ApiImplicitParam(name = "authSign", value = "签名", dataType = "String",required = true,paramType = "query"), 54 @ApiImplicitParam(name = "authSign", value = "签名", dataType = "String",required = true,paramType = "query"),
61 }) 55 })
62 @PostMapping("login") 56 @PostMapping("login")
63 - public ServerResponse login(HttpServletRequest request,@RequestParam String deviceNo, @RequestParam String password,@RequestParam String authSign){ 57 + public ServerResponse login(@RequestParam String deviceNo, @RequestParam String password,@RequestParam String authSign){
64 58
65 ServerResponse serverResponse = null; 59 ServerResponse serverResponse = null;
66 - 60 + LogUtil.printInfoLog("进入登陆接口");
67 Map map = new HashMap(); 61 Map map = new HashMap();
68 map.put("password", password); 62 map.put("password", password);
69 map.put("deviceNo", deviceNo); 63 map.put("deviceNo", deviceNo);
@@ -72,18 +66,16 @@ public class MorningCheckController { @@ -72,18 +66,16 @@ public class MorningCheckController {
72 System.out.println(queryUrl); 66 System.out.println(queryUrl);
73 try { 67 try {
74 String signUrl = queryUrl.replace("&",""); 68 String signUrl = queryUrl.replace("&","");
75 - System.out.println(signUrl);  
76 // String md5 = MD5.md5(signUrl, salt); 69 // String md5 = MD5.md5(signUrl, salt);
77 boolean verify = MD5.verify(signUrl,salt,authSign); 70 boolean verify = MD5.verify(signUrl,salt,authSign);
78 - 71 + System.out.println("校验是否成功:"+verify);
79 if(verify) { 72 if(verify) {
80 73
81 User user = userServer.getDeviceUser(deviceNo); 74 User user = userServer.getDeviceUser(deviceNo);
82 user.setParameter("0"); 75 user.setParameter("0");
  76 + String token = user.getDeviceId()+","+user.getSchoolId();//AESDeEncoder.AESEncode("token",user.getDeviceId()+","+user.getSchoolId());
83 user.setToken(token); 77 user.setToken(token);
84 - HttpSession session = request.getSession();  
85 - session.setAttribute("deviceId",user.getDeviceId());  
86 - session.setMaxInactiveInterval(-1);//从不过期 78 + LogUtil.printInfoLog("生成的Token信息包括设备标识和学校标识"+token);
87 serverResponse = ServerResponse.createBySuccess("success",user); 79 serverResponse = ServerResponse.createBySuccess("success",user);
88 80
89 }else{ 81 }else{
@@ -152,7 +144,7 @@ public class MorningCheckController { @@ -152,7 +144,7 @@ public class MorningCheckController {
152 "时间格式为 : yyyy-MM-dd-HH-mm-ss", dataType = "String",paramType = "query") 144 "时间格式为 : yyyy-MM-dd-HH-mm-ss", dataType = "String",paramType = "query")
153 }) 145 })
154 @PostMapping("signByCard") 146 @PostMapping("signByCard")
155 - public ServerResponse swipeCard(HttpServletRequest request,@RequestParam String token,@RequestParam String cardNo,@RequestParam Integer imageId,@RequestParam String authSign,@RequestParam(required = false) String date){ 147 + public ServerResponse swipeCard(@RequestParam String token,@RequestParam String cardNo,@RequestParam Integer imageId,@RequestParam String authSign,@RequestParam(required = false) String date){
156 148
157 LogUtil.printInfoLog("刷卡签到传入的参数:卡号"+cardNo+",图片ID:"+imageId+",签名"+authSign); 149 LogUtil.printInfoLog("刷卡签到传入的参数:卡号"+cardNo+",图片ID:"+imageId+",签名"+authSign);
158 ServerResponse serverResponse = null; 150 ServerResponse serverResponse = null;
@@ -167,8 +159,6 @@ public class MorningCheckController { @@ -167,8 +159,6 @@ public class MorningCheckController {
167 Date dateIn = null; 159 Date dateIn = null;
168 if(StringUtils.isBlank(date)){ 160 if(StringUtils.isBlank(date)){
169 Calendar calendar= Calendar.getInstance(); 161 Calendar calendar= Calendar.getInstance();
170 -// SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");  
171 -// date = dateFormat.format(calendar.getTime());  
172 dateIn= calendar.getTime(); 162 dateIn= calendar.getTime();
173 163
174 }else{ 164 }else{
@@ -188,8 +178,9 @@ public class MorningCheckController { @@ -188,8 +178,9 @@ public class MorningCheckController {
188 boolean verify = MD5.verify(signUrl,salt,authSign); 178 boolean verify = MD5.verify(signUrl,salt,authSign);
189 System.out.println("签名是否正确"+verify); 179 System.out.println("签名是否正确"+verify);
190 if(verify) { 180 if(verify) {
191 - HttpSession session = request.getSession();  
192 - String deviceId = session.getAttribute("deviceId").toString(); 181 +
  182 + LogUtil.printInfoLog(token);;
  183 + String deviceId = token.split(",")[0];
193 Map<String,Object> hashMap = new HashMap<>(); 184 Map<String,Object> hashMap = new HashMap<>();
194 //设备编号 185 //设备编号
195 hashMap.put("att_id",deviceId); 186 hashMap.put("att_id",deviceId);
@@ -197,7 +188,7 @@ public class MorningCheckController { @@ -197,7 +188,7 @@ public class MorningCheckController {
197 hashMap.put("func_no","08"); 188 hashMap.put("func_no","08");
198 hashMap.put("flag",0); 189 hashMap.put("flag",0);
199 hashMap.put("intime",dateIn); 190 hashMap.put("intime",dateIn);
200 - System.out.println(deviceId); 191 + System.out.println("设备标识"+deviceId);
201 192
202 studentService.swipeCard(hashMap); 193 studentService.swipeCard(hashMap);
203 System.out.println("集合数量:"+hashMap.size()); 194 System.out.println("集合数量:"+hashMap.size());
@@ -230,7 +221,7 @@ public class MorningCheckController { @@ -230,7 +221,7 @@ public class MorningCheckController {
230 @ApiImplicitParam(name = "authSign", value = "签名", dataType = "String",required = true,paramType = "query") 221 @ApiImplicitParam(name = "authSign", value = "签名", dataType = "String",required = true,paramType = "query")
231 }) 222 })
232 @PostMapping("signOutByCard") 223 @PostMapping("signOutByCard")
233 - public ServerResponse signOutByCard(HttpServletRequest request,@RequestParam String token,@RequestParam String cardNo,@RequestParam Integer imageId,@RequestParam String authSign){ 224 + public ServerResponse signOutByCard(@RequestParam String token,@RequestParam String cardNo,@RequestParam Integer imageId,@RequestParam String authSign){
234 225
235 ServerResponse serverResponse = null; 226 ServerResponse serverResponse = null;
236 LogUtil.printInfoLog("离园签到传入的参数:卡号"+cardNo+",图片ID:"+imageId+",签名"+authSign); 227 LogUtil.printInfoLog("离园签到传入的参数:卡号"+cardNo+",图片ID:"+imageId+",签名"+authSign);
@@ -248,8 +239,7 @@ public class MorningCheckController { @@ -248,8 +239,7 @@ public class MorningCheckController {
248 boolean verify = MD5.verify(signUrl,salt,authSign); 239 boolean verify = MD5.verify(signUrl,salt,authSign);
249 System.out.println("签名是否正确"+verify); 240 System.out.println("签名是否正确"+verify);
250 if(verify) { 241 if(verify) {
251 - HttpSession session = request.getSession();  
252 - String deviceId = session.getAttribute("deviceId").toString(); 242 + String deviceId = token.split(",")[0];
253 Map<String,Object> hashMap = new HashMap<>(); 243 Map<String,Object> hashMap = new HashMap<>();
254 hashMap.put("att_id",deviceId); 244 hashMap.put("att_id",deviceId);
255 hashMap.put("card_num",card); 245 hashMap.put("card_num",card);
@@ -352,18 +342,50 @@ public class MorningCheckController { @@ -352,18 +342,50 @@ public class MorningCheckController {
352 map.put("handImgId",handImgId); 342 map.put("handImgId",handImgId);
353 map.put("mouthImgId",mouthImgId); 343 map.put("mouthImgId",mouthImgId);
354 map.put("eyeImgId",eyeImgId); 344 map.put("eyeImgId",eyeImgId);
355 - 345 + Date checkDate = new Date();
356 String queryUrl = DataConvertHelper.mapAscSortToUrl(map); 346 String queryUrl = DataConvertHelper.mapAscSortToUrl(map);
357 try { 347 try {
358 String signUrl = queryUrl.replace("&",""); 348 String signUrl = queryUrl.replace("&","");
359 boolean verify = MD5.verify(signUrl,salt,authSign); 349 boolean verify = MD5.verify(signUrl,salt,authSign);
360 if(verify) { 350 if(verify) {
  351 + //微信模板消息推送
  352 + Thread thread = new Thread(()->{
  353 +
  354 + try {
  355 +
  356 + String schoolId = token.split(",")[1];//AESDeEncoder.AESDncode("token",token).split(",")[1];
  357 + String stuUserId = studentService.getStuUserId(card, schoolId);
  358 + List<String> openIds = studentService.getOpenId(stuUserId, schoolId);
  359 + if (openIds != null) {
  360 +
  361 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  362 +
  363 + for (String openId : openIds) {
  364 + WXCheckTemplate wxCheckTemplate = new WXCheckTemplate();
  365 + wxCheckTemplate.setFirstData("家长您好,有一份晨检报告待查看");
  366 + wxCheckTemplate.setKeyword1("晨检");
  367 + wxCheckTemplate.setKeyword2(simpleDateFormat.format(checkDate));
  368 + wxCheckTemplate.setOpenID(openId);
  369 + wxCheckTemplate.setSchoolID(schoolId);
  370 + wxCheckTemplate.setUrl("http://campus.myjxt.com/Web/Skin/EasyNotice/Modules/EMGzh/XSTVerification3.html?type=5");
  371 + String jsonResult = JSON.toJSONString(wxCheckTemplate);
  372 + LogUtil.printInfoLog("微信模板接口调用:"+jsonResult);
  373 + String returnResult = ApiHelper.doPost("http://campus.myjxt.com/api/SendGzhTemplate/SengMorningCheck", null, jsonResult);
  374 + }
  375 + }
  376 + }catch (Exception ex){
  377 + LogUtil.printInfoLog("异常信息"+ex.getMessage());
  378 + }
  379 +
  380 + });
  381 + thread.start();
  382 +
361 StudentCheckReport studentCheckReport = new StudentCheckReport(); 383 StudentCheckReport studentCheckReport = new StudentCheckReport();
362 studentCheckReport.setAccess(access); 384 studentCheckReport.setAccess(access);
363 studentCheckReport.setCardNo(card); 385 studentCheckReport.setCardNo(card);
364 studentCheckReport.setCheckResult(result); 386 studentCheckReport.setCheckResult(result);
365 studentCheckReport.setRobotResult(robotResult); 387 studentCheckReport.setRobotResult(robotResult);
366 - Date checkDate = new Date(); 388 +
367 studentCheckReport.setCheckTime(checkDate); 389 studentCheckReport.setCheckTime(checkDate);
368 studentCheckReport.setInTime(checkDate); 390 studentCheckReport.setInTime(checkDate);
369 studentCheckReport.setTemperature(temperature); 391 studentCheckReport.setTemperature(temperature);
springboot/morning-check/src/main/java/com/sincere/morningcheck/dao/StudentDao.java
@@ -18,14 +18,27 @@ public interface StudentDao { @@ -18,14 +18,27 @@ public interface StudentDao {
18 18
19 Student getStudentByCardNo(@Param("cardNo") String cardNo); 19 Student getStudentByCardNo(@Param("cardNo") String cardNo);
20 20
  21 + Student getStudentByStudentId(@Param("schoolId")Integer schoolId,@Param("studentId")Integer studentId);
  22 +
21 Student getStudentByStuUserId(@Param("sUserId") String sUserId); 23 Student getStudentByStuUserId(@Param("sUserId") String sUserId);
22 24
23 int getStuCountBySchoolId(@Param("schoolId") Integer schoolId); 25 int getStuCountBySchoolId(@Param("schoolId") Integer schoolId);
24 26
25 List<Grade> getGradeBySchoolId(@Param("schoolId") Integer schoolId); 27 List<Grade> getGradeBySchoolId(@Param("schoolId") Integer schoolId);
  28 +
  29 + /**
  30 + * 获取学生用户标识
  31 + * @param num
  32 + * @return
  33 + */
  34 + String getStuUserId(@Param("num") String num,@Param("schoolId")String schoolId);
  35 +
  36 + List<String> getOpenId(@Param("stuUserId")String stuUserId,@Param("schoolId")String schoolId);
26 /** 37 /**
27 * 传入的参数和返回的结果都在map集合参数params中 38 * 传入的参数和返回的结果都在map集合参数params中
28 * @param params 39 * @param params
29 */ 40 */
30 void swipeCard(Map<String, Object> params); 41 void swipeCard(Map<String, Object> params);
  42 +
  43 +
31 } 44 }
springboot/morning-check/src/main/java/com/sincere/morningcheck/model/WXCheckTemplate.java 0 → 100644
@@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
  1 +package com.sincere.morningcheck.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.util.Date;
  6 +
  7 +@Data
  8 +public class WXCheckTemplate {
  9 +
  10 + /**
  11 + * 详情页面url
  12 + */
  13 + private String Url ;
  14 + /**
  15 + * 通知提示
  16 + */
  17 + private String FirstData;
  18 + /**
  19 + * 报告类型
  20 + */
  21 + private String Keyword1 ;
  22 + /**
  23 + * 生成时间
  24 + */
  25 + private String Keyword2;
  26 +
  27 + /**
  28 + * open数组
  29 + */
  30 + public String OpenID;
  31 +
  32 + /**
  33 + * 学校id
  34 + */
  35 + private String SchoolID;
  36 +
  37 +}
springboot/morning-check/src/main/java/com/sincere/morningcheck/service/StudentService.java
@@ -12,4 +12,8 @@ public interface StudentService { @@ -12,4 +12,8 @@ public interface StudentService {
12 Student getStudentByCardNo(String cardNo); 12 Student getStudentByCardNo(String cardNo);
13 13
14 void swipeCard(Map<String, Object> params); 14 void swipeCard(Map<String, Object> params);
  15 +
  16 + String getStuUserId(String num,String schoolId);
  17 +
  18 + List<String> getOpenId(String stuUserId,String schoolId);
15 } 19 }
springboot/morning-check/src/main/java/com/sincere/morningcheck/service/impl/StudentCheckReportServiceImpl.java
@@ -206,7 +206,7 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService @@ -206,7 +206,7 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService
206 for(StudentCheckReport item : studentCheckReports){ 206 for(StudentCheckReport item : studentCheckReports){
207 ApiStudent apiStudent = new ApiStudent(); 207 ApiStudent apiStudent = new ApiStudent();
208 apiStudent.setCardNo(item.getCardNo()); 208 apiStudent.setCardNo(item.getCardNo());
209 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm"); 209 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
210 apiStudent.setCheckTime(simpleDateFormat.format(item.getCheckTime())); 210 apiStudent.setCheckTime(simpleDateFormat.format(item.getCheckTime()));
211 apiStudent.setTemperature(item.getTemperature()); 211 apiStudent.setTemperature(item.getTemperature());
212 if(StringUtils.isNotBlank(item.getCheckResult())){ 212 if(StringUtils.isNotBlank(item.getCheckResult())){
@@ -214,7 +214,7 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService @@ -214,7 +214,7 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService
214 apiStudent.setCheckResultObj(getCheckResult(chs)); 214 apiStudent.setCheckResultObj(getCheckResult(chs));
215 } 215 }
216 if(StringUtils.isNotBlank(item.getCardNo())){ 216 if(StringUtils.isNotBlank(item.getCardNo())){
217 - Student student = studentDao.getStudentByCardNo(item.getCardNo()); 217 + Student student = studentDao.getStudentByStudentId(schoolId,item.getStudent_id());
218 apiStudent.setClassName(student.getClassName()); 218 apiStudent.setClassName(student.getClassName());
219 apiStudent.setStudent_id(student.getStuId()); 219 apiStudent.setStudent_id(student.getStuId());
220 apiStudent.setStuName(student.getStuName()); 220 apiStudent.setStuName(student.getStuName());
@@ -236,7 +236,7 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService @@ -236,7 +236,7 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService
236 ApiStudentCheckReport apiStudentCheckReport = new ApiStudentCheckReport(); 236 ApiStudentCheckReport apiStudentCheckReport = new ApiStudentCheckReport();
237 if(isMorningCheck) { 237 if(isMorningCheck) {
238 apiStudentCheckReport.setCardNo(studentCheckReport.getCardNo()); 238 apiStudentCheckReport.setCardNo(studentCheckReport.getCardNo());
239 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm"); 239 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
240 System.out.println(studentCheckReport.getCheckTime()); 240 System.out.println(studentCheckReport.getCheckTime());
241 apiStudentCheckReport.setCheckTime(simpleDateFormat.format(studentCheckReport.getCheckTime())); 241 apiStudentCheckReport.setCheckTime(simpleDateFormat.format(studentCheckReport.getCheckTime()));
242 apiStudentCheckReport.setStudent_id(studentCheckReport.getStudent_id()); 242 apiStudentCheckReport.setStudent_id(studentCheckReport.getStudent_id());
springboot/morning-check/src/main/java/com/sincere/morningcheck/service/impl/StudentServiceImpl.java
@@ -31,4 +31,14 @@ public class StudentServiceImpl implements StudentService { @@ -31,4 +31,14 @@ public class StudentServiceImpl implements StudentService {
31 31
32 studentDao.swipeCard(params); 32 studentDao.swipeCard(params);
33 } 33 }
  34 +
  35 + @Override
  36 + public String getStuUserId(String num,String schoolId) {
  37 + return studentDao.getStuUserId(num,schoolId);
  38 + }
  39 +
  40 + @Override
  41 + public List<String> getOpenId(String stuUserId, String schoolId) {
  42 + return studentDao.getOpenId(stuUserId,schoolId);
  43 + }
34 } 44 }
springboot/morning-check/src/main/java/com/sincere/morningcheck/utils/ApiHelper.java
@@ -88,9 +88,11 @@ public class ApiHelper { @@ -88,9 +88,11 @@ public class ApiHelper {
88 httpClient = HttpClients.createDefault(); 88 httpClient = HttpClients.createDefault();
89 // 创建HttpDelete远程连接实例 89 // 创建HttpDelete远程连接实例
90 HttpDelete httpDelete = new HttpDelete(url); 90 HttpDelete httpDelete = new HttpDelete(url);
91 - // 设置请求头信息,  
92 - for (Map.Entry<String, String> entry : headerParamMap.entrySet()) {  
93 - httpDelete.setHeader(entry.getKey(),entry.getValue()); 91 + if(headerParamMap!=null) {
  92 + // 设置请求头信息,
  93 + for (Map.Entry<String, String> entry : headerParamMap.entrySet()) {
  94 + httpDelete.setHeader(entry.getKey(), entry.getValue());
  95 + }
94 } 96 }
95 97
96 // 设置配置请求参数 98 // 设置配置请求参数
@@ -198,8 +200,10 @@ public class ApiHelper { @@ -198,8 +200,10 @@ public class ApiHelper {
198 HttpPost httpPost = new HttpPost(url); 200 HttpPost httpPost = new HttpPost(url);
199 // 设置请求头 201 // 设置请求头
200 httpPost.addHeader("Content-Type", "application/json"); 202 httpPost.addHeader("Content-Type", "application/json");
201 - for (Map.Entry<String, String> entry : headerParamMap.entrySet()) {  
202 - httpPost.setHeader(entry.getKey(),entry.getValue()); 203 + if(headerParamMap!=null) {
  204 + for (Map.Entry<String, String> entry : headerParamMap.entrySet()) {
  205 + httpPost.setHeader(entry.getKey(), entry.getValue());
  206 + }
203 } 207 }
204 // 配置请求参数实例 208 // 配置请求参数实例
205 RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间 209 RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间
springboot/morning-check/src/main/resources/application-dev.properties 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +salt = sincere
  2 +
  3 +server.port=8999
  4 +
  5 +#测试站点数据库
  6 +spring.datasource.username=SZJXTUSER
  7 +spring.datasource.password=xst200919
  8 +spring.datasource.url=jdbc:sqlserver://60.190.202.57:14333;Database=SmartCampusSZ
  9 +spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
  10 +
  11 +mybatis.mapper-locations=classpath:/mapper/*.xml
  12 +mybatis.type-aliases-package=com.sincere.morningcheck.model
  13 +
  14 +# springboot 部署环境的选取
  15 +spring.profiles.active=dev
springboot/morning-check/src/main/resources/application-prod.properties
@@ -12,4 +12,4 @@ mybatis.mapper-locations=classpath:/mapper/*.xml @@ -12,4 +12,4 @@ mybatis.mapper-locations=classpath:/mapper/*.xml
12 mybatis.type-aliases-package=com.sincere.morningcheck.model 12 mybatis.type-aliases-package=com.sincere.morningcheck.model
13 13
14 # springboot ²¿Êð»·¾³µÄѡȡ 14 # springboot ²¿Êð»·¾³µÄѡȡ
15 -spring.profiles.active=dev 15 +spring.profiles.active=prod
springboot/morning-check/src/main/resources/application.properties
@@ -2,14 +2,14 @@ salt = sincere @@ -2,14 +2,14 @@ salt = sincere
2 2
3 server.port=8999 3 server.port=8999
4 4
5 -#测试站点数据库  
6 -spring.datasource.username=SZJXTUSER  
7 -spring.datasource.password=xst200919  
8 -spring.datasource.url=jdbc:sqlserver://60.190.202.57:14333;Database=SmartCampusSZ 5 +#正式站点数据库
  6 +spring.datasource.username=szjxtuser
  7 +spring.datasource.password=RQminVCJota3H1u8bBYH
  8 +spring.datasource.url=jdbc:sqlserver://116.62.155.137:33419;database=smartcampus
9 spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver 9 spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
10 10
11 mybatis.mapper-locations=classpath:/mapper/*.xml 11 mybatis.mapper-locations=classpath:/mapper/*.xml
12 mybatis.type-aliases-package=com.sincere.morningcheck.model 12 mybatis.type-aliases-package=com.sincere.morningcheck.model
13 13
14 # springboot 部署环境的选取 14 # springboot 部署环境的选取
15 -spring.profiles.active=dev 15 +spring.profiles.active=prod
springboot/morning-check/src/main/resources/mapper/studentmapper.xml
@@ -33,6 +33,10 @@ @@ -33,6 +33,10 @@
33 where vs.role_state=1 33 where vs.role_state=1
34 </select> 34 </select>
35 35
  36 + <select id="getStudentByStudentId" resultMap="BaseResultMap">
  37 + select top 1 vs.name,vs.student_id,vs.class_id,vs.class_name from SZ_V_School_Student vs
  38 + where role_state=1 and school_id=#{schoolId} and student_id=#{studentId}
  39 + </select>
36 <select id="getStudentByStuUserId" resultMap="BaseResultMap"> 40 <select id="getStudentByStuUserId" resultMap="BaseResultMap">
37 select top 1 vs.name,vs.student_id,vs.class_id,vs.class_name,Cards=vs.student_num from SZ_V_School_Student vs 41 select top 1 vs.name,vs.student_id,vs.class_id,vs.class_name,Cards=vs.student_num from SZ_V_School_Student vs
38 where user_id=#{sUserId} 42 where user_id=#{sUserId}
@@ -45,6 +49,22 @@ @@ -45,6 +49,22 @@
45 <select id="getGradeBySchoolId" resultType="com.sincere.morningcheck.model.Grade"> 49 <select id="getGradeBySchoolId" resultType="com.sincere.morningcheck.model.Grade">
46 select id,grade,ShortName from SZ_Grade where Status=1 and SchoolId = #{schoolId} 50 select id,grade,ShortName from SZ_Grade where Status=1 and SchoolId = #{schoolId}
47 </select> 51 </select>
  52 +
  53 + <select id="getStuUserId" resultType="java.lang.String">
  54 + select vs.user_id from SZ_V_School_Student vs
  55 + inner join SZ_V_Card b on b.type=2 and vs.student_id=b.user_id and b.num=#{num}
  56 + where vs.role_state=1 and school_id = #{schoolId}
  57 + </select>
  58 +
  59 + <select id="getOpenId" resultType="java.lang.String">
  60 + select u.XSTOpenId from SZ_UserRole ur join
  61 + SZ_SPRole sp on ur.customerId = sp.student_id join
  62 + SZ_userrole ur2 on sp.parent_id = ur2.customerId
  63 + join sz_user u on ur2.user_id = u.user_id
  64 + where ur.user_id = #{stuUserId}
  65 + and ur2.usertype = 3 and ur2.school_id = #{schoolId}
  66 + and (u.XSTOpenId !='' or u.XSTOpenId is not null)
  67 + </select>
48 <select id="swipeCard" statementType="CALLABLE" resultType="java.util.Map"> 68 <select id="swipeCard" statementType="CALLABLE" resultType="java.util.Map">
49 {call xiaoan.dbo.AttendanceService( 69 {call xiaoan.dbo.AttendanceService(
50 #{att_id, mode=IN}, 70 #{att_id, mode=IN},