From aba5dee7a341ecb60fe02f088684aa982ac037f9 Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期二, 11 六月 2019 09:10:23 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java | 91 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 90 insertions(+), 1 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java b/fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java index 8eafe03..477443b 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java @@ -1,12 +1,27 @@ package com.yeshi.fanli.controller; +import java.io.BufferedReader; +import java.io.IOException; +import java.security.SignatureException; +import java.util.Map; + +import javax.annotation.Resource; +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import com.yeshi.fanli.entity.bus.msg.MsgDeviceReadState; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.msg.MsgDeviceReadStateService; + +import net.sf.json.JSONObject; + /** - * 鎺堟潈鍥炶皟 + * * * @author Administrator * @@ -14,6 +29,9 @@ @Controller @RequestMapping("client/v1/callback") public class CallBackController { + + @Resource + private MsgDeviceReadStateService msgDeviceReadStateService; /** * 瀹㈡湇娑堟伅鍥炶皟 @@ -25,4 +43,75 @@ } + /** + * 缇庢唇娑堟伅鍥炶皟 + * + * @param response + */ + + @RequestMapping(value = "meiQia") + public void meiQia(HttpServletRequest request, HttpServletResponse response) { + String auth = request.getHeader("Authorization"); + String queryString = request.getQueryString(); + LogHelper.test("缇庢唇:queryString-" + queryString + "-auth:" + auth); + + BufferedReader br = null; + StringBuilder sb = new StringBuilder(""); + try { + br = request.getReader(); + String str; + while ((str = br.readLine()) != null) { + sb.append(str); + } + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + String sign = ""; + try { + sign = sign(sb.toString()); + } catch (SignatureException e) { + e.printStackTrace(); + } + + if (!auth.equalsIgnoreCase(sign)) { + LogHelper.test("缇庢唇鍥炶皟绛惧悕閿欒"); + return; + } + JSONObject json = JSONObject.fromObject(sb.toString()); + String msg = ""; + if (json != null) { + String deviceOS = json.optString("deviceOS"); + String contentType = json.optString("contentType"); + if (contentType.equalsIgnoreCase("text")) + msg = json.optString("content"); + else if (contentType.equalsIgnoreCase("photo")) + msg = "[鍥剧墖]"; + else if (contentType.equalsIgnoreCase("audio")) + msg = "[璇煶]"; + String customizedId = json.optJSONObject("customizedData").optString("璁惧鏍囪瘑"); + msgDeviceReadStateService.addUnreadDeviceMsg(MsgDeviceReadState.TYPE_KEFU, customizedId, + "android".equalsIgnoreCase(deviceOS) ? 1 : 2, 1, msg); + } + + LogHelper.test("缇庢唇:body----" + sb.toString()); + } + + public String sign(String raw_body) throws java.security.SignatureException { + String key = "$2a$12$uC3EG/zSaSI37KKOgt1IgetDRHJY6Q2zEVDBr0DeWcwQbGNU7pewy"; + String result = ""; + try { + SecretKeySpec signingKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA1"); + Mac mac = Mac.getInstance("HmacSHA1"); + mac.init(signingKey); + byte[] rawHmac = mac.doFinal(raw_body.getBytes("UTF-8")); + byte[] hexBytes = new org.apache.commons.codec.binary.Hex().encode(rawHmac); + result = org.apache.commons.codec.binary.Base64.encodeBase64String(hexBytes).trim(); + } catch (Exception e) { + throw new SignatureException("Failed to generate HMAC : " + e.getMessage()); + } + return "meiqia_sign:" + result; + } + } -- Gitblit v1.8.0