Sfoglia il codice sorgente

1、增加企业注册、用户加入企业逻辑

rayson 1 anno fa
parent
commit
948a70eca6
19 ha cambiato i file con 236 aggiunte e 82 eliminazioni
  1. 7 1
      citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/i18n/config/LocaleInterceptor.java
  2. 16 0
      citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/web/core/handler/GlobalExceptionHandler.java
  3. 1 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  4. 25 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeDefaultRoleEnum.java
  5. 0 21
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeRoleTypeEnum.java
  6. 23 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthController.java
  7. 21 21
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java
  8. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthService.java
  9. 101 19
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthServiceImpl.java
  10. 10 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/register/EnterpriseRegisterServiceImpl.java
  11. 9 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/user/EnterpriseUserApplyServiceImpl.java
  12. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionService.java
  13. 3 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionServiceImpl.java
  14. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeRoleService.java
  15. 4 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeRoleServiceImpl.java
  16. 1 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/MdeUserService.java
  17. 4 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/MdeUserServiceImpl.java
  18. 1 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  19. 1 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

+ 7 - 1
citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/i18n/config/LocaleInterceptor.java

@@ -1,5 +1,7 @@
 package com.citu.framework.i18n.config;
 
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.http.HttpHeaders;
 import org.springframework.util.StringUtils;
 import org.springframework.web.servlet.HandlerInterceptor;
@@ -15,6 +17,7 @@ import java.util.Locale;
  *
  * @author rayson
  **/
+@Slf4j
 public class LocaleInterceptor implements HandlerInterceptor {
 
 //    @Override
@@ -53,11 +56,14 @@ public class LocaleInterceptor implements HandlerInterceptor {
 
         if (StringUtils.hasText(language)) {
             locale = parseAcceptLanguageHeader(language);
+            log.warn("解析请求国际化语言[{}]", locale);
         }
 
-        if (locale == null) {
+        if (null == locale) {
             // 如果无法解析语言头或者解析失败,则使用默认语言
             locale = Locale.getDefault();
+            log.warn("获取默认国际化语言[{}]", locale);
+
         }
 
         localeResolver.setLocale(request, response, locale);

+ 16 - 0
citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/web/core/handler/GlobalExceptionHandler.java

@@ -16,6 +16,8 @@ import com.citu.framework.web.core.util.WebFrameworkUtils;
 import com.citu.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.InvalidPropertyException;
+import org.springframework.beans.NullValueInNestedPathException;
 import org.springframework.context.MessageSource;
 import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.security.access.AccessDeniedException;
@@ -231,6 +233,17 @@ public class GlobalExceptionHandler {
         return CommonResult.error(METHOD_NOT_ALLOWED.getCode(), String.format("%s", ex.getMessage()));
     }
 
+    /**
+     * 处理 参数不合法提交
+     * <p>
+     * 来源是,前端提交错误参数,无效属性异常
+     */
+    @ExceptionHandler(value = InvalidPropertyException.class)
+    public CommonResult<?> invalidPropertyException(InvalidPropertyException ex) {
+        log.warn("[invalidPropertyException]", ex);
+        return CommonResult.error(BAD_REQUEST.getCode(), String.format("%s", ex.getMessage()));
+    }
+
     /**
      * 处理 Spring Security 权限不足的异常
      * <p>
@@ -243,6 +256,7 @@ public class GlobalExceptionHandler {
         return commonResult(FORBIDDEN);
     }
 
+
     /**
      * 处理业务异常 ServiceException
      * <p>
@@ -257,6 +271,7 @@ public class GlobalExceptionHandler {
         return commonResult(ex.getCode(), ex.getMessage());
     }
 
+
     /**
      * 处理系统异常,兜底处理所有的一切
      */
@@ -276,6 +291,7 @@ public class GlobalExceptionHandler {
         return commonResult(INTERNAL_SERVER_ERROR.getCode(), INTERNAL_SERVER_ERROR.getMsg());
     }
 
+
     private void createExceptionLog(HttpServletRequest req, Throwable e) {
         // 插入错误日志
         ApiErrorLogCreateReqDTO errorLog = new ApiErrorLogCreateReqDTO();

+ 1 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -135,6 +135,7 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_AUTH_SOCIAL_TYPE_NOT_NULL = new ErrorCode(1_002_000_013, "社交平台的类型不能为空");
     ErrorCode MDE_AUTH_CAPTCHA_CODE_NOT_NULL = new ErrorCode(1_002_000_014, "验证码不能为空");
     ErrorCode MDE_USER_ENTERPRISE_NOT_EXISTS = new ErrorCode(1_200_000_015, "未选择企业");
+    ErrorCode MDE_USER_ENTERPRISE_NOT_USER_NULL = new ErrorCode(1_200_000_016, "未注册用户,请先注册个人用户再申请企业用户");
 
 
     // ========== 角色模块 1_200_003_000 ==========

+ 25 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeDefaultRoleEnum.java

@@ -0,0 +1,25 @@
+package com.citu.module.menduner.system.enums.permission;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum MdeDefaultRoleEnum {
+
+    /**
+     * 内置角色
+     */
+    MENDUNER_DEFAULT_ROLE("MENDUNER_DEFAULT_ROLE"),
+    /**
+     * 企业管理员
+     */
+    MENDUNER_ENTERPRISE_ROLE("MENDUNER_ENTERPRISE_ROLE"),
+    /**
+     * 企业用户
+     */
+    MENDUNER_ENTERPRISE_USER_ROLE("MENDUNER_ENTERPRISE_USER_ROLE");
+
+    private final String type;
+
+}

+ 0 - 21
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeRoleTypeEnum.java

@@ -1,21 +0,0 @@
-package com.citu.module.menduner.system.enums.permission;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-@Getter
-@AllArgsConstructor
-public enum MdeRoleTypeEnum {
-
-    /**
-     * 内置角色
-     */
-    SYSTEM(1),
-    /**
-     * 自定义角色
-     */
-    CUSTOM(2);
-
-    private final Integer type;
-
-}

+ 23 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthController.java

@@ -6,8 +6,11 @@ import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.security.config.SecurityProperties;
 import com.citu.framework.security.core.util.SecurityFrameworkUtils;
 import com.citu.module.menduner.system.controller.app.auth.vo.*;
+import com.citu.module.menduner.system.controller.app.auth.vo.enterprise.AppEnterpriseAuthLoginReqVO;
+import com.citu.module.menduner.system.controller.app.auth.vo.enterprise.AppEnterpriseAuthSmsLoginReqVO;
 import com.citu.module.menduner.system.convert.MdeAuthConvert;
 import com.citu.module.menduner.system.service.auth.MdeAuthService;
+import com.citu.module.menduner.system.service.auth.MdeEnterpriseAuthService;
 import com.citu.module.system.api.social.SocialClientApi;
 import com.citu.module.system.api.social.dto.SocialWxJsapiSignatureRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
@@ -33,8 +36,8 @@ import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLo
 @Slf4j
 public class AppMdeAuthController {
 
-    @Resource
-    private MdeAuthService authService;
+//    @Resource
+//    private MdeAuthService authService;
 
     @Resource
     private SocialClientApi socialClientApi;
@@ -42,6 +45,9 @@ public class AppMdeAuthController {
     @Resource
     private SecurityProperties securityProperties;
 
+    @Resource
+    private MdeEnterpriseAuthService authService;
+
     @PostMapping("/login")
     @Operation(summary = "使用手机 + 密码登录")
     public CommonResult<AppMdeAuthLoginRespVO> login(@RequestBody @Valid AppMdeAuthLoginReqVO reqVO) {
@@ -122,5 +128,20 @@ public class AppMdeAuthController {
         return success(MdeAuthConvert.INSTANCE.convert(signature));
     }
 
+    // ========== 企业登录相关 ==========
+    @PostMapping("/enterprise/login")
+    @Operation(summary = "企业-使用手机 + 密码登录")
+    public CommonResult<AppMdeAuthLoginRespVO> login(@RequestBody @Valid AppEnterpriseAuthLoginReqVO reqVO) {
+        return success(authService.loginEnterprise(reqVO));
+    }
+
+    // ========== 短信登录相关 ==========
+
+    @PostMapping("/enterprise/sms-login")
+    @Operation(summary = "企业-使用手机 + 验证码登录")
+    public CommonResult<AppMdeAuthLoginRespVO> smsLogin(@RequestBody @Valid AppEnterpriseAuthSmsLoginReqVO reqVO) {
+        return success(authService.smsLoginEnterprise(reqVO));
+    }
+
 
 }

+ 21 - 21
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java

@@ -2,7 +2,7 @@ package com.citu.module.menduner.system.service.auth;
 
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.ObjectUtil;
-import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.enums.TerminalEnum;
 import com.citu.framework.common.enums.UserTypeEnum;
 import com.citu.framework.common.util.monitor.TracerUtils;
@@ -11,6 +11,7 @@ import com.citu.framework.common.util.validation.ValidationUtils;
 import com.citu.module.menduner.system.controller.app.auth.vo.*;
 import com.citu.module.menduner.system.convert.MdeAuthConvert;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.service.user.MdeUserService;
 import com.citu.module.system.api.logger.LoginLogApi;
 import com.citu.module.system.api.logger.dto.LoginLogCreateReqDTO;
@@ -34,7 +35,6 @@ import com.xingyuv.captcha.service.CaptchaService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.validation.Validator;
@@ -55,31 +55,31 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 public class MdeAuthServiceImpl implements MdeAuthService {
 
     @Resource
-    private MdeUserService userService;
+    protected MdeUserService userService;
     @Resource
-    private SmsCodeApi smsCodeApi;
+    protected SmsCodeApi smsCodeApi;
     @Resource
-    private LoginLogApi loginLogApi;
+    protected LoginLogApi loginLogApi;
     @Resource
-    private SocialUserApi socialUserApi;
+    protected SocialUserApi socialUserApi;
     @Resource
-    private SocialClientApi socialClientApi;
+    protected SocialClientApi socialClientApi;
     @Resource
-    private OAuth2TokenApi oauth2TokenApi;
+    protected OAuth2TokenApi oauth2TokenApi;
 
     /**
      * 验证码的开关,默认为 true
      */
     @Value("${citu.captcha.enable:true}")
-    private Boolean captchaEnable;
+    protected Boolean captchaEnable;
     @Resource
-    private Validator validator;
+    protected Validator validator;
 
     @Resource
-    private CaptchaService captchaService;
+    protected CaptchaService captchaService;
 
     @VisibleForTesting
-    void validateCaptcha(AppMdeAuthLoginReqVO reqVO) {
+    protected void validateCaptcha(AppMdeAuthLoginReqVO reqVO) {
         // 如果验证码关闭,则不进行校验
         if (!captchaEnable) {
             return;
@@ -115,7 +115,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         return createTokenAfterLoginSuccess(user, reqVO.getPhone(), LoginLogTypeEnum.LOGIN_MOBILE, openid);
     }
 
-    private MdeUserDO check(String mobile, String password) {
+    protected MdeUserDO check(String mobile, String password) {
         final LoginLogTypeEnum logTypeEnum = LoginLogTypeEnum.LOGIN_MOBILE;
         // 校验账号是否存在
         MdeUserDO user = userService.getUserByPhone(mobile);
@@ -160,7 +160,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
     }
 
     @Override
-    @Transactional
+    @DSTransactional
     public AppMdeAuthLoginRespVO smsLogin(AppMdeAuthSmsLoginReqVO reqVO) {
         // 校验验证码
         String userIp = getClientIP();
@@ -182,7 +182,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
     }
 
     @Override
-    @Transactional
+    @DSTransactional
     public AppMdeAuthLoginRespVO socialLogin(AppMdeAuthSocialLoginReqVO reqVO) {
         // 使用 code 授权码,进行登录。然后,获得到绑定的用户编号
         SocialUserRespDTO socialUser = socialUserApi.getSocialUserByCode(UserTypeEnum.MEMBER.getValue(), reqVO.getType(),
@@ -210,7 +210,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
     }
 
     @Override
-    @Transactional
+    @DSTransactional
     public AppMdeAuthLoginRespVO weixinMiniAppLogin(AppMdeAuthWeixinMiniAppLoginReqVO reqVO) {
         // 获得对应的手机号信息
         SocialWxPhoneNumberInfoRespDTO phoneNumberInfo = socialClientApi.getWxMaPhoneNumberInfo(
@@ -274,7 +274,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         return MdeAuthConvert.INSTANCE.convert(accessTokenDO, null);
     }
 
-    private String getPhone(Long userId) {
+    protected String getPhone(Long userId) {
         if (userId == null) {
             return null;
         }
@@ -282,7 +282,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         return user != null ? user.getPhone() : null;
     }
 
-    private void createLoginLog(Long userId, String mobile, LoginLogTypeEnum logType, LoginResultEnum loginResult) {
+    protected void createLoginLog(Long userId, String mobile, LoginLogTypeEnum logType, LoginResultEnum loginResult) {
         // 插入登录日志
         LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO();
         reqDTO.setLogType(logType.getType());
@@ -300,12 +300,12 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         }
     }
 
-    private UserTypeEnum getUserType() {
+    protected UserTypeEnum getUserType() {
         return UserTypeEnum.MEMBER;
     }
 
-    private AppMdeAuthLoginRespVO createTokenAfterLoginSuccess(MdeUserDO user, String phone,
-                                                               LoginLogTypeEnum logType, String openid) {
+    protected AppMdeAuthLoginRespVO createTokenAfterLoginSuccess(MdeUserDO user, String phone,
+                                                                 LoginLogTypeEnum logType, String openid) {
         // 插入登陆日志
         createLoginLog(user.getId(), phone, logType, LoginResultEnum.SUCCESS);
         // 创建 Token 令牌

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthService.java

@@ -12,7 +12,7 @@ import javax.validation.Valid;
  *
  * @author rayson
  */
-public interface MdeEnterpriseAuthService {
+public interface MdeEnterpriseAuthService extends MdeAuthService{
 
     /**
      * 手机 + 密码登录
@@ -20,7 +20,7 @@ public interface MdeEnterpriseAuthService {
      * @param reqVO 登录信息
      * @return 登录结果
      */
-    AppMdeAuthLoginRespVO login(@Valid AppEnterpriseAuthLoginReqVO reqVO);
+    AppMdeAuthLoginRespVO loginEnterprise(@Valid AppEnterpriseAuthLoginReqVO reqVO);
 
     /**
      * 手机 + 验证码登陆
@@ -28,7 +28,7 @@ public interface MdeEnterpriseAuthService {
      * @param reqVO 登陆信息
      * @return 登录结果
      */
-    AppMdeAuthLoginRespVO smsLogin(@Valid AppEnterpriseAuthSmsLoginReqVO reqVO);
+    AppMdeAuthLoginRespVO smsLoginEnterprise(@Valid AppEnterpriseAuthSmsLoginReqVO reqVO);
 
 
 }

+ 101 - 19
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthServiceImpl.java

@@ -1,20 +1,33 @@
 package com.citu.module.menduner.system.service.auth;
 
-import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthLoginReqVO;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.citu.framework.common.enums.UserTypeEnum;
 import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthLoginRespVO;
-import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthSmsLoginReqVO;
 import com.citu.module.menduner.system.controller.app.auth.vo.enterprise.AppEnterpriseAuthLoginReqVO;
 import com.citu.module.menduner.system.controller.app.auth.vo.enterprise.AppEnterpriseAuthSmsLoginReqVO;
+import com.citu.module.menduner.system.convert.MdeAuthConvert;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
+import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
-import com.citu.module.menduner.system.service.user.MdeUserService;
-import com.citu.module.system.api.logger.LoginLogApi;
-import com.citu.module.system.api.oauth2.OAuth2TokenApi;
-import com.citu.module.system.api.sms.SmsCodeApi;
+import com.citu.module.system.api.oauth2.dto.OAuth2AccessTokenCreateReqDTO;
+import com.citu.module.system.api.oauth2.dto.OAuth2AccessTokenRespDTO;
+import com.citu.module.system.api.social.dto.SocialUserBindReqDTO;
+import com.citu.module.system.enums.logger.LoginLogTypeEnum;
+import com.citu.module.system.enums.logger.LoginResultEnum;
+import com.citu.module.system.enums.oauth2.OAuth2ClientConstants;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.framework.common.util.servlet.ServletUtils.getClientIP;
+import static com.citu.framework.web.core.util.WebFrameworkUtils.getTerminal;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
+
 /**
  * menduner 的企业认证 Service 接口 实现
  *
@@ -22,27 +35,96 @@ import javax.annotation.Resource;
  **/
 @Service
 @Validated
-public class MdeEnterpriseAuthServiceImpl implements MdeEnterpriseAuthService{
+public class MdeEnterpriseAuthServiceImpl extends MdeAuthServiceImpl implements MdeEnterpriseAuthService {
+
 
-    @Resource
-    private MdeUserService userService;
-    @Resource
-    private SmsCodeApi smsCodeApi;
-    @Resource
-    private LoginLogApi loginLogApi;
-    @Resource
-    private OAuth2TokenApi oauth2TokenApi;
     @Resource
     private EnterpriseUserBindService bindService;
 
 
     @Override
-    public AppMdeAuthLoginRespVO login(AppEnterpriseAuthLoginReqVO reqVO) {
-        return null;
+    @DSTransactional
+    public AppMdeAuthLoginRespVO loginEnterprise(AppEnterpriseAuthLoginReqVO reqVO) {
+        // 校验验证码
+        validateCaptcha(reqVO);
+        // 使用手机 + 密码,进行登录。
+        MdeUserDO user = check(reqVO.getPhone(), reqVO.getPassword());
+
+        // 如果 socialType 非空,说明需要绑定社交用户
+        String openid = null;
+        if (reqVO.getSocialType() != null) {
+            openid = socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
+                    reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState())).getCheckedData();
+        }
+
+        // 创建 Token 令牌,记录登录日志
+        return createTokenAfterLoginSuccess(user, reqVO.getPhone(), LoginLogTypeEnum.LOGIN_MOBILE, openid);
+    }
+
+    @Override
+    @DSTransactional
+    public AppMdeAuthLoginRespVO smsLoginEnterprise(AppEnterpriseAuthSmsLoginReqVO reqVO) {
+        // 校验验证码
+        String userIp = getClientIP();
+//        smsCodeApi.useSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO, SmsSceneEnum.MENDUNER_LOGIN.getScene(), userIp).setMobile(reqVO.getPhone())).getCheckedData();
+
+        // 获得获得注册用户
+        MdeUserDO user = userService.createUserIfAbsent(reqVO.getPhone(), userIp, getTerminal().toString());
+        Assert.notNull(user, "获取用户失败,结果为空");
+
+        // 如果 socialType 非空,说明需要绑定社交用户
+        String openid = null;
+        if (reqVO.getSocialType() != null) {
+            openid = socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
+                    reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState())).getCheckedData();
+        }
+
+        // 创建 Token 令牌,记录登录日志
+        return createTokenAfterLoginSuccess(user, reqVO.getPhone(), LoginLogTypeEnum.LOGIN_SMS, openid);
+    }
+
+
+    @Override
+    protected MdeUserDO check(String mobile, String password) {
+        final LoginLogTypeEnum logTypeEnum = LoginLogTypeEnum.LOGIN_MOBILE;
+        // 校验账号是否存在
+        MdeUserDO user = userService.getUserByPhone(mobile);
+        if (user == null) {
+            createLoginLog(null, mobile, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
+            throw exception(MDE_AUTH_LOGIN_BAD_CREDENTIALS);
+        }
+        if (!userService.isPasswordMatch(password, user.getPassword())) {
+            createLoginLog(user.getId(), mobile, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
+            throw exception(MDE_AUTH_LOGIN_BAD_CREDENTIALS);
+        }
+        // 查询绑定用户
+        EnterpriseUserBindDO bind = bindService.getEnterpriseUserBind(user.getId());
+        if (null == bind) {
+            createLoginLog(user.getId(), mobile, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
+            throw exception(MDE_USER_ENTERPRISE_NOT_USER_NULL);
+        }
+        // 校验是否禁用
+        if (ObjectUtil.notEqual(bind.getStatus(), MendunerStatusEnum.ENABLE.getStatus())) {
+            createLoginLog(user.getId(), mobile, logTypeEnum, LoginResultEnum.USER_DISABLED);
+            throw exception(MDE_AUTH_LOGIN_USER_DISABLED);
+        }
+        return user;
+    }
+
+    @Override
+    protected UserTypeEnum getUserType() {
+        return UserTypeEnum.ADMIN;
     }
 
     @Override
-    public AppMdeAuthLoginRespVO smsLogin(AppEnterpriseAuthSmsLoginReqVO reqVO) {
-        return null;
+    protected AppMdeAuthLoginRespVO createTokenAfterLoginSuccess(MdeUserDO user, String phone, LoginLogTypeEnum logType, String openid) {
+        // 插入登陆日志
+        createLoginLog(user.getId(), phone, logType, LoginResultEnum.SUCCESS);
+        // 创建 Token 令牌
+        OAuth2AccessTokenRespDTO accessTokenRespDTO = oauth2TokenApi.createAccessToken(new OAuth2AccessTokenCreateReqDTO()
+                .setUserId(user.getId()).setUserType(getUserType().getValue())
+                .setClientId(OAuth2ClientConstants.CLIENT_ID_MENDUNER)).getCheckedData();
+        // 构建返回结果
+        return MdeAuthConvert.INSTANCE.convert(accessTokenRespDTO, openid);
     }
 }

+ 10 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/register/EnterpriseRegisterServiceImpl.java

@@ -18,6 +18,8 @@ import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseRegisterMapper;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.enums.enterprise.EnterpriseRegisterAuditStatusEnum;
+import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
+import com.citu.module.menduner.system.service.permission.MdePermissionService;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -45,6 +47,9 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
     @Resource
     private EnterpriseMapper enterpriseMapper;
 
+    @Resource
+    private MdePermissionService mdePermissionService;
+
     @Override
     public Long createEnterpriseRegister(EnterpriseRegisterSaveReqVO createReqVO) {
         // 插入
@@ -114,13 +119,17 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
         enterprise.setStatus(MendunerStatusEnum.ENABLE.getStatus());
         enterpriseMapper.insert(enterprise);
 
-
+        // 增加企业工商信息
         EnterpriseBusinessDO business = new EnterpriseBusinessDO();
         business.setEnterpriseId(enterprise.getId());
         business.setCode(enterpriseRegister.getCode());
         business.setName(enterpriseRegister.getName());
 
         enterpriseBusinessMapper.insert(business);
+
+        // 设置用户绑定企业管理员角色
+        // 谁申请的,谁就是企业管理员
+        mdePermissionService.assignUserRoleByDefault(enterpriseRegister.getUserId(), MdeDefaultRoleEnum.MENDUNER_ENTERPRISE_ROLE);
     }
 
     @Override

+ 9 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/user/EnterpriseUserApplyServiceImpl.java

@@ -16,7 +16,9 @@ import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseUserBindMa
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.enums.enterprise.EnterpriseUserApplyAuditStatusEnum;
 import com.citu.module.menduner.system.enums.enterprise.EnterpriseUserTypeEnum;
+import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 import com.citu.module.menduner.system.service.enterprise.EnterpriseUserApplyService;
+import com.citu.module.menduner.system.service.permission.MdePermissionService;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -41,6 +43,9 @@ public class EnterpriseUserApplyServiceImpl implements EnterpriseUserApplyServic
     @Resource
     private EnterpriseUserBindMapper userBindMapper;
 
+    @Resource
+    private MdePermissionService permissionService;
+
     @Override
     public Long createEnterpriseUserApply(EnterpriseUserApplySaveReqVO createReqVO) {
         // 插入
@@ -134,6 +139,10 @@ public class EnterpriseUserApplyServiceImpl implements EnterpriseUserApplyServic
         userBindDO.setStatus(MendunerStatusEnum.ENABLE.getStatus());
         userBindDO.setUserType(EnterpriseUserTypeEnum.NORMAL.getType());
         userBindMapper.insert(userBindDO);
+
+        // 审批通过更改用户绑定角色
+        // 绑定企业用户
+        permissionService.assignUserRoleByDefault(userApplyDO.getUserId(), MdeDefaultRoleEnum.MENDUNER_ENTERPRISE_USER_ROLE);
     }
 
     @Override

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionService.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.service.permission;
 
+import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
 
 import java.util.Collection;
@@ -50,8 +51,9 @@ public interface MdePermissionService {
      * 设置用户默认角色
      *
      * @param userId  角色编号
+     * @param roleEnum 角色枚举
      */
-    void assignUserRoleByDefault(Long userId);
+    void assignUserRoleByDefault(Long userId, MdeDefaultRoleEnum roleEnum);
 
     /**
      * 处理用户删除时,删除关联授权数据

+ 3 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionServiceImpl.java

@@ -13,6 +13,7 @@ import com.citu.module.menduner.system.dal.dataobject.permission.MdeUserRoleDO;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
 import com.citu.module.menduner.system.dal.mysql.permission.MdeUserRoleMapper;
 import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
+import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
 import com.citu.module.menduner.system.service.user.MdeUserService;
@@ -150,9 +151,9 @@ public class MdePermissionServiceImpl implements MdePermissionService {
 
     @Override
     @DSTransactional // 单机+多数据源方案,使用 @DSTransactional 保证本地事务,以及数据源的切换
-    public void assignUserRoleByDefault(Long userId) {
+    public void assignUserRoleByDefault(Long userId,MdeDefaultRoleEnum roleEnum) {
         // 获得默认角色信息
-        MdeRoleDO role = mdeRoleService.getRoleByDefault();
+        MdeRoleDO role = mdeRoleService.getRoleByDefault(roleEnum);
         MdeUserRoleDO entity = new MdeUserRoleDO();
         entity.setUserId(userId);
         entity.setRoleId(role.getId());

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeRoleService.java

@@ -4,6 +4,7 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.admin.permission.role.MdeRolePageReqVO;
 import com.citu.module.menduner.system.controller.admin.permission.role.MdeRoleSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.permission.MdeRoleDO;
+import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 
 import javax.validation.Valid;
 import java.util.Collection;
@@ -60,9 +61,10 @@ public interface MdeRoleService {
 
     /**
      * 获得默认角色
+     * @param roleEnum 角色枚举
      * @return 角色
      */
-    MdeRoleDO getRoleByDefault();
+    MdeRoleDO getRoleByDefault(MdeDefaultRoleEnum roleEnum);
 
     /**
      * 获得角色,从缓存中

+ 4 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeRoleServiceImpl.java

@@ -15,6 +15,7 @@ import com.citu.module.menduner.system.dal.mysql.permission.MdeRoleMapper;
 import com.citu.module.menduner.system.dal.mysql.permission.MdeUserRoleMapper;
 import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 import com.citu.module.menduner.system.enums.permission.MdeRoleCodeEnum;
 import com.citu.module.system.enums.permission.DataScopeEnum;
 import com.citu.module.system.enums.permission.RoleTypeEnum;
@@ -44,9 +45,7 @@ import static com.citu.module.menduner.system.enums.MdeLogRecordConstants.*;
 @Slf4j
 public class MdeRoleServiceImpl implements MdeRoleService {
 
-    private final static String MENDUNER_DEFAULT_ROLE = "menduner_default_role";
-    private final static String MENDUNER_ENTERPRISE_ROLE = "menduner_enterprise_role";
-    private final static String MENDUNER_ENTERPRISE_USER_ROLE = "menduner_enterprise_user_role";
+
     @Resource
     private MdePermissionService permissionService;
     @Resource
@@ -180,8 +179,8 @@ public class MdeRoleServiceImpl implements MdeRoleService {
     }
 
     @Override
-    public MdeRoleDO getRoleByDefault() {
-        MdeRoleDO role = roleMapper.selectOne(MdeRoleDO::getCode, MENDUNER_DEFAULT_ROLE, MdeRoleDO::getStatus, MendunerStatusEnum.ENABLE.getStatus());
+    public MdeRoleDO getRoleByDefault(MdeDefaultRoleEnum roleEnum) {
+        MdeRoleDO role = roleMapper.selectOne(MdeRoleDO::getCode, roleEnum.getType(), MdeRoleDO::getStatus, MendunerStatusEnum.ENABLE.getStatus());
         if (role == null) {
             throw exception(MDE_ROLE_NOT_EXISTS);
         }

+ 1 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/MdeUserService.java

@@ -8,6 +8,7 @@ import com.citu.module.menduner.system.controller.admin.user.vo.MdeUserPageReqVO
 import com.citu.module.menduner.system.controller.admin.user.vo.MdeUserSaveReqVO;
 import com.citu.module.menduner.system.controller.app.user.vo.*;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
+import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 
 import javax.validation.Valid;
 import java.util.List;
@@ -84,7 +85,6 @@ public interface MdeUserService {
      */
     MdeUserDO createUserIfAbsent(@Mobile String phone, String registerIp, String terminal);
 
-
     /**
      * 基于手机号创建用户。
      * 如果用户已经存在,则直接进行返回
@@ -106,7 +106,6 @@ public interface MdeUserService {
      */
     MdeUserDO createUser(String avtar, String registerIp, String terminal);
 
-
     /**
      * 判断密码是否匹配
      *

+ 4 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/MdeUserServiceImpl.java

@@ -18,6 +18,7 @@ import com.citu.module.menduner.system.controller.app.user.vo.*;
 import com.citu.module.menduner.system.convert.MdeAuthConvert;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
 import com.citu.module.menduner.system.dal.mysql.user.MdeUserMapper;
+import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 import com.citu.module.menduner.system.service.permission.MdePermissionService;
 import com.citu.module.system.api.sms.SmsCodeApi;
 import com.citu.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
@@ -82,7 +83,7 @@ public class MdeUserServiceImpl implements MdeUserService {
         user.setPassword(encodePassword(createReqVO.getPassword())); // 加密密码
         mdeUserMapper.insert(user);
         // 2.2 绑定默认角色
-        mdePermissionService.assignUserRoleByDefault(user.getId());
+        mdePermissionService.assignUserRoleByDefault(user.getId(),MdeDefaultRoleEnum.MENDUNER_ENTERPRISE_ROLE);
         // 3. 记录操作日志上下文
         LogRecordContext.putVariable("mde-user", user);
         return user.getId();
@@ -228,7 +229,7 @@ public class MdeUserServiceImpl implements MdeUserService {
     }
 
 
-    private MdeUserDO createUser(String phone, String avtar,
+    public MdeUserDO createUser(String phone, String avtar,
                                  String registerIp, String terminal) {
         // 生成密码
         String password = IdUtil.fastSimpleUUID();
@@ -243,7 +244,7 @@ public class MdeUserServiceImpl implements MdeUserService {
 
         mdeUserMapper.insert(user);
         // 绑定默认角色
-        mdePermissionService.assignUserRoleByDefault(user.getId());
+        mdePermissionService.assignUserRoleByDefault(user.getId(),MdeDefaultRoleEnum.MENDUNER_DEFAULT_ROLE);
         return user;
     }
 

+ 1 - 0
menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties

@@ -118,6 +118,7 @@
 1_002_000_013=The type of social platform cannot be empty
 1_002_000_014=The verification code cannot be empty
 1_200_000_015=No enterprise selected
+1_200_000_016=Unregistered user, please register individual user first before applying for enterprise user
 # ========== 角色模块 1_200_003_000 ==========
 1_200_003_001=Character does not exist
 1_200_003_002=A role named [{}] already exists

+ 1 - 0
menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -119,6 +119,7 @@
 1_002_000_013=社交平台的类型不能为空
 1_002_000_014=验证码不能为空
 1_200_000_015=未选择企业
+1_200_000_016=未注册用户,请先注册个人用户再申请企业用户
 # ========== 角色模块 1_200_003_000 ==========
 1_200_003_001=角色不存在
 1_200_003_002=已经存在名为【{}】的角色