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 @@
  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 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 5 import com.sincere.morningcheck.common.MD5;
5 6 import com.sincere.morningcheck.common.ServerResponse;
6 7 import com.sincere.morningcheck.model.*;
... ... @@ -8,7 +9,7 @@ import com.sincere.morningcheck.service.FileUpAndDownService;
8 9 import com.sincere.morningcheck.service.StudentCheckReportService;
9 10 import com.sincere.morningcheck.service.StudentService;
10 11 import com.sincere.morningcheck.service.UserServer;
11   -import com.sincere.morningcheck.service.impl.FileUpAndDownServiceImpl;
  12 +import com.sincere.morningcheck.utils.ApiHelper;
12 13 import com.sincere.morningcheck.utils.DataConvertHelper;
13 14 import com.sincere.morningcheck.utils.LogUtil;
14 15 import io.swagger.annotations.Api;
... ... @@ -21,22 +22,15 @@ import org.springframework.beans.factory.annotation.Value;
21 22 import org.springframework.web.bind.annotation.*;
22 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 25 import java.text.ParseException;
28 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 29 @RestController
35 30 @RequestMapping("user")
36 31 @Api(value = "MorningCheckController", tags = "晨检机晨检接口说明")
37 32 public class MorningCheckController {
38 33  
39   - private String token = "CESHI651BB2B8AEBBF0DB2FFC9B4EAD5F04E2";
40 34  
41 35 @Value("${salt}")
42 36 private String salt;
... ... @@ -60,10 +54,10 @@ public class MorningCheckController {
60 54 @ApiImplicitParam(name = "authSign", value = "签名", dataType = "String",required = true,paramType = "query"),
61 55 })
62 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 59 ServerResponse serverResponse = null;
66   -
  60 + LogUtil.printInfoLog("进入登陆接口");
67 61 Map map = new HashMap();
68 62 map.put("password", password);
69 63 map.put("deviceNo", deviceNo);
... ... @@ -72,18 +66,16 @@ public class MorningCheckController {
72 66 System.out.println(queryUrl);
73 67 try {
74 68 String signUrl = queryUrl.replace("&","");
75   - System.out.println(signUrl);
76 69 // String md5 = MD5.md5(signUrl, salt);
77 70 boolean verify = MD5.verify(signUrl,salt,authSign);
78   -
  71 + System.out.println("校验是否成功:"+verify);
79 72 if(verify) {
80 73  
81 74 User user = userServer.getDeviceUser(deviceNo);
82 75 user.setParameter("0");
  76 + String token = user.getDeviceId()+","+user.getSchoolId();//AESDeEncoder.AESEncode("token",user.getDeviceId()+","+user.getSchoolId());
83 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 79 serverResponse = ServerResponse.createBySuccess("success",user);
88 80  
89 81 }else{
... ... @@ -152,7 +144,7 @@ public class MorningCheckController {
152 144 "时间格式为 : yyyy-MM-dd-HH-mm-ss", dataType = "String",paramType = "query")
153 145 })
154 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 149 LogUtil.printInfoLog("刷卡签到传入的参数:卡号"+cardNo+",图片ID:"+imageId+",签名"+authSign);
158 150 ServerResponse serverResponse = null;
... ... @@ -167,8 +159,6 @@ public class MorningCheckController {
167 159 Date dateIn = null;
168 160 if(StringUtils.isBlank(date)){
169 161 Calendar calendar= Calendar.getInstance();
170   -// SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
171   -// date = dateFormat.format(calendar.getTime());
172 162 dateIn= calendar.getTime();
173 163  
174 164 }else{
... ... @@ -188,8 +178,9 @@ public class MorningCheckController {
188 178 boolean verify = MD5.verify(signUrl,salt,authSign);
189 179 System.out.println("签名是否正确"+verify);
190 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 184 Map<String,Object> hashMap = new HashMap<>();
194 185 //设备编号
195 186 hashMap.put("att_id",deviceId);
... ... @@ -197,7 +188,7 @@ public class MorningCheckController {
197 188 hashMap.put("func_no","08");
198 189 hashMap.put("flag",0);
199 190 hashMap.put("intime",dateIn);
200   - System.out.println(deviceId);
  191 + System.out.println("设备标识"+deviceId);
201 192  
202 193 studentService.swipeCard(hashMap);
203 194 System.out.println("集合数量:"+hashMap.size());
... ... @@ -230,7 +221,7 @@ public class MorningCheckController {
230 221 @ApiImplicitParam(name = "authSign", value = "签名", dataType = "String",required = true,paramType = "query")
231 222 })
232 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 226 ServerResponse serverResponse = null;
236 227 LogUtil.printInfoLog("离园签到传入的参数:卡号"+cardNo+",图片ID:"+imageId+",签名"+authSign);
... ... @@ -248,8 +239,7 @@ public class MorningCheckController {
248 239 boolean verify = MD5.verify(signUrl,salt,authSign);
249 240 System.out.println("签名是否正确"+verify);
250 241 if(verify) {
251   - HttpSession session = request.getSession();
252   - String deviceId = session.getAttribute("deviceId").toString();
  242 + String deviceId = token.split(",")[0];
253 243 Map<String,Object> hashMap = new HashMap<>();
254 244 hashMap.put("att_id",deviceId);
255 245 hashMap.put("card_num",card);
... ... @@ -352,18 +342,50 @@ public class MorningCheckController {
352 342 map.put("handImgId",handImgId);
353 343 map.put("mouthImgId",mouthImgId);
354 344 map.put("eyeImgId",eyeImgId);
355   -
  345 + Date checkDate = new Date();
356 346 String queryUrl = DataConvertHelper.mapAscSortToUrl(map);
357 347 try {
358 348 String signUrl = queryUrl.replace("&","");
359 349 boolean verify = MD5.verify(signUrl,salt,authSign);
360 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 383 StudentCheckReport studentCheckReport = new StudentCheckReport();
362 384 studentCheckReport.setAccess(access);
363 385 studentCheckReport.setCardNo(card);
364 386 studentCheckReport.setCheckResult(result);
365 387 studentCheckReport.setRobotResult(robotResult);
366   - Date checkDate = new Date();
  388 +
367 389 studentCheckReport.setCheckTime(checkDate);
368 390 studentCheckReport.setInTime(checkDate);
369 391 studentCheckReport.setTemperature(temperature);
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/dao/StudentDao.java
... ... @@ -18,14 +18,27 @@ public interface StudentDao {
18 18  
19 19 Student getStudentByCardNo(@Param("cardNo") String cardNo);
20 20  
  21 + Student getStudentByStudentId(@Param("schoolId")Integer schoolId,@Param("studentId")Integer studentId);
  22 +
21 23 Student getStudentByStuUserId(@Param("sUserId") String sUserId);
22 24  
23 25 int getStuCountBySchoolId(@Param("schoolId") Integer schoolId);
24 26  
25 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 38 * 传入的参数和返回的结果都在map集合参数params中
28 39 * @param params
29 40 */
30 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 @@
  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 12 Student getStudentByCardNo(String cardNo);
13 13  
14 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 206 for(StudentCheckReport item : studentCheckReports){
207 207 ApiStudent apiStudent = new ApiStudent();
208 208 apiStudent.setCardNo(item.getCardNo());
209   - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm");
  209 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
210 210 apiStudent.setCheckTime(simpleDateFormat.format(item.getCheckTime()));
211 211 apiStudent.setTemperature(item.getTemperature());
212 212 if(StringUtils.isNotBlank(item.getCheckResult())){
... ... @@ -214,7 +214,7 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService
214 214 apiStudent.setCheckResultObj(getCheckResult(chs));
215 215 }
216 216 if(StringUtils.isNotBlank(item.getCardNo())){
217   - Student student = studentDao.getStudentByCardNo(item.getCardNo());
  217 + Student student = studentDao.getStudentByStudentId(schoolId,item.getStudent_id());
218 218 apiStudent.setClassName(student.getClassName());
219 219 apiStudent.setStudent_id(student.getStuId());
220 220 apiStudent.setStuName(student.getStuName());
... ... @@ -236,7 +236,7 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService
236 236 ApiStudentCheckReport apiStudentCheckReport = new ApiStudentCheckReport();
237 237 if(isMorningCheck) {
238 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 240 System.out.println(studentCheckReport.getCheckTime());
241 241 apiStudentCheckReport.setCheckTime(simpleDateFormat.format(studentCheckReport.getCheckTime()));
242 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 31  
32 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 88 httpClient = HttpClients.createDefault();
89 89 // 创建HttpDelete远程连接实例
90 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 200 HttpPost httpPost = new HttpPost(url);
199 201 // 设置请求头
200 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 209 RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间
... ...
springboot/morning-check/src/main/resources/application-dev.properties 0 → 100644
... ... @@ -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 12 mybatis.type-aliases-package=com.sincere.morningcheck.model
13 13  
14 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 2  
3 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 9 spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
10 10  
11 11 mybatis.mapper-locations=classpath:/mapper/*.xml
12 12 mybatis.type-aliases-package=com.sincere.morningcheck.model
13 13  
14 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 33 where vs.role_state=1
34 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 40 <select id="getStudentByStuUserId" resultMap="BaseResultMap">
37 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 42 where user_id=#{sUserId}
... ... @@ -45,6 +49,22 @@
45 49 <select id="getGradeBySchoolId" resultType="com.sincere.morningcheck.model.Grade">
46 50 select id,grade,ShortName from SZ_Grade where Status=1 and SchoolId = #{schoolId}
47 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 68 <select id="swipeCard" statementType="CALLABLE" resultType="java.util.Map">
49 69 {call xiaoan.dbo.AttendanceService(
50 70 #{att_id, mode=IN},
... ...