AuthServiceImpl.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package com.sooka.service.impl;
  2. import com.sooka.enums.ResultEnum;
  3. import com.sooka.mapper.AuthCNMDMapper;
  4. import com.sooka.model.ResultModel;
  5. import com.sooka.model.db.IntDetailed;
  6. import com.sooka.model.db.IntDetailed_SP;
  7. import com.sooka.service.AuthService;
  8. import com.sooka.mapper.AuthMapper;
  9. import com.sooka.utils.SecretKeyUtil;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import tk.mybatis.mapper.entity.Example;
  13. import javax.annotation.Resource;
  14. import java.text.SimpleDateFormat;
  15. import java.util.Date;
  16. import java.util.List;
  17. import java.util.Objects;
  18. @Service
  19. public class AuthServiceImpl implements AuthService {
  20. @Resource
  21. private AuthCNMDMapper authCNMDMapper;
  22. // @Autowired
  23. // private AuthMapper authMapper;
  24. @Override
  25. public ResultModel auth(String secretKey, String intCode) {
  26. System.out.println("进入 com.sooka.service.impl");
  27. // Example userExample = new Example(IntDetailed.class);
  28. // Example.Criteria criteria = userExample.createCriteria();
  29. // 小于等于
  30. // 原授权码到期验证
  31. // criteria.andLessThanOrEqualTo("strAt", DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
  32. // 大于等于
  33. // 原授权码到期验证
  34. // criteria.andGreaterThanOrEqualTo("endAt", DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
  35. // 等于
  36. // criteria.andEqualTo("secretKey", secretKey);
  37. // List<IntDetailed> list = authMapper.selectByExample(userExample);
  38. IntDetailed_SP intDetailedParam = new IntDetailed_SP();
  39. intDetailedParam.setSecretKey(secretKey);
  40. System.out.println("start querying...");
  41. List<IntDetailed_SP> list = authCNMDMapper.selectIntDetailedList(intDetailedParam);
  42. System.out.println("query finished. list.size=" + list.size());
  43. // 原授权码到期验证
  44. // if (list == null || list.size() != 1) {
  45. // return ResultModel.error(ResultEnum.ERROR_AUTH_EXPIRES);
  46. // }
  47. // IntDetailed intDetailed = list.get(0);
  48. // 新授权码到期验证
  49. boolean isAuthExpires;
  50. IntDetailed_SP intDetailed;
  51. if(list == null){
  52. System.out.println("无此密钥" + secretKey);
  53. }else if(list.size() == 0){
  54. System.out.println("存在0个密钥" + secretKey);
  55. }else if(list.size() > 1){
  56. System.out.println("存在多个异常密钥" + secretKey);
  57. }else if(list.size() == 1){
  58. System.out.println("存在1个密钥 secretKey=" + list.get(0).getSecretKey());
  59. }
  60. if (list != null && list.size() == 1) {
  61. intDetailed = list.get(0);
  62. if(intDetailed.getRecordId() != null){ // 新接口解析密钥判断授权时效
  63. // 解密后的明文是:123/政数局/2022-10-20 - 2022-10-29/b29c94d72ee74c6d94b573d90020ea59
  64. // String duration = SecretKeyUtil.AESDncode("3fc674da58", intDetailed.getSecretKey().split("/")[2]);
  65. String secret_key = intDetailed.getSecretKey();
  66. System.out.println("secret_key=" + secret_key);
  67. String secret_content = SecretKeyUtil.AESDncode("3fc674da58", secret_key);
  68. System.out.println("secret_content=" + secret_content);
  69. String duration = secret_content.split("/")[2];
  70. // String duration = intDetailed.getSecretContent().split("/")[2];
  71. System.out.println("duration=" + duration);
  72. // 2022-10-20 - 2022-10-29
  73. String startTime = duration.split(" - ")[0];
  74. String endTime = duration.split(" - ")[1];
  75. String nowTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
  76. if(nowTime.compareTo(startTime) != -1 && endTime.compareTo(nowTime) != -1){
  77. isAuthExpires = false; // 授权有效
  78. System.out.println("授权有效");
  79. }else {
  80. isAuthExpires = true; // 授权已到期
  81. System.out.println("授权已到期");
  82. }
  83. }else { // legacy
  84. isAuthExpires = false; // 旧接口按照原密钥接收数据,授权长期有效
  85. System.out.println("旧接口按照原密钥接收数据,授权长期有效");
  86. }
  87. }else { // 授权失效或无此密钥及存在多个异常密钥,提示授权码到期请重新申请
  88. String a ="1HjlUwOjkNCuvi+E8+r+4oYWPV1lDMF6l8E7GovGe9h4GtK4nDBXQKirD57TTku+08MHkHsS04X8xpKGQTrNOxG5LfweCxtHbmoUczwF9Y8=";
  89. intDetailed = null;
  90. isAuthExpires = true;
  91. System.out.println("授权失效或无此密钥及存在多个异常密钥,提示授权码到期请重新申请");
  92. }
  93. if (isAuthExpires) {
  94. return ResultModel.error(ResultEnum.ERROR_AUTH_EXPIRES);
  95. }
  96. if (!Objects.equals(intCode, intDetailed.getCode()) && !Objects.equals(intCode, intDetailed.getCodeSp())) {// 旧秘钥验证 && 新秘钥验证
  97. return ResultModel.error(ResultEnum.ERROR_INT_SECRET_KEY_MISMATCH);
  98. }
  99. // // 原申请接口状态验证
  100. // if (!"1".equalsIgnoreCase(intDetailed.getStatus())) {
  101. // return ResultModel.error(ResultEnum.ERROR_INTERFACE_DISABLED);
  102. // }
  103. return ResultModel.ok(list);
  104. }
  105. }