Browse Source

增加对优软云账户中心的支持

yingp 7 years ago
parent
commit
e2c90d60c6
17 changed files with 286 additions and 24 deletions
  1. 33 5
      base-servers/account/account-api/src/main/java/com/usoftchina/saas/account/api/AccountApi.java
  2. 70 0
      base-servers/account/account-api/src/main/java/com/usoftchina/saas/account/api/CompanyApi.java
  3. 22 7
      base-servers/account/account-api/src/main/java/com/usoftchina/saas/account/cache/AccountCache.java
  4. 13 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountDTO.java
  5. 10 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyDTO.java
  6. 18 2
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java
  7. 32 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/CompanyController.java
  8. 8 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountMapper.java
  9. 8 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/CompanyMapper.java
  10. 13 4
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/Account.java
  11. 13 4
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/Company.java
  12. 8 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountService.java
  13. 8 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/CompanyService.java
  14. 9 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java
  15. 5 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/CompanyServiceImpl.java
  16. 3 0
      base-servers/account/account-server/src/main/resources/mapper/AccountMapper.xml
  17. 13 2
      base-servers/account/account-server/src/main/resources/mapper/CompanyMapper.xml

+ 33 - 5
base-servers/account/account-api/src/main/java/com/usoftchina/saas/account/api/AccountApi.java

@@ -1,11 +1,11 @@
 package com.usoftchina.saas.account.api;
 
+import com.usoftchina.saas.account.dto.AccountCopyDTO;
 import com.usoftchina.saas.account.dto.AccountDTO;
+import com.usoftchina.saas.account.dto.AccountRegDTO;
 import com.usoftchina.saas.base.Result;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @author yingp
@@ -29,15 +29,43 @@ public interface AccountApi {
      * @param username
      * @return
      */
-    @GetMapping(value = "/account/read")
+    @GetMapping(value = "/account/read", params = "username")
     Result<AccountDTO> getAccount(@RequestParam(value = "username") String username);
 
+    /**
+     * 按用户uu查找账户
+     *
+     * @param uu
+     * @return
+     */
+    @GetMapping(value = "/account/read", params = "uu")
+    Result<AccountDTO> getAccountByUu(@RequestParam(value = "uu") Long uu);
+
     /**
      * 按用户名查找账户
      *
      * @param id
      * @return
      */
-    @GetMapping(value = "/account/{id}")
+    @GetMapping(value = "/account/read/{id}")
     Result<AccountDTO> getAccountById(@PathVariable("id") Long id);
+
+    /**
+     * 注册
+     *
+     * @param accountRegDTO
+     * @return
+     */
+    @PostMapping("/account/register")
+    Result register(@RequestBody AccountRegDTO accountRegDTO);
+
+    /**
+     * 从其他平台同步已注册用户信息
+     * 区别于普通注册:密码已经是加密后的密文
+     *
+     * @param accountSyncDTO
+     * @return
+     */
+    @PostMapping("/account/register/copy")
+    Result copyRegistration(@RequestBody AccountCopyDTO accountSyncDTO);
 }

+ 70 - 0
base-servers/account/account-api/src/main/java/com/usoftchina/saas/account/api/CompanyApi.java

@@ -0,0 +1,70 @@
+package com.usoftchina.saas.account.api;
+
+import com.usoftchina.saas.account.dto.CompanyCopyDTO;
+import com.usoftchina.saas.account.dto.CompanyDTO;
+import com.usoftchina.saas.account.dto.CompanyRegDTO;
+import com.usoftchina.saas.base.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author yingp
+ * @date 2018/11/15
+ */
+@FeignClient(name = "account-server")
+public interface CompanyApi {
+
+    /**
+     * 注册
+     *
+     * @param companyRegDTO
+     * @return
+     */
+    @PostMapping("/company/register")
+    Result register(@RequestBody CompanyRegDTO companyRegDTO);
+
+    /**
+     * 从其他平台复制已注册企业信息
+     *
+     * @param companyCopyDTO
+     * @return
+     */
+    @PostMapping("/company/register/copy")
+    Result copyRegistration(@RequestBody CompanyCopyDTO companyCopyDTO);
+
+    /**
+     * 按名称查找
+     *
+     * @param name
+     * @return
+     */
+    @GetMapping(path = "/company/read", params = "name")
+    Result<CompanyDTO> getCompanyByName(@RequestParam String name);
+
+    /**
+     * 按商业登记证号查找
+     *
+     * @param businessCode
+     * @return
+     */
+    @GetMapping(path = "/company/read", params = "businessCode")
+    Result<CompanyDTO> getCompanyByBusinessCode(@RequestParam String businessCode);
+
+    /**
+     * 按企业uu查找
+     *
+     * @param uu
+     * @return
+     */
+    @GetMapping(path = "/company/read", params = "uu")
+    Result<CompanyDTO> getCompanyByUu(@RequestParam Long uu);
+
+    /**
+     * 按ID查找
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping(path = "/company/read/{id}")
+    Result<CompanyDTO> getCompanyById(@PathVariable Long id);
+}

+ 22 - 7
base-servers/account/account-api/src/main/java/com/usoftchina/saas/account/cache/AccountCache.java

@@ -18,18 +18,26 @@ import java.util.function.Supplier;
  * @date 2018/11/1
  */
 public class AccountCache extends RedisHashCache<String, String, String> {
-    private final long id;
+    private Long id;
+    private Long uu;
 
     private static final RedisTemplate<String, String> REDIS_TEMPLATE = SpringContextHolder.getBean("redisTemplate", RedisTemplate.class);
     private AccountApi accountApi;
 
-    private AccountCache(long id) {
+    private AccountCache() {
         super(() -> REDIS_TEMPLATE);
-        this.id = id;
     }
 
     public static AccountCache of(long id) {
-        return new AccountCache(id);
+        AccountCache cache = new AccountCache();
+        cache.id = id;
+        return cache;
+    }
+
+    public static AccountCache uu(long uu) {
+        AccountCache cache = new AccountCache();
+        cache.uu = uu;
+        return cache;
     }
 
     /**
@@ -38,12 +46,12 @@ public class AccountCache extends RedisHashCache<String, String, String> {
      * @return
      */
     public static AccountCache current() {
-        return new AccountCache(BaseContextHolder.getUserId());
+        return of(BaseContextHolder.getUserId());
     }
 
     @Override
     protected String field() {
-        return String.valueOf(id);
+        return String.valueOf(null == id ? ("uu:" + uu) : ("id:" + id));
     }
 
     @Override
@@ -57,7 +65,14 @@ public class AccountCache extends RedisHashCache<String, String, String> {
             if (null == accountApi) {
                 accountApi = SpringContextHolder.getBean(AccountApi.class);
             }
-            Result<AccountDTO> result = accountApi.getAccountById(id);
+            Result<AccountDTO> result = null;
+            if (null != id && id > 0) {
+                result = accountApi.getAccountById(id);
+            } else if (null != uu) {
+                result = accountApi.getAccountByUu(uu);
+            } else {
+                return null;
+            }
             if (result.isSuccess()) {
                 return JsonUtils.toJsonString(result.getData());
             }

+ 13 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountDTO.java

@@ -29,6 +29,10 @@ public class AccountDTO implements Serializable {
      * 账号类型 0 - 管理员
      */
     private Integer type;
+    /**
+     * uu
+     */
+    private Long uu;
     /**
      * 所有绑定的公司
      */
@@ -104,6 +108,14 @@ public class AccountDTO implements Serializable {
         this.type = type;
     }
 
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
+
     public List<CompanyBaseDTO> getCompanies() {
         return companies;
     }
@@ -165,6 +177,7 @@ public class AccountDTO implements Serializable {
                 ", mobile='" + mobile + '\'' +
                 ", avatarUrl='" + avatarUrl + '\'' +
                 ", type=" + type +
+                ", uu=" + uu +
                 ", companies=" + companies +
                 ", rolesMap=" + rolesMap +
                 ", resourcesTable=" + resourcesTable +

+ 10 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyDTO.java

@@ -21,6 +21,7 @@ public class CompanyDTO implements Serializable{
     private String businessCode;
     private String address;
     private String logoUrl;
+    private Long uu;
 
     public Long getId() {
         return id;
@@ -62,6 +63,14 @@ public class CompanyDTO implements Serializable{
         this.logoUrl = logoUrl;
     }
 
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
+
     @Override
     public String toString() {
         return "CompanyDTO{" +
@@ -70,6 +79,7 @@ public class CompanyDTO implements Serializable{
                 ", businessCode='" + businessCode + '\'' +
                 ", address='" + address + '\'' +
                 ", logoUrl='" + logoUrl + '\'' +
+                ", uu=" + uu +
                 '}';
     }
 }

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

@@ -168,7 +168,7 @@ public class AccountController {
      * @param username
      * @return
      */
-    @GetMapping("/read")
+    @GetMapping(value = "/read", params = "username")
     public Result<AccountDTO> getAccount(@RequestParam(value = "username") String username) {
         Account account = getAccountByUsername(username);
         if (null == account) {
@@ -178,6 +178,22 @@ public class AccountController {
         return Result.success(getAccountDTO(account));
     }
 
+    /**
+     * 按用户名查找账户
+     *
+     * @param uu
+     * @return
+     */
+    @GetMapping(value = "/read", params = "uu")
+    public Result<AccountDTO> getAccountByUu(@RequestParam(value = "uu") Long uu) {
+        Account account = accountService.findByUu(uu);
+        if (null == account) {
+            return Result.error(ExceptionCode.USER_NOT_EXIST);
+        }
+
+        return Result.success(getAccountDTO(account));
+    }
+
     /**
      * 按当前登录用户查找账户
      *
@@ -199,7 +215,7 @@ public class AccountController {
      * @param id
      * @return
      */
-    @GetMapping("/{id}")
+    @GetMapping("/read/{id}")
     public Result<AccountDTO> getAccountById(@PathVariable Long id) {
         Account account = accountService.findByPrimaryKey(id);
         if (null == account) {

+ 32 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/CompanyController.java

@@ -78,6 +78,38 @@ public class CompanyController {
         return Result.error(ExceptionCode.COMPANY_NOT_EXIST);
     }
 
+    /**
+     * 按uu查找
+     *
+     * @param uu
+     * @return
+     */
+    @GetMapping(path = "/read", params = "uu")
+    public Result<CompanyDTO> getByUu(@RequestParam Long uu) {
+        Company company = companyService.findByUu(uu);
+        if (null != company) {
+            CompanyDTO companyDTO = BeanMapper.map(company, CompanyDTO.class);
+            return Result.success(companyDTO);
+        }
+        return Result.error(ExceptionCode.COMPANY_NOT_EXIST);
+    }
+
+    /**
+     * 按ID查找
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping(path = "/read/{id}")
+    public Result<CompanyDTO> getCompanyById(@PathVariable Long id) {
+        Company company = companyService.findByPrimaryKey(id);
+        if (null != company) {
+            CompanyDTO companyDTO = BeanMapper.map(company, CompanyDTO.class);
+            return Result.success(companyDTO);
+        }
+        return Result.error(ExceptionCode.COMPANY_NOT_EXIST);
+    }
+
     /**
      * 当前登录的公司的信息
      *

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

@@ -74,6 +74,14 @@ public interface AccountMapper {
      */
     Account selectByEmail(@Param("email") String email);
 
+    /**
+     * 按uu查找
+     *
+     * @param uu
+     * @return
+     */
+    Account selectByUu(@Param("uu") Long uu);
+
     /**
      * 按角色查找
      *

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

@@ -43,6 +43,14 @@ public interface CompanyMapper {
      */
     Company selectByName(@Param("name") String name);
 
+    /**
+     * 按uu查询
+     *
+     * @param uu
+     * @return
+     */
+    Company selectByUu(@Param("uu") Long uu);
+
     /**
      * 按商业登记证号查询
      *

+ 13 - 4
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/Account.java

@@ -26,10 +26,11 @@ public class Account implements Serializable {
      */
     private Integer type;
     private boolean enabled;
-    protected Date createTime;
-    protected long creatorId;
-    protected Date updateTime;
-    protected long updaterId;
+    private Date createTime;
+    private long creatorId;
+    private Date updateTime;
+    private long updaterId;
+    private Long uu;
 
     public String getUsername() {
         return username;
@@ -142,4 +143,12 @@ public class Account implements Serializable {
     public void setUpdaterId(long updaterId) {
         this.updaterId = updaterId;
     }
+
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
 }

+ 13 - 4
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/Company.java

@@ -24,10 +24,11 @@ public class Company implements Serializable {
      * 企业logo
      */
     private String logoUrl;
-    protected Date createTime;
-    protected long creatorId;
-    protected Date updateTime;
-    protected long updaterId;
+    private Date createTime;
+    private long creatorId;
+    private Date updateTime;
+    private long updaterId;
+    private Long uu;
 
     public String getName() {
         return name;
@@ -100,4 +101,12 @@ public class Company implements Serializable {
     public void setUpdaterId(long updaterId) {
         this.updaterId = updaterId;
     }
+
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
 }

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

@@ -51,6 +51,14 @@ public interface AccountService {
      */
     Account findByEmail(String email);
 
+    /**
+     * 按uu查找
+     *
+     * @param uu
+     * @return
+     */
+    Account findByUu(Long uu);
+
     /**
      * 按主键查找
      *

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

@@ -34,6 +34,14 @@ public interface CompanyService {
      */
     Company findByBusinessCode(String businessCode);
 
+    /**
+     * 按uu查找
+     *
+     * @param uu
+     * @return
+     */
+    Company findByUu(Long uu);
+
     /**
      * 按ID查找
      *

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

@@ -64,6 +64,11 @@ public class AccountServiceImpl implements AccountService {
         return accountMapper.selectByUsername(username);
     }
 
+    @Override
+    public Account findByUu(Long uu) {
+        return accountMapper.selectByUu(uu);
+    }
+
     @Override
     public Account findByMobile(String mobile) {
         return accountMapper.selectByMobile(mobile);
@@ -169,5 +174,9 @@ public class AccountServiceImpl implements AccountService {
     @Override
     public void clearCache(Long accountId) {
         AccountCache.of(accountId).hdel();
+        Account account = accountMapper.selectByPrimaryKey(accountId);
+        if (null != account && null != account.getUu()) {
+            AccountCache.uu(account.getUu()).hdel();
+        }
     }
 }

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

@@ -51,6 +51,11 @@ public class CompanyServiceImpl implements CompanyService{
         return companyMapper.selectByBusinessCode(businessCode);
     }
 
+    @Override
+    public Company findByUu(Long uu) {
+        return companyMapper.selectByUu(uu);
+    }
+
     @Override
     public Company findByPrimaryKey(Long id) {
         return companyMapper.selectByPrimaryKey(id);

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

@@ -178,6 +178,9 @@
     <select id="selectByEmail" parameterType="java.lang.String" resultMap="BaseResultMap">
         select <include refid="baseColumns"/> from ac_account where email=#{email}
     </select>
+    <select id="selectByUu" parameterType="java.lang.Long" resultMap="BaseResultMap">
+        select <include refid="baseColumns"/> from ac_account where uu=#{uu}
+    </select>
     <select id="selectByRoleId" parameterType="java.lang.Long" resultMap="BaseResultMap">
         select <include refid="baseColumns"/> from ac_account,ac_account_role where
         ac_account.id=ac_account_role.account_id and ac_account_role.role_id=#{roleId,jdbcType=BIGINT}

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

@@ -6,6 +6,8 @@
         <result column="name" jdbcType="VARCHAR" property="name"/>
         <result column="business_code" jdbcType="VARCHAR" property="businessCode"/>
         <result column="address" jdbcType="VARCHAR" property="address"/>
+        <result column="logo_url" jdbcType="VARCHAR" property="logoUrl"/>
+        <result column="uu" jdbcType="BIGINT" property="uu"/>
         <result column="creator_id" jdbcType="BIGINT" property="creatorId"/>
         <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
         <result column="updater_id" jdbcType="BIGINT" property="updaterId"/>
@@ -21,9 +23,9 @@
     </sql>
     <insert id="insert" parameterType="com.usoftchina.saas.account.po.Company"
             useGeneratedKeys="true" keyProperty="id">
-        insert into ac_company(name, business_code, address, logo_url, creator_id, create_time, updater_id, update_time)
+        insert into ac_company(name, business_code, address, logo_url, uu, creator_id, create_time, updater_id, update_time)
         values (#{name,jdbcType=VARCHAR}, #{businessCode,jdbcType=VARCHAR},
-        #{address,jdbcType=VARCHAR}, #{logoUrl,jdbcType=VARCHAR}, #{creatorId,jdbcType=BIGINT},
+        #{address,jdbcType=VARCHAR}, #{logoUrl,jdbcType=VARCHAR}, #{uu,jdbcType=BIGINT}, #{creatorId,jdbcType=BIGINT},
         #{createTime,jdbcType=TIMESTAMP}, #{updaterId,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP})
     </insert>
     <insert id="insertSelective" parameterType="com.usoftchina.saas.account.po.Company"
@@ -42,6 +44,9 @@
             <if test="logoUrl != null">
                 logo_url,
             </if>
+            <if test="uu != null">
+                uu,
+            </if>
             <if test="creatorId != null">
                 creator_id,
             </if>
@@ -68,6 +73,9 @@
             <if test="logoUrl != null">
                 #{logoUrl,jdbcType=VARCHAR},
             </if>
+            <if test="uu != null">
+                #{uu,jdbcType=BIGINT},
+            </if>
             <if test="creatorId != null">
                 #{creatorId,jdbcType=BIGINT},
             </if>
@@ -88,6 +96,9 @@
     <select id="selectByName" parameterType="java.lang.String" resultMap="FullResultMap">
         select <include refid="baseColumns"/> from ac_company where name=#{name,jdbcType=VARCHAR}
     </select>
+    <select id="selectByUu" parameterType="java.lang.Long" resultMap="FullResultMap">
+        select <include refid="baseColumns"/> from ac_company where uu=#{uu,jdbcType=BIGINT}
+    </select>
     <select id="selectByBusinessCode" parameterType="java.lang.String" resultMap="FullResultMap">
         select <include refid="baseColumns"/> from ac_company where business_code=#{businessCode,jdbcType=VARCHAR}
     </select>