Browse Source

Merge remote-tracking branch 'origin/dev' into release-cache-wangmh

wangmh 7 years ago
parent
commit
a8e434bfa8

+ 16 - 49
sso-server/src/main/java/com/uas/sso/controller/AppealController.java

@@ -4,15 +4,20 @@ import com.alibaba.fastjson.JSON;
 import com.uas.sso.SSOHelper;
 import com.uas.sso.SSOToken;
 import com.uas.sso.entity.*;
+import com.uas.sso.exception.AccountException;
+import com.uas.sso.exception.VisibleError;
 import com.uas.sso.service.*;
 import com.uas.sso.support.SystemSession;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
+import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Optional;
+
 
 /**
  * @author wangmh
@@ -82,55 +87,18 @@ public class AppealController extends BaseController {
      */
     @RequestMapping(value = "/resetPwd", method = RequestMethod.POST)
     public ModelMap resetPwd(Appeal appeal, @RequestParam String token, String code, String password, @RequestParam(defaultValue = "sso") String appId) {
-        // 获取申述人,将修改的账号作为申述人
-        User user = userService.findByMobile(appeal.getMobile());
-        if (user == null) {
-            return error("该手机号未注册");
-        }
-        Long submitterUU = user.getUserUU();
-
-        // 校验token
-        Token existToken = tokenService.findOne(token);
-        if (existToken == null || existToken.isExpired()) {
-            return error("验证码已过期,请重新获取");
-        }
-
-        // TODO 参数空检验
-
         // 校验验证码
         checkMobileCode(token, appeal.getMobile(), code);
-
-        // 保存申述信息
-        appeal.setSubmitterUU(submitterUU);
-        appeal.setFromApp(appId);
-        appealService.submitResetPwd(appeal, password);
+        appealService.submitResetPwd(appId, appeal, password);
         return success();
     }
 
     @RequestMapping(value = "/changeAdmin", method = RequestMethod.POST)
     public ModelMap changeAdmin(Appeal appeal, @RequestParam String token, String code, Userspace userspace, @RequestParam(defaultValue = "sso") String appId) {
-        // 校验token
-        Token existToken = tokenService.findOne(token);
-        if (existToken == null || existToken.isExpired()) {
-            return error("验证码已过期,请重新获取");
-        }
-
-        // 校验企业信息
-        Userspace checkSpace = userspaceService.findBySpaceName(userspace.getSpaceName());
-        if (checkSpace == null) {
-            return error("该企业未被注册,请确认");
-        }
-
-        // TODO 参数空检验
-
         // 校验验证码
         checkMobileCode(token, appeal.getMobile(), code);
 
-        // 保存申述信息,把新管理员当作申请人
-        User submitter = userService.findByMobile(appeal.getMobile());
-        appeal.setSubmitterUU(submitter == null ? null : submitter.getUserUU());
-        appeal.setFromApp(appId);
-        appealService.submitChangeAdmin(appeal, userspace, checkSpace.getSpaceUU());
+        appealService.submitChangeAdmin(appId, appeal, userspace);
 
         // 发送短信和邮件通知审核人
         Setting mailReceiver = settingService.findOne("mailReceiverAfterRegister");
@@ -140,18 +108,17 @@ public class AppealController extends BaseController {
         return success();
     }
 
+    /**
+     * 认证账号申述
+     * @param appeal 申述信息
+     * @param token 验证码tokenId
+     * @param code 验证码
+     * @param password 密码
+     * @param appId 应用Id
+     * @return
+     */
     @RequestMapping(value = "/account", method = RequestMethod.POST)
     public ModelMap validAccount(Appeal appeal, String token, String code, String password, @RequestParam(defaultValue = "sso") String appId) {
-        // 校验用户是否登录
-        SSOToken ssoToken = SSOHelper.getToken(request);
-        if (ssoToken == null) {
-            return error("用户未登录");
-        }
-        UserAccount userAccount = JSON.parseObject(ssoToken.getData(), UserAccount.class);
-        if (userAccount == null) {
-            return error("用户未登录");
-        }
-
         // 校验token
         Token existToken = tokenService.findOne(token);
         if (existToken == null || existToken.isExpired()) {

+ 10 - 0
sso-server/src/main/java/com/uas/sso/controller/LoginController.java

@@ -777,4 +777,14 @@ public class LoginController extends BaseController {
         return success(login(user.getUserUU(), appId, spaceUU, returnUrl));
     }
 
+    @GetMapping("/other")
+    public void login(String appId, Long userUU, Long spaceUU) {
+        UserAccount userAccount = spaceUU == null ? personalAccountService.findOneByUserUU(appId, userUU) : userAccountService.findOneByUserUU(appId, userUU, spaceUU);
+        loginByUser(userAccount, null, false);
+        try {
+            printJsonP("successCallback", "{success:'1'}");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 13 - 0
sso-server/src/main/java/com/uas/sso/core/WXParam.java

@@ -0,0 +1,13 @@
+package com.uas.sso.core;
+
+/**
+ * @author wangmh
+ * @create 2018-07-13 11:30
+ * @desc 微信登录参数
+ **/
+public class WXParam {
+
+    public static final String DEFAULT_APPID = "wx4511639d0a71b945";
+
+    public static final String DEFAULT_APPSECRET = "4731fc5a77fb391a718917e80501ce65";
+}

+ 1 - 0
sso-server/src/main/java/com/uas/sso/entity/Userspace.java

@@ -603,6 +603,7 @@ public class Userspace implements Serializable {
         userSpaceView.setInviteUserUU(this.getInviteUserUU());
         userSpaceView.setSource(this.getSource());
         userSpaceView.setArea(this.getArea());
+        userSpaceView.setAccessSecret(this.getAccessSecret());
         return userSpaceView;
     }
 

+ 4 - 3
sso-server/src/main/java/com/uas/sso/service/AppealService.java

@@ -12,18 +12,19 @@ public interface AppealService {
 
     /**
      * 提交重置密码申述
+     * @param appId
      * @param appeal 重置密码申述信息
      * @param password 密码
      */
-    void submitResetPwd(Appeal appeal, String password);
+    void submitResetPwd(String appId, Appeal appeal, String password);
 
     /**
      * 提交更换管理员申述
+     * @param appId 申述信息
      * @param appeal 申述信息
      * @param userspace 企业信息
-     * @param spaceUU 更换管理员的企业uu号
      */
-    void submitChangeAdmin(Appeal appeal, Userspace userspace, Long spaceUU);
+    void submitChangeAdmin(String appId, Appeal appeal, Userspace userspace);
 
     /**
      * 提交验证账号申述

+ 46 - 20
sso-server/src/main/java/com/uas/sso/service/impl/AppealServiceImpl.java

@@ -1,10 +1,12 @@
 package com.uas.sso.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.uas.sso.AccountConfig;
 import com.uas.sso.core.Status;
 import com.uas.sso.dao.AppealDao;
 import com.uas.sso.entity.Appeal;
 import com.uas.sso.entity.User;
+import com.uas.sso.entity.UserAccount;
 import com.uas.sso.entity.Userspace;
 import com.uas.sso.exception.VisibleError;
 import com.uas.sso.service.AppealService;
@@ -16,6 +18,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
 
 import java.sql.Timestamp;
+import java.util.Optional;
 
 /**
  * @author wangmh
@@ -35,10 +38,22 @@ public class AppealServiceImpl implements AppealService {
     private UserService userService;
 
     @Override
-    public void submitResetPwd(Appeal appeal, String password) {
+    public void submitResetPwd(String appId, Appeal appeal, String password) {
+        // 获取用户信息
+        String mobile = Optional.ofNullable(appeal.getMobile())
+                .map(value -> "".equals(value) ? null : value)
+                .orElseThrow(() -> new NullPointerException("手机号不能为空"));
+        User user = Optional.ofNullable(mobile)
+                .map(value -> userService.findByMobile(value))
+                .orElseThrow(() -> new IllegalArgumentException("该手机号未注册"));
+        appId = Optional.ofNullable(appId)
+                .map(value -> "".equals(value) ? AccountConfig.ACCOUNT_CENTER : value)
+                .orElse(AccountConfig.ACCOUNT_CENTER);
+
         // 设置默认信息
         appeal.setSubmitDate(new Timestamp(System.currentTimeMillis()));
-        User user = userService.findOne(appeal.getSubmitterUU());
+        appeal.setSubmitterUU(user.getUserUU());
+        appeal.setFromApp(appId);
         ModelMap data = new ModelMap();
         data.put("password", password);
         data.put("oldMobile", user.getMobile());
@@ -56,26 +71,39 @@ public class AppealServiceImpl implements AppealService {
     }
 
     @Override
-    public void submitChangeAdmin(Appeal appeal, Userspace userspace, Long spaceUU) {
-        User newAdmin = userService.findByMobile(appeal.getMobile());
-        // 设置企业信息
-        userspace.setSpaceUU(spaceUU);
-        Userspace oldSpace = userspaceService.findOne(spaceUU);
+    public void submitChangeAdmin(String appId, Appeal appeal, Userspace userspace) {
+        String spaceName = Optional.ofNullable(userspace)
+                .map(value -> value.getSpaceName())
+                .orElseThrow(() -> new NullPointerException("企业名称不能为空"));
+        Userspace oldSpace = Optional.ofNullable(spaceName)
+                .map(value -> userspaceService.findBySpaceName(value))
+                .orElseThrow(() -> new IllegalArgumentException("该企业未被注册,请确认"));
+        User newAdmin = Optional.ofNullable(appeal)
+                .map(Appeal::getMobile)
+                .map(value -> userService.findByMobile(value))
+                .orElse(null);
+        appId = Optional.ofNullable(appId)
+                .map(value -> "".equals(value) ? AccountConfig.ACCOUNT_CENTER : value)
+                .orElse(AccountConfig.ACCOUNT_CENTER);
+        userspace.setSpaceUU(oldSpace.getSpaceUU());
         userspace.setAdmin(oldSpace.getAdmin());
 
         // 设置默认信息
         appeal.setSubmitDate(new Timestamp(System.currentTimeMillis()));
+        appeal.setFromApp(appId);
         ModelMap data = new ModelMap(userspace);
-        data.put("newAdminName", newAdmin == null ? appeal.getContactName() : newAdmin.getVipName());
-        data.put("newAdminMobile", newAdmin == null ? appeal.getMobile() : newAdmin.getMobile());
-        data.put("newAdminEmail", newAdmin == null ? appeal.getContactEmail() : newAdmin.getEmail());
+        data.put("newAdminName", Optional.ofNullable(newAdmin).map(User::getVipName).orElse(appeal.getContactName()));
+        data.put("newAdminMobile", Optional.ofNullable(newAdmin).map(User::getMobile).orElse(appeal.getMobile()));
+        data.put("newAdminEmail", Optional.ofNullable(newAdmin).map(User::getEmail).orElse(appeal.getContactEmail()));
         appeal.setSubmitInfo(JSON.toJSONString(data));
         appeal.setStatus((short) Status.TO_BE_CERTIFIED.getCode());
         appeal.setType(Appeal.Type.CHANGE_ADMIN.getDesc());
-        if (SystemSession.getUserAccount() != null) {
-            appeal.setSubmitterUU(SystemSession.getUserAccount().getUserUU());
-            appeal.setSubmitterName(SystemSession.getUserAccount().getVipName());
-        }
+
+        // 如何登录,提交人信息改成登录用户
+        Optional.ofNullable(SystemSession.getUserAccount()).ifPresent(value -> {
+            appeal.setSubmitterUU(value.getUserUU());
+            appeal.setSubmitterName(value.getVipName());
+        });
 
         // 保存申述信息
         appealDao.save(appeal);
@@ -85,11 +113,9 @@ public class AppealServiceImpl implements AppealService {
     @Override
     public void submitValidAccount(Appeal appeal, String password) {
         // 设置默认信息
-        if (SystemSession.getUserAccount() == null) {
-            throw new VisibleError("用户未登录");
-        }
+        UserAccount userAccount = Optional.ofNullable(SystemSession.getUserAccount()).orElseThrow(() -> new VisibleError("用户未登录"));
         appeal.setSubmitDate(new Timestamp(System.currentTimeMillis()));
-        User user = userService.findOne(SystemSession.getUserAccount().getUserUU());
+        User user = userService.findOne(userAccount.getUserUU());
         ModelMap data = new ModelMap();
         data.put("password", password);
         data.put("oldMobile", user.getMobile());
@@ -97,8 +123,8 @@ public class AppealServiceImpl implements AppealService {
         appeal.setSubmitInfo(JSON.toJSONString(data));
         appeal.setStatus((short) Status.TO_BE_CERTIFIED.getCode());
         appeal.setType(Appeal.Type.VALID_ACCOUNT.getDesc());
-        appeal.setSubmitterUU(SystemSession.getUserAccount().getUserUU());
-        appeal.setSubmitterName(SystemSession.getUserAccount().getVipName());
+        appeal.setSubmitterUU(userAccount.getUserUU());
+        appeal.setSubmitterName(userAccount.getVipName());
 
         // 保存申述信息
         appealDao.save(appeal);

+ 3 - 8
sso-server/src/main/java/com/uas/sso/weixin/controller/WeChatController.java

@@ -1,6 +1,7 @@
 package com.uas.sso.weixin.controller;
 
 import com.uas.sso.controller.BaseController;
+import com.uas.sso.core.WXParam;
 import com.uas.sso.entity.App;
 import com.uas.sso.entity.User;
 import com.uas.sso.service.AppService;
@@ -36,12 +37,6 @@ public class WeChatController extends BaseController {
     @Autowired
     private AppService appService;
 
-    private static final String DEFAULT_WX_APPID = "wxa14aec4edce8a2d2";
-
-    private static final String WX_APPSECRET = "9749d2df03eb161f4d4075df69c2e2c9";
-
-    private static final String WX_REDIRECT_URI = "http://sso.ubtob.com/";
-
     private static final String WX_LOGIN_SCOPE = "snsapi_login";
 
     @RequestMapping("/getQrUrl")
@@ -53,7 +48,7 @@ public class WeChatController extends BaseController {
         }
         String qrUrl = "https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect";
         App app = appService.findOne(appId);
-        String wx_appid = DEFAULT_WX_APPID;
+        String wx_appid = WXParam.DEFAULT_APPID;
         if (app != null && !StringUtils.isEmpty(app.getWxAppid())) {
             wx_appid = app.getWxAppid();
         }
@@ -65,7 +60,7 @@ public class WeChatController extends BaseController {
     public ModelMap getQrParams(String appId) {
         ModelMap params = new ModelMap();
         App app = appService.findOne(appId);
-        String wx_appid = DEFAULT_WX_APPID;
+        String wx_appid = WXParam.DEFAULT_APPID;
         if (app != null && !StringUtils.isEmpty(app.getWxAppid())) {
             wx_appid = app.getWxAppid();
         }

+ 3 - 2
sso-server/src/main/java/com/uas/sso/weixin/service/impl/WeChatServiceImpl.java

@@ -2,6 +2,7 @@ package com.uas.sso.weixin.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.uas.sso.common.util.HttpUtil;
+import com.uas.sso.core.WXParam;
 import com.uas.sso.weixin.entity.OAuthInfo;
 import com.uas.sso.weixin.entity.UserInfo;
 import com.uas.sso.weixin.service.WeChatService;
@@ -19,8 +20,8 @@ public class WeChatServiceImpl implements WeChatService {
     @Override
     public OAuthInfo getOAuthInfoByCode(String code) {
         String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
-        url= url.replace("APPID", "wxa14aec4edce8a2d2");
-        url = url.replace("SECRET", "9749d2df03eb161f4d4075df69c2e2c9");
+        url= url.replace("APPID", WXParam.DEFAULT_APPID);
+        url = url.replace("SECRET", WXParam.DEFAULT_APPSECRET);
         url = url.replace("CODE", code);
         try {
             HttpUtil.ResponseWrap res = HttpUtil.doGet(url);