liuwenbin 7 лет назад
Родитель
Сommit
918c489f6f

+ 2 - 1
common/common-exception/src/main/java/com/yihu/jw/exception/advice/MyControllerAdvice.java

@ -2,7 +2,6 @@ package com.yihu.jw.exception.advice;
import com.yihu.jw.exception.ApiException;
import com.yihu.jw.restmodel.common.base.BaseEnvelop;
import com.yihu.jw.restmodel.common.base.BaseEnvelopStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -48,4 +47,6 @@ public class MyControllerAdvice {
        logger.error(ex.getMessage());
        return BaseEnvelop.getError(ex.getMessage());
    }
}

+ 1 - 1
common/common-fegin/src/main/java/com/yihu/jw/fegin/base/user/EmployFeign.java

@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
public interface EmployFeign {
    @RequestMapping(value = BaseUserRequestMapping.BaseEmploy.api_create,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,method = RequestMethod.POST)
    Envelop create(@RequestBody String jsonData) throws JiWeiException;
    Envelop create(@RequestBody String jsonData);
    @RequestMapping(value =  BaseUserRequestMapping.BaseEmploy.api_update,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,method = RequestMethod.PUT)
    Envelop update(@RequestBody String jsonData) throws JiWeiException;

+ 1 - 1
common/common-fegin/src/main/java/com/yihu/jw/fegin/fallbackfactory/base/base/LoginFeignFallbackFactory.java

@ -30,7 +30,7 @@ public class LoginFeignFallbackFactory implements FallbackFactory<LoginFeign> {
            @Override
            public BaseEnvelop checkoutInfo(String ssc,String idcard) {
                tracer.getCurrentSpan().logEvent("校验医保卡、身份证、手机号接口错误:原因:"+e.getMessage());
                return Envelop.getError(e.getMessage(),BaseEnvelopStatus.system_error.getCode());
                return Envelop.getError(e.getMessage(), BaseEnvelopStatus.system_error.getCode());
            }
            /**

+ 2 - 2
common/common-fegin/src/main/java/com/yihu/jw/fegin/fallbackfactory/base/user/EmployeeFeignFallbackFactory.java

@ -22,10 +22,10 @@ public class EmployeeFeignFallbackFactory  implements FallbackFactory<EmployFeig
    public EmployFeign create(Throwable e) {
        return new EmployFeign() {
            @Override
            public Envelop create(@RequestBody String jsonData) throws JiWeiException {
            public Envelop create(@RequestBody String jsonData){
                tracer.getCurrentSpan().logEvent("创建用户失败:原因:"+e.getMessage());
                tracer.getCurrentSpan().logEvent("jsonData:"+jsonData);
                throw new JiWeiException(e);
                return null;
            }
            @Override

+ 1 - 1
common/common-rest-model/pom.xml

@ -12,7 +12,7 @@
    <groupId>com.yihu.jw</groupId>
    <artifactId>common-rest-model</artifactId>
    <version>1.0.0</version>
    <version>1.0.1</version>
    <dependencies>
        <dependency>

+ 2 - 1
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/common/base/BaseEnvelopStatus.java

@ -12,7 +12,8 @@ public enum BaseEnvelopStatus {
    status_10102("用户未登录", 10102),
    status_10103("登陆超时", 10103),
    status_10104("账号被挤", 10104),
    status_10105("账号没权限", 10105),;
    status_10105("账号没权限", 10105),
    status_10106("账号已存在", 10106),;
    //------------------登陆 权限相关 end ------------------
    BaseEnvelopStatus(String name, Integer code) {

+ 115 - 122
svr/svr-base/src/main/java/com/yihu/jw/business/login/contorller/LoginController.java

@ -1,123 +1,116 @@
package com.yihu.jw.business.login.contorller;
//import com.yihu.base.security.properties.SecurityProperties;
//import com.yihu.base.security.sms.mobile.MobileCheck;
//import com.yihu.base.security.sms.process.SmsValidateCodeProcessor;
import com.yihu.jw.base.user.BaseEmployDO;
import com.yihu.jw.business.login.service.LoginService;
import com.yihu.jw.business.user.dao.EmployDao;
import com.yihu.jw.business.user.service.EmployService;
import com.yihu.jw.exception.ApiException;
import com.yihu.jw.fegin.common.security.LoginSmsFeign;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.EnvelopRestController;
import com.yihu.jw.restmodel.common.base.BaseEnvelop;
import com.yihu.jw.rm.base.BaseLoginRequestMapping;
import com.yihu.jw.rm.base.BaseUserRequestMapping;
import com.yihu.jw.util.common.ConvertToSpellUtils;
import com.yihu.jw.util.security.MD5;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.bouncycastle.util.encoders.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.InetAddress;
import java.util.UUID;
/**
 * Created by 刘文彬 on 2018/4/11.
 */
@RestController
@RequestMapping(BaseLoginRequestMapping.api_common)
@Api(description = "注册账户(医生端、微信端、用户端)")
public class LoginController extends EnvelopRestController {
    @Autowired
    private LoginService loginService;
    @PostMapping(value = BaseLoginRequestMapping.BaseLoginAccount.api_checkoutInfo, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "注册校验信息", notes = "注册校验姓名、身份证、医保卡号信息")
    public BaseEnvelop checkoutInfo(@ApiParam(name = "ssc", value = "医保卡号", required = true) @RequestParam(value = "ssc", required = true) String ssc,
                                    @ApiParam(name = "idcard", value = "身份证", required = true) @RequestParam(value = "idcard", required = true) String idcard) throws ApiException{
        //校验姓名、身份证以及医保卡号信息是否正确
//        throw new IOException();
        return null;
    }
    /**
     * 注册账号-提交
     * @param mobilePhone
     * @param saasId
     * @param type
     * @param captcha
     * @param name
     * @param password
     * @param idcard
     * @param ssc
     * @return
     */
    @PostMapping(value = BaseLoginRequestMapping.BaseLoginAccount.api_accountSub, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "注册账号", notes = "注册账号")
    public Envelop register(
            @ApiParam(name = "mobilePhone", value = "电话号码(账号)", required = true) @RequestParam(value = "mobilePhone", required = true) String mobilePhone,
            @ApiParam(name = "saasId", value = "saasID", required = true) @RequestParam(value = "saasId", required = true) String saasId,
            @ApiParam(name = "type", value = "1微信端注册,2微信端找回密码,3医生端找回密码,4患者登录,5医生登录", required = true) @RequestParam(value = "type", required = true) int type,
            @ApiParam(name = "captcha", value = "短信验证码", required = true) @RequestParam(value = "captcha", required = true) String captcha,
            @ApiParam(name = "name", value = "姓名", required = true) @RequestParam(value = "name", required = true) String name,
            @ApiParam(name = "password", value = "账户密码", required = true) @RequestParam(value = "password", required = true) String password,
            @ApiParam(name = "idcard", value = "身份证", required = true) @RequestParam(value = "idcard", required = true) String idcard,
            @ApiParam(name = "ssc", value = "医保卡号", required = true) @RequestParam(value = "ssc", required = true) String ssc) throws Exception{
        //判断验证码是否正确
        Envelop envelop = new Envelop();//smsService.checkSms(mobilePhone,saasId,type,captcha);
        if(true){//if(envelop.getStatus()==200){
            return loginService.register(mobilePhone,password,saasId,name,idcard,ssc);
        }else{
            return envelop;
        }
    }
    @PostMapping(value = BaseLoginRequestMapping.BaseLoginAccount.api_login, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public Envelop login(@ApiParam(name = "mobilePhone", value = "电话号码(账号)", required = false) @RequestParam(value = "mobilePhone", required = false) String mobilePhone,
                      @ApiParam(name = "password", value = "password", required = false) @RequestParam(value = "password", required = false) String password,
                      @ApiParam(name = "saasId", value = "saasID", required = true) @RequestParam(value = "saasId", required = true) String saasId,
                         @ApiParam(name = "captcha", value = "短信验证码", required = false) @RequestParam(value = "captcha", required = false) String captcha){
       try{
           return loginService.login(mobilePhone,password,saasId,captcha);
       }catch (ApiException e){
           e.printStackTrace();
           return Envelop.getError(e.getMessage(),e.getErrorCode());
       }catch (Exception e){
           e.printStackTrace();
           return Envelop.getError("",100);
       }
    }
//    @PostMapping("/logout")
//    public Envelop logout(){
//        HttpHeaders headers = new HttpHeaders();
//        headers.add("Accept", "*/*");
//        headers.add("Cache-Control", "no-cache");
//        RestTemplate restTemplate = new RestTemplate();
//        MultiValueMap<String, String> params= new LinkedMultiValueMap<String, String>();
//        //设置http请求实体
//        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
//        restTemplate.postForObject("http://localhost:8088/logout", requestEntity, String.class);
//        return new Envelop();
//package com.yihu.jw.business.login.contorller;
//
////import com.yihu.base.security.properties.SecurityProperties;
////import com.yihu.base.security.sms.mobile.MobileCheck;
////import com.yihu.base.security.sms.process.SmsValidateCodeProcessor;
//import com.yihu.jw.base.user.BaseEmployDO;
//import com.yihu.jw.business.login.service.LoginService;
//import com.yihu.jw.business.user.dao.EmployDao;
//import com.yihu.jw.business.user.service.EmployService;
//import com.yihu.jw.exception.ApiException;
//import com.yihu.jw.fegin.common.security.LoginSmsFeign;
//import com.yihu.jw.restmodel.common.Envelop;
//import com.yihu.jw.restmodel.common.EnvelopRestController;
//import com.yihu.jw.restmodel.common.base.BaseEnvelop;
//import com.yihu.jw.rm.base.BaseLoginRequestMapping;
//import com.yihu.jw.rm.base.BaseUserRequestMapping;
//import com.yihu.jw.util.common.ConvertToSpellUtils;
//import com.yihu.jw.util.security.MD5;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//import org.bouncycastle.util.encoders.Base64;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.http.HttpEntity;
//import org.springframework.http.HttpHeaders;
//import org.springframework.http.MediaType;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.util.StringUtils;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.client.RestTemplate;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.net.InetAddress;
//import java.util.UUID;
//
///**
// * Created by 刘文彬 on 2018/4/11.
// */
//@RestController
//@RequestMapping(BaseLoginRequestMapping.api_common)
//@Api(description = "注册账户(医生端、微信端、用户端)")
//public class LoginController extends EnvelopRestController {
//
//    @Autowired
//    private LoginService loginService;
//
//
//    @PostMapping(value = BaseLoginRequestMapping.BaseLoginAccount.api_checkoutInfo, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
//    @ApiOperation(value = "注册校验信息", notes = "注册校验姓名、身份证、医保卡号信息")
//    public BaseEnvelop checkoutInfo(@ApiParam(name = "ssc", value = "医保卡号", required = true) @RequestParam(value = "ssc", required = true) String ssc,
//                                    @ApiParam(name = "idcard", value = "身份证", required = true) @RequestParam(value = "idcard", required = true) String idcard) throws ApiException{
//
//        //校验姓名、身份证以及医保卡号信息是否正确
////        throw new IOException();
//        return null;
//    }
}
//
//    /**
//     * 注册账号-提交
//     * @param mobilePhone
//     * @param saasId
//     * @param type
//     * @param captcha
//     * @param name
//     * @param password
//     * @param idcard
//     * @param ssc
//     * @return
//     */
//    @PostMapping(value = BaseLoginRequestMapping.BaseLoginAccount.api_accountSub, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
//    @ApiOperation(value = "注册账号", notes = "注册账号")
//    public Envelop register(
//            @ApiParam(name = "mobilePhone", value = "电话号码(账号)", required = true) @RequestParam(value = "mobilePhone", required = true) String mobilePhone,
//            @ApiParam(name = "saasId", value = "saasID", required = true) @RequestParam(value = "saasId", required = true) String saasId,
//            @ApiParam(name = "type", value = "1微信端注册,2微信端找回密码,3医生端找回密码,4患者登录,5医生登录", required = true) @RequestParam(value = "type", required = true) int type,
//            @ApiParam(name = "captcha", value = "短信验证码", required = true) @RequestParam(value = "captcha", required = true) String captcha,
//            @ApiParam(name = "name", value = "姓名", required = true) @RequestParam(value = "name", required = true) String name,
//            @ApiParam(name = "password", value = "账户密码", required = true) @RequestParam(value = "password", required = true) String password,
//            @ApiParam(name = "idcard", value = "身份证", required = true) @RequestParam(value = "idcard", required = true) String idcard,
//            @ApiParam(name = "ssc", value = "医保卡号", required = true) @RequestParam(value = "ssc", required = true) String ssc) throws Exception{
//        //判断验证码是否正确
//        Envelop envelop = new Envelop();//smsService.checkSms(mobilePhone,saasId,type,captcha);
//        if(true){//if(envelop.getStatus()==200){
//            return loginService.register(mobilePhone,password,saasId,name,idcard,ssc);
//        }else{
//            return envelop;
//        }
//    }
//
//    @PostMapping(value = BaseLoginRequestMapping.BaseLoginAccount.api_login, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
//    public Envelop login(@ApiParam(name = "mobilePhone", value = "电话号码(账号)", required = false) @RequestParam(value = "mobilePhone", required = false) String mobilePhone,
//                      @ApiParam(name = "password", value = "password", required = false) @RequestParam(value = "password", required = false) String password,
//                      @ApiParam(name = "saasId", value = "saasID", required = true) @RequestParam(value = "saasId", required = true) String saasId,
//                         @ApiParam(name = "captcha", value = "短信验证码", required = false) @RequestParam(value = "captcha", required = false) String captcha) throws ApiException,Exception{
//
//        return loginService.login(mobilePhone,password,saasId,captcha);
//    }
//
////    @PostMapping("/logout")
////    public Envelop logout(){
////        HttpHeaders headers = new HttpHeaders();
////        headers.add("Accept", "*/*");
////        headers.add("Cache-Control", "no-cache");
////        RestTemplate restTemplate = new RestTemplate();
////        MultiValueMap<String, String> params= new LinkedMultiValueMap<String, String>();
////        //设置http请求实体
////        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
////        restTemplate.postForObject("http://localhost:8088/logout", requestEntity, String.class);
////        return new Envelop();
////    }
//
//}

+ 124 - 124
svr/svr-base/src/main/java/com/yihu/jw/business/login/service/LoginService.java

@ -1,129 +1,129 @@
package com.yihu.jw.business.login.service;
import com.yihu.base.mysql.query.BaseJpaService;
import com.yihu.jw.base.login.BaseLoginAccountDO;
import com.yihu.jw.base.user.BaseEmployDO;
import com.yihu.jw.business.user.dao.EmployDao;
import com.yihu.jw.business.user.service.EmployService;
import com.yihu.jw.exception.ApiException;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.base.BaseEnvelop;
import com.yihu.jw.rm.base.BaseLoginRequestMapping;
import com.yihu.jw.util.common.ConvertToSpellUtils;
import com.yihu.jw.util.security.MD5;
import io.swagger.annotations.ApiParam;
import org.bouncycastle.util.encoders.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.client.RestTemplate;
import java.beans.Transient;
import java.util.UUID;
/**
 * Created by 刘文彬 on 2018/4/26.
 */
@Service
public class LoginService  extends BaseJpaService<BaseEmployDO,EmployDao> {
    @Autowired
    private EmployDao employDao;
    @Autowired
    private EmployService employService;
    @Value("${server.web-gateway-port}")
    private String port;
    public BaseEnvelop checkoutInfo(){
        //校验姓名、身份证以及医保卡号信息是否正确
        return null;
    }
    @Transactional
    public Envelop register(String mobilePhone,String password,String saasId,String name,String idcard,String ssc) throws Exception {
        //判断账号是否重复
        BaseEmployDO baseEmployDO = employService.findByPhoneAndSaasId(mobilePhone,saasId);
        if(baseEmployDO!=null){
            return Envelop.getError("该手机号已注册!");
        }
        //保存账户基础信息
        BaseEmployDO employeeDO = new BaseEmployDO();
        employeeDO.setId(UUID.randomUUID().toString().replaceAll("-", ""));
        employeeDO.setSaasId(saasId);
        employeeDO.setName(name);
        employeeDO.setPyCode(ConvertToSpellUtils.changeToInitialPinYin(name));
        employeeDO.setIdcard(idcard);
        employeeDO.setSsc(ssc);
        employeeDO.setPhone(mobilePhone);
        String salt= UUID.randomUUID().toString().replace("-","");
        employeeDO.setSalt(salt);
        employeeDO.setPassword(MD5.GetMD5Code(password + salt));
        employService.createBaseEmployDO(employeeDO);
        return login(employeeDO.getPhone(),employeeDO.getPassword(),saasId,"");
    }
    public Envelop login(String mobilePhone,String password,String saasId,String captcha) throws Exception{
        BaseEmployDO baseEmployDO = employService.findByPhoneAndSaasId(mobilePhone,saasId);
        HttpHeaders headers = new HttpHeaders();
        headers.add("Accept", "*/*");
        headers.add("Cache-Control", "no-cache");
        //client_id:client_securt
        byte[] a = Base64.encode((saasId+":").getBytes());
        String client_id = new String(a);
        headers.add("Authorization","Basic "+client_id);//MTox
        String token = "";
        //传参数JSON格式
        //  封装参数,千万不要替换为Map与HashMap,否则参数无法传递
        MultiValueMap<String, String> params= new LinkedMultiValueMap<String, String>();
        //判断是短信登录还是账号密码登录
        if(StringUtils.isEmpty(captcha)){
            //  也支持中文
            params.add("username", mobilePhone+","+saasId);
            params.add("password", MD5.GetMD5Code(password+baseEmployDO.getSalt()));
            //设置http请求实体
            HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
            RestTemplate restTemplate = new RestTemplate();
            token = restTemplate.postForObject("http://localhost:"+port+"/authentication/form", requestEntity, String.class);
        }else{
            params.add("mobile", mobilePhone+","+saasId);
            params.add("sms", captcha);
            //设置http请求实体
            HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
            RestTemplate restTemplate = new RestTemplate();
            token = restTemplate.postForObject("http://localhost:"+port+"/authentication/mobile", requestEntity, String.class);
        }
        if(!StringUtils.isEmpty(token)){
            return Envelop.getSuccess("登录成功!",token);
        }else{
            return Envelop.getError("登录失败!");
        }
    }
//    public Envelop logout(){
//package com.yihu.jw.business.login.service;
//
//import com.yihu.base.mysql.query.BaseJpaService;
//import com.yihu.jw.base.login.BaseLoginAccountDO;
//import com.yihu.jw.base.user.BaseEmployDO;
//import com.yihu.jw.business.user.dao.EmployDao;
//import com.yihu.jw.business.user.service.EmployService;
//import com.yihu.jw.exception.ApiException;
//import com.yihu.jw.restmodel.common.Envelop;
//import com.yihu.jw.restmodel.common.base.BaseEnvelop;
//import com.yihu.jw.rm.base.BaseLoginRequestMapping;
//import com.yihu.jw.util.common.ConvertToSpellUtils;
//import com.yihu.jw.util.security.MD5;
//import io.swagger.annotations.ApiParam;
//import org.bouncycastle.util.encoders.Base64;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.http.HttpEntity;
//import org.springframework.http.HttpHeaders;
//import org.springframework.http.MediaType;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.util.StringUtils;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.client.RestTemplate;
//
//import java.beans.Transient;
//import java.util.UUID;
//
///**
// * Created by 刘文彬 on 2018/4/26.
// */
//@Service
//public class LoginService  extends BaseJpaService<BaseEmployDO,EmployDao> {
//
//    @Autowired
//    private EmployDao employDao;
//    @Autowired
//    private EmployService employService;
//
//    @Value("${server.web-gateway-port}")
//    private String port;
//    public BaseEnvelop checkoutInfo(){
//
//        //校验姓名、身份证以及医保卡号信息是否正确
//
//        return null;
//    }
//
//    @Transactional
//    public Envelop register(String mobilePhone,String password,String saasId,String name,String idcard,String ssc) throws Exception {
//
//        //判断账号是否重复
//        BaseEmployDO baseEmployDO = employService.findByPhoneAndSaasId(mobilePhone,saasId);
//        if(baseEmployDO!=null){
//            return Envelop.getError("该手机号已注册!");
//        }
//
//        //保存账户基础信息
//        BaseEmployDO employeeDO = new BaseEmployDO();
//        employeeDO.setId(UUID.randomUUID().toString().replaceAll("-", ""));
//        employeeDO.setSaasId(saasId);
//        employeeDO.setName(name);
//        employeeDO.setPyCode(ConvertToSpellUtils.changeToInitialPinYin(name));
//        employeeDO.setIdcard(idcard);
//        employeeDO.setSsc(ssc);
//        employeeDO.setPhone(mobilePhone);
//        String salt= UUID.randomUUID().toString().replace("-","");
//        employeeDO.setSalt(salt);
//        employeeDO.setPassword(MD5.GetMD5Code(password + salt));
//        employService.createBaseEmployDO(employeeDO);
//
//        return login(employeeDO.getPhone(),employeeDO.getPassword(),saasId,"");
//    }
//
//
//    public Envelop login(String mobilePhone,String password,String saasId,String captcha) throws Exception{
//        BaseEmployDO baseEmployDO = employService.findByPhoneAndSaasId(mobilePhone,saasId);
//        HttpHeaders headers = new HttpHeaders();
//        headers.add("Accept", "*/*");
//        headers.add("Cache-Control", "no-cache");
//        RestTemplate restTemplate = new RestTemplate();
//        //client_id:client_securt
//        byte[] a = Base64.encode((saasId+":").getBytes());
//        String client_id = new String(a);
//        headers.add("Authorization","Basic "+client_id);//MTox
//        String token = "";
//        //传参数JSON格式
//        //  封装参数,千万不要替换为Map与HashMap,否则参数无法传递
//        MultiValueMap<String, String> params= new LinkedMultiValueMap<String, String>();
//        //设置http请求实体
//        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
//        restTemplate.postForObject("http://localhost:"+port+"/logout", requestEntity, String.class);
//        //判断是短信登录还是账号密码登录
//        if(StringUtils.isEmpty(captcha)){
//
//            //  也支持中文
//            params.add("username", mobilePhone+","+saasId);
//            params.add("password", MD5.GetMD5Code(password+baseEmployDO.getSalt()));
//            //设置http请求实体
//            HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
//            RestTemplate restTemplate = new RestTemplate();
//            token = restTemplate.postForObject("http://localhost:"+port+"/authentication/form", requestEntity, String.class);
//        }else{
//            params.add("mobile", mobilePhone+","+saasId);
//            params.add("sms", captcha);
//            //设置http请求实体
//            HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
//            RestTemplate restTemplate = new RestTemplate();
//            token = restTemplate.postForObject("http://localhost:"+port+"/authentication/mobile", requestEntity, String.class);
//        }
//
//        if(!StringUtils.isEmpty(token)){
//            return Envelop.getSuccess("登录成功!",token);
//        }else{
//            return Envelop.getError("登录失败!");
//        }
//    }
}
//
////    public Envelop logout(){
////        HttpHeaders headers = new HttpHeaders();
////        headers.add("Accept", "*/*");
////        headers.add("Cache-Control", "no-cache");
////        RestTemplate restTemplate = new RestTemplate();
////        MultiValueMap<String, String> params= new LinkedMultiValueMap<String, String>();
////        //设置http请求实体
////        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
////        restTemplate.postForObject("http://localhost:"+port+"/logout", requestEntity, String.class);
////    }
//}

+ 10 - 10
svr/svr-base/src/main/java/com/yihu/jw/business/user/contorller/EmployController.java

@ -36,16 +36,16 @@ public class EmployController extends EnvelopRestController {
    @Autowired
    private EmployService employService;
//    @PostMapping(value = BaseUserRequestMapping.BaseEmploy.api_create, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
//    @ApiOperation(value = "创建用户", notes = "创建单个用户")
//    public Envelop createBaseEmployDO(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
//        try{
//            BaseEmployDO baseEmployDO = toEntity(jsonData,BaseEmployDO.class);
//            return Envelop.getSuccess(BaseUserRequestMapping.BaseEmploy.message_success_create,employService.createBaseEmployDO(baseEmployDO));
//        } catch (ApiException e){
//            return Envelop.getError(e.getMessage(), e.getErrorCode());
//        }
//    }
    @PostMapping(value = BaseUserRequestMapping.BaseEmploy.api_create, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "创建用户", notes = "创建单个用户")
    public Envelop createBaseEmployDO(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
        try{
            BaseEmployDO baseEmployDO = toEntity(jsonData,BaseEmployDO.class);
            return Envelop.getSuccess(BaseUserRequestMapping.BaseEmploy.message_success_create,employService.createBaseEmployDO(baseEmployDO));
        } catch (Exception e){
            return Envelop.getError(e.getMessage());
        }
    }
//    @PostMapping(value = BaseUserRequestMapping.BaseEmploy.api_update, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
//    @ApiOperation(value = "修改用户", notes = "修改用户")

+ 1 - 1
web-gateway/pom.xml

@ -41,7 +41,7 @@
        <dependency>
            <groupId>com.yihu</groupId>
            <artifactId>common-security-starter</artifactId>
            <version>1.0.6</version>
            <version>1.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>

+ 94 - 15
web-gateway/src/main/java/com/yihu/jw/controller/base/login/LoginContorller.java

@ -1,30 +1,45 @@
package com.yihu.jw.controller.base.login;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.base.security.properties.SecurityProperties;
import com.yihu.base.security.sms.mobile.MobileCheck;
import com.yihu.base.security.sms.process.SmsValidateCodeProcessor;
import com.yihu.jw.base.user.BaseEmployDO;
import com.yihu.jw.common.base.base.BaseContants;
import com.yihu.jw.fegin.base.base.FunctionFeign;
import com.yihu.jw.fegin.base.login.LoginFeign;
import com.yihu.jw.fegin.base.user.EmployFeign;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.base.BaseEnvelop;
import com.yihu.jw.restmodel.common.base.BaseEnvelopStatus;
import com.yihu.jw.rm.base.BaseLoginRequestMapping;
import com.yihu.jw.rm.base.BaseUserRequestMapping;
import com.yihu.jw.util.common.ConvertToSpellUtils;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.security.MD5;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.bouncycastle.util.encoders.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.request.ServletWebRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
 * Created by 刘文彬 on 2018/4/20.
@ -40,13 +55,18 @@ public class LoginContorller {
    private MobileCheck mobileCheck;
    @Autowired
    private SmsValidateCodeProcessor smsValidateCodeProcessor;
    @Autowired
    private EmployFeign employFeign;
    @Value("${server.web-gateway-port}")
    private String port;
    @PostMapping(value = BaseLoginRequestMapping.BaseLoginAccount.api_checkoutInfo, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "注册校验信息", notes = "注册校验姓名、身份证、医保卡号信息")
    public BaseEnvelop checkoutInfo(@ApiParam(name = "ssc", value = "医保卡号", required = true) @RequestParam(value = "ssc", required = true) String ssc,
                                @ApiParam(name = "idcard", value = "身份证", required = true) @RequestParam(value = "idcard", required = true) String idcard){
        return loginFeign.checkoutInfo(ssc,idcard);
//        return loginFeign.checkoutInfo(ssc,idcard);
        return null;
    }
    @PostMapping(value = BaseLoginRequestMapping.BaseLoginAccount.api_accountSub, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ -61,7 +81,34 @@ public class LoginContorller {
            @ApiParam(name = "idcard", value = "身份证", required = true) @RequestParam(value = "idcard", required = true) String idcard,
            @ApiParam(name = "ssc", value = "医保卡号", required = true) @RequestParam(value = "ssc", required = true) String ssc) {
        return loginFeign.register(mobilePhone,saasId,type,captcha,name,password,idcard,ssc);
        //判断账号是否重复
        Envelop baseEmployDO = employFeign.getEmployeeByPhoneAndSaasId(mobilePhone,saasId);
        if(baseEmployDO.getStatus()!=10100&&baseEmployDO.getObj()!=null){
            return Envelop.getError(BaseEnvelopStatus.status_10106.getName(),BaseEnvelopStatus.status_10106.getCode());
        }
        //保存账户基础信息
        BaseEmployDO employeeDO = new BaseEmployDO();
        employeeDO.setId(UUID.randomUUID().toString().replaceAll("-", ""));
        employeeDO.setSaasId(saasId);
        employeeDO.setName(name);
        employeeDO.setPyCode(ConvertToSpellUtils.changeToInitialPinYin(name));
        employeeDO.setIdcard(idcard);
        employeeDO.setSsc(ssc);
        employeeDO.setPhone(mobilePhone);
        String salt= UUID.randomUUID().toString().replace("-","");
        employeeDO.setSalt(salt);
        employeeDO.setPassword(MD5.GetMD5Code(password + salt));
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setDateFormat(new SimpleDateFormat(DateUtil.yyyy_MM_dd_HH_mm_ss));
        try {
            String entity = objectMapper.writeValueAsString(employeeDO);
            employFeign.create(entity);
        } catch (JsonProcessingException e) {
            return Envelop.getError(BaseEnvelopStatus.system_error.getName(),BaseEnvelopStatus.system_error.getCode());
        }
        return login(employeeDO.getPhone(),employeeDO.getPassword(),saasId,"");
    }
    @PostMapping(BaseLoginRequestMapping.BaseLoginAccount.mobileSendSms)
@ -84,18 +131,50 @@ public class LoginContorller {
                       @ApiParam(name = "password", value = "password", required = false) @RequestParam(value = "password", required = false) String password,
                       @ApiParam(name = "saasId", value = "saasID", required = true) @RequestParam(value = "saasId", required = true) String saasId,
                       @ApiParam(name = "captcha", value = "短信验证码", required = false) @RequestParam(value = "captcha", required = false) String captcha){
        return loginFeign.login(mobilePhone,password,saasId,captcha);
        Envelop baseEmployDO = employFeign.getEmployeeByPhoneAndSaasId(mobilePhone,saasId);
        if(baseEmployDO==null||((Map)baseEmployDO.getObj()).isEmpty()){
            return Envelop.getError(BaseEnvelopStatus.status_10100.getName(),BaseEnvelopStatus.status_10100.getCode());
        }
        Map employMap = (Map)baseEmployDO.getObj();
        HttpHeaders headers = new HttpHeaders();
        headers.add("Accept", "*/*");
        headers.add("Cache-Control", "no-cache");
        //client_id:client_securt
        byte[] a = Base64.encode((saasId+":").getBytes());
        String client_id = new String(a);
        headers.add("Authorization","Basic "+client_id);//MTox
        String token = "";
        //传参数JSON格式
        //  封装参数,千万不要替换为Map与HashMap,否则参数无法传递
        MultiValueMap<String, String> params= new LinkedMultiValueMap<String, String>();
        //判断是短信登录还是账号密码登录
        if(StringUtils.isEmpty(captcha)){
            //  也支持中文
            params.add("username", mobilePhone+","+saasId);
            params.add("password", MD5.GetMD5Code(password+employMap.get("salt")));
            //设置http请求实体
            HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
            RestTemplate restTemplate = new RestTemplate();
            token = restTemplate.postForObject("http://localhost:"+port+"/authentication/form", requestEntity, String.class);
        }else{
            params.add("mobile", mobilePhone+","+saasId);
            params.add("sms", captcha);
            //设置http请求实体
            HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
            RestTemplate restTemplate = new RestTemplate();
            token = restTemplate.postForObject("http://localhost:"+port+"/authentication/mobile", requestEntity, String.class);
        }
        if(!StringUtils.isEmpty(token)){
            Map<String,Object> map = new HashMap<>();
            map.put("token",token);
            map.put("employ",employMap);
            return Envelop.getSuccess("登录成功!",map);
        }else{
            return Envelop.getError("登录失败!");
        }
//        return loginFeign.login(mobilePhone,password,saasId,captcha);
    }
//    @PostMapping("/logout")
//    public Envelop logout(){
//        HttpHeaders headers = new HttpHeaders();
//        headers.add("Accept", "*/*");
//        headers.add("Cache-Control", "no-cache");
//        RestTemplate restTemplate = new RestTemplate();
//        MultiValueMap<String, String> params= new LinkedMultiValueMap<String, String>();
//        //设置http请求实体
//        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
//        restTemplate.postForObject("http://localhost:8088/logout", requestEntity, String.class);
//        return new Envelop();
//    }
}

+ 134 - 134
web-gateway/src/main/java/com/yihu/jw/controller/base/security/TokenController.java

@ -1,134 +1,134 @@
package com.yihu.jw.controller.base.security;
import com.yihu.base.security.rbas.ClientServiceProvider;
import com.yihu.jw.fegin.base.user.EmployFeign;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.base.BaseEnvelop;
import com.yihu.jw.rm.base.BaseLoginRequestMapping;
import com.yihu.jw.rm.base.BaseSecurityRequestMapping;
import com.yihu.jw.util.date.DateUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.ClientDetails;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.OAuth2Request;
import org.springframework.security.oauth2.provider.TokenRequest;
import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
/**
 * Created by 刘文彬 on 2018/5/4.
 */
@RestController
@RequestMapping("/token")
@Api(value = "权限token模块", description = "权限token模块")
public class TokenController {
    @Autowired
    private DefaultTokenServices defaultTokenServices;
    @Autowired
    private AuthenticationManager authenticationManager;
    @Autowired
    private ClientServiceProvider clientDetailsService;
    @Autowired
    private EmployFeign employFeign;
    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_time)
    @ApiOperation(value = "更新token过期时间", notes = "根据token更新token过期时间")
    public BaseEnvelop updateTokenExpiration(@ApiParam(name = "expiration", value = "token过期时间,格式:yyyy-mm-dd HH:mm:ss", required = true)
                     @RequestParam(value = "expiration", required = true) String expiration,
                     @ApiParam(name = "authHeaderValue", value = "登录的token", required = true)
                     @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue){
        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue);
        if(token!=null){
            token.setExpiration(DateUtil.strToDate(expiration));
            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
        }
        return BaseEnvelop.getError("token 无效!");
    }
    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_second)
    @ApiOperation(value = "延长token的过期时间", notes = "根据token延长token的过期时间")
    public BaseEnvelop updateTokenExpiration(@ApiParam(name = "seconds", value = "延长token过期时间分钟数", required = true)
                                             @RequestParam(value = "seconds", required = true) int seconds,
                                             @ApiParam(name = "authHeaderValue", value = "登录的token", required = true)
                                             @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue){
        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue);
        if(token!=null){
            token.setExpiration(new Date(System.currentTimeMillis() + (seconds * 1000L)));
            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
        }
        return BaseEnvelop.getError("token 无效!");
    }
    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration)
    @ApiOperation(value = "设置token过期", notes = "设置token过期")
    public BaseEnvelop updateTokenExpiration2(HttpServletRequest request, HttpServletResponse response,
                                              @ApiParam(name = "authHeaderValue", value = "登录的token", required = true)
                                              @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue){
        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue);
        if(token!=null){
            token.setExpiration(new Date());
            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
        }
        return BaseEnvelop.getError("token 无效!");
    }
    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_second2)
    @ApiOperation(value = "设置token过期", notes = "设置token过期")
    public BaseEnvelop updateTokenExpiration3(HttpServletRequest request, HttpServletResponse response,
                                              @ApiParam(name = "mobileSaas", value = "mobile和saas组合,逗号分隔", required = true)
                                              @RequestParam(value = "mobileSaas", required = true) String mobileSaas){
        String[] sp = mobileSaas.split(",");
        String phone = sp[0];
        String saasId = sp[1];
        Envelop envelop = employFeign.getEmployeeByPhoneAndSaasId(phone,saasId);
        Map baseEmployDO =  (Map)envelop.getObj();
        if(baseEmployDO.isEmpty()){
            return BaseEnvelop.getError("该用户不存在!");
        }
        UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(
                mobileSaas, baseEmployDO.get("password"));
        // Allow subclasses to set the "details" property
        authRequest.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
        Authentication authentication = authenticationManager.authenticate(authRequest);
        ClientDetails clientDetails = clientDetailsService.loadClientByClientId(saasId);
        TokenRequest tokenRequest = new TokenRequest(MapUtils.EMPTY_MAP, saasId, clientDetails.getScope(), "custom_password");
        OAuth2Request oAuth2Request = tokenRequest.createOAuth2Request(clientDetails);
        OAuth2Authentication oAuth2Authentication = new OAuth2Authentication(oAuth2Request, authentication);
        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.getAccessToken(oAuth2Authentication);
        if(token!=null){
            token.setExpiration(new Date());
            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
        }
        return BaseEnvelop.getError("token 无效!");
    }
}
//package com.yihu.jw.controller.base.security;
//
//import com.yihu.base.security.rbas.ClientServiceProvider;
//import com.yihu.jw.fegin.base.user.EmployFeign;
//import com.yihu.jw.restmodel.common.Envelop;
//import com.yihu.jw.restmodel.common.base.BaseEnvelop;
//import com.yihu.jw.rm.base.BaseLoginRequestMapping;
//import com.yihu.jw.rm.base.BaseSecurityRequestMapping;
//import com.yihu.jw.util.date.DateUtil;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//import org.apache.commons.collections.MapUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.authentication.AuthenticationManager;
//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
//import org.springframework.security.core.Authentication;
//import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
//import org.springframework.security.oauth2.common.OAuth2AccessToken;
//import org.springframework.security.oauth2.provider.ClientDetails;
//import org.springframework.security.oauth2.provider.OAuth2Authentication;
//import org.springframework.security.oauth2.provider.OAuth2Request;
//import org.springframework.security.oauth2.provider.TokenRequest;
//import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
//import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
//import org.springframework.util.StringUtils;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.Map;
//
///**
// * Created by 刘文彬 on 2018/5/4.
// */
//@RestController
//@RequestMapping("/token")
//@Api(value = "权限token模块", description = "权限token模块")
//public class TokenController {
//
//    @Autowired
//    private DefaultTokenServices defaultTokenServices;
//    @Autowired
//    private AuthenticationManager authenticationManager;
//    @Autowired
//    private ClientServiceProvider clientDetailsService;
//    @Autowired
//    private EmployFeign employFeign;
//
//    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_time)
//    @ApiOperation(value = "更新token过期时间", notes = "根据token更新token过期时间")
//    public BaseEnvelop updateTokenExpiration(@ApiParam(name = "expiration", value = "token过期时间,格式:yyyy-mm-dd HH:mm:ss", required = true)
//                     @RequestParam(value = "expiration", required = true) String expiration,
//                     @ApiParam(name = "authHeaderValue", value = "登录的token", required = true)
//                     @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue){
//
//        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue);
//        if(token!=null){
//            token.setExpiration(DateUtil.strToDate(expiration));
//            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
//        }
//        return BaseEnvelop.getError("token 无效!");
//    }
//
//    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_second)
//    @ApiOperation(value = "延长token的过期时间", notes = "根据token延长token的过期时间")
//    public BaseEnvelop updateTokenExpiration(@ApiParam(name = "seconds", value = "延长token过期时间分钟数", required = true)
//                                             @RequestParam(value = "seconds", required = true) int seconds,
//                                             @ApiParam(name = "authHeaderValue", value = "登录的token", required = true)
//                                             @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue){
//
//        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue);
//        if(token!=null){
//            token.setExpiration(new Date(System.currentTimeMillis() + (seconds * 1000L)));
//            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
//        }
//        return BaseEnvelop.getError("token 无效!");
//    }
//
//    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration)
//    @ApiOperation(value = "设置token过期", notes = "设置token过期")
//    public BaseEnvelop updateTokenExpiration2(HttpServletRequest request, HttpServletResponse response,
//                                              @ApiParam(name = "authHeaderValue", value = "登录的token", required = true)
//                                              @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue){
//
//        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue);
//        if(token!=null){
//            token.setExpiration(new Date());
//            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
//        }
//        return BaseEnvelop.getError("token 无效!");
//    }
//
//    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_second2)
//    @ApiOperation(value = "设置token过期", notes = "设置token过期")
//    public BaseEnvelop updateTokenExpiration3(HttpServletRequest request, HttpServletResponse response,
//                                              @ApiParam(name = "mobileSaas", value = "mobile和saas组合,逗号分隔", required = true)
//                                              @RequestParam(value = "mobileSaas", required = true) String mobileSaas){
//
//        String[] sp = mobileSaas.split(",");
//        String phone = sp[0];
//        String saasId = sp[1];
//        Envelop envelop = employFeign.getEmployeeByPhoneAndSaasId(phone,saasId);
//        Map baseEmployDO =  (Map)envelop.getObj();
//        if(baseEmployDO.isEmpty()){
//            return BaseEnvelop.getError("该用户不存在!");
//        }
//        UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(
//                mobileSaas, baseEmployDO.get("password"));
//
//        // Allow subclasses to set the "details" property
//        authRequest.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
//
//        Authentication authentication = authenticationManager.authenticate(authRequest);
//        ClientDetails clientDetails = clientDetailsService.loadClientByClientId(saasId);
//        TokenRequest tokenRequest = new TokenRequest(MapUtils.EMPTY_MAP, saasId, clientDetails.getScope(), "custom_password");
//
//        OAuth2Request oAuth2Request = tokenRequest.createOAuth2Request(clientDetails);
//
//        OAuth2Authentication oAuth2Authentication = new OAuth2Authentication(oAuth2Request, authentication);
//
//        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.getAccessToken(oAuth2Authentication);
//        if(token!=null){
//            token.setExpiration(new Date());
//            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
//        }
//        return BaseEnvelop.getError("token 无效!");
//    }
//}