فهرست منبع

Merge branch 'master' of luofaqiang/esb into master

罗发强 8 سال پیش
والد
کامیت
5041f69f8d

+ 2 - 2
hos-saas/src/main/java/com/yihu/hos/saas/configurations/WebMvcConfiguration.java

@ -15,10 +15,10 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(authenticateInterceptor());
        registry.addInterceptor(authenticateInterceptor())
                .excludePathPatterns("/auth/**");
    }
    @Bean
    AuthenticateInterceptor authenticateInterceptor() {
        return new AuthenticateInterceptor();

+ 25 - 0
hos-saas/src/main/java/com/yihu/hos/saas/controllers/AuthenticateController.java

@ -0,0 +1,25 @@
package com.yihu.hos.saas.controllers;
import com.yihu.hos.saas.services.AuthenticateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @created Airhead 2016/11/16.
 */
@RestController
@RequestMapping(value = "/auth")
public class AuthenticateController {
    @Autowired
    private AuthenticateService authenticateService;
    @RequestMapping(method = RequestMethod.POST)
    public String auth(HttpServletRequest request, HttpServletResponse response) {
        return authenticateService.auth(request, response);
    }
}

+ 10 - 0
hos-saas/src/main/java/com/yihu/hos/saas/daos/TestDao.java

@ -0,0 +1,10 @@
package com.yihu.hos.saas.daos;
import com.yihu.hos.saas.models.TestModel;
import org.springframework.data.repository.CrudRepository;
/**
 * @created Airhead 2016/11/16.
 */
public interface TestDao extends CrudRepository<TestModel, Long> {
}

+ 2 - 13
hos-saas/src/main/java/com/yihu/hos/saas/daos/UserDao.java

@ -6,26 +6,15 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * @created Airhead 2016/9/4.
 */
@Transactional
@Component
public interface UserDao extends CrudRepository<UserModel, Long> {
    @Query("select a from UserModel a where a.name = ?1 and a.status = 1")
    @Query("select a from UserModel a where a.name = ?1 and a.valid = 1")
    UserModel findOne(String userName);
    @Query("select a from UserModel a where a.code = ?1 and a.status = 1")
    @Query("select a from UserModel a where a.code = ?1 and a.valid = 1")
    UserModel findOneByCode(String userCode);
    @Query("select a from UserModel a where a.openId = ?1 and a.status = 1")
    UserModel findOneByOpenId(String openId);
    @Query("select a from UserModel a where a.code in ?1 and a.status = 1")
    List<UserModel> findByCodeIn(List<String> codeList);
    @Query("select a from UserModel a where a.personCode = ?1 and a.status = 1")
    List<UserModel> findByPersonCode(String personCode);
}

+ 16 - 0
hos-saas/src/main/java/com/yihu/hos/saas/daos/UserTenantDao.java

@ -0,0 +1,16 @@
package com.yihu.hos.saas.daos;
import com.yihu.hos.saas.models.UserModel;
import com.yihu.hos.saas.models.UserTenantModel;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
/**
 * @created Airhead 2016/11/16.
 */
@Component
public interface UserTenantDao extends CrudRepository<UserTenantModel, Long> {
    @Query("select a from UserTenantModel a where a.userCode = ?1")
    UserTenantModel findOne(String userCode);
}

+ 6 - 7
hos-saas/src/main/java/com/yihu/hos/saas/interceptors/AuthenticateInterceptor.java

@ -2,20 +2,19 @@ package com.yihu.hos.saas.interceptors;
import com.yihu.hos.saas.services.AuthenticateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AuthenticateInterceptor extends HandlerInterceptorAdapter {
    private final AuthenticateService authenticateService;
    @Autowired
    public AuthenticateInterceptor(AuthenticateService authenticateService) {
        Assert.notNull(authenticateService, "AuthenticateService must be not null");
        this.authenticateService = authenticateService;
    }
    private AuthenticateService authenticateService;
//    public AuthenticateInterceptor(AuthenticateService authenticateService) {
//        Assert.notNull(authenticateService, "AuthenticateService must be not null");
//        this.authenticateService = authenticateService;
//    }
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

+ 43 - 0
hos-saas/src/main/java/com/yihu/hos/saas/models/TestModel.java

@ -0,0 +1,43 @@
package com.yihu.hos.saas.models;
import com.yihu.hos.saas.models.common.IdModel;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * @created Airhead 2016/11/16.
 */
@Entity
@Table(name = "test")
public class TestModel extends IdModel {
    private String name;
    private String memo;
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "memo")
    public String getMemo() {
        return memo;
    }
    public void setMemo(String memo) {
        this.memo = memo;
    }
    @Override
    public String toString() {
        return "TestModel{" +
                "name='" + name + '\'' +
                ", memo='" + memo + '\'' +
                '}';
    }
}

+ 0 - 9
hos-saas/src/main/java/com/yihu/hos/saas/models/UserSession.java

@ -1,9 +0,0 @@
package com.yihu.hos.saas.models;
/**
 * @created Airhead 2016/11/16.
 */
public class UserSession {
    private String userCode;
    private String token;
}

+ 56 - 0
hos-saas/src/main/java/com/yihu/hos/saas/models/UserTenantModel.java

@ -0,0 +1,56 @@
package com.yihu.hos.saas.models;
import com.yihu.hos.saas.models.common.IdModel;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * @created Airhead 2016/11/16.
 */
@Entity
@Table(name = "user_tenant")
public class UserTenantModel extends IdModel {
    private String userCode;
    private String tenantSchema;
    private Date created;
    private Date updated;
    @Column(name = "user_code")
    public String getUserCode() {
        return userCode;
    }
    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }
    @Column(name = "tenant_schema")
    public String getTenantSchema() {
        return tenantSchema;
    }
    public void setTenantSchema(String tenantSchema) {
        this.tenantSchema = tenantSchema;
    }
    @Column(name = "created")
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }
    @Column(name = "updated")
    public Date getUpdated() {
        return updated;
    }
    public void setUpdated(Date updated) {
        this.updated = updated;
    }
}

+ 36 - 0
hos-saas/src/main/java/com/yihu/hos/saas/models/bo/UserSession.java

@ -0,0 +1,36 @@
package com.yihu.hos.saas.models.bo;
import java.util.UUID;
/**
 * @created Airhead 2016/11/16.
 */
public class UserSession {
    private String userCode;
    private String token;
    public UserSession() {
    }
    public UserSession(String userCode) {
        this.userCode = userCode;
        token = UUID.randomUUID().toString();
    }
    public String getUserCode() {
        return userCode;
    }
    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }
    public String getToken() {
        return token;
    }
    public void setToken(String token) {
        this.token = token;
    }
}

+ 1 - 2
hos-saas/src/main/java/com/yihu/hos/saas/services/AuthenticateService.java

@ -1,6 +1,5 @@
package com.yihu.hos.saas.services;
import com.yihu.hos.saas.models.UserSession;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
@ -13,5 +12,5 @@ import javax.servlet.http.HttpServletResponse;
public interface AuthenticateService {
    boolean isAuth(HttpServletRequest request, HttpServletResponse response) throws Exception;
    UserSession auth(HttpServletRequest request, HttpServletResponse response);
    String auth(HttpServletRequest request, HttpServletResponse response);
}

+ 38 - 2
hos-saas/src/main/java/com/yihu/hos/saas/services/impl/AuthenticateServiceImpl.java

@ -1,7 +1,14 @@
package com.yihu.hos.saas.services.impl;
import com.yihu.hos.saas.models.UserSession;
import com.yihu.hos.saas.constants.ContextAttributes;
import com.yihu.hos.saas.daos.UserDao;
import com.yihu.hos.saas.daos.UserTenantDao;
import com.yihu.hos.saas.models.UserModel;
import com.yihu.hos.saas.models.UserTenantModel;
import com.yihu.hos.saas.models.bo.UserSession;
import com.yihu.hos.saas.services.AuthenticateService;
import com.yihu.hos.saas.utils.LocalContext;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -11,10 +18,39 @@ import javax.servlet.http.HttpSession;
 * @created Airhead 2016/11/16.
 */
public class AuthenticateServiceImpl implements AuthenticateService {
    @Autowired
    private UserDao userDao;
    @Autowired
    private UserTenantDao userTenantDao;
    @Override
    public boolean isAuth(HttpServletRequest request, HttpServletResponse response) throws Exception {
        HttpSession session = request.getSession();
        UserSession userSession = (UserSession) session.getAttribute("userSession");
        return userSession != null;
        if (userSession == null) {
            return false;
        }
        UserTenantModel userTenantModel = userTenantDao.findOne(userSession.getUserCode());
        LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA, userTenantModel.getTenantSchema());
        return true;
    }
    @Override
    public String auth(HttpServletRequest request, HttpServletResponse response) {
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        UserModel userModel = userDao.findOne(name);
        if (userModel == null) {
            return "Auth Failed";
        }
        if (password.equals(userModel.getPassword())) {     //简单逻辑
            HttpSession session = request.getSession();
            session.setAttribute("userSession", new UserSession(userModel.getCode()));
        }
        return "Auth Success";
    }
}

+ 9 - 0
hos-saas/src/main/java/com/yihu/hos/saas/services/mockimpl/AuthenticateServiceMockImpl.java

@ -1,6 +1,7 @@
package com.yihu.hos.saas.services.mockimpl;
import com.yihu.hos.saas.constants.ContextAttributes;
import com.yihu.hos.saas.models.bo.UserSession;
import com.yihu.hos.saas.services.AuthenticateService;
import com.yihu.hos.saas.utils.LocalContext;
@ -17,4 +18,12 @@ public class AuthenticateServiceMockImpl implements AuthenticateService {
        LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA, name);
        return true;
    }
    @Override
    public String auth(HttpServletRequest request, HttpServletResponse response) {
        UserSession userSession = new UserSession();
        userSession.setUserCode("abc");
        userSession.setToken("1234567890");
        return null;
    }
}

+ 5 - 8
hos-saas/src/main/java/com/yihu/hos/saas/services/mockimpl/HelloServiceMockImpl.java

@ -1,10 +1,8 @@
package com.yihu.hos.saas.services.mockimpl;
import com.yihu.hos.saas.constants.ContextAttributes;
import com.yihu.hos.saas.daos.UserDao;
import com.yihu.hos.saas.models.UserModel;
import com.yihu.hos.saas.daos.TestDao;
import com.yihu.hos.saas.models.TestModel;
import com.yihu.hos.saas.services.HelloService;
import com.yihu.hos.saas.utils.LocalContext;
import org.springframework.beans.factory.annotation.Autowired;
/**
@ -12,11 +10,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 */
public class HelloServiceMockImpl implements HelloService {
    @Autowired
    private UserDao userDao;
    private TestDao testDao;
    public String sayHello() {
        UserModel userModel = userDao.findOne("13950053912");
        String name = userModel == null ? "" : userModel.getCode();
        return "Hello," + name + " schema:" + LocalContext.getContext().getAttachment(ContextAttributes.SCHEMA);
        TestModel testModel = testDao.findOne(1L);
        return "Hello," + testModel.toString();
    }
}

+ 5 - 0
hos-saas/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@ -4,6 +4,11 @@
      "name": "services.HelloService",
      "type": "java.lang.String",
      "description": "Description for services.HelloService."
    },
    {
      "name": "services.AuthenticateService ",
      "type": "java.lang.String",
      "description": "Description for services.AuthenticateService ."
    }
  ]
}

+ 2 - 2
hos-saas/src/main/resources/application.yml

@ -1,9 +1,9 @@
services:
  HelloService: false
  AuthenticateService : false
  AuthenticateService : true
spring:
  datasource:
    url: jdbc:mysql://192.168.1.220:8066/?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    url: jdbc:mysql://192.168.1.220:8066/global_db?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: hos
    password: 123456