|
@@ -42,9 +42,7 @@ public class WxaUserApiController extends WxaController {
|
|
|
if (!apiResult.isSucceed()) {
|
|
|
// JSONObject object = new JSONObject();
|
|
|
// object.put("sessionId", sessionId);
|
|
|
- JSONObject object = JSON.parseObject(apiResult.getJson());
|
|
|
- ResultBean resultBean = new ResultBean(object.getIntValue("errcode"),apiResult.getStr("errmsg"));
|
|
|
-
|
|
|
+ ResultBean resultBean = new ResultBean(apiResult.getInt("errcode"),apiResult.getStr("errmsg"));
|
|
|
renderJson(resultBean);
|
|
|
return;
|
|
|
}
|
|
@@ -123,29 +121,95 @@ public class WxaUserApiController extends WxaController {
|
|
|
// 服务端解密用户信息
|
|
|
ApiResult apiResult = wxaUserApi.getUserInfo(sessionKey, encryptedData, iv);
|
|
|
if (!apiResult.isSucceed()) {
|
|
|
- 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));
|
|
|
+ ResultBean resultBean = new ResultBean(apiResult.getInt("errcode"),apiResult.getStr("errmsg"));
|
|
|
+
|
|
|
+ renderJson(resultBean);
|
|
|
return;
|
|
|
}
|
|
|
// 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性
|
|
|
// 同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
|
|
|
- String unionId = apiResult.get("unionId");
|
|
|
- renderJson("{}");
|
|
|
+// String unionId = apiResult.get("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));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 服务端解密用户信息接口
|
|
|
+ * 获取unionId
|
|
|
+ */
|
|
|
+ public void phoneLogin() {
|
|
|
+
|
|
|
+ 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");
|
|
|
+ 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");
|
|
|
+ renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ ApiResult sessionResult = ApiResult.create(sessionJson);
|
|
|
+ // 获取sessionKey
|
|
|
+ String sessionKey = sessionResult.get("session_key");
|
|
|
+ if (StrKit.isBlank(sessionKey)) {
|
|
|
+ Kv data = Kv.by("errcode", 500)
|
|
|
+ .set("errmsg", "sessionKey is blank");
|
|
|
+ renderJson(ErrorConstant.ERROR_WXA_SESSION_BLANK);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 用户信息校验
|
|
|
+ WxaUserApi wxaUserApi = Duang.duang(WxaUserApi.class);
|
|
|
+ // 服务端解密用户信息
|
|
|
+ ApiResult apiResult = wxaUserApi.getUserInfo(sessionKey, encryptedData, iv);
|
|
|
+ if (!apiResult.isSucceed()) {
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ 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));
|
|
|
+ }
|
|
|
}
|