Commit 321361c9 authored by xiandafu's avatar xiandafu
Browse files

init

parent 2971e3f1
package com.ibeetl.admin.core.conf;
import org.beetl.core.Context;
import org.beetl.core.Function;
import org.beetl.core.GroupTemplate;
import org.beetl.ext.spring.BeetlGroupUtilConfiguration;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.format.FormatterRegistry;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.validation.MessageCodesResolver;
import org.springframework.validation.Validator;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.admin.core.util.HttpRequestLocal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Configuration
public class MVCConf implements WebMvcConfigurer, InitializingBean {
public static final String DEFAULT_APP_NAME = "开发平台";
/**
* 系统名称,可以在application.properties中配置
* app.name=xxx
*/
// @Value("${app.name}")
// String appName;
// 开发用的模拟当前用户和机构
Long useId;
Long orgId;
String mvcTestPath;
@Autowired
Environment env;
@Autowired
CoreUserService userService;
@Autowired
BeetlGroupUtilConfiguration beetlGroupUtilConfiguration;
@Autowired
HttpRequestLocal httpRequestLocal;
@Autowired
GroupTemplate groupTemplate;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SessionInterceptor(httpRequestLocal, this)).addPathPatterns("/**");
// super.addInterceptors(registry);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss"));
}
@Override
public void afterPropertiesSet() throws Exception {
this.useId = env.getProperty("user.id", Long.class);
this.orgId = env.getProperty("user.orgId", Long.class);
this.mvcTestPath = env.getProperty("mvc.test.path");
Map<String, Object> var = new HashMap<>(5);
String appName = env.getProperty("app.name");
if(appName==null) {
var.put("appName",DEFAULT_APP_NAME);
}
var.put("jsVer", System.currentTimeMillis());
groupTemplate.setSharedVars(var);
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> arg0) {
// TODO Auto-generated method stub
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry arg0) {
// TODO Auto-generated method stub
}
@Override
public void addReturnValueHandlers(
List<HandlerMethodReturnValueHandler> arg0) {
// TODO Auto-generated method stub
}
@Override
public void addViewControllers(ViewControllerRegistry arg0) {
// TODO Auto-generated method stub
}
@Override
public void configureAsyncSupport(AsyncSupportConfigurer arg0) {
// TODO Auto-generated method stub
}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer arg0) {
// TODO Auto-generated method stub
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer arg0) {
// TODO Auto-generated method stub
}
@Override
public void configureHandlerExceptionResolvers(
List<HandlerExceptionResolver> arg0) {
// TODO Auto-generated method stub
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> arg0) {
// TODO Auto-generated method stub
}
@Override
public void configurePathMatch(PathMatchConfigurer arg0) {
// TODO Auto-generated method stub
}
@Override
public void configureViewResolvers(ViewResolverRegistry arg0) {
// TODO Auto-generated method stub
}
@Override
public void extendHandlerExceptionResolvers(
List<HandlerExceptionResolver> arg0) {
// TODO Auto-generated method stub
}
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> arg0) {
// TODO Auto-generated method stub
}
@Override
public MessageCodesResolver getMessageCodesResolver() {
// TODO Auto-generated method stub
return null;
}
@Override
public Validator getValidator() {
// TODO Auto-generated method stub
return null;
}
}
class SessionInterceptor implements HandlerInterceptor {
MVCConf conf;
HttpRequestLocal httpRequestLocal;
public SessionInterceptor(HttpRequestLocal httpRequestLocal, MVCConf conf) {
this.conf = conf;
this.httpRequestLocal = httpRequestLocal;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
if (conf.useId != null && conf.orgId != null
&& request.getSession().getAttribute(CorePlatformService.ACCESS_CURRENT_USER) == null) {
// 模拟用户登录,用于快速开发,未来用rember么代替?
CoreUser user = conf.userService.getUserById(conf.useId);
CoreOrg org = conf.userService.getOrgById(conf.orgId);
List<CoreOrg> orgs = conf.userService.getUserOrg(conf.useId, org.getId());
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_USER, user);
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_ORG, org);
request.getSession().setAttribute(CorePlatformService.ACCESS_USER_ORGS, orgs);
request.getSession().setAttribute("ip", request.getRemoteHost());
}
httpRequestLocal.set(request);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// do nothing
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// do nothing
}
}
package com.ibeetl.admin.core.conf;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.ibeetl.admin.core.conf.PasswordConfig.PasswordEncryptService;
/**
* 描述: 密码工具,系统默认采用明文
*
* @author : xiandafu
*/
@Configuration
@ConditionalOnMissingBean(PasswordEncryptService.class)
public class PasswordConfig {
public static interface PasswordEncryptService{
public String password(String pwd);
}
public static class DefaultEncryptBean implements PasswordEncryptService {
@Override
public String password(String pwd) {
// 采用明文,系统应该提供自己的EncryptBean实现以代替默认
return pwd;
}
}
@Bean
public PasswordEncryptService passwordEncryptBean(){
return new DefaultEncryptBean();
}
}
package com.ibeetl.admin.core.conf;
import java.lang.reflect.Method;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ibeetl.admin.core.annotation.Function;
import com.ibeetl.admin.core.entity.CoreAudit;
import com.ibeetl.admin.core.entity.CoreFunction;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.service.CoreAuditService;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.util.FunctionLocal;
import com.ibeetl.admin.core.util.HttpRequestLocal;
import com.ibeetl.admin.core.util.PlatformException;
@Aspect
@Component
public class RbacAnnotationConfig {
@Autowired
CorePlatformService platformService;
@Autowired
CoreAuditService sysAuditService;
@Autowired
HttpRequestLocal httpRequestLocal;
@Autowired
Environment env;
ObjectMapper jsonMapper = new ObjectMapper();
private final Log log = LogFactory.getLog(this.getClass());
@org.aspectj.lang.annotation.Around("within(@org.springframework.stereotype.Controller *) && @annotation(function)")
public Object functionAccessCheck(final ProceedingJoinPoint pjp, Function function) throws Throwable {
// debug
String funCode = null;
CoreUser user = null;
Method m = null;
try {
if (function != null) {
funCode = function.value();
user = platformService.getCurrentUser();
Long orgId = platformService.getCurrentOrgId();
boolean access = platformService.canAcessFunction(user.getId(), orgId, funCode);
if (!access) {
log.warn(jsonMapper.writeValueAsString(user) + "试图访问未授权功能 " + funCode);
throw new PlatformException("试图访问未授权功能");
}
FunctionLocal.set(funCode);
}
Object o = pjp.proceed();
if (function != null) {
MethodSignature ms = (MethodSignature)pjp.getSignature();
m = ms.getMethod();
createAudit(funCode, user, true, "",m);
}
return o;
} catch (Throwable e) {
if (function != null) {
createAudit(funCode, user, false, e.getMessage(),m);
}
throw e;
}
}
private void createAudit(String functionCode, CoreUser user, boolean success, String msg, Method m) {
boolean enable = env.getProperty("audit.enable", Boolean.class, false);
if (!enable) {
return;
}
if(filter(m,functionCode)){
return ;
}
CoreAudit audit = new CoreAudit();
String functionName = null;
CoreFunction fun = this.platformService.getFunction(functionCode);
if (fun == null) {
// 没有在数据库定义,但写在代码里了
log.warn(functionCode + " 未在数据库里定义");
functionName = "未定义";
} else {
functionName = fun.getName();
}
audit.setCreateTime(new Date());
audit.setFunctionCode(functionCode);
audit.setFunctionName(functionName);
audit.setUserId(user.getId());
audit.setSuccess(success ? 1 : 0);
audit.setUserName(user.getName());
audit.setMessage(msg);
audit.setIp(httpRequestLocal.getRequestIP());
sysAuditService.save(audit);
}
private boolean filter(Method m,String functionCode){
if(functionCode.startsWith("audit.")){
return true;
}
String uri = httpRequestLocal.getRequestURI();
if(uri!=null&&uri.endsWith("/index/condition.json")){
return true ;
}else{
return false;
}
}
}
package com.ibeetl.admin.core.conf;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.ibeetl.admin.core.rbac.DataAccessFactory;
import com.ibeetl.admin.core.rbac.da.DefaultDataAccessFactory;
@Configuration
public class RbacDataAccessConfig {
@ConditionalOnMissingBean(DataAccessFactory.class)
@Bean
public DataAccessFactory dataAccessFatory(ApplicationContext applicationContext) {
return new DefaultDataAccessFactory(applicationContext);
}
}
package com.ibeetl.admin.core.conf;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Random;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.x.discovery.ServiceDiscovery;
import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;
import org.apache.curator.x.discovery.ServiceInstance;
import org.apache.curator.x.discovery.ServiceInstanceBuilder;
import org.apache.curator.x.discovery.details.JsonInstanceSerializer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import com.ibeetl.admin.core.service.CoreServiceLocator;
import com.ibeetl.admin.core.util.PlatformException;
@Configuration
public class RemoteServiceLocatorConfig {
Log log = LogFactory.getLog(this.getClass());
@Configuration
@ConditionalOnProperty(name = "zookeeper.enabled", havingValue = "true")
class ZkConfig{
@Bean
public CoreServiceLocator zkServiceLocator(Environment env,CuratorFramework client){
RemoteServiceLocator loc = new RemoteServiceLocator(client);
log.info("地服务注册和发现:"+client.getZookeeperClient().getCurrentConnectionString());
return loc;
}
}
@Configuration
@ConditionalOnProperty(name = "zookeeper.enabled", havingValue = "false",matchIfMissing=true)
class LocalConfig{
@Bean
public CoreServiceLocator localServiceLocator(Environment env){
LocalServiceLocator loc = new LocalServiceLocator();
log.info("没有配置zookeeper.*,使用模拟本地服务注册和发现:"+loc.configFile);
return loc;
}
}
}
/**
* zookeeper 服务注册中心
* @author lijiazhi
*
*/
class RemoteServiceLocator implements CoreServiceLocator{
CuratorFramework client;
Log log = LogFactory.getLog(this.getClass());
public RemoteServiceLocator(CuratorFramework client){
this.client = client;
}
@Override
public void addServiceURI(String path, String url) {
try{
ServiceInstanceBuilder<Map> service = ServiceInstance.builder();
service.address("");
service.port(0);
service.name(path);
Map config = new HashMap();
config.put("url", url);
service.payload(config);
ServiceInstance<Map> instance = service.build();
ServiceDiscovery<Map> serviceDiscovery = ServiceDiscoveryBuilder.builder(Map.class).client(client)
.serializer(new JsonInstanceSerializer<Map>(Map.class)).basePath("/service").build();
// 服务注册
serviceDiscovery.registerService(instance);
serviceDiscovery.start();
}catch(Exception ex){
log.warn(ex.getMessage(), ex);
throw new PlatformException("服务注册中心 出错",ex);
}
}
@Override
public String getServiceURI(String path) {
ServiceDiscovery<Map> serviceDiscovery = ServiceDiscoveryBuilder.builder(Map.class).client(client)
.serializer(new JsonInstanceSerializer<Map>(Map.class)).basePath("/service").build();
try {
serviceDiscovery.start();
} catch (Exception e) {
throw new PlatformException("未发现服务注册中心 ");
}
Collection<ServiceInstance<Map>> all;
try {
all = serviceDiscovery.queryForInstances(path);
} catch (Exception e) {
log.warn("未发现服务注服务 "+path);
throw new PlatformException("未发现服务注服务 "+path);
}
if (all.size() == 0) {
log.warn("未发现服务注服务 "+path);
throw new PlatformException("未发现服务注服务 "+path);
} else {
//todo 优化:能缓存,官方有缓存方法,以后补上
// 随机选一个
int size = all.size();
int one = new Random().nextInt(size);
ServiceInstance<Map> service = new ArrayList<ServiceInstance<Map>>(all).get(one);
return (String)service.getPayload().get("url");
}
}
}
/**
* 开发环境下,本地俩个系统注册服务,发现服务的方式。通过starter.service.properties文件完成
* @author lijiazhi
*
*/
class LocalServiceLocator implements CoreServiceLocator{
String home = System.getProperty("user.home");
//单机用一个配置文件完成,多机情况得使用zookeeper
String configFile = null;
public LocalServiceLocator(){
configFile = home+File.separator+"starter.service.properties";
}
@Override
public void addServiceURI(String path, String url) {
check();
Properties ps = new Properties();
try {
ps.load(new FileReader(new File(configFile)));
ps.setProperty(path, url);
ps.store(new FileWriter(new File(configFile)), "");
} catch (IOException e) {
throw new PlatformException("未发现服务注册中心 "+e.getMessage());
}
}
@Override
public String getServiceURI(String path) {
check();
Properties ps = new Properties();
try {
ps.load(new FileReader(new File(configFile)));
String url = ps.getProperty(path);
if(StringUtils.isEmpty(url)){
throw new PlatformException("未发现服务注服务 ");
}
return url;
} catch (IOException e) {
throw new PlatformException("未发现服务注册中心 "+e.getMessage());
}
}
protected void check(){
File file = new File(configFile);
if(file.exists()){
return;
}
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
throw new PlatformException("未发现服务注册中心 "+e.getMessage(),e);
}
}
}
package com.ibeetl.admin.core.conf;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
@Configuration
@ConditionalOnClass(CuratorFramework.class)
@ConditionalOnProperty(name = "zookeeper.enabled", havingValue = "true")
public class ZookeeperConfig {
Log log = LogFactory.getLog(this.getClass());
@Autowired Environment env;
@Bean
public CuratorFramework getCuratorFramework() throws Exception {
String zkUrl = env.getProperty("zookeeper.url");
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
CuratorFramework client = CuratorFrameworkFactory.newClient(zkUrl, retryPolicy);
client.start();
return client;
}
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreAudit;
/*
*
* gen by starter mapper 2017-08-01
*/
@SqlResource("core.coreAudit")
public interface CoreAuditDao extends BaseMapper<CoreAudit> {
}
\ No newline at end of file
package com.ibeetl.admin.core.dao;
import java.util.List;
import java.util.Map;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreDict;
/**
* 字典DAO接口
*/
@SqlResource("core.coreDict")
public interface CoreDictDao extends BaseMapper<CoreDict> {
/**
* 查询某个类型下的字典集合
* @param type 字典类型
* @return
*/
List<CoreDict> findAllList(String type);
/**
* 根据条件查询
* @param query
*/
void queryByCondtion(PageQuery query);
/**
* 查询字段类型列表
* @param delFlag 删除标记
* @return
*/
@SqlStatement(returnType = Map.class)
List<Map<String, String>> findTypeList(int delFlag);
/**
* 根据父节点Id查询子节点数据
* @param id 父节点id
* @return
*/
List<CoreDict> findChildByParent(String parentValue);
int bathDelByValue(List<String> values);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.Sql;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreFunction;
@SqlResource("core.coreFunction")
public interface CoreFunctionDao extends BaseMapper<CoreFunction> {
@Sql("select * from core_function where code = ?")
CoreFunction getFunctionByCode(@Param(value = "code") String code);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreMenu;
import java.util.List;
@SqlResource("core.coreMenu")
public interface CoreMenuDao extends BaseMapper<CoreMenu> {
public void queryByCondtion(PageQuery query);
public void clearMenuFunction( List<Long> functionIds);
public List<CoreMenu> allMenuWithURL();
}
package com.ibeetl.admin.core.dao;
import java.util.List;
import org.beetl.sql.core.annotatoin.Sql;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreOrg;
@SqlResource("core.coreOrg")
public interface CoreOrgDao extends BaseMapper<CoreOrg> {
List<CoreOrg> queryOrgByUser(Long userId);
List<String> queryAllOrgCode(List<Long> orgIds);
@Sql("select * from core_org where parent_org_id is null")
CoreOrg getRoot();
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreRole;
import java.util.List;
@SqlResource("core.coreRole")
public interface CoreRoleDao extends BaseMapper<CoreRole> {
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreRoleFunction;
import java.util.List;
@SqlResource("core.coerRoleFunction")
public interface CoreRoleFunctionDao extends BaseMapper<CoreRoleFunction> {
List<CoreRoleFunction> getRoleFunction( Long userId, Long orgId,
String code);
List<String> getRoleChildrenFunction(Long userId, Long orgId,
Long parentId);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreRoleMenu;
import java.util.List;
@SqlResource("core.coreRoleMenu")
public interface CoreRoleMenuDao extends BaseMapper<CoreRoleMenu> {
/**
* 根据用户ID,机构ID查询菜单
* @param userId 用户id
* @param orgId 机构id
* @return
*/
List<Long> queryMenuByUser( Long userId, Long orgId);
/**
* 根据菜单id删除角色和菜单关系
* @param ids
*/
void deleteRoleMenu(List<Long> ids);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreUser;
import java.util.List;
@SqlResource("core.coreUser")
public interface CoreUserDao extends BaseMapper<CoreUser> {
/**
* 根据角色编码查询用户集合
* @param roleCode 角色编码
* @return
*/
List<CoreUser> getUserByRole( String roleCode);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreUserRole;
@SqlResource("core.coresUserRole")
public interface CoreUserRoleDao extends BaseMapper<CoreUserRole> {
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreUser;
import java.util.List;
/**
* 业务侧工作流的基本功能,工作流的一些功能将在业务侧完成,比如选人操作
* @author lijiazhi
*/
@SqlResource("core.workflow")
public interface CoreWorkflowDao extends BaseMapper {
/**
* 根据角色id,机构id查询用户集合
* @param roleId 角色id
* @param orgs 机构id
* @return
*/
List<CoreUser> queryUsersByRole(Long roleId, List<Long> orgs);
}
package com.ibeetl.admin.core.entity;
import java.util.Map;
import org.beetl.sql.core.TailBean;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
/**
* 描述:用于辅助序列化beetlsql 的TailBean
* @author : xiandafu
*/
public class BaseEntity extends TailBean implements java.io.Serializable {
protected final static String ORACLE_CORE_SEQ_NAME="core-seq";
protected final static String ORACLE_AUDIT_SEQ_NAME="audit-seq";
@JsonAnyGetter
public Map<String, Object> getTails(){
return super.getTails();
}
}
package com.ibeetl.admin.core.entity;
import java.util.Date;
import java.util.Map;
import javax.validation.constraints.NotNull;
import org.beetl.sql.core.annotatoin.AutoID;
import org.beetl.sql.core.annotatoin.SeqID;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ibeetl.admin.core.util.ValidateConfig;
public class CoreAudit extends BaseEntity {
@SeqID(name = "ORACLE_AUDIT_SEQ_NAME")
@AutoID
@NotNull(message = "ID不能为空", groups = ValidateConfig.UPDATE.class)
protected Long id;
//删除标识
@JsonIgnore
protected Integer delFlag;
//创建时间
private Integer success ;
private String functionCode ;
private String functionName ;
private String ip ;
private String message ;
private String userName ;
private Long userId ;
protected Date createTime;
public CoreAudit() {
}
public Integer getSuccess(){
return success;
}
public void setSuccess(Integer success ){
this.success = success;
}
public String getFunctionCode(){
return functionCode;
}
public void setFunctionCode(String functionCode ){
this.functionCode = functionCode;
}
public String getFunctionName(){
return functionName;
}
public void setFunctionName(String functionName ){
this.functionName = functionName;
}
public String getIp(){
return ip;
}
public void setIp(String ip ){
this.ip = ip;
}
public String getMessage(){
return message;
}
public void setMessage(String message ){
this.message = message;
}
public String getUserName(){
return userName;
}
public void setUserName(String userName ){
this.userName = userName;
}
public Long getUserId(){
return userId;
}
public void setUserId(Long userId ){
this.userId = userId;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
\ No newline at end of file
package com.ibeetl.admin.core.entity;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import org.beetl.sql.core.annotatoin.AssignID;
import org.beetl.sql.core.annotatoin.AutoID;
import org.beetl.sql.core.annotatoin.SeqID;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonView;
import com.ibeetl.admin.core.util.ValidateConfig;
/**
* 描述: 字典
* @author : xiandafu
*/
public class CoreDict extends BaseEntity {
@AssignID
private String value; // 数据值
//删除标识
@JsonIgnore
protected Integer delFlag = 0;
//创建时间
protected Date createTime;
@NotBlank(message = "字典类型不能为空", groups = ValidateConfig.ADD.class)
@JsonView(TypeListView.class)
private String type; //类型
@JsonView(TypeListView.class)
@NotBlank(message = "字典类型描述不能为空")
private String typeName; //类型描述
@NotBlank(message = "字典值不能为空", groups = ValidateConfig.ADD.class)
@NotBlank(message = "字典值名称不能为空")
private String name; // 标签名
private Integer sort; // 排序
private String parent; //父Id
private String remark; //备注
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public String getParent() {
return parent;
}
public void setParent(String parent) {
this.parent = parent;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Integer getDelFlag() {
return delFlag;
}
public void setDelFlag(Integer delFlag) {
this.delFlag = delFlag;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public interface TypeListView{
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment