|
@@ -65,13 +65,99 @@ public class AuthRedirectController {
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/corpWXAuth")
|
|
@RequestMapping("/corpWXAuth")
|
|
- public ModelAndView auth(String code, String state) throws Exception{
|
|
|
|
|
|
+ public ModelAndView auth(String code, String state) {
|
|
Map<String,Object> reqParam = new HashMap<String,Object>(16);
|
|
Map<String,Object> reqParam = new HashMap<String,Object>(16);
|
|
String userAgent = request.getHeader("User-Agent");
|
|
String userAgent = request.getHeader("User-Agent");
|
|
//获取设备类型
|
|
//获取设备类型
|
|
String deviceType = UserAgentUtils.getDeviceType(userAgent);
|
|
String deviceType = UserAgentUtils.getDeviceType(userAgent);
|
|
- WxCorpInfo corpInfo = wxCorpInfoMapper.selectById(corpId);
|
|
|
|
boolean isMobile = "MOBILE".equals(deviceType);
|
|
boolean isMobile = "MOBILE".equals(deviceType);
|
|
|
|
+ String url = WeiXinCorpController.GET_CORP_USERINFO_URL.replace("SUITE_ACCESS_TOKEN", getSuiteAccessToken()).replace("CODE", code);
|
|
|
|
+ String forObject = this.restTemplate.getForObject(url, String.class);
|
|
|
|
+ JSONObject obj = JSONObject.parseObject(forObject);
|
|
|
|
+ String wxUserId = obj.getString("UserId");
|
|
|
|
+ String openUserId = obj.getString("open_userid");
|
|
|
|
+ String corpId = obj.getString("CorpId");
|
|
|
|
+
|
|
|
|
+ System.out.println("wxUserId="+wxUserId+", openUserId="+openUserId);
|
|
|
|
+ List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("corpwx_userid", openUserId));
|
|
|
|
+ Integer companyId = 0;
|
|
|
|
+ if (userList.size() > 0) {
|
|
|
|
+ //该用户已存在
|
|
|
|
+ User curUser = userList.get(0);
|
|
|
|
+ companyId = curUser.getCompanyId();
|
|
|
|
+ if (curUser.getIsActive() == 1) {
|
|
|
|
+ reqParam.put("userId", curUser.getId());
|
|
|
|
+ } else {
|
|
|
|
+ //提示账号已停用
|
|
|
|
+ //reqParam.put("errorMsg", "您的账号已停用,无法登录");
|
|
|
|
+ reqParam.put("errorMsg", MessageUtils.message("user.inactive"));
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //使用UserId比对,之前有的老用户存的是UserId
|
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
|
|
|
|
+ if (wxCorpInfo == null) {
|
|
|
|
+ reqParam.put("errorMsg", MessageUtils.message("user.accountNoExist"));
|
|
|
|
+ } else {
|
|
|
|
+ User curUser = userMapper.selectOne(new QueryWrapper<User>().eq("company_id", wxCorpInfo.getCompanyId()).eq("corpwx_userid", wxUserId));
|
|
|
|
+ if (curUser == null) {
|
|
|
|
+// reqParam.put("errorMsg", MessageUtils.message("user.accountNoExist"));
|
|
|
|
+ //用户不存在,去生成该用户
|
|
|
|
+ if (wxCorpInfo.getSaasSyncContact() == 1) {
|
|
|
|
+ curUser = wxCorpInfoService.generateUserInfo(wxCorpInfo.getCompanyId(), openUserId);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (curUser != null) {
|
|
|
|
+ if (curUser.getIsActive() == 1) {
|
|
|
|
+ companyId = curUser.getCompanyId();
|
|
|
|
+ reqParam.put("userId", curUser.getId());
|
|
|
|
+ } else {
|
|
|
|
+ //提示账号已停用
|
|
|
|
+ //reqParam.put("errorMsg", "您的账号已停用,无法登录");
|
|
|
|
+ reqParam.put("errorMsg", MessageUtils.message("user.inactive"));
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ System.err.println("==生成企业微信User失败==");
|
|
|
|
+ reqParam.put("errorMsg", MessageUtils.message("user.accountNoExist"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ reqParam.put("hasTriedAutoLogin", 1);
|
|
|
|
+ if (!StringUtils.isEmpty(state) && state.length() > 1) {
|
|
|
|
+ reqParam.put("path", state);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String redirecUrl = null;
|
|
|
|
+ String router = "index";
|
|
|
|
+ if (companyId > 0) {
|
|
|
|
+ HashMap compExpireInfo = getCompExpireInfo(companyId);
|
|
|
|
+ if (compExpireInfo != null) {
|
|
|
|
+ //过期了
|
|
|
|
+ router = "expire";
|
|
|
|
+ reqParam.put("expDate", compExpireInfo.get("expDate"));
|
|
|
|
+ reqParam.put("version", compExpireInfo.get("version"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (isMobile) {
|
|
|
|
+ redirecUrl = "http://mobworktime.ttkuaiban.com/#/" + router;
|
|
|
|
+ } else {
|
|
|
|
+ redirecUrl = "http://worktime.ttkuaiban.com/#/" + router;
|
|
|
|
+ }
|
|
|
|
+ ModelAndView modelAndView = new ModelAndView(
|
|
|
|
+ new RedirectView(redirecUrl), reqParam);
|
|
|
|
+
|
|
|
|
+ return modelAndView;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @RequestMapping("/corpInsideWXAuth")
|
|
|
|
+ public ModelAndView authInside(String code, String state) throws Exception{
|
|
|
|
+ Map<String,Object> reqParam = new HashMap<String,Object>(16);
|
|
|
|
+ String userAgent = request.getHeader("User-Agent");
|
|
|
|
+ //获取设备类型
|
|
|
|
+ String deviceType = UserAgentUtils.getDeviceType(userAgent);
|
|
|
|
+ boolean isMobile = "MOBILE".equals(deviceType);
|
|
|
|
+ WxCorpInfo corpInfo = wxCorpInfoMapper.selectById(corpId);
|
|
String url = WeiXinCorpController.GET_CORP_INSIDE_USERINFO_URL.replace("ACCESS_TOKEN",getCorpConcactAccessToken(corpInfo)).replace("CODE", code);
|
|
String url = WeiXinCorpController.GET_CORP_INSIDE_USERINFO_URL.replace("ACCESS_TOKEN",getCorpConcactAccessToken(corpInfo)).replace("CODE", code);
|
|
String forObject = this.restTemplate.getForObject(url, String.class);
|
|
String forObject = this.restTemplate.getForObject(url, String.class);
|
|
JSONObject obj = JSONObject.parseObject(forObject);
|
|
JSONObject obj = JSONObject.parseObject(forObject);
|