|
@@ -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));
|
|
|
+
|
|
|
}
|
|
|
}
|