JAVA对外的insert接口


/**
 * 获取TOKEN
 * @param appKey
 * @param appPwd
 * @return
 */
@GetMapping("/getToken")
@ApiOperation(value = "获取TOKEN", notes = "获取TOKEN")
public Map getToken(String appKey, String appPwd) {
    Map result =new HashMap();
    String str = appKey+"_"+appPwd;
    String token ="";
    String code = "0";
    String msg ="appkey或appPwd非法!";
    if("wzzhly".equals(appKey)&&"1qaz!QAZ".equals(appPwd)){
        token = TokenUtils.getToken(str);
        msg="token获取成功!";
        code="1";
    }
    result.put("code",code);
    result.put("token",token);
    result.put("msg",msg);
    return result;
}
@GetMapping("/getReportFlowD")
@ApiOperation(value = "上报-日", notes = "上报-日")
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
this.doPost(request, response);
}
@PostMapping("/reportFlowD")
@ApiOperation(value = "上报-日", notes = "上报-日")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
Map responseMap = new HashMap();
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
Enumeration<String> list = request.getHeaderNames();
HumanFlowDataD humanFlowDataD;
while (list.hasMoreElements()) {
String str = list.nextElement();
String str1 = request.getHeader(str);
if (str.equals("token")) {
String verifyTokenRes = verifyToken(str1);
if ("succ".equals(verifyTokenRes)) {
DataInputStream inputStream = null;
String strInputstream ="";
inputStream =new DataInputStream(request.getInputStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] by = new byte[2048];
int n;
while((n=inputStream.read(by))!=-1){
baos.write(by,0,n);
}
strInputstream = new String(baos.toByteArray());
inputStream.close();
baos.close();
JSONObject jsonObject=JSONObject.parseObject(strInputstream);
log.info("转化的json数据:" + jsonObject);
humanFlowDataD = new Gson().fromJson(jsonObject.toString(), HumanFlowDataD.class);
log.info("转化后的对象:" + humanFlowDataD.getFlow_name()+","+ humanFlowDataD.getFlow_date());
int i = humanFlowDataDService.insert(humanFlowDataD);
if (i > 0) {
responseMap.put("code", "1");
responseMap.put("msg", "日数据上传成功");
} else {
responseMap.put("code", "0");
responseMap.put("msg", "日数据上传失败");
}
} else {
responseMap.put("code", "0");
responseMap.put("msg", "TOKE校验失败:失败码" + verifyTokenRes);
}
PrintWriter out = response.getWriter();
JSONObject json = new JSONObject(responseMap);
out.write(json.toString());
out.flush();
out.close();
}
}
}

//token
public class TokenEncryptUtils { // 编码密码,可自定义
    private static final String ENCODED_PASSWORD = "ouyangjun";

    /**
     * * 编码
     * * @param str
     * * @return
     * */
    public static String encoded(String str) {
        return strToHex(encodedString(str, ENCODED_PASSWORD));
    }

    /** * 转换 * @param str
     *  * @param password
     *  * @return
     *  */
    private static String encodedString(String str, String password) {
        char[] pwd = password.toCharArray();
        int pwdLen = pwd.length;
        char[] strArray = str.toCharArray();
        for (int i = 0; i < strArray.length; i++) {
            strArray[i] = (char) (strArray[i] ^ pwd[i % pwdLen] ^ pwdLen);
        }
        return new String(strArray);
    }

    private static String strToHex(String s) {
        return bytesToHexStr(s.getBytes());
    }

    private static String bytesToHexStr(byte[] bytesArray) {
        StringBuilder builder = new StringBuilder();
        String hexStr;
        for (byte bt : bytesArray) {
            hexStr = Integer.toHexString(bt & 0xFF);
            if (hexStr.length() == 1) {
                builder.append("0");
                builder.append(hexStr);
            } else {
                builder.append(hexStr);
            }
        }
        return builder.toString();
    }

    /**
     * * 解码
     * * @param str
     * * @return
     * */
    public static String decoded(String str) {
        String hexStr = null;
        try {
            hexStr = hexStrToStr(str);
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (hexStr != null) {
            hexStr = encodedString(hexStr, ENCODED_PASSWORD);
        }
        return hexStr;
    }

    private static String hexStrToStr(String hexStr) {
        return new String(hexStrToBytes(hexStr));
    }

    private static byte[] hexStrToBytes(String hexStr) {
        String hex;
        int val;
        byte[] btHexStr = new byte[hexStr.length() / 2];
        for (int i = 0; i < btHexStr.length; i++) {
            hex = hexStr.substring(2 * i, 2 * i + 2);
            val = Integer.valueOf(hex, 16);
            btHexStr[i] = (byte) val;
        }
        return btHexStr;
    }
}
//token util
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

/** * token生成和校验
 * */
public class TokenUtils {
    private static Map<String, String> MAP_TOKENS = new HashMap<String, String>();
    private static final int VALID_TIME = 60 * 60 * 60; // token有效期(秒)
    public static final String TOKEN_ERROR = "FF"; // 非法
    public static final String TOKEN_OVERDUE = "GQ"; // 过期
    public static final String TOKEN_FAILURE = "SX"; // 失效

    /**
     * * 生成token
     * @param str: 该字符串可自定义,在校验token时要保持一致
     * @return
     */
    public static String getToken(String str) {
        String token = TokenEncryptUtils.encoded(getCurrentTime() + "," + str);
        MAP_TOKENS.put(str, token);
        return token;
    }

    /**
     * * 校验token的有效性
     * * @param token
     * * @return
     * */
    public static String checkToken(String token) {
        if (token == null) {
            return TOKEN_ERROR;
        }
        try {
            String[] tArr = TokenEncryptUtils.decoded(token).split(",");
            if (tArr.length != 2) {
                return TOKEN_ERROR;
            } // token生成时间戳
            int tokenTime = Integer.parseInt(tArr[0]); // 当前时间戳
            int currentTime = getCurrentTime();
            if (currentTime - tokenTime < VALID_TIME) {
                String tokenStr = tArr[1];
                String mToken = MAP_TOKENS.get(tokenStr);
                if (mToken == null) {
                    return TOKEN_OVERDUE;
                } else if (!mToken.equals(token)) {
                    return TOKEN_FAILURE;
                }
                return tokenStr;
            } else {
                return TOKEN_OVERDUE;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return TOKEN_ERROR;
    }

    /**
     * 获取当前时间戳(10位整数)
     *  */
    public static int getCurrentTime() {
        return (int) (System.currentTimeMillis() / 1000);
    }

    /**
     * * 移除过期的token
     * */
    public static void removeInvalidToken() {
        int currentTime = getCurrentTime();
        for (Entry<String, String> entry : MAP_TOKENS.entrySet()) {
            String[] tArr = TokenEncryptUtils.decoded(entry.getValue()).split(",");
            int tokenTime = Integer.parseInt(tArr[0]);
            if (currentTime - tokenTime > VALID_TIME) {
                MAP_TOKENS.remove(entry.getKey());
            }
        }
    }
    /**
     * * 测试
     *  * @param args
     *  */
//    private static final String OPERATION_EXIT = "EXIT";
//    public static void main(String[] args) {
//        String str = "username_and_password";
//        String token = TokenUtils.getToken(str);
//        System.out.println("生成的token:"+token);
//        System.out.println("输入token,EXIT/E 退出");
//        //让程序一直运行
//        Scanner scan = new Scanner(System.in);
//        while(scan.hasNext()) {
//            String in = scan.next().toString();
//            if(OPERATION_EXIT.equals(in.toUpperCase())
//                    || OPERATION_EXIT.substring(0, 1).equals(in.toUpperCase())) {
//                scan.close();
//                System.out.println("您成功已退出!");
//                break;
//            }
//            System.out.println("您输入token的值:"+in);
//            // 校验token
//            String checkToken = TokenUtils.checkToken(in);
//            System.out.println("checkToken Result: " + checkToken);
//            if (str.equals(checkToken)) {
//                System.out.println("==>token verification succeeded!");
//            }
//        }
//    }
}

参考链接:https://blog.csdn.net/weixin_42894393/article/details/82385812
https://blog.csdn.net/p812438109/article/details/86677329


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM