Browse Source

账户新增:未注册人员直接开通优软云并发送短信

chenw 7 years ago
parent
commit
48f4774240

+ 9 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountAddDTO.java

@@ -23,6 +23,15 @@ public class AccountAddDTO implements Serializable {
     private Integer type;
     private Integer type;
     private Long uu;
     private Long uu;
     private String roleIds;
     private String roleIds;
+    private boolean hasRegister;
+
+    public boolean isHasRegister() {
+        return hasRegister;
+    }
+
+    public void setHasRegister(boolean hasRegister) {
+        this.hasRegister = hasRegister;
+    }
 
 
     public String getRoleIds() {
     public String getRoleIds() {
         return roleIds;
         return roleIds;

+ 10 - 0
base-servers/account/account-server/pom.xml

@@ -42,6 +42,16 @@
             <groupId>com.usoftchina.saas</groupId>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>file-dto</artifactId>
             <artifactId>file-dto</artifactId>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>sms-dto</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>sms-api</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
         <!-- db -->
         <!-- db -->
         <dependency>
         <dependency>
             <groupId>mysql</groupId>
             <groupId>mysql</groupId>

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

@@ -1,7 +1,9 @@
 package com.usoftchina.saas.account.controller;
 package com.usoftchina.saas.account.controller;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.usoftchina.saas.account.dto.*;
 import com.usoftchina.saas.account.dto.*;
 import com.usoftchina.saas.account.po.Account;
 import com.usoftchina.saas.account.po.Account;
+import com.usoftchina.saas.account.po.Company;
 import com.usoftchina.saas.account.po.RoleResource;
 import com.usoftchina.saas.account.po.RoleResource;
 import com.usoftchina.saas.account.service.AccountService;
 import com.usoftchina.saas.account.service.AccountService;
 import com.usoftchina.saas.account.service.CompanyService;
 import com.usoftchina.saas.account.service.CompanyService;
@@ -15,11 +17,15 @@ import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.sms.api.SmsApi;
+import com.usoftchina.saas.sms.dto.SmsDTO;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.RegexpUtils;
 import com.usoftchina.saas.utils.RegexpUtils;
+import com.usoftchina.saas.utils.StringUtils;
 import com.usoftchina.sso.api.SsoUserApi;
 import com.usoftchina.sso.api.SsoUserApi;
-import com.usoftchina.sso.dto.SsoCheckMobile;
+import com.usoftchina.sso.api.SsoUserSpaceApi;
+import com.usoftchina.sso.dto.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
@@ -43,6 +49,12 @@ public class AccountController {
     private RoleService roleService;
     private RoleService roleService;
     @Autowired
     @Autowired
     private SsoUserApi ssoUserApi;
     private SsoUserApi ssoUserApi;
+    @Autowired
+    private SsoUserSpaceApi ssoUserSpaceApi;
+    @Autowired
+    private SmsApi smsApi;
+
+    private final String msgTemplateCode = "SMS_152288990";
 
 
     /**
     /**
      * 注册
      * 注册
@@ -115,6 +127,7 @@ public class AccountController {
      */
      */
     @PostMapping("/register/add")
     @PostMapping("/register/add")
     public Result AddAccount(@RequestBody AccountAddDTO accountAddDTO) {
     public Result AddAccount(@RequestBody AccountAddDTO accountAddDTO) {
+        String mobile = accountAddDTO.getMobile();
         Account account = null;
         Account account = null;
         // 根据手机号、邮箱、用户名片段判断是否已注册
         // 根据手机号、邮箱、用户名片段判断是否已注册
         boolean checked = accountService.findByUsernameOrMobileOrEmail(accountAddDTO.getUsername(), accountAddDTO.getMobile(), accountAddDTO.getEmail());
         boolean checked = accountService.findByUsernameOrMobileOrEmail(accountAddDTO.getUsername(), accountAddDTO.getMobile(), accountAddDTO.getEmail());
@@ -123,6 +136,43 @@ public class AccountController {
             account = BeanMapper.map(accountAddDTO, Account.class);
             account = BeanMapper.map(accountAddDTO, Account.class);
             account.setEnabled(true);
             account.setEnabled(true);
             accountService.save(account);
             accountService.save(account);
+            if (!accountAddDTO.isHasRegister()) {
+                //1.添加至优软云
+                String password = StringUtils.createInitPassword(mobile.substring(mobile.length() - 3, mobile.length()));
+                Company company = companyService.findByPrimaryKey(BaseContextHolder.getCompanyId());
+                String companyName = company.getName();
+
+                //可能存在开通企业时UU号同步到优软云出错的情况,再重新同步一次
+                if (company.getUu() == null) {
+                    Account accountTmp = accountService.findByPrimaryKey(company.getCreatorId());
+                    ssoUserSpaceApi.registerLogin(companyName, company.getBusinessCode(), accountTmp.getUu());
+                    SsoUserSpaceList ssoUserSpaceList = ssoUserApi.getUserSpacesByMobile(accountTmp.getMobile());
+                    List<SsoUserSpace> ssoUserSpaces = ssoUserSpaceList.getSpaces();
+                    if (ssoUserSpaces.size() > 0) {
+                        for (SsoUserSpace ssoUserspace : ssoUserSpaces) {
+                            if (companyName.equals(ssoUserspace.getSpaceName())) {
+                                company.setUu(ssoUserspace.getSpaceUU());
+                                companyService.updateUUByPrimaryKey(company.getId(), ssoUserspace.getSpaceUU());
+                            }
+                        }
+                    }
+                }
+                SsoResult result = ssoUserApi.add("add", "sp", accountAddDTO.getRealname(), mobile, password, company.getUu());
+                //2.调用短信服务,将密码以短信的形式发送到用户的手机上
+                if (result.isSuccess()) {
+                    SmsDTO smsDTO = new SmsDTO();
+                    smsDTO.setMobile(mobile);
+                    smsDTO.setSignName("优软云");
+                    smsDTO.setTemplateCode(msgTemplateCode);
+                    JSONObject jsonObject = new JSONObject();
+                    jsonObject.put("password", password);
+                    smsDTO.setTemplateParam(jsonObject.toJSONString());
+                    Result sendResult = smsApi.sendRegisterMsg(smsDTO);
+                    if (!sendResult.isSuccess()) {
+                        return sendResult;
+                    }
+                }
+            }
         }else{
         }else{
             Account accountTemp = accountService.findByMobile(accountAddDTO.getMobile());
             Account accountTemp = accountService.findByMobile(accountAddDTO.getMobile());
             if (accountTemp == null){
             if (accountTemp == null){

+ 20 - 0
framework/core/src/main/java/com/usoftchina/saas/utils/StringUtils.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.utils;
 package com.usoftchina.saas.utils;
 
 
 import java.util.Date;
 import java.util.Date;
+import java.util.Random;
 
 
 /**
 /**
  * @author yingp
  * @author yingp
@@ -39,4 +40,23 @@ public abstract class StringUtils extends org.springframework.util.StringUtils{
     public static String createBusinessCode() {
     public static String createBusinessCode() {
         return BUSINESSCODE_PREFIX + DateUtils.getCurrentDate("yyyyMMdd") + (int)(Math.random()*1000 + 1000);
         return BUSINESSCODE_PREFIX + DateUtils.getCurrentDate("yyyyMMdd") + (int)(Math.random()*1000 + 1000);
     }
     }
+
+    public static String createInitPassword(String suffix){
+        Random random = new Random();
+        StringBuilder value = new StringBuilder();
+        // 生成4个字母
+        for (int i=0; i<3; i++) {
+            int choice = random.nextInt(2) % 2 == 0 ? 65 : 97;
+            value.append((char)(choice + random.nextInt(26)));
+        }
+
+        // 3个数字
+        String number = random.nextInt(999) + 1000 + "";
+        number = number.substring(number.length() - 3, number.length());
+        value.append(number);
+
+        // 后缀
+        value.append(suffix);
+        return value.toString();
+    }
 }
 }