From 6bb923951c3ce0dc71dd395fe6eb539a13e861b7 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 29 一月 2024 10:45:46 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtSubject.java | 31 ++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/HostServiceImpl.java | 12
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/Test.java | 16 +
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/JwtUtil.java | 143 ++++++++++
zy-asrs-wcs/src/main/resources/application.yml | 2
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/constant/Constants.java | 93 ++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/HostService.java | 8
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java | 112 ++++++++
zy-asrs-wcs/pom.xml | 11
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java | 224 ++++++++++++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/mapper/HostMapper.java | 12
zy-asrs-wcs/src/main/resources/mapper/sys/HostMapper.xml | 5
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Host.java | 125 ++++++++
13 files changed, 793 insertions(+), 1 deletions(-)
diff --git a/zy-asrs-wcs/pom.xml b/zy-asrs-wcs/pom.xml
index 5b6c1a6..986a53d 100644
--- a/zy-asrs-wcs/pom.xml
+++ b/zy-asrs-wcs/pom.xml
@@ -38,6 +38,17 @@
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.jsonwebtoken</groupId>
+ <artifactId>jjwt-impl</artifactId>
+ <version>0.11.2</version>
+ </dependency>
+ <dependency>
+ <groupId>io.jsonwebtoken</groupId>
+ <artifactId>jjwt-jackson</artifactId>
+ <version>0.11.2</version>
+ </dependency>
+
<!-- okHttp3 -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/Test.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/Test.java
index 8e9f9da..fd8862b 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/Test.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/Test.java
@@ -1,7 +1,23 @@
package com.zy.asrs.wcs.common;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wcs.sys.service.HostService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
/**
* Created by vincent on 1/27/2024
*/
+@RestController
public class Test {
+
+ @Autowired
+ private HostService hostService;
+
+ @GetMapping("/test")
+ public R gs() {
+ return R.ok().add(hostService.list());
+ }
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/constant/Constants.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/constant/Constants.java
new file mode 100644
index 0000000..acc9941
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/constant/Constants.java
@@ -0,0 +1,93 @@
+package com.zy.asrs.wcs.common.constant;
+
+/**
+ * 绯荤粺甯搁噺
+ * Created by vincent on 2019-10-29 15:55
+ */
+public class Constants {
+ /**
+ * 榛樿鎴愬姛鐮�
+ */
+ public static final int RESULT_OK_CODE = 0;
+
+ /**
+ * 榛樿澶辫触鐮�
+ */
+ public static final int RESULT_ERROR_CODE = 1;
+
+ /**
+ * 榛樿鎴愬姛淇℃伅
+ */
+ public static final String RESULT_OK_MSG = "鎿嶄綔鎴愬姛";
+
+ /**
+ * 榛樿澶辫触淇℃伅
+ */
+ public static final String RESULT_ERROR_MSG = "鎿嶄綔澶辫触";
+
+ /**
+ * 鏃犳潈闄愰敊璇爜
+ */
+ public static final int UNAUTHORIZED_CODE = 403;
+
+ /**
+ * 鏃犳潈闄愭彁绀轰俊鎭�
+ */
+ public static final String UNAUTHORIZED_MSG = "娌℃湁璁块棶鏉冮檺";
+
+ /**
+ * 鏈璇侀敊璇爜
+ */
+ public static final int UNAUTHENTICATED_CODE = 401;
+
+ /**
+ * 鏈璇佹彁绀轰俊鎭�
+ */
+ public static final String UNAUTHENTICATED_MSG = "璇峰厛鐧诲綍";
+
+ /**
+ * 鐧诲綍杩囨湡閿欒鐮�
+ */
+ public static final int TOKEN_EXPIRED_CODE = 401;
+
+ /**
+ * 鐧诲綍杩囨湡鎻愮ず淇℃伅
+ */
+ public static final String TOKEN_EXPIRED_MSG = "鐧诲綍宸茶繃鏈�";
+
+ /**
+ * 闈炴硶token閿欒鐮�
+ */
+ public static final int BAD_CREDENTIALS_CODE = 401;
+
+ /**
+ * 闈炴硶token鎻愮ず淇℃伅
+ */
+ public static final String BAD_CREDENTIALS_MSG = "璇烽��鍑洪噸鏂扮櫥褰�";
+
+ /**
+ * 琛ㄧず鍗囧簭鐨勫��
+ */
+ public static final String ORDER_ASC_VALUE = "asc";
+
+ /**
+ * 琛ㄧず闄嶅簭鐨勫��
+ */
+ public static final String ORDER_DESC_VALUE = "desc";
+
+ /**
+ * token閫氳繃header浼犻�掔殑鍚嶇О
+ */
+ public static final String TOKEN_HEADER_NAME = "Authorization";
+
+ /**
+ * token閫氳繃鍙傛暟浼犻�掔殑鍚嶇О
+ */
+ public static final String TOKEN_PARAM_NAME = "access_token";
+
+ /**
+ * token璁よ瘉绫诲瀷
+ */
+ public static final String TOKEN_TYPE = "Bearer";
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java
new file mode 100644
index 0000000..3673b38
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java
@@ -0,0 +1,112 @@
+//package com.zy.asrs.wcs.common.security;
+//
+//import com.core.common.Cools;
+//import com.zy.acs.manager.common.config.ConfigProperties;
+//import com.zy.acs.manager.common.constant.Constants;
+//import com.zy.acs.manager.common.utils.CommonUtil;
+//import com.zy.acs.manager.common.utils.JwtUtil;
+//import com.zy.acs.manager.system.entity.LoginRecord;
+//import com.zy.acs.manager.system.entity.Menu;
+//import com.zy.acs.manager.system.entity.User;
+//import com.zy.acs.manager.system.service.LoginRecordService;
+//import com.zy.acs.manager.system.service.UserService;
+//import io.jsonwebtoken.Claims;
+//import io.jsonwebtoken.ExpiredJwtException;
+//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+//import org.springframework.security.core.context.SecurityContextHolder;
+//import org.springframework.security.core.userdetails.UsernameNotFoundException;
+//import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
+//import org.springframework.stereotype.Component;
+//import org.springframework.web.filter.OncePerRequestFilter;
+//
+//import javax.annotation.Resource;
+//import javax.servlet.FilterChain;
+//import javax.servlet.ServletException;
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.IOException;
+//import java.util.ArrayList;
+//import java.util.Date;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * 澶勭悊鎼哄甫token鐨勮姹傝繃婊ゅ櫒
+// *
+// */
+//@Component
+//public class JwtAuthenticationFilter extends OncePerRequestFilter {
+//
+// public static final ArrayList<String> WHITE_KEY = new ArrayList<String>(){
+// private static final long serialVersionUID = 1L;
+// {
+// add("xltys1995");
+// }
+// };
+//
+// @Resource
+// private ConfigProperties configProperties;
+// @Resource
+// private UserService userService;
+// @Resource
+// private LoginRecordService loginRecordService;
+//
+// @Override
+// protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
+// String access_token = JwtUtil.getAccessToken(request);
+// for (String filterPath : SecurityConfig.FILTER_PATH) {
+// AntPathRequestMatcher antPathMatcher = new AntPathRequestMatcher(filterPath);
+// if (antPathMatcher.matches(request)) {
+// access_token = "";
+// }
+// }
+// if (!Cools.isEmpty(access_token)) {
+// try {
+// User user;
+// if (WHITE_KEY.contains(access_token)) {
+// user = userService.getByUsername("openapi", 2);
+// if (user == null) {
+// throw new UsernameNotFoundException("Username not found");
+// }
+// List<Menu> authorities = user.getAuthorities().stream()
+// .filter(m -> !Cools.isEmpty(m.getAuthority())).collect(Collectors.toList());
+// UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
+// user, null, authorities);
+// SecurityContextHolder.getContext().setAuthentication(authentication);
+// } else {
+// // 瑙f瀽token
+// Claims claims = JwtUtil.parseToken(access_token, configProperties.getTokenKey());
+// JwtSubject jwtSubject = JwtUtil.getJwtSubject(claims);
+// user = userService.getByUsername(jwtSubject.getUsername(), jwtSubject.getTenantId());
+// if (user == null) {
+// throw new UsernameNotFoundException("Username not found");
+// }
+// List<Menu> authorities = user.getAuthorities().stream()
+// .filter(m -> !Cools.isEmpty(m.getAuthority())).collect(Collectors.toList());
+// UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
+// user, null, authorities);
+// SecurityContextHolder.getContext().setAuthentication(authentication);
+// // token灏嗚杩囨湡绛惧彂鏂皌oken, 闃叉绐佺劧閫�鍑虹櫥褰�
+// long expiration = (claims.getExpiration().getTime() - new Date().getTime()) / 1000 / 60;
+// if (expiration < configProperties.getTokenRefreshTime()) {
+// String token = JwtUtil.buildToken(jwtSubject, configProperties.getTokenExpireTime(),
+// configProperties.getTokenKey());
+// response.addHeader(Constants.TOKEN_HEADER_NAME, token);
+// loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_REFRESH, null,
+// user.getTenantId(), request);
+// }
+// }
+// } catch (ExpiredJwtException e) {
+// CommonUtil.responseError(response, Constants.TOKEN_EXPIRED_CODE, Constants.TOKEN_EXPIRED_MSG,
+// e.getMessage());
+// return;
+// } catch (Exception e) {
+// CommonUtil.responseError(response, Constants.BAD_CREDENTIALS_CODE, Constants.BAD_CREDENTIALS_MSG,
+// e.toString());
+// return;
+// }
+// }
+// chain.doFilter(request, response);
+// }
+//
+//}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtSubject.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtSubject.java
new file mode 100644
index 0000000..ca9742b
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtSubject.java
@@ -0,0 +1,31 @@
+package com.zy.asrs.wcs.common.security;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * Jwt杞戒綋
+ *
+ * @author vincent
+ * @since 2021-09-03 00:11:12
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class JwtSubject implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 璐﹀彿
+ */
+ private String username;
+
+ /**
+ * 绉熸埛id
+ */
+ private Integer tenantId;
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Host.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Host.java
new file mode 100644
index 0000000..e87c78b
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Host.java
@@ -0,0 +1,125 @@
+package com.zy.asrs.wcs.sys.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.zy.asrs.framework.common.Cools;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("sys_host")
+public class Host implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ApiModelProperty(value= "ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鍚嶇О
+ */
+ @ApiModelProperty(value= "鍚嶇О")
+ private String name;
+
+ /**
+ * 鐘舵�� 1: 姝e父 0: 绂佺敤
+ */
+ @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 绂佺敤 ")
+ private Integer status;
+
+ /**
+ * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
+ private Integer deleted;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ public Host() {}
+
+ public Host(String name,Integer status,Integer deleted,Date createTime,Date updateTime,String memo) {
+ this.name = name;
+ this.status = status;
+ this.deleted = deleted;
+ this.createTime = createTime;
+ this.updateTime = updateTime;
+ this.memo = memo;
+ }
+
+// Host host = new Host(
+// null, // 鍚嶇О[闈炵┖]
+// null, // 鐘舵��
+// null, // 鏄惁鍒犻櫎
+// null, // 娣诲姞鏃堕棿
+// null, // 淇敼鏃堕棿
+// null // 澶囨敞
+// );
+
+ public String getStatus$(){
+ if (null == this.status){ return null; }
+ switch (this.status){
+ case 1:
+ return "姝e父";
+ case 0:
+ return "绂佺敤";
+ default:
+ return String.valueOf(this.status);
+ }
+ }
+
+ public String getDeleted$(){
+ if (null == this.deleted){ return null; }
+ switch (this.deleted){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.deleted);
+ }
+ }
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getUpdateTime$(){
+ if (Cools.isEmpty(this.updateTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+ }
+
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/mapper/HostMapper.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/mapper/HostMapper.java
new file mode 100644
index 0000000..e64fd86
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/mapper/HostMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.sys.mapper;
+
+import com.zy.asrs.wcs.sys.entity.Host;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface HostMapper extends BaseMapper<Host> {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/HostService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/HostService.java
new file mode 100644
index 0000000..c51578d
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/HostService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.wcs.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.wcs.sys.entity.Host;
+
+public interface HostService extends IService<Host> {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/HostServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/HostServiceImpl.java
new file mode 100644
index 0000000..5f6a32f
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/HostServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.sys.service.impl;
+
+import com.zy.asrs.wcs.sys.mapper.HostMapper;
+import com.zy.asrs.wcs.sys.entity.Host;
+import com.zy.asrs.wcs.sys.service.HostService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("hostService")
+public class HostServiceImpl extends ServiceImpl<HostMapper, Host> implements HostService {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/JwtUtil.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/JwtUtil.java
new file mode 100644
index 0000000..cc8bc3b
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/JwtUtil.java
@@ -0,0 +1,143 @@
+package com.zy.asrs.wcs.utils;
+
+
+import com.alibaba.fastjson.JSON;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.wcs.common.constant.Constants;
+import com.zy.asrs.wcs.common.security.JwtSubject;
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+import io.jsonwebtoken.io.Decoders;
+import io.jsonwebtoken.io.Encoders;
+import io.jsonwebtoken.security.Keys;
+
+import javax.servlet.http.HttpServletRequest;
+import java.security.Key;
+import java.util.Date;
+
+/**
+ * JWT宸ュ叿绫�
+ *
+ * @author vincent
+ * @since 2018-01-21 16:30:59
+ */
+public class JwtUtil {
+
+ /**
+ * 鑾峰彇璇锋眰涓殑access_token
+ *
+ * @param request HttpServletRequest
+ * @return String
+ */
+ public static String getAccessToken(HttpServletRequest request) {
+ String access_token = request.getHeader(Constants.TOKEN_HEADER_NAME);
+ if (!Cools.isEmpty(access_token)) {
+ if (access_token.startsWith(Constants.TOKEN_TYPE)) {
+ access_token = Utils.removePrefix(access_token, Constants.TOKEN_TYPE).trim();
+ }
+ } else {
+ access_token = request.getParameter(Constants.TOKEN_PARAM_NAME);
+ }
+ return access_token;
+ }
+
+
+ /**
+ * 鐢熸垚token
+ *
+ * @param subject 杞戒綋
+ * @param expire 杩囨湡鏃堕棿
+ * @param base64EncodedKey base64缂栫爜鐨凨ey
+ * @return token
+ */
+ public static String buildToken(JwtSubject subject, Long expire, String base64EncodedKey) {
+ return buildToken(JSON.toJSONString(subject), expire, decodeKey(base64EncodedKey));
+ }
+
+ /**
+ * 鐢熸垚token
+ *
+ * @param subject 杞戒綋
+ * @param expire 杩囨湡鏃堕棿
+ * @param key 瀵嗛挜
+ * @return token
+ */
+ public static String buildToken(String subject, Long expire, Key key) {
+ Date expireDate = new Date(new Date().getTime() + 1000 * expire);
+ return Jwts.builder()
+ .setSubject(subject)
+ .setExpiration(expireDate)
+ .setIssuedAt(new Date())
+ .signWith(key)
+ .compact();
+ }
+
+ /**
+ * 瑙f瀽token
+ *
+ * @param token token
+ * @param base64EncodedKey base64缂栫爜鐨凨ey
+ * @return Claims
+ */
+ public static Claims parseToken(String token, String base64EncodedKey) {
+ return parseToken(token, decodeKey(base64EncodedKey));
+ }
+
+ /**
+ * 瑙f瀽token
+ *
+ * @param token token
+ * @param key 瀵嗛挜
+ * @return Claims
+ */
+ public static Claims parseToken(String token, Key key) {
+ return Jwts.parserBuilder()
+ .setSigningKey(key)
+ .build()
+ .parseClaimsJws(token)
+ .getBody();
+ }
+
+ /**
+ * 鑾峰彇JwtSubject
+ *
+ * @param claims Claims
+ * @return JwtSubject
+ */
+ public static JwtSubject getJwtSubject(Claims claims) {
+ return JSON.parseObject(claims.getSubject(), JwtSubject.class);
+ }
+
+ /**
+ * 鐢熸垚Key
+ *
+ * @return Key
+ */
+ public static Key randomKey() {
+ return Keys.secretKeyFor(SignatureAlgorithm.HS256);
+ }
+
+ /**
+ * base64缂栫爜key
+ *
+ * @return String
+ */
+ public static String encodeKey(Key key) {
+ return Encoders.BASE64.encode(key.getEncoded());
+ }
+
+ /**
+ * base64缂栫爜Key
+ *
+ * @param base64EncodedKey base64缂栫爜鐨刱ey
+ * @return Key
+ */
+ public static Key decodeKey(String base64EncodedKey) {
+ if (Cools.isEmpty(base64EncodedKey)) {
+ return null;
+ }
+ return Keys.hmacShaKeyFor(Decoders.BASE64.decode(base64EncodedKey));
+ }
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
new file mode 100644
index 0000000..9db68ff
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
@@ -0,0 +1,224 @@
+package com.zy.asrs.wcs.utils;
+
+
+import com.zy.asrs.framework.common.Cools;
+
+import java.util.Optional;
+
+/**
+ * Created by vincent on 2023/3/14
+ */
+public class Utils {
+
+ /**
+ * 鏁扮粍鍊掑簭
+ * @param bytes
+ * @param <T>
+ */
+ public static <T> byte[] reverse(byte[] bytes) {
+ if (bytes == null) return null;
+ for (int start = 0, end = bytes.length - 1; start < end; start++, end--) {
+ byte temp = bytes[end];
+ bytes[end] = bytes[start];
+ bytes[start] = temp;
+ }
+ return bytes;
+ }
+
+ /**
+ * 鎴彇鏁扮粍
+ * @param bytes 鍘熸暟缁�
+ * @param pos 瀹氫綅锛堟埅鍙栧悗鍖呭惈瀹氫綅鐐规暟鎹級
+ * @param len 闀垮害
+ * @return new arr
+ */
+ public static byte[] slice(byte[] bytes, int pos, int len) {
+ if (bytes == null || bytes.length == 0 || len == 0) {
+ return new byte[0];
+ }
+ if (pos + len > bytes.length) {
+ throw new RuntimeException("com.zy.acs.common.utils ArrayIndexOutOfBoundsException\n" +
+ "鍘熸暟缁� bytes 闀垮害涓� " + bytes.length + "锛屾埅鍙栭暱搴﹁秴杩囧師鏁扮粍锛�");
+ }
+ byte[] arr = new byte[len];
+ System.arraycopy(bytes, pos, arr, 0, len);
+ return arr;
+ }
+
+ public static byte[] sliceWithReverse(byte[] bytes, int pos, int len) {
+ byte[] slice = slice(bytes, pos, len);
+ reverse(slice);
+ return slice;
+ }
+
+ public static byte[] merge(Object... objects) {
+ int len = 0;
+ for (Object object : objects) {
+ if (object instanceof byte[]) {
+ byte[] bytes = (byte[]) object;
+ len += bytes.length;
+ }
+ if (object instanceof Byte) {
+ len++;
+ }
+ }
+ byte[] arr = new byte[len];
+ int idx = 0;
+ for (Object object : objects) {
+ if (object instanceof byte[]) {
+ byte[] bytes = (byte[]) object;
+ System.arraycopy(bytes, 0, arr, idx, bytes.length);
+ idx += bytes.length;
+ }
+ if (object instanceof Byte) {
+ byte[] bytes = new byte[] {(Byte) object};
+ System.arraycopy(bytes, 0, arr, idx, bytes.length);
+ idx += bytes.length;
+ }
+ }
+ return arr;
+ }
+
+ public static <T> String join(T[] array, String seq) {
+ StringBuilder sb = new StringBuilder();
+ if (array != null) {
+ for (int i = 0; i < array.length; i++) {
+ sb.append(array[i]);
+ if (i < array.length - 1) {
+ sb.append(seq);
+ }
+ }
+ }
+ return sb.toString();
+ }
+
+ public static String zeroFill(String msg, Integer len) {
+ len = Optional.ofNullable(len).orElse(16);
+ if (msg.length() == len){
+ return msg;
+ } else if (msg.length() > len){
+ return msg.substring(0, 16);
+ } else {
+ StringBuilder msgBuilder = new StringBuilder(msg);
+ for (int i = 0; i<len-msg.length(); i++){
+ msgBuilder.insert(0,"0");
+ }
+ return msgBuilder.toString();
+ }
+ }
+
+ public static String removePrefix(String str, String prefix) {
+ if (!Cools.isEmpty(str) && !Cools.isEmpty(prefix)) {
+ if (str.startsWith(prefix)) {
+ return str.substring(prefix.length());
+ } else {
+ return str;
+ }
+ } else {
+ return str;
+ }
+ }
+
+ public static String removeSuffix(String str, String suffix) {
+ if (!Cools.isEmpty(str) && !Cools.isEmpty(suffix)) {
+ if (str.endsWith(suffix)) {
+ return str.substring(0, str.indexOf(suffix));
+ } else {
+ return str;
+ }
+ } else {
+ return str;
+ }
+ }
+
+ /**
+ * 澶ч┘宄� 杞� symbol灏忛┘宄�
+ */
+ public static String toSymbolCase(String str, char symbol) {
+ if (str == null) {
+ return null;
+ } else {
+ int length = str.length();
+ StringBuilder sb = new StringBuilder();
+
+ for(int i = 0; i < length; ++i) {
+ char c = str.charAt(i);
+ if (Character.isUpperCase(c)) {
+ Character preChar = i > 0 ? str.charAt(i - 1) : null;
+ Character nextChar = i < str.length() - 1 ? str.charAt(i + 1) : null;
+ if (null != preChar) {
+ if (symbol == preChar) {
+ if (null == nextChar || Character.isLowerCase(nextChar)) {
+ c = Character.toLowerCase(c);
+ }
+ } else if (Character.isLowerCase(preChar)) {
+ sb.append(symbol);
+ if (null == nextChar || Character.isLowerCase(nextChar)) {
+ c = Character.toLowerCase(c);
+ }
+ } else if (null == nextChar || Character.isLowerCase(nextChar)) {
+ sb.append(symbol);
+ c = Character.toLowerCase(c);
+ }
+ } else if (null == nextChar || Character.isLowerCase(nextChar)) {
+ c = Character.toLowerCase(c);
+ }
+ }
+
+ sb.append(c);
+ }
+
+ return sb.toString();
+ }
+ }
+
+ public static String toCamelCase(CharSequence name) {
+ if (null == name) {
+ return null;
+ } else {
+ String name2 = name.toString();
+ if (name2.contains("_")) {
+ int length = name2.length();
+ StringBuilder sb = new StringBuilder(length);
+ boolean upperCase = false;
+
+ for(int i = 0; i < length; ++i) {
+ char c = name2.charAt(i);
+ if (c == '_') {
+ upperCase = true;
+ } else if (upperCase) {
+ sb.append(Character.toUpperCase(c));
+ upperCase = false;
+ } else {
+ sb.append(Character.toLowerCase(c));
+ }
+ }
+
+ return sb.toString();
+ } else {
+ return name2;
+ }
+ }
+ }
+
+ public static String sub(String str, Integer maxLen) {
+ if (str.length() > maxLen) {
+ return str.substring(0, maxLen);
+ }
+ return str;
+ }
+
+ public static String generateSeqNum(String lastSeqNum) {
+ if (Cools.isEmpty(lastSeqNum)) {
+ return zeroFill("1", 4);
+ } else {
+ int i = Integer.parseInt(lastSeqNum);
+ if (i >= 9999) {
+ return zeroFill("1", 4);
+ } else {
+ return zeroFill(String.valueOf(i+1), 4);
+ }
+ }
+ }
+
+}
diff --git a/zy-asrs-wcs/src/main/resources/application.yml b/zy-asrs-wcs/src/main/resources/application.yml
index 08e1c35..0d44a3a 100644
--- a/zy-asrs-wcs/src/main/resources/application.yml
+++ b/zy-asrs-wcs/src/main/resources/application.yml
@@ -10,7 +10,7 @@
enabled: false
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/zy_acs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ url: jdbc:mysql://localhost:3306/asrs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: xltys1995
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
diff --git a/zy-asrs-wcs/src/main/resources/mapper/sys/HostMapper.xml b/zy-asrs-wcs/src/main/resources/mapper/sys/HostMapper.xml
new file mode 100644
index 0000000..93847ab
--- /dev/null
+++ b/zy-asrs-wcs/src/main/resources/mapper/sys/HostMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.wcs.sys.mapper.HostMapper">
+
+</mapper>
--
Gitblit v1.9.1