刘韬 5 years ago
parent
commit
8005606b57

+ 54 - 93
PacsOnline_Wechat_Doctor/src/main/java/com/zskk/controller/WxaUserApiController.java

@@ -27,6 +27,7 @@ import com.zskk.util.ErrorConstant;
 
 /**
  * 微信小程序用户api接口
+ * 
  * @author L.cm
  */
 public class WxaUserApiController extends WxaController {
@@ -36,8 +37,7 @@ public class WxaUserApiController extends WxaController {
 	public void login() {
 		String jsCode = getPara("code");
 		if (StrKit.isBlank(jsCode)) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "code is blank");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "code is blank");
 			renderJson(ErrorConstant.ERROR_WXA_CODE_BLANK);
 			return;
 		}
@@ -48,14 +48,15 @@ public class WxaUserApiController extends WxaController {
 		if (!apiResult.isSucceed()) {
 //			JSONObject object = new JSONObject();
 //			object.put("sessionId", sessionId);
-			ResultBean resultBean = new ResultBean(apiResult.getInt("errcode"),apiResult.getStr("errmsg"));
+			ResultBean resultBean = new ResultBean(apiResult.getInt("errcode"), apiResult.getStr("errmsg"));
 			renderJson(resultBean);
 			return;
 		}
 		// 利用 appId 与 accessToken 建立关联,支持多账户
 		IAccessTokenCache accessTokenCache = ApiConfigKit.getAccessTokenCache();
 		String sessionId = StrKit.getRandomUUID();
-		DoctorsWechat doctorsWechatfind = DoctorsWechat.dao.findFirst("select * from doctors_wechat where wxa_openid=?", apiResult.getStr("openid"));
+		DoctorsWechat doctorsWechatfind = DoctorsWechat.dao.findFirst("select * from doctors_wechat where wxa_openid=?",
+				apiResult.getStr("openid"));
 		if (doctorsWechatfind == null) {
 			DoctorsWechat doctorsWechat = new DoctorsWechat();
 			doctorsWechat.setWxaOpenid(apiResult.getStr("openid"));
@@ -65,7 +66,7 @@ public class WxaUserApiController extends WxaController {
 			doctorsWechat.setCreateAt(new Date());
 			doctorsWechat.setUpdateAt(new Date());
 			doctorsWechat.save();
-		}else {
+		} else {
 			doctorsWechatfind.setUpdateAt(new Date());
 			doctorsWechatfind.update();
 		}
@@ -77,21 +78,19 @@ public class WxaUserApiController extends WxaController {
 		renderJson(new ResultBean(loginBean));
 //		renderJson("sessionId", sessionId);
 	}
-	
+
 	public void loginBySession() {
 		IAccessTokenCache accessTokenCache = ApiConfigKit.getAccessTokenCache();
 //		String sessionId = getHeader("wxa-sessionid");
 		String sessionId = getPara("wxa-sessionid");
 		if (StrKit.isBlank(sessionId)) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "wxa_session Header is blank");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "wxa_session Header is blank");
 			renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK);
 			return;
 		}
 		String sessionJson = accessTokenCache.get("wxa:session:" + sessionId);
 		if (StrKit.isBlank(sessionJson)) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "wxa_session sessionJson is blank");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "wxa_session sessionJson is blank");
 			renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK);
 			return;
 		}
@@ -99,44 +98,41 @@ public class WxaUserApiController extends WxaController {
 		// 获取sessionKey
 		String sessionKey = sessionResult.get("session_key");
 		if (StrKit.isBlank(sessionKey)) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "sessionKey is blank");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "sessionKey is blank");
 			renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK);
 			return;
 		}
-		DoctorsWechat doctorsWechat = DoctorsWechat.dao.findFirst("select * from doctors_wechat where wxa_openid=?", sessionResult.get("openid"));
+		DoctorsWechat doctorsWechat = DoctorsWechat.dao.findFirst("select * from doctors_wechat where wxa_openid=?",
+				sessionResult.get("openid"));
 		Doctors doctors = Doctors.dao.findById(doctorsWechat.getDoctorId());
 		LoginBean loginBean = new LoginBean();
 		loginBean.setSessionId(sessionId);
 		loginBean.setDoctorBean(doctors);
 		renderJson(new ResultBean(loginBean));
 	}
-	
+
 	/**
-	 * 服务端解密用户信息接口
-	 * 获取unionId
+	 * 服务端解密用户信息接口 获取unionId
 	 */
 	public void info() {
 		String signature = getPara("signature");
 		String rawData = getPara("rawData");
-		
+
 		String encryptedData = getPara("encryptedData");
 		String iv = getPara("iv");
-		
+
 		// 参数空校验 不做演示
 		// 利用 appId 与 accessToken 建立关联,支持多账户
 		IAccessTokenCache accessTokenCache = ApiConfigKit.getAccessTokenCache();
 		String sessionId = getHeader("wxa-sessionid");
 		if (StrKit.isBlank(sessionId)) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "wxa_session Header is blank");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "wxa_session Header is blank");
 			renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK);
 			return;
 		}
 		String sessionJson = accessTokenCache.get("wxa:session:" + sessionId);
 		if (StrKit.isBlank(sessionJson)) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "wxa_session sessionJson is blank");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "wxa_session sessionJson is blank");
 			renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK);
 			return;
 		}
@@ -144,8 +140,7 @@ public class WxaUserApiController extends WxaController {
 		// 获取sessionKey
 		String sessionKey = sessionResult.get("session_key");
 		if (StrKit.isBlank(sessionKey)) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "sessionKey is blank");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "sessionKey is blank");
 			renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK);
 			return;
 		}
@@ -153,15 +148,14 @@ public class WxaUserApiController extends WxaController {
 		WxaUserApi wxaUserApi = Duang.duang(WxaUserApi.class);
 		boolean check = wxaUserApi.checkUserInfo(sessionKey, rawData, signature);
 		if (!check) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "UserInfo check fail");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "UserInfo check fail");
 			renderJson(ErrorConstant.ERROR_USERINFO_CHECK_FAIL);
 			return;
 		}
 		// 服务端解密用户信息
 		ApiResult apiResult = wxaUserApi.getUserInfo(sessionKey, encryptedData, iv);
 		if (!apiResult.isSucceed()) {
-			ResultBean resultBean = new ResultBean(apiResult.getInt("errcode"),apiResult.getStr("errmsg"));
+			ResultBean resultBean = new ResultBean(apiResult.getInt("errcode"), apiResult.getStr("errmsg"));
 
 			renderJson(resultBean);
 			return;
@@ -179,7 +173,8 @@ public class WxaUserApiController extends WxaController {
 			renderJson(ErrorConstant.ERROR_DOCTOR_NOT_FIND);
 			return;
 		}
-		DoctorsWechat doctorsWechat = DoctorsWechat.dao.findFirst("select * from doctors_wechat where wxa_openid=?", sessionResult.get("openid"));
+		DoctorsWechat doctorsWechat = DoctorsWechat.dao.findFirst("select * from doctors_wechat where wxa_openid=?",
+				sessionResult.get("openid"));
 		doctorsWechat.setDoctorId(doctors.getId());
 		doctorsWechat.update();
 		LoginBean loginBean = new LoginBean();
@@ -189,11 +184,10 @@ public class WxaUserApiController extends WxaController {
 	}
 
 	/**
-	 * 服务端解密用户信息接口
-	 * 获取unionId
+	 * 服务端解密用户信息接口 获取unionId
 	 */
 	public void phoneLogin() {
-		
+
 		String encryptedData = getPara("encryptedData");
 		String iv = getPara("iv");
 		String sessionId = getPara("sessionid");
@@ -205,15 +199,13 @@ public class WxaUserApiController extends WxaController {
 		// 利用 appId 与 accessToken 建立关联,支持多账户
 		IAccessTokenCache accessTokenCache = ApiConfigKit.getAccessTokenCache();
 		if (StrKit.isBlank(sessionId)) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "wxa_session Header is blank");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "wxa_session Header is blank");
 			renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK);
 			return;
 		}
 		String sessionJson = accessTokenCache.get("wxa:session:" + sessionId);
 		if (StrKit.isBlank(sessionJson)) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "wxa_session sessionJson is blank");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "wxa_session sessionJson is blank");
 			renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK2);
 			return;
 		}
@@ -222,75 +214,44 @@ public class WxaUserApiController extends WxaController {
 		// 获取sessionKey
 		String sessionKey = sessionResult.get("session_key");
 		if (StrKit.isBlank(sessionKey)) {
-			Kv data = Kv.by("errcode", 500)
-					.set("errmsg", "sessionKey is blank");
+			Kv data = Kv.by("errcode", 500).set("errmsg", "sessionKey is blank");
 			renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK3);
 			return;
 		}
 
-//		try {	
-		
 		// 用户信息校验
 		WxaUserApi wxaUserApi = Duang.duang(WxaUserApi.class);
+		renderText(sessionKey+"      " +encryptedData+"     "+iv);
+		return;
 		// 服务端解密用户信息
-//		renderText(sessionKey+"    "+encryptedData + "     "+ iv);
-
-	
-//			WxaBizDataCrypt dataCrypt = new WxaBizDataCrypt(sessionKey);
-			byte[] bizData = Base64Kit.decode(encryptedData);
-	        byte[] keyByte = Base64Kit.decode(sessionKey);
-	        byte[] ivByte  = Base64Kit.decode(iv);
-	        try {
-	            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
-	            Key sKeySpec = new SecretKeySpec(keyByte, "AES");
-//	            // 初始化
-	            AlgorithmParameters params = AlgorithmParameters.getInstance("AES");
-	            params.init(new IvParameterSpec(ivByte));
-	            cipher.init(Cipher.DECRYPT_MODE, sKeySpec, params);
-	            byte[] original = cipher.doFinal(bizData);
-	            // 去除补位字符
-	        } catch (Exception e) {
-				renderText("aes");
-
-	        }
-			renderText("aa");
-
-	          
-//	        			ApiResult apiResult = wxaUserApi.getUserInfo(sessionKey, encryptedData, iv);
-//			renderText(json);
-
-		
+//		ApiResult apiResult = wxaUserApi.getUserInfo(sessionKey, encryptedData, iv);
+//
 //		if (!apiResult.isSucceed()) {
-//			ResultBean resultBean = new ResultBean(apiResult.getInt("errcode"),apiResult.getStr("errmsg"));
+//			ResultBean resultBean = new ResultBean(apiResult.getInt("errcode"), apiResult.getStr("errmsg"));
 //			renderJson(resultBean);
 //			return;
 //		}
-		// 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性
-		// 同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
-		
-//			String phone = apiResult.getStr("purePhoneNumber");
-//			if (StrKit.isBlank(phone)) {
-//				renderJson(ErrorConstant.ERROR_PHONE_BLANK);
-//				return;
-//			}
-//			renderNull();
-
-//			Doctors doctors = Doctors.dao.findFirst("select * from doctors where phone=?", phone);
-//			if (doctors == null) {
-//				renderJson(ErrorConstant.ERROR_DOCTOR_NOT_FIND);
-//				return;
-//			}
-//			DoctorsWechat doctorsWechat = DoctorsWechat.dao.findFirst("select * from doctors_wechat where wxa_openid=?", sessionResult.get("openid"));
-//			doctorsWechat.setDoctorId(doctors.getId());
-//			doctorsWechat.update();
-//			LoginBean loginBean = new LoginBean();
-//			loginBean.setSessionId(sessionId);
-//			loginBean.setDoctorBean(doctors);
-//			renderJson(new ResultBean(loginBean));
-//		} catch (Exception e) {
-//			// TODO: handle exception
-//			renderText(e.toString());
+//		// 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性
+//		// 同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
+//
+//		String phone = apiResult.getStr("purePhoneNumber");
+//		if (StrKit.isBlank(phone)) {
+//			renderJson(ErrorConstant.ERROR_PHONE_BLANK);
+//			return;
+//		}
+//
+//		Doctors doctors = Doctors.dao.findFirst("select * from doctors where phone=?", phone);
+//		if (doctors == null) {
+//			renderJson(ErrorConstant.ERROR_DOCTOR_NOT_FIND);
+//			return;
 //		}
-		
+//		DoctorsWechat doctorsWechat = DoctorsWechat.dao.findFirst("select * from doctors_wechat where wxa_openid=?",sessionResult.get("openid"));
+//		doctorsWechat.setDoctorId(doctors.getId());
+//		doctorsWechat.update();
+//		LoginBean loginBean = new LoginBean();
+//		loginBean.setSessionId(sessionId);
+//		loginBean.setDoctorBean(doctors);
+//		renderJson(new ResultBean(loginBean));
+
 	}
 }