diff --git a/README.md b/README.md index 0b2319e6..5827e91e 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,9 @@ Snowy谐音“小诺”,恰应小诺团队名称;意思为”下雪的、纯
+
+
+
diff --git a/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/enums/AuthExceptionEnum.java b/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/enums/AuthExceptionEnum.java
index 7753b20f..37516593 100644
--- a/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/enums/AuthExceptionEnum.java
+++ b/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/enums/AuthExceptionEnum.java
@@ -29,6 +29,9 @@ public enum AuthExceptionEnum {
/** 验证码请求号不能为空 */
VALID_CODE_REQ_NO_EMPTY("验证码请求号不能为空"),
+ /** 验证码过期 */
+ VALID_CODE_EXPIRED("验证码过期"),
+
/** 验证码错误 */
VALID_CODE_ERROR("验证码错误"),
diff --git a/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/enums/AuthStrategyWhenNoUserWithPhoneOrEmailEnum.java b/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/enums/AuthStrategyWhenNoUserWithPhoneOrEmailEnum.java
index d42e70a6..8dccc16c 100644
--- a/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/enums/AuthStrategyWhenNoUserWithPhoneOrEmailEnum.java
+++ b/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/enums/AuthStrategyWhenNoUserWithPhoneOrEmailEnum.java
@@ -24,6 +24,9 @@ import vip.xiaonuo.common.exception.CommonException;
@Getter
public enum AuthStrategyWhenNoUserWithPhoneOrEmailEnum {
+ /** 允许登录(手机或者邮箱存在时) */
+ ALLOW_LOGIN("ALLOW_LOGIN"),
+
/** 不允许登录 */
NOT_ALLOW_LOGIN("NOT_ALLOW_LOGIN"),
@@ -39,7 +42,7 @@ public enum AuthStrategyWhenNoUserWithPhoneOrEmailEnum {
public static void validate(String value) {
boolean flag = NOT_ALLOW_LOGIN.getValue().equals(value) || AUTO_CREATE_USER.getValue().equals(value);
if(!flag) {
- throw new CommonException("不支持的手机号或邮箱无对应用户时策略型:{}", value);
+ throw new CommonException("不支持的手机号或邮箱无对应用户时策略类型:{}", value);
}
}
}
diff --git a/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/service/impl/AuthServiceImpl.java b/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/service/impl/AuthServiceImpl.java
index 06cfaedd..e2bd2b07 100644
--- a/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/service/impl/AuthServiceImpl.java
+++ b/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/service/impl/AuthServiceImpl.java
@@ -194,7 +194,7 @@ public class AuthServiceImpl implements AuthService {
// 验证码请求号
String validCodeReqNo = authGetPhoneValidCodeParam.getValidCodeReqNo();
// 校验参数
- validPhoneOrEmailValidCodeParam(null, AuthPhoneOrEmailTypeEnum.PHONE.getValue(), validCode, validCodeReqNo, type);
+ validValidCode(null, validCode, validCodeReqNo);
// 生成手机验证码的值,随机6为数字
String phoneValidCode = RandomUtil.randomNumbers(6);
// 生成手机验证码的请求号
@@ -257,7 +257,7 @@ public class AuthServiceImpl implements AuthService {
// 验证码请求号
String validCodeReqNo = authGetEmailValidCodeParam.getValidCodeReqNo();
// 校验参数
- validPhoneOrEmailValidCodeParam(null, AuthPhoneOrEmailTypeEnum.EMAIL.getValue(), validCode, validCodeReqNo, type);
+ validValidCode(null, validCode, validCodeReqNo);
// 生成邮箱验证码的值,随机6为数字
String emailValidCode = RandomUtil.randomNumbers(6);
// 生成邮箱验证码的请求号
@@ -327,11 +327,15 @@ public class AuthServiceImpl implements AuthService {
// 手机或者邮箱验证码
existValidCode = commonCacheOperator.get(AUTH_VALID_CODE_CACHE_KEY + phoneOrEmail + StrUtil.UNDERLINE + validCodeReqNo);
}
- // 为空则直接验证码错误
- if(ObjectUtil.isEmpty(existValidCode)) {
+ // 缓存中不存在验证码则返回失效错误
+ if (ObjectUtil.isEmpty(existValidCode)){
+ throw new CommonException(AuthExceptionEnum.VALID_CODE_EXPIRED.getValue());
+ }
+ // 不一致则直接验证码错误
+ if (!validCode.equalsIgnoreCase(Convert.toStr(existValidCode))) {
throw new CommonException(AuthExceptionEnum.VALID_CODE_ERROR.getValue());
}
- // 移除该验证码
+ // 验证成功,移除该验证码
if(ObjectUtil.isEmpty(phoneOrEmail)) {
// 图形验证码
commonCacheOperator.remove(AUTH_VALID_CODE_CACHE_KEY + validCodeReqNo);
@@ -339,10 +343,6 @@ public class AuthServiceImpl implements AuthService {
// 手机或者邮箱验证码
commonCacheOperator.remove(AUTH_VALID_CODE_CACHE_KEY + phoneOrEmail + StrUtil.UNDERLINE + validCodeReqNo);
}
- // 不一致则直接验证码错误
- if (!validCode.equalsIgnoreCase(Convert.toStr(existValidCode))) {
- throw new CommonException("验证码错误");
- }
}
/**
@@ -351,59 +351,63 @@ public class AuthServiceImpl implements AuthService {
* @author xuyuxiang
* @date 2022/8/25 14:29
**/
- private String validPhoneOrEmailValidCodeParam(String phoneOrEmail, String phoneOrEmailType, String validCode,
- String validCodeReqNo, String type) {
- // 验证码正确则校验手机号格式
- if(ObjectUtil.isEmpty(phoneOrEmail)) {
- // 根据手机号或者邮箱获取用户信息,判断用户是否存在,根据B端或C端判断
- if(SaClientTypeEnum.B.getValue().equals(type)) {
- if(phoneOrEmailType.equals(AuthPhoneOrEmailTypeEnum.PHONE.getValue())) {
- SaBaseLoginUser saBaseLoginUser = loginUserApi.getUserByPhone(phoneOrEmail);
- if(ObjectUtil.isEmpty(saBaseLoginUser)) {
- // B端手机号无对应用户时策略
- return devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_STRATEGY_WHEN_NO_USER_WITH_PHONE_FOR_B_KEY);
- }
- } else {
- SaBaseLoginUser saBaseLoginUser = loginUserApi.getUserByEmail(phoneOrEmail);
- if(ObjectUtil.isEmpty(saBaseLoginUser)) {
- // B端邮箱无对应用户时策略
- return devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_STRATEGY_WHEN_NO_USER_WITH_EMAIL_FOR_B_KEY);
- }
- }
- } else {
- if(phoneOrEmailType.equals(AuthPhoneOrEmailTypeEnum.PHONE.getValue())) {
- SaBaseClientLoginUser saBaseClientLoginUser = clientLoginUserApi.getClientUserByPhone(phoneOrEmail);
- if(ObjectUtil.isEmpty(saBaseClientLoginUser)) {
- // C端手机号无对应用户时策略
- return devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_STRATEGY_WHEN_NO_USER_WITH_PHONE_FOR_C_KEY);
- }
- } else {
- SaBaseClientLoginUser saBaseClientLoginUser = clientLoginUserApi.getClientUserByEmail(phoneOrEmail);
- if(ObjectUtil.isEmpty(saBaseClientLoginUser)) {
- // BC端邮箱无对应用户时策略
- return devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_STRATEGY_WHEN_NO_USER_WITH_EMAIL_FOR_C_KEY);
- }
- }
+ private String validPhoneOrEmailValidCodeParam(String phoneOrEmail, String phoneOrEmailType,
+ String validCode, String validCodeReqNo, String type) {
+ // 校验手机号或邮箱类型
+ AuthPhoneOrEmailTypeEnum.validate(phoneOrEmailType);
+ // 校验手机号或邮箱格式
+ if(phoneOrEmailType.equals(AuthPhoneOrEmailTypeEnum.PHONE.getValue())) {
+ if(!PhoneUtil.isMobile(phoneOrEmail)) {
+ throw new CommonException(AuthExceptionEnum.PHONE_FORMAT_ERROR.getValue());
}
- // 执行校验图形验证码
- validValidCode(null, validCode, validCodeReqNo);
- // 返回空值
- return null;
} else {
- AuthPhoneOrEmailTypeEnum.validate(phoneOrEmailType);
+ if(CommonEmailUtil.isNotEmail(phoneOrEmail)) {
+ throw new CommonException(AuthExceptionEnum.PHONE_FORMAT_ERROR.getValue());
+ }
+ }
+ // 先校验验证码
+ validValidCode(phoneOrEmail, validCode, validCodeReqNo);
+ // 根据手机号或者邮箱获取用户信息,判断用户是否存在,根据B端或C端判断
+ if(SaClientTypeEnum.B.getValue().equals(type)) {
if(phoneOrEmailType.equals(AuthPhoneOrEmailTypeEnum.PHONE.getValue())) {
- if(!PhoneUtil.isMobile(phoneOrEmail)) {
- throw new CommonException(AuthExceptionEnum.PHONE_FORMAT_ERROR.getValue());
+ SaBaseLoginUser saBaseLoginUser = loginUserApi.getUserByPhone(phoneOrEmail);
+ if(ObjectUtil.isEmpty(saBaseLoginUser)) {
+ // B端手机号无对应用户时策略
+ return devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_STRATEGY_WHEN_NO_USER_WITH_PHONE_FOR_B_KEY);
+ } else {
+ // 存在则允许登录
+ return AuthStrategyWhenNoUserWithPhoneOrEmailEnum.ALLOW_LOGIN.getValue();
}
} else {
- if(CommonEmailUtil.isNotEmail(phoneOrEmail)) {
- throw new CommonException(AuthExceptionEnum.PHONE_FORMAT_ERROR.getValue());
+ SaBaseLoginUser saBaseLoginUser = loginUserApi.getUserByEmail(phoneOrEmail);
+ if(ObjectUtil.isEmpty(saBaseLoginUser)) {
+ // B端邮箱无对应用户时策略
+ return devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_STRATEGY_WHEN_NO_USER_WITH_EMAIL_FOR_B_KEY);
+ } else {
+ // 存在则允许登录
+ return AuthStrategyWhenNoUserWithPhoneOrEmailEnum.ALLOW_LOGIN.getValue();
+ }
+ }
+ } else {
+ if(phoneOrEmailType.equals(AuthPhoneOrEmailTypeEnum.PHONE.getValue())) {
+ SaBaseClientLoginUser saBaseClientLoginUser = clientLoginUserApi.getClientUserByPhone(phoneOrEmail);
+ if(ObjectUtil.isEmpty(saBaseClientLoginUser)) {
+ // C端手机号无对应用户时策略
+ return devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_STRATEGY_WHEN_NO_USER_WITH_PHONE_FOR_C_KEY);
+ } else {
+ // 存在则允许登录
+ return AuthStrategyWhenNoUserWithPhoneOrEmailEnum.ALLOW_LOGIN.getValue();
+ }
+ } else {
+ SaBaseClientLoginUser saBaseClientLoginUser = clientLoginUserApi.getClientUserByEmail(phoneOrEmail);
+ if(ObjectUtil.isEmpty(saBaseClientLoginUser)) {
+ // C端邮箱无对应用户时策略
+ return devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_STRATEGY_WHEN_NO_USER_WITH_EMAIL_FOR_C_KEY);
+ } else {
+ // 存在则允许登录
+ return AuthStrategyWhenNoUserWithPhoneOrEmailEnum.ALLOW_LOGIN.getValue();
}
}
- // 执行校验手机或者邮箱验证码
- validValidCode(phoneOrEmail, validCode, validCodeReqNo);
- // 返回空值
- return null;
}
}
@@ -504,41 +508,53 @@ public class AuthServiceImpl implements AuthService {
}
// 根据手机号获取用户信息,根据B端或C端判断
if(SaClientTypeEnum.B.getValue().equals(type)) {
- SaBaseLoginUser saBaseLoginUser = loginUserApi.getUserByPhone(phone);
- if(ObjectUtil.isEmpty(saBaseLoginUser)) {
- // 判断手机号无对应用户时的策略,如果为空则直接抛出异常
- if(ObjectUtil.isEmpty(strategyWhenNoUserWithPhoneOrEmail)) {
+ // 判断手机号无对应用户时的策略,如果为空则直接抛出异常
+ if(ObjectUtil.isEmpty(strategyWhenNoUserWithPhoneOrEmail)) {
+ throw new CommonException("手机号码:{}不存在对应用户", phone);
+ } else {
+ // 如果不允许登录,则抛出异常
+ if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.NOT_ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
throw new CommonException("手机号码:{}不存在对应用户", phone);
} else {
- // 如果不允许登录,则抛出异常
- if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.NOT_ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
- throw new CommonException("手机号码:{}不存在对应用户", phone);
- } else {
+ // 定义B端用户
+ SaBaseLoginUser saBaseLoginUser;
+ if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
+ // 允许登录,即用户存在
+ saBaseLoginUser = loginUserApi.getUserByPhone(phone);
+ }else if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.AUTO_CREATE_USER.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
// 根据手机号自动创建B端用户
saBaseLoginUser = loginUserApi.createUserWithPhone(phone);
+ } else {
+ throw new CommonException("不支持的手机号或邮箱无对应用户时策略类型:{}", strategyWhenNoUserWithPhoneOrEmail);
}
+ // 执行B端登录
+ return execLoginB(saBaseLoginUser, device);
}
}
- // 执行B端登录
- return execLoginB(saBaseLoginUser, device);
} else {
- SaBaseClientLoginUser saBaseClientLoginUser = clientLoginUserApi.getClientUserByPhone(phone);
- if(ObjectUtil.isEmpty(saBaseClientLoginUser)) {
- // 判断手机号无对应用户时的策略,如果为空则直接抛出异常
- if(ObjectUtil.isEmpty(strategyWhenNoUserWithPhoneOrEmail)) {
+ // 判断手机号无对应用户时的策略,如果为空则直接抛出异常
+ if(ObjectUtil.isEmpty(strategyWhenNoUserWithPhoneOrEmail)) {
+ throw new CommonException("手机号码:{}不存在对应用户", phone);
+ } else {
+ // 如果不允许登录,则抛出异常
+ if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.NOT_ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
throw new CommonException("手机号码:{}不存在对应用户", phone);
} else {
- // 如果不允许登录,则抛出异常
- if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.NOT_ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
- throw new CommonException("手机号码:{}不存在对应用户", phone);
- } else {
- // 根据手机号自动创建C端用户
+ // 定义C端用户
+ SaBaseClientLoginUser saBaseClientLoginUser;
+ if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
+ // 允许登录,即用户存在
+ saBaseClientLoginUser = clientLoginUserApi.getClientUserByPhone(phone);
+ }else if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.AUTO_CREATE_USER.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
+ // 根据手机号自动创建B端用户
saBaseClientLoginUser = clientLoginUserApi.createClientUserWithPhone(phone);
+ } else {
+ throw new CommonException("不支持的手机号或邮箱无对应用户时策略类型:{}", strategyWhenNoUserWithPhoneOrEmail);
}
+ // 执行C端登录
+ return execLoginC(saBaseClientLoginUser, device);
}
}
- // 执行C端登录
- return execLoginC(saBaseClientLoginUser, device);
}
}
@@ -562,41 +578,53 @@ public class AuthServiceImpl implements AuthService {
}
// 根据邮箱获取用户信息,根据B端或C端判断
if(SaClientTypeEnum.B.getValue().equals(type)) {
- SaBaseLoginUser saBaseLoginUser = loginUserApi.getUserByEmail(email);
- if(ObjectUtil.isEmpty(saBaseLoginUser)) {
- // 判断邮箱无对应用户时的策略,如果为空则直接抛出异常
- if(ObjectUtil.isEmpty(strategyWhenNoUserWithPhoneOrEmail)) {
+ // 判断邮箱无对应用户时的策略,如果为空则直接抛出异常
+ if(ObjectUtil.isEmpty(strategyWhenNoUserWithPhoneOrEmail)) {
+ throw new CommonException("邮箱:{}不存在对应用户", email);
+ } else {
+ // 如果不允许登录,则抛出异常
+ if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.NOT_ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
throw new CommonException("邮箱:{}不存在对应用户", email);
} else {
- // 如果不允许登录,则抛出异常
- if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.NOT_ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
- throw new CommonException("邮箱:{}不存在对应用户", email);
- } else {
+ // 定义B端用户
+ SaBaseLoginUser saBaseLoginUser;
+ if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
+ // 允许登录,即用户存在
+ saBaseLoginUser = loginUserApi.getUserByEmail(email);
+ }else if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.AUTO_CREATE_USER.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
// 根据邮箱自动创建B端用户
saBaseLoginUser = loginUserApi.createUserWithEmail(email);
+ } else {
+ throw new CommonException("不支持的手机号或邮箱无对应用户时策略类型:{}", strategyWhenNoUserWithPhoneOrEmail);
}
+ // 执行B端登录
+ return execLoginB(saBaseLoginUser, device);
}
}
- // 执行B端登录
- return execLoginB(saBaseLoginUser, device);
} else {
- SaBaseClientLoginUser saBaseClientLoginUser = clientLoginUserApi.getClientUserByEmail(email);
- if(ObjectUtil.isEmpty(saBaseClientLoginUser)) {
- // 判断邮箱无对应用户时的策略,如果为空则直接抛出异常
- if(ObjectUtil.isEmpty(strategyWhenNoUserWithPhoneOrEmail)) {
+ // 判断邮箱无对应用户时的策略,如果为空则直接抛出异常
+ if(ObjectUtil.isEmpty(strategyWhenNoUserWithPhoneOrEmail)) {
+ throw new CommonException("邮箱:{}不存在对应用户", email);
+ } else {
+ // 如果不允许登录,则抛出异常
+ if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.NOT_ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
throw new CommonException("邮箱:{}不存在对应用户", email);
} else {
- // 如果不允许登录,则抛出异常
- if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.NOT_ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
- throw new CommonException("邮箱:{}不存在对应用户", email);
+ // 定义C端用户
+ SaBaseClientLoginUser saBaseClientLoginUser;
+ if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.ALLOW_LOGIN.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
+ // 允许登录,即用户存在
+ saBaseClientLoginUser = clientLoginUserApi.getClientUserByEmail(email);
+ }else if(AuthStrategyWhenNoUserWithPhoneOrEmailEnum.AUTO_CREATE_USER.getValue().equals(strategyWhenNoUserWithPhoneOrEmail)) {
+ // 根据邮箱自动创建B端用户
+ saBaseClientLoginUser = loginUserApi.createClientUserWithEmail(email);
} else {
- // 根据邮箱自动创建C端用户
- saBaseClientLoginUser = clientLoginUserApi.createClientUserWithEmail(email);
+ throw new CommonException("不支持的手机号或邮箱无对应用户时策略类型:{}", strategyWhenNoUserWithPhoneOrEmail);
}
+ // 执行C端登录
+ return execLoginC(saBaseClientLoginUser, device);
}
}
- // 执行C端登录
- return execLoginC(saBaseClientLoginUser, device);
}
}
@@ -924,9 +952,9 @@ public class AuthServiceImpl implements AuthService {
String passwordDecrypt = CommonCryptogramUtil.doSm2Decrypt(password);
// 根据账号获取用户信息,根据B端或C端判断
if(SaClientTypeEnum.B.getValue().equals(type)) {
- clientLoginUserApi.doRegister(account, passwordDecrypt);
- } else {
loginUserApi.doRegister(account, passwordDecrypt);
+ } else {
+ clientLoginUserApi.doRegister(account, passwordDecrypt);
}
}
diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/org/service/impl/BizOrgServiceImpl.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/org/service/impl/BizOrgServiceImpl.java
index b31c8826..1449431a 100644
--- a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/org/service/impl/BizOrgServiceImpl.java
+++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/org/service/impl/BizOrgServiceImpl.java
@@ -48,10 +48,7 @@ import vip.xiaonuo.common.listener.CommonDataChangeEventCenter;
import vip.xiaonuo.common.page.CommonPageRequest;
import vip.xiaonuo.sys.api.SysRoleApi;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -117,7 +114,13 @@ public class BizOrgServiceImpl extends ServiceImpl