SystemConstant.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. package com.qmth.teachcloud.common.contant;
  2. import com.qmth.boot.core.uid.service.UidService;
  3. import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
  4. import java.io.File;
  5. import java.nio.charset.Charset;
  6. import java.util.*;
  7. import java.util.stream.Collectors;
  8. /**
  9. * @Description: 系统常量
  10. * @Param:
  11. * @return:
  12. * @Author: wangliang
  13. * @Date: 2019/10/11
  14. */
  15. public class SystemConstant {
  16. /**
  17. * 系统常量
  18. */
  19. public static final String CHARSET_NAME = "UTF-8";
  20. public static final Charset CHARSET = Charset.forName(CHARSET_NAME);
  21. public static final String MD5 = "MD5";
  22. public static final String SUCCESS = "success";
  23. public static final String EXTEND_COLUMN = "extendColumn";
  24. public static final String USER_DIR = "user.dir";
  25. public static final String PDF_TEMP = "pdf-temp";
  26. public static final String FILE_TEMP = "file-temp";
  27. public static final String DOWNLOAD_TEMP = "download-temp";
  28. public static final String SESSION = "session:";
  29. public static final String TASK = "task";
  30. public static final String USER = "account";
  31. public static final String SCHOOL_ID = "schoolId";
  32. public static final String SCHOOL = "school";
  33. public static final String ORG = "org";
  34. public static final String ERROR = "/error";
  35. public static final String METHOD = "post";
  36. public static final String DEFAULT_PASSWORD = "MTIzNDU2";
  37. public static final String DEFAULT_MOBILE_NUMBER = "11111111111";
  38. public static final String UPDATE_TIME = "updateTime";
  39. public static final String PATH = "path";
  40. public static final String PDF_PATH = "pdfPath";
  41. public static final String HTML_PATH = "htmlPath";
  42. public static final String TYPE = "type";
  43. public static final String LOCAL = "local";
  44. public static final String OSS = "oss";
  45. public static final String LOGO = "logo";
  46. public static final String UPLOAD_TYPE = "uploadType";
  47. public static final String HTTP = "http://";
  48. public static final String ID = "id";
  49. public static final String FILE = "file";
  50. public static final String SIZE = "size";
  51. public static final String HTML_PREFIX = ".html";
  52. public static final String PDF_PREFIX = ".pdf";
  53. public static final String FTL_PREFIX = ".ftl";
  54. public static final String ZIP_PREFIX = ".zip";
  55. public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";
  56. public static final int PAGE_NUMBER = 0;
  57. public static final int PAGE_SIZE = 10000000;
  58. public static final int ALL_CARD = -1;
  59. public static final String MANUAL = "manual";
  60. public static final String DELIMITER = ":";
  61. public static final int FINAL_SCALE = 1;
  62. public static final int CALCULATE_SCALE = 4;
  63. public static final int OPER_SCALE = 8;
  64. public static final String HYPHEN = "-";
  65. public static final String DEFAULT_SIGN = "#";
  66. public static final String COMMA_OF_ENGLISH = ",";
  67. public static final String COMMA_OF_CHINESE = ",";
  68. public static final String PAUSE_SIGN = "、";
  69. public static final String PARENT_ORG = "武汉大学教务处";
  70. public static final String SCHOOL_CODE = "ggjckcjfx";
  71. // public static final int MAX_RETRY_CREATE_PDF_COUNT = 5;
  72. /**
  73. * oss url过期时间
  74. */
  75. public static final int OSS_URL_EXPIRE = 5 * 60 * 1000;//过期时间5分钟
  76. /**
  77. * 缓存配置
  78. */
  79. public static final String USER_OAUTH_CACHE = "user:oauth:cache";
  80. public static final String USER_ACCOUNT_CACHE = "user:account:cache";
  81. public static final String SCHOOL_CACHE = "school:cache";
  82. public static final String SCHOOL_CODE_CACHE = "school:code:cache";
  83. public static final String ORG_CACHE = "org:cache";
  84. public static final String PRIVILEGE_URL_CACHE = "privilege:url:cache";
  85. public static final String ROLE_PRIVILEGE_CACHE = "role:privilege:cache";
  86. public static final String USER_ROLE_PRIVILEGE_CACHE = "user:role:privilege:cache";
  87. /**
  88. * 报表缓存
  89. */
  90. public static final String EXAM_STUDENT_REPORT = "report:cache:examStudent";
  91. public static final String COLLEGE_DEAN_REPORT = "report:cache:collegeDean";
  92. public static final String COLLEGE_COURSE_REPORT = "report:cache:collegeCourse";
  93. public static final String SURVEY_TEACHER_VIEW_REPORT = "report:cache:surveyTeacherView";
  94. public static final String TEACHER_VIEW_REPORT = "report:cache:teacherView";
  95. public static final String TEACHER_ANSWER_VIEW_REPORT = "report:cache:teacherAnswerView";
  96. /**
  97. * 鉴权
  98. */
  99. public static final String HEADER_AUTHORIZATION = "Authorization";
  100. public static final String HEADER_TIME = "time";
  101. public static final String HEADER_PLATFORM = "platform";
  102. public static final String HEADER_DEVICE_ID = "deviceId";
  103. public static final String TOKEN = "token";
  104. /**
  105. * redis
  106. */
  107. public static final int DEFAULT_SESSION_EXPIRE = 1;//过期时间1天
  108. public static final long REDIS_DEFAULT_EXPIRE_TIME = 24 * 60L * 60L;//过期时间24小时
  109. public static final long REDIS_CREATE_PDF_EXPIRE_TIME = 1 * 60L * 60L;//过期时间1小时
  110. public static final long REDIS_WHU_USER_AUTH_EXPIRE_TIME = 2 * 60L;//过期时间2分钟
  111. /**
  112. * redis mq
  113. */
  114. public static final String REDIS_LOCK_GRADE_COURSE_DELETE_PREFIX = "redis:lock:courseInfo:";
  115. /**
  116. * redis lock
  117. */
  118. public static final int MAX_RETRY_COUNT = 30;
  119. public static final long REDIS_CACHE_TIME_OUT = 60L;
  120. public static final long REDIS_LOCK_BATCH_NO_TIME_OUT = 60L * 30;
  121. /**
  122. * aes相关
  123. */
  124. public static final String AES = "AES";
  125. public static final String AES_MODE_PKCS5 = "AES/CBC/PKCS5Padding";//用这个模式,规则必须为16位
  126. public static final String AES_MODE_PKCS7 = "AES/CBC/PKCS7Padding";//用这个模式,规则必须为16位
  127. public static final String AES_RULE = "1234567890123456";//aes密钥
  128. /**
  129. * 变量
  130. */
  131. public static String TEMP_FILES_DIR;
  132. public static String PDF_TEMP_FILES_DIR;
  133. /**
  134. * excel相关
  135. */
  136. public static String XLSX = "xlsx";
  137. public static String XLS = "xls";
  138. /**
  139. * 线程池配置
  140. */
  141. public static final String THREAD_POOL_NAME = "taskThreadPool";
  142. // public static final int THREAD_POOL_CORE_POOL_SIZE = 5;
  143. // public static final int THREAD_POOL_MAX_POOL_SIZE = 100;
  144. public static final int THREAD_POOL_KEEP_ALIVE_SECONDS = 10;
  145. public static final int THREAD_POOL_QUEUE_CAPACITY = 500;
  146. /**
  147. * 初始化附件文件路径
  148. */
  149. public static void initTempFiles() {
  150. StringJoiner localPath = new StringJoiner("").add(System.getProperty(USER_DIR));
  151. String mkdir = localPath.toString().substring(0, localPath.toString().lastIndexOf(File.separator));
  152. File fileTempDir = new File(new StringBuffer(mkdir).append(File.separator).append(FILE_TEMP).toString());
  153. if (!fileTempDir.exists()) {
  154. fileTempDir.mkdirs();
  155. }
  156. File pdfTempDir = new File(new StringBuffer(mkdir).append(File.separator).append(PDF_TEMP).toString());
  157. if (!pdfTempDir.exists()) {
  158. pdfTempDir.mkdirs();
  159. }
  160. TEMP_FILES_DIR = fileTempDir.getPath();
  161. PDF_TEMP_FILES_DIR = pdfTempDir.getPath();
  162. }
  163. /**
  164. * id转换为long
  165. *
  166. * @return
  167. */
  168. public static Long convertIdToLong(String id) {
  169. return Objects.nonNull(id) && id.length() > 0 ? Long.parseLong(id) : null;
  170. }
  171. /**
  172. * 获取全局uuid
  173. *
  174. * @return
  175. */
  176. public static String getUuid() {
  177. return String.valueOf(UUID.randomUUID()).replaceAll("-", "");
  178. }
  179. /**
  180. * 获取数据库uuid
  181. *
  182. * @return
  183. */
  184. public static Long getDbUuid() {
  185. UidService uidservice = SpringContextHolder.getBean(UidService.class);
  186. return uidservice.getId();
  187. }
  188. /**
  189. * enable转换
  190. *
  191. * @return
  192. */
  193. public static Boolean convertEnable(Boolean enable) {
  194. return Objects.nonNull(enable) ? enable : true;
  195. }
  196. /**
  197. * 试卷类型转换
  198. *
  199. * @param paperType
  200. * @return
  201. */
  202. public static String convertPaperType(String paperType) {
  203. paperType = paperType.toLowerCase();
  204. int ascii = (int) paperType.charAt(0);
  205. return String.valueOf(ascii + 704);
  206. }
  207. /**
  208. * 模糊查询时调用以去除符号"%","_"特殊字符对查询结果的影响
  209. *
  210. * @param param 要校验的参数
  211. * @return 转译后的参数
  212. */
  213. public static String translateSpecificSign(String param) {
  214. if (param == null) {
  215. return null;
  216. }
  217. if (param.contains("%")) {
  218. param = param.replaceAll("%", "\\\\%");
  219. }
  220. if (param.contains("_")) {
  221. param = param.replaceAll("_", "\\\\_");
  222. }
  223. return param;
  224. }
  225. public static void verifyLength(String str, int length, String name) {
  226. if (str == null || str.length() == 0 || str.equals("null")) {
  227. throw ExceptionResultEnum.ERROR.exception(name + "不能为空");
  228. }
  229. if (str.length() > length) {
  230. throw ExceptionResultEnum.ERROR.exception("[" + name + ":" + str + "]' 超过长度限制 : " + length);
  231. }
  232. }
  233. /**
  234. * String 类型的参数不为空
  235. *
  236. * @param str 参数
  237. * @return true :不为空、false :为空
  238. */
  239. public static boolean strNotNull(String str) {
  240. return str != null && str.length() > 0 && !str.equals("null");
  241. }
  242. /**
  243. * Long 类型的参数不为空
  244. *
  245. * @param x 参数
  246. * @return true:不为空、false:为空
  247. */
  248. public static boolean longNotNull(Long x) {
  249. return x != null && x > 0;
  250. }
  251. /**
  252. * 跨步数组(将list集合按照数量拆分成多个集合)
  253. *
  254. * @param datasource 数据源(初始大数据集合)
  255. * @param step 跨步(多少个元素一个集合)
  256. * @param <T> 泛型
  257. * @return 拆分好地集合的集合
  258. */
  259. public static <T> List<List<T>> getStepList(List<T> datasource, int step) {
  260. List<List<T>> result = new ArrayList<>();
  261. int size = datasource.size();
  262. for (int i = 0; i < size; i = i + step) {
  263. List<T> cell = datasource.stream().skip(i).limit(step).collect(Collectors.toList());
  264. result.add(cell);
  265. }
  266. return result;
  267. }
  268. /**
  269. * 跨步数组(将list集合按照cpu核心数量拆分成多个集合)
  270. *
  271. * @param datasource 数据源
  272. * @param <T> 泛型
  273. * @return 拆分好地集合的集合
  274. */
  275. public static <T> List<List<T>> getStepList(List<T> datasource) {
  276. int cpuNum = Runtime.getRuntime().availableProcessors();
  277. int step = datasource.size() / cpuNum + 1;
  278. List<List<T>> result = new ArrayList<>();
  279. int size = datasource.size();
  280. for (int i = 0; i < size; i = i + step) {
  281. List<T> cell = datasource.stream().skip(i).limit(step).collect(Collectors.toList());
  282. result.add(cell);
  283. }
  284. return result;
  285. }
  286. }