瀏覽代碼

merge dev base-servers

zhuth 7 年之前
父節點
當前提交
e3794527de

+ 33 - 4
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java

@@ -11,6 +11,7 @@ import com.usoftchina.saas.auth.client.annotation.IgnoreAuth;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
@@ -18,6 +19,7 @@ import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.RegexpUtils;
 import com.usoftchina.sso.api.SsoUserApi;
+import com.usoftchina.sso.dto.SsoCheckMobile;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -116,10 +118,20 @@ public class AccountController {
         Account account = null;
         // 根据手机号、邮箱、用户名片段判断是否已注册
         boolean checked = accountService.findByUsernameOrMobileOrEmail(accountAddDTO.getUsername(), accountAddDTO.getMobile(), accountAddDTO.getEmail());
+        //不存在 ——> 保存 , 存在 ——> 更新
         if (!checked) {
             account = BeanMapper.map(accountAddDTO, Account.class);
             account.setEnabled(true);
             accountService.save(account);
+        }else{
+            Account accountTemp = accountService.findByMobile(accountAddDTO.getMobile());
+            if (accountTemp == null){
+                accountTemp = accountService.findByEmail(accountAddDTO.getEmail());
+            }
+            account = BeanMapper.map(accountAddDTO, Account.class);
+            account.setEnabled(true);
+            account.setId(accountTemp.getId());
+            accountService.updateByPrimaryKeySelective(account);
         }
         account = accountService.findByMobile(accountAddDTO.getMobile());
         //绑定企业
@@ -137,7 +149,20 @@ public class AccountController {
      */
     @GetMapping("/checkMobile")
     public Result checkMobile(@RequestParam("mobile") String mobile){
-        return Result.success(ssoUserApi.checkMobile(mobile));
+        SsoCheckMobile ssoCheckMobile = ssoUserApi.checkMobile(mobile);
+        Long companyId = BaseContextHolder.getCompanyId();
+        if (ssoCheckMobile.isHasRegister()){
+            Account account = accountService.findByMobile(mobile);
+            if (account != null){
+                List<CompanyBaseVO> companyBaseVOList = companyService.findBaseByAccountId(account.getId());
+                for (CompanyBaseVO companyBaseVO : companyBaseVOList){
+                    if (companyBaseVO.getId().equals(companyId)){
+                        throw new BizException(ExceptionCode.USER_COMPANY_EXIST);
+                    }
+                }
+            }
+        }
+        return Result.success(ssoCheckMobile);
     }
 
     @GetMapping("/checkEmail")
@@ -396,6 +421,8 @@ public class AccountController {
     @PostMapping("/disable")
     public Result disableAccount(@RequestParam long accountId) {
         accountService.disable(accountId);
+        //移除账户绑定的企业关系
+        accountService.unbindCompany(accountId, BaseContextHolder.getCompanyId());
         //同步到优软云
         Long userUU = accountService.findByPrimaryKey(accountId).getUu();
         Long companyUU = companyService.findByPrimaryKey(BaseContextHolder.getCompanyId()).getUu();
@@ -413,10 +440,12 @@ public class AccountController {
     @PostMapping("/enable")
     public Result enableAccount(@RequestParam long accountId) {
         accountService.enable(accountId);
+        //添加账户绑定的企业关系
+        accountService.bindCompany(accountId, BaseContextHolder.getCompanyId());
         //同步到优软云
-//        Long userUU = accountService.findByPrimaryKey(accountId).getUu();
-//        Long companyUU = companyService.findByPrimaryKey(BaseContextHolder.getCompanyId()).getUu();
-//        String result = ssoUserApi.bind("bind", "trade-app", userUU, companyUU);
+        Long userUU = accountService.findByPrimaryKey(accountId).getUu();
+        Long companyUU = companyService.findByPrimaryKey(BaseContextHolder.getCompanyId()).getUu();
+        String result = ssoUserApi.bind("bind", "trade-app", userUU, companyUU);
         accountService.clearCache(accountId);
         return Result.success();
     }

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/RoleMapper.java

@@ -19,4 +19,11 @@ public interface RoleMapper extends CommonBaseMapper<Role> {
      * @return
      */
     List<Role> selectByAccountId(@Param("accountId") long accountId);
+
+    /**
+     * 查找公司管理员角色
+     * @param companyId
+     * @return
+     */
+    Role findManagerByCompanyId(@Param("companyId") Long companyId);
 }

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/RoleService.java

@@ -52,4 +52,11 @@ public interface RoleService extends CommonBaseService<RoleMapper, Role> {
      * @return
      */
     boolean saveRoleResource(PowerSetListDTO powerSetListDTO);
+
+    /**
+     *
+     * @param companyId
+     * @return
+     */
+    Role findManagerByCompanyId(Long companyId);
 }

+ 15 - 3
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountCenterServiceImpl.java

@@ -4,12 +4,15 @@ import com.usoftchina.saas.account.dto.*;
 import com.usoftchina.saas.account.mapper.AccountCompanyMapper;
 import com.usoftchina.saas.account.po.Account;
 import com.usoftchina.saas.account.po.Company;
+import com.usoftchina.saas.account.po.Role;
 import com.usoftchina.saas.account.service.AccountCenterService;
 import com.usoftchina.saas.account.service.AccountService;
 import com.usoftchina.saas.account.service.CompanyService;
+import com.usoftchina.saas.account.service.RoleService;
 import com.usoftchina.saas.auth.api.AuthApi;
 import com.usoftchina.saas.auth.dto.TokenDTO;
 import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.StringUtils;
@@ -38,6 +41,8 @@ public class AccountCenterServiceImpl implements AccountCenterService {
     @Autowired
     private AccountService accountService;
     @Autowired
+    private RoleService roleService;
+    @Autowired
     private SsoUserApi ssoUserApi;
     @Autowired
     private SsoUserSpaceApi ssoUserSpaceApi;
@@ -57,7 +62,8 @@ public class AccountCenterServiceImpl implements AccountCenterService {
         //a. 判断是否已注册
         Company company = companyService.findByName(companyRegDTO.getName());
         if (null != company) {
-            return Result.error(ExceptionCode.COMPANY_NAME_EXIST);
+            Account account = accountService.findByPrimaryKey(company.getCreatorId());
+            throw new BizException(ExceptionCode.COMPANY_CODE_EXIST.getCode(), String.format(ExceptionCode.COMPANY_NAME_HASREGISTER.getMessage(), account.getRealname()+"("+account.getMobile()+")"));
         }
         company = companyService.findByBusinessCode(companyRegDTO.getBusinessCode());
         if (null != company) {
@@ -69,6 +75,7 @@ public class AccountCenterServiceImpl implements AccountCenterService {
             company.setBusinessCode(StringUtils.createBusinessCode());
         }
         companyService.save(company);
+        companyService.bindApp(company.getId(), "trade-app");
         //b. 同步企业信息到优软云 ——>  创建企业
         if ("0".equals(type)) {
             String result = ssoUserSpaceApi.registerLogin(company.getName(), company.getBusinessCode(), Long.parseLong(accountRegDTO.getUu()));
@@ -89,6 +96,11 @@ public class AccountCenterServiceImpl implements AccountCenterService {
         map.put("result", null);
         accountCompanyMapper.initData(map);
 
+        //账户绑定角色    默认管理员
+        Role role = roleService.findManagerByCompanyId(company.getId());
+        if (role != null) {
+            accountService.bindRole(accountId, role.getId());
+        }
         return Result.success();
     }
 
@@ -152,8 +164,8 @@ public class AccountCenterServiceImpl implements AccountCenterService {
                         ssoUserSpace.getRegAddress(),
                         false,
                         false,
-                        ssoUserSpace.getSpaceUU().toString(),
-                        ssoUserSpace.getAdmin().getVipName(),
+                        ssoUserSpace.getSpaceUU()!=null ? ssoUserSpace.getSpaceUU().toString() : "0",
+                        ssoUserSpace.getAdmin()!=null ? ssoUserSpace.getAdmin().getVipName() : null,
                         0L,
                         ssoUserSpace.getProfession()
                 );

+ 5 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/RoleServiceImpl.java

@@ -166,6 +166,11 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
         return true;
     }
 
+    @Override
+    public Role findManagerByCompanyId(Long companyId) {
+        return getMapper().findManagerByCompanyId(companyId);
+    }
+
     /**
      * 设置其他默认权限,用于生成设置按钮
      * @param powerDTO

+ 3 - 3
base-servers/account/account-server/src/main/resources/application.yml

@@ -82,8 +82,8 @@ mybatis:
 auth:
   public-key: auth/pub.key
 sso:
- base-url: https://sso.ubtob.com
-  # base-url: http://192.168.253.12:32323
+#  base-url: https://sso.ubtob.com
+  base-url: http://192.168.253.12:32323
 ribbon:
   ReadTimeout: 6000
-  ConnectTimeout: 2000
+  ConnectTimeout: 2000

+ 3 - 0
base-servers/account/account-server/src/main/resources/mapper/RoleMapper.xml

@@ -104,4 +104,7 @@
         select <include refid="baseColumns"/> from ac_role,ac_account_role
         where ac_role.id=ac_account_role.role_id and ac_account_role.account_id=#{accountId,jdbcType=BIGINT}
     </select>
+    <select id="findManagerByCompanyId" parameterType="int" resultType="com.usoftchina.saas.account.po.Role">
+        SELECT * FROM AC_ROLE WHERE COMPANY_ID = #{companyId} AND TYPE = 0 limit 1
+    </select>
 </mapper>

+ 18 - 5
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserApi.java

@@ -8,10 +8,7 @@ import com.usoftchina.sso.dto.SsoUser;
 import com.usoftchina.sso.dto.SsoUserSpaceList;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @author yingp
@@ -57,9 +54,20 @@ public interface SsoUserApi {
      * @param spaceUU
      * @return
      */
-    @PostMapping("")
+    @RequestMapping(params = "_operate=unbind", method = RequestMethod.POST)
     String unbind(@RequestParam("_operate") String _operate, @RequestParam("userUU") Long userUU, @RequestParam("spaceUU") Long spaceUU);
 
+    /**
+     * 绑定用户和企业
+     * @param _operate
+     * @param appId
+     * @param userUU
+     * @param spaceUU
+     * @return
+     */
+    @RequestMapping(params = "_operate=bind", method = RequestMethod.POST)
+    String bind(@RequestParam("_operate") String _operate, @RequestParam("appId") String appId, @RequestParam("userUU") Long userUU, @RequestParam("spaceUU") Long spaceUU);
+
     @Component
     class DefaultFallback implements SsoUserApi{
         @Override
@@ -82,5 +90,10 @@ public interface SsoUserApi {
             return null;
         }
 
+        @Override
+        public String bind(String _operate, String appId, Long userUU, Long spaceUU) {
+            return null;
+        }
+
     }
 }

+ 7 - 0
base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserApiTest.java

@@ -62,4 +62,11 @@ public class SsoUserApiTest {
         System.out.println(result);
     }
 
+    @Test
+    public void testF_bind(){
+        Long companyUU = 10050435l;
+        Long userUU = 1000027276l;
+        String result = ssoUserApi.bind("bind","trade-app", userUU, companyUU);
+        System.out.println(result);
+    }
 }