Jelajahi Sumber

新增账户修改

chenw 7 tahun lalu
induk
melakukan
98cd8fbad6

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

@@ -0,0 +1,112 @@
+package com.usoftchina.saas.account.dto;
+
+import java.io.Serializable;
+
+/**
+ * @author chenw
+ * @date 2018/11/27
+ */
+public class AccountAddDTO implements Serializable {
+
+    private String username;
+    /**
+     * 密文密码
+     */
+    private String password;
+    private String salt;
+    private String realname;
+    private String email;
+    private String mobile;
+    /**
+     * 账号类型 0 - 管理员
+     */
+    private Integer type;
+    private Long uu;
+    private String roleIds;
+
+    public String getRoleIds() {
+        return roleIds;
+    }
+
+    public void setRoleIds(String roleIds) {
+        this.roleIds = roleIds;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getSalt() {
+        return salt;
+    }
+
+    public void setSalt(String salt) {
+        this.salt = salt;
+    }
+
+    public String getRealname() {
+        return realname;
+    }
+
+    public void setRealname(String realname) {
+        this.realname = realname;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
+
+    @Override
+    public String toString() {
+        return "AccountCopyDTO{" +
+                "username='" + username + '\'' +
+                ", password='" + password + '\'' +
+                ", salt='" + salt + '\'' +
+                ", realname='" + realname + '\'' +
+                ", email='" + email + '\'' +
+                ", mobile='" + mobile + '\'' +
+                ", type=" + type +
+                ", uu=" + uu +
+                '}';
+    }
+}

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

@@ -108,30 +108,25 @@ public class AccountController {
     /**
     /**
      * SAAS手动添加账户,并默认绑定当前公司
      * SAAS手动添加账户,并默认绑定当前公司
      *
      *
-     * @param accountCopyDTO
+     * @param accountAddDTO
      * @return
      * @return
      */
      */
     @PostMapping("/register/add")
     @PostMapping("/register/add")
-    public Result AddAccount(@RequestBody AccountCopyDTO accountCopyDTO) {
-        // 判断是否已注册
-        Account account = accountService.findByUsername(accountCopyDTO.getUsername());
-        if (null != account) {
-            return Result.error(ExceptionCode.USER_NAME_EXIST);
-        }
-        account = accountService.findByMobile(accountCopyDTO.getMobile());
-        if (null != account) {
-            return Result.error(ExceptionCode.USER_MOBILE_EXIST);
-        }
-        account = accountService.findByEmail(accountCopyDTO.getEmail());
-        if (null != account) {
-            return Result.error(ExceptionCode.USER_EMAIL_EXIST);
+    public Result AddAccount(@RequestBody AccountAddDTO accountAddDTO) {
+        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);
         }
         }
-
-        account = BeanMapper.map(accountCopyDTO, Account.class);
-        account.setEnabled(true);
-        accountService.save(account);
+        account = accountService.findByMobile(accountAddDTO.getMobile());
         //绑定企业
         //绑定企业
         accountService.bindCompany(account.getId(), BaseContextHolder.getCompanyId());
         accountService.bindCompany(account.getId(), BaseContextHolder.getCompanyId());
+        //绑定角色
+        accountService.bindRoles(account.getId(), accountAddDTO.getRoleIds());
+        accountService.clearCache(account.getId());
         return Result.success();
         return Result.success();
     }
     }
 
 

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

@@ -113,4 +113,13 @@ public interface AccountMapper {
      * @return
      * @return
      */
      */
     int checkEmail(@Param("email") String email, @Param("companyId") Long companyId);
     int checkEmail(@Param("email") String email, @Param("companyId") Long companyId);
+
+    /**
+     * 查询用户是否已存在
+     * @param username
+     * @param mobile
+     * @param email
+     * @return
+     */
+    int findByUsernameOrMobileOrEmail(@Param("username") String username, @Param("mobile") String mobile, @Param("email") String email);
 }
 }

+ 1 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountRoleMapper.java

@@ -55,5 +55,5 @@ public interface AccountRoleMapper {
      * 解除账户绑定的所有角色
      * 解除账户绑定的所有角色
      * @param id
      * @param id
      */
      */
-    void unBindRolesById(Long id);
+    void unBindRolesById(@Param("id") Long id, @Param("companyId") Long companyId);
 }
 }

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

@@ -185,4 +185,13 @@ public interface AccountService {
      * @return
      * @return
      */
      */
     boolean checkEmail(String email);
     boolean checkEmail(String email);
+
+    /**
+     * 通过手机号、邮箱、用户名校验是否存在此用户
+     * @param username
+     * @param mobile
+     * @param email
+     * @return
+     */
+    boolean findByUsernameOrMobileOrEmail(String username, String mobile, String email);
 }
 }

+ 6 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java

@@ -125,7 +125,7 @@ public class AccountServiceImpl implements AccountService {
 
 
     @Override
     @Override
     public void bindRoles(Long accountId, String roleIds) {
     public void bindRoles(Long accountId, String roleIds) {
-        accountRoleMapper.unBindRolesById(accountId);
+        accountRoleMapper.unBindRolesById(accountId, BaseContextHolder.getCompanyId());
         String[] array = roleIds.split(",");
         String[] array = roleIds.split(",");
         for (int i = 0; i < array.length; i++){
         for (int i = 0; i < array.length; i++){
             bindRole(accountId, Long.parseLong(array[i]));
             bindRole(accountId, Long.parseLong(array[i]));
@@ -204,4 +204,9 @@ public class AccountServiceImpl implements AccountService {
         return accountMapper.checkEmail(email, BaseContextHolder.getCompanyId()) > 0;
         return accountMapper.checkEmail(email, BaseContextHolder.getCompanyId()) > 0;
     }
     }
 
 
+    @Override
+    public boolean findByUsernameOrMobileOrEmail(String username, String mobile, String email) {
+        return accountMapper.findByUsernameOrMobileOrEmail(username, mobile, email) > 0;
+    }
+
 }
 }

+ 4 - 0
base-servers/account/account-server/src/main/resources/mapper/AccountMapper.xml

@@ -206,4 +206,8 @@
         SELECT COUNT(*) FROM AC_ACCOUNT AA LEFT JOIN AC_ACCOUNT_COMPANY AAC ON AAC.ACCOUNT_ID = AA.ID
         SELECT COUNT(*) FROM AC_ACCOUNT AA LEFT JOIN AC_ACCOUNT_COMPANY AAC ON AAC.ACCOUNT_ID = AA.ID
         WHERE AAC.COMPANY_ID = #{companyId} AND AA.EMAIL = #{email};
         WHERE AAC.COMPANY_ID = #{companyId} AND AA.EMAIL = #{email};
     </select>
     </select>
+    <select id="findByUsernameOrMobileOrEmail" resultType="int">
+        SELECT COUNT(*) FROM AC_ACCOUNT
+        WHERE USERNAME = #{username} OR MOBILE = #{mobile} OR EMAIL = #{email};
+    </select>
 </mapper>
 </mapper>

+ 2 - 2
base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml

@@ -32,7 +32,7 @@
         </where>
         </where>
         group by a.id,a.username,a.realname,a.email,a.mobile,a.enabled
         group by a.id,a.username,a.realname,a.email,a.mobile,a.enabled
     </select>
     </select>
-    <delete id="unBindRolesById" parameterType="java.lang.Long">
-        DELETE FROM AC_ACCOUNT_ROLE WHERE ACCOUNT_ID = #{id}
+    <delete id="unBindRolesById" >
+        DELETE FROM AC_ACCOUNT_ROLE WHERE ACCOUNT_ID = #{id} and company_id = #{companyId}
     </delete>
     </delete>
 </mapper>
 </mapper>