jiangping
2024-01-25 aaea4819b873c5ca7b9be1a87af173ee2015a12a
开发业务接口
已添加2个文件
已删除12个文件
已修改8个文件
已重命名11个文件
1175 ■■■■ 文件已修改
server/company/src/main/java/com/doumee/api/system/SystemController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/config/shiro/ShiroCache.java 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/config/shiro/ShiroConfig.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/config/shiro/ShiroToken.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/SmsEmailController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/system/SystemController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/shiro/ShiroCacheManager.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/shiro/ShiroCredentialsMatcher.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/shiro/ShiroRealm.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/shiro/ShiroSessionSerializer.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/shiro/ShiroToken.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/shiro/ShiroTokenManager.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroCache.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroConfig.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroRedisSessionDAO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroToken.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/system/SystemLoginService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/resources/application-dev.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/api/system/SystemController.java
@@ -8,6 +8,7 @@
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.dto.LoginPhoneDTO;
import com.doumee.dao.system.dto.UpdatePwdDto;
import com.doumee.dao.system.dto.WebLoginDTO;
import com.doumee.service.system.SystemLoginService;
@@ -49,14 +50,13 @@
    }
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("登录 - H5")
    @PostMapping("/loginH5")
    public ApiResponse<String> loginH5 (@Validated @RequestBody WebLoginDTO dto, HttpServletRequest request) {
        LoginDTO loginDTO = new LoginDTO();
        BeanUtils.copyProperties(dto,loginDTO);
        return ApiResponse.success(systemLoginService.loginByPassword(loginDTO, Constants.TWO, request));
    @ApiOperation("短信验证码登录")
    @PostMapping("/loginByPhone")
    public ApiResponse<String> loginByPhone (@Validated @RequestBody LoginPhoneDTO dto, HttpServletRequest request) {
        return ApiResponse.success(systemLoginService.loginByPhone(dto, Constants.ZERO, request));
    }
    @ApiOperation("退出登录")
    @PostMapping("/logout")
    public ApiResponse logout () {
server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
ÎļþÒÑɾ³ý
server/company/src/main/java/com/doumee/config/shiro/ShiroCache.java
ÎļþÒÑɾ³ý
server/company/src/main/java/com/doumee/config/shiro/ShiroConfig.java
ÎļþÒÑɾ³ý
server/company/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
ÎļþÒÑɾ³ý
server/company/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
ÎļþÒÑɾ³ý
server/company/src/main/java/com/doumee/config/shiro/ShiroToken.java
ÎļþÒÑɾ³ý
server/platform/src/main/java/com/doumee/api/business/SmsEmailController.java
@@ -37,6 +37,13 @@
    public ApiResponse create(@RequestBody SmsEmail smsEmail) {
        return ApiResponse.success(smsEmailService.create(smsEmail));
    }
    @PreventRepeat
    @ApiOperation("发送短信验证码")
    @PostMapping("/sendSms")
//    @RequiresPermissions("business:smsemail:sendSms")
    public ApiResponse sendSms(@RequestBody SmsEmail smsEmail) {
        return ApiResponse.success(smsEmailService.sendSms(smsEmail));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
server/platform/src/main/java/com/doumee/api/system/SystemController.java
@@ -8,6 +8,7 @@
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.dto.LoginPhoneDTO;
import com.doumee.dao.system.dto.UpdatePwdDto;
import com.doumee.service.system.SystemLoginService;
import io.swagger.annotations.Api;
@@ -45,6 +46,12 @@
    public ApiResponse<String> login (@Validated @RequestBody LoginDTO dto, HttpServletRequest request) {
        return ApiResponse.success(systemLoginService.loginByPassword(dto, Constants.ZERO, request));
    }
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("短信验证码登录")
    @PostMapping("/loginByPhone")
    public ApiResponse<String> loginByPhone (@Validated @RequestBody LoginPhoneDTO dto, HttpServletRequest request) {
        return ApiResponse.success(systemLoginService.loginByPhone(dto, Constants.ZERO, request));
    }
    @ApiOperation("退出登录")
    @PostMapping("/logout")
server/platform/src/main/java/com/doumee/shiro/ShiroCacheManager.java
ÎļþÒÑɾ³ý
server/platform/src/main/java/com/doumee/shiro/ShiroCredentialsMatcher.java
ÎļþÒÑɾ³ý
server/platform/src/main/java/com/doumee/shiro/ShiroRealm.java
ÎļþÒÑɾ³ý
server/platform/src/main/java/com/doumee/shiro/ShiroSessionSerializer.java
ÎļþÒÑɾ³ý
server/platform/src/main/java/com/doumee/shiro/ShiroToken.java
ÎļþÒÑɾ³ý
server/platform/src/main/java/com/doumee/shiro/ShiroTokenManager.java
ÎļþÒÑɾ³ý
server/service/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
ÎļþÃû´Ó server/platform/src/main/java/com/doumee/shiro/ShiroAuthFilter.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.doumee.shiro;
package com.doumee.config.shiro;
import com.alibaba.fastjson.JSON;
import com.doumee.core.model.ApiResponse;
server/service/src/main/java/com/doumee/config/shiro/ShiroCache.java
ÎļþÃû´Ó server/platform/src/main/java/com/doumee/shiro/ShiroCache.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.doumee.shiro;
package com.doumee.config.shiro;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.cache.Cache;
server/service/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
server/service/src/main/java/com/doumee/config/shiro/ShiroConfig.java
ÎļþÃû´Ó server/platform/src/main/java/com/doumee/shiro/ShiroConfig.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.doumee.shiro;
package com.doumee.config.shiro;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.session.mgt.SessionManager;
@@ -91,6 +91,7 @@
        map.put("/system/login", "anon");
        map.put("/system/logout", "anon");
        map.put("/common/captcha", "anon");
        map.put("/business/smsEmail/sendSms", "anon");
        map.put("/business/areas/*", "anon");
        // - æ”¾è¡Œswagger
        map.put("/doc.html", "anon");
server/service/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
ÎļþÃû´Ó server/company/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java ÐÞ¸Ä
@@ -24,7 +24,7 @@
    @Override
    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
        UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
        ShiroToken usernamePasswordToken = (ShiroToken) token;
        SystemUser queryUserDto = new SystemUser();
        queryUserDto.setUsername(usernamePasswordToken.getUsername());
        queryUserDto.setDeleted(Boolean.FALSE);
@@ -32,12 +32,9 @@
        if (systemUser == null) {
            return Boolean.FALSE;
        }
//        if(usernamePasswordToken.getDdLogin()){
//            return Boolean.TRUE;
//        }
//        if(usernamePasswordToken.getWxLogin()){
//            return Boolean.TRUE;
//        }
        if(!usernamePasswordToken.isNeedPassword()){
            return Boolean.TRUE;
        }
        // åŠ å¯†å¯†ç 
        String pwd = Utils.Secure.encryptPassword(new String(usernamePasswordToken.getPassword()), systemUser.getSalt());
        // æ¯”较密码
server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java
ÎļþÃû´Ó server/company/src/main/java/com/doumee/config/shiro/ShiroRealm.java ÐÞ¸Ä
@@ -4,12 +4,13 @@
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.CompanyPermission;
import com.doumee.dao.system.model.SystemPermission;
import com.doumee.dao.system.model.SystemRole;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.CompanyService;
import com.doumee.service.business.CompanyPermissionService;
import com.doumee.service.business.impl.CompanyServiceImpl;
import com.doumee.service.system.SystemDataPermissionService;
import com.doumee.service.system.SystemPermissionService;
import com.doumee.service.system.SystemRoleService;
@@ -26,7 +27,7 @@
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.ArrayList;
import java.util.List;
/**
@@ -43,6 +44,12 @@
    @Lazy
    @Autowired
    private SystemUserService systemUserService;
    @Lazy
    @Autowired
    private CompanyPermissionService companyPermissionService;
    @Lazy
    @Autowired
    private CompanyServiceImpl companyService;
    @Lazy
    @Autowired
@@ -51,10 +58,6 @@
    @Lazy
    @Autowired
    private SystemPermissionService systemPermissionService;
    @Lazy
    @Autowired
    private CompanyService companyService;
    /**
     * æƒé™å¤„理
@@ -77,34 +80,53 @@
     * @date 2022/03/15 09:54
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException{
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        // èŽ·å–ç”¨æˆ·å
        ShiroToken authenticationToken = (ShiroToken)token;
        String username = authenticationToken.getPrincipal().toString();
        // æ ¹æ®ç”¨æˆ·åæŸ¥è¯¢ç”¨æˆ·å¯¹è±¡
        SystemUser queryDto = new SystemUser();
        queryDto.setUsername(username);
        if(authenticationToken.isNeedPassword()){
            //账号密码登录
            queryDto.setUsername(username);
        }else{
            //手机号验证码登录
            queryDto.setMobile(username);
        }
        queryDto.setType(authenticationToken.getUserType());
        queryDto.setDeleted(Boolean.FALSE);
        SystemUser user = systemUserService.findOne(queryDto);
        if(user == null){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,账号或密码不正确!");
        }
        if(!Constants.equalsInteger(user.getType(),Constants.UserType.COMPANY.getKey())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非企业账户身份,无法登录该平台!!");
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,账号信息不正确!");
        }
        if(!Constants.equalsInteger(user.getStatus(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,账号信息已被禁用,如有疑问请联系系统管理员!");
        }
        if(!user.getType().equals(Constants.UserType.SYSTEM)){
            Company company = companyService.findById(user.getCompanyId());
            if(company.getStatus().equals(Constants.ONE)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,企业信息已被禁用,如有疑问请联系系统管理员!");
            }
            user.setCompany(company);
        }
        // èŽ·å–ç™»å½•ç”¨æˆ·ä¿¡æ¯
        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
        if(authenticationToken.getUserType() == 0){
            CompanyPermission c = new CompanyPermission();
            c.setUserId(user.getId());
            c.setIsdeleted(Constants.ZERO);
            List<CompanyPermission> pList = companyPermissionService.findList(c);
            if(pList!=null){
                for (CompanyPermission cc : pList){
                    if(user.getCompanyIdList() == null){
                        user.setCompanyIdList(new ArrayList<>());
                    }
                    user.getCompanyIdList().add(cc.getCompanyId());
                }
            }
        }else{
            Company company = companyService.findById(user.getCompanyId());
            if(company == null){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,企业账号信息不正确!");
            }
            user.setCompany(company);
        }
        // éªŒè¯ç”¨æˆ·
        return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
    }
server/service/src/main/java/com/doumee/config/shiro/ShiroRedisSessionDAO.java
ÎļþÃû´Ó server/platform/src/main/java/com/doumee/shiro/ShiroRedisSessionDAO.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.doumee.shiro;
package com.doumee.config.shiro;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.SerializationUtils;
server/service/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
ÎļþÃû´Ó server/platform/src/main/java/com/doumee/shiro/ShiroSessionDAO.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.doumee.shiro;
package com.doumee.config.shiro;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
server/service/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
ÎļþÃû´Ó server/platform/src/main/java/com/doumee/shiro/ShiroSessionManager.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.doumee.shiro;
package com.doumee.config.shiro;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.session.Session;
server/service/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java
server/service/src/main/java/com/doumee/config/shiro/ShiroToken.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.doumee.config.shiro;
import org.apache.shiro.authc.UsernamePasswordToken;
/**
 * è‡ªå®šä¹‰Token ï¼Œå¤„理认证和权限
 * @author Eva.Caesar Liu
 * @date 2022/04/18 18:12
 */
//@Component
public class ShiroToken extends UsernamePasswordToken {
    /**
     * å…¬å¸ID
     */
    boolean needPassword;
    int userType;
    public ShiroToken() {
    }
    public ShiroToken( String username, String password, boolean needPassword,int userType) {
        super(username,  password, false, (String)null);
        this.needPassword = needPassword;
        this.userType = userType;
    }
    public boolean isNeedPassword() {
        return needPassword;
    }
    public void setNeedPassword(boolean needPassword) {
        this.needPassword = needPassword;
    }
    public int getUserType() {
        return userType;
    }
    public void setUserType(int userType) {
        this.userType = userType;
    }
}
server/service/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
server/service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.doumee.dao.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
 * @author Eva.Caesar Liu
 * @date 2023/02/14 11:14
 */
@Data
@ApiModel("手机号登录参数")
public class LoginPhoneDTO implements Serializable {
    @NotBlank(message = "手机号不能为空")
    @ApiModelProperty(value = "手机号")
    private String phone;
    @NotBlank(message = "验证码不能为空")
    @ApiModelProperty(value = "验证码")
    private String code;
}
server/service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -25,6 +25,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -43,6 +44,8 @@
@Service
public class CompanyServiceImpl implements CompanyService {
    @Value("${debug_model}")
    private boolean debugModel;
    @Autowired
    private CompanyMapper companyMapper;
    @Autowired
@@ -221,8 +224,11 @@
            ||StringUtils.isBlank(company.getEmail())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        //手机验证码校验
        SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,company.getPhone(),company.getCaptche());
        if(!debugModel){
            //手机验证码校验
            SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,company.getPhone(),company.getCaptche());
        }
    }
server/service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -17,6 +17,7 @@
import com.doumee.service.business.third.EmayService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -81,6 +82,7 @@
        smsEmail.setTitle("短信验证码");
        smsEmail.setContent(systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode()+"验证码为:"+code+",此验证码有效为3分钟。请勿泄露");
        smsEmailMapper.insert(smsEmail);
        return smsEmail.getId();
    }
server/service/src/main/java/com/doumee/service/system/SystemLoginService.java
@@ -1,6 +1,7 @@
package com.doumee.service.system;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.dto.LoginPhoneDTO;
import javax.servlet.http.HttpServletRequest;
@@ -17,4 +18,5 @@
     * @date 2023/03/21 14:49
     */
    String loginByPassword (LoginDTO dto,int type, HttpServletRequest request);
    String loginByPhone (LoginPhoneDTO dto, int type, HttpServletRequest request);
}
server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -1,13 +1,17 @@
package com.doumee.service.system.impl;
import com.baomidou.mybatisplus.extension.api.R;
import com.doumee.config.shiro.ShiroToken;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.SmsEmailMapper;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.dto.LoginPhoneDTO;
import com.doumee.dao.system.model.SystemLoginLog;
import com.doumee.service.business.impl.SmsEmailServiceImpl;
import com.doumee.service.common.CaptchaService;
import com.doumee.service.system.SystemLoginLogService;
import com.doumee.service.system.SystemLoginService;
@@ -30,9 +34,10 @@
    @Value("${project.version}")
    private String systemVersion;
    @Value("${captcha_check}")
    private boolean captchaCheck;
    @Value("${debug_model}")
    private Boolean debugModel;
    @Autowired
    private SmsEmailMapper smsEmailMapper;
    @Autowired
    private CaptchaService captchaService;
@@ -52,10 +57,51 @@
        loginLog.setOsInfo(Utils.User_Client.getOS(request));
        loginLog.setServerIp(Utils.Server.getIP());
        // æ ¡éªŒéªŒè¯ç 
        try {
            if(debugModel){
                captchaService.check(dto.getUuid(), dto.getCode());
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage());
            loginLog.setSuccess(Boolean.FALSE);
            systemLoginLogService.create(loginLog);
            throw e;
        }
        // æ ¡éªŒç”¨æˆ·åå’Œå¯†ç 
        Subject subject = SecurityUtils.getSubject();
        ShiroToken token = new ShiroToken(dto.getUsername(), dto.getPassword(),true,Constants.ZERO);
        try {
            subject.login(token);
            loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId());
            loginLog.setSuccess(Boolean.TRUE);
            systemLoginLogService.create(loginLog);
            return (String)subject.getSession().getId();
        } catch (AuthenticationException e) {
            log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e);
            loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage());
            loginLog.setSuccess(Boolean.FALSE);
            systemLoginLogService.create(loginLog);
            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), Objects.isNull(e.getCause())?ResponseStatus.ACCOUNT_INCORRECT.getMessage():e.getCause().getMessage());
        }
    }
    @Override
    public String loginByPhone (LoginPhoneDTO dto, int type, HttpServletRequest request) {
        SystemLoginLog loginLog = new SystemLoginLog();
        loginLog.setLoginUsername(dto.getPhone());
        loginLog.setLoginTime(new Date());
        loginLog.setSystemVersion(systemVersion);
        loginLog.setIp(Utils.User_Client.getIP(request));
        loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp()));
        loginLog.setPlatform(Utils.User_Client.getPlatform(request));
        loginLog.setClientInfo(Utils.User_Client.getBrowser(request));
        loginLog.setOsInfo(Utils.User_Client.getOS(request));
        loginLog.setServerIp(Utils.Server.getIP());
        // æ ¡éªŒéªŒè¯ç 
        if(type!= Constants.TWO){
            try {
                if(captchaCheck){
                    captchaService.check(dto.getUuid(), dto.getCode());
                if(debugModel){
                    SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,dto.getPhone(), dto.getCode());
                }
            } catch (Exception e) {
                log.error(e.getMessage(), e);
@@ -67,7 +113,7 @@
        }
        // æ ¡éªŒç”¨æˆ·åå’Œå¯†ç 
        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken token = new UsernamePasswordToken(dto.getUsername(), dto.getPassword());
        ShiroToken token = new ShiroToken(dto.getPhone(), null,false,Constants.ZERO);
        try {
            subject.login(token);
            loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId());
server/service/src/main/resources/application-dev.yml
@@ -39,7 +39,6 @@
debug_model: true
captcha_check: false
# Swagger配置
swagger: