Commit 026aece9 authored by WeiWei's avatar WeiWei

Merge remote-tracking branch 'cash-loan-flow-boss/v1' into v1

# Conflicts:
#	src/main/java/cn/quantgroup/cashloanflowboss/api/role/entity/boss/Role.java
parents b0d9b1d3 340f226e
package cn.quantgroup.cashloanflowboss.api.channel.controller;
import cn.quantgroup.cashloanflowboss.api.channel.entity.clf.ChannelConfiguration;
import cn.quantgroup.cashloanflowboss.api.channel.service.ChannelConfService;
import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.model.Pagination;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.Map;
/**
......@@ -14,7 +20,7 @@ import java.util.Map;
* @author suntao
*/
@RestController
@RequestMapping("channel/cfg")
@RequestMapping("channel")
public class ChannelConfController {
......@@ -23,15 +29,16 @@ public class ChannelConfController {
@GetMapping("/info")
public Result channelConfInfo(Integer channelId) {
public Page<ChannelConfiguration> channelInfo(@RequestParam @Valid Pagination pagination, Integer channelId) {
return channelConfService.getChannelInfo(pagination, channelId);
}
Map<String, Object> channelConf = channelConfService.getChannelConf(channelId);
if (channelConf == null) {
return new Result();
} else {
// TODO
return null;
}
@GetMapping("/cfg/info")
public Result channelConfInfo(Integer channelId) {
return channelConfService.getChannelConf(channelId);
}
}
package cn.quantgroup.cashloanflowboss.api.channel.entity.clf;
import cn.quantgroup.cashloanflowboss.api.channel.model.clf.EncType;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* Created by wudi on 2016/11/28.
*/
@Data
@Entity
@Table(name = "channel_configuration", catalog = "cash_loan_flow")
public class ChannelConfiguration implements Serializable {
private static final long serialVersionUID = -1L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "channel_name")
private String channelName;
@Column(name = "channel_code")
private String channelCode;
@Column(name = "registered_from")
private Long registeredFrom;
/**
* 默认有效
*/
@Column(name = "is_active")
private Boolean isActive = Boolean.TRUE;
@Column(name = "created_at")
private Timestamp createdAt = new Timestamp(System.currentTimeMillis());
/**
* 请求是否使用标准api
*/
@Column(name = "is_request_standard")
private Boolean isRequestStandard = Boolean.FALSE;
/**
* 加密类型
*/
@Column(name = "enc_type")
private EncType encType = EncType.AES;
/**
* aes加密key
*/
@Column(name = "aes_key")
private String aesKey;
/**
* md5摘要key
*/
@Column(name = "md5_key")
private String md5Key;
/**
* 授信中心channelCode, 爬虫提交channelCode
*/
@Column(name = "spider_center_channel_code")
private String spiderCenterChannelCode;
/**
* 授信中心商户渠道channelCode,授信授权提交channelCode
*/
@Column(name = "spider_center_merchant_channel_code")
private String spiderCenterMerchantChannelCode;
/**
* 渠道认证选项
*/
@Column(name = "auth_option")
private String authOption;
/**
* 免密登陆跳转url
*/
@Column(name = "login_page_url")
private String loginPageUrl;
}
\ No newline at end of file
package cn.quantgroup.cashloanflowboss.api.channel.model;
package cn.quantgroup.cashloanflowboss.api.channel.model.boss;
import lombok.Data;
......
package cn.quantgroup.cashloanflowboss.api.channel.model;
package cn.quantgroup.cashloanflowboss.api.channel.model.boss;
import lombok.Data;
......
package cn.quantgroup.cashloanflowboss.api.channel.model.clf;
/**
* function:
* date: 2019/8/6
*
* @author: suntao
*/
public class ChannelConfigurationPage {
}
package cn.quantgroup.cashloanflowboss.api.channel.model.clf;
/**
* Created by liqing on 2017/4/26 0026.
* 加解密方式
*/
public enum EncType {
AES("AES", "aesStandardCryptoService"),RSA("RSA", "rsaStandardCryptoService"),NONE("NONE", "noneStandardCryptoService");
public String text;
public String serviceClass;
EncType(String text, String serviceClass){
this.text = text;
this.serviceClass = serviceClass;
}
}
package cn.quantgroup.cashloanflowboss.api.channel.repository.boss;
import cn.quantgroup.cashloanflowboss.api.channel.entity.boss.ChannelConf;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* Created by suntao on 2019/7/22.
* @author suntao
*/
@Repository
public interface ChannelConfRepository {
public interface ChannelConfRepository extends JpaRepository<ChannelConf, Long> {
/**
* 获取用户
......
package cn.quantgroup.cashloanflowboss.api.channel.repository.clf;
import cn.quantgroup.cashloanflowboss.api.channel.entity.clf.ChannelConfiguration;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ChannelConfigurationRepository extends PagingAndSortingRepository<ChannelConfiguration, Long>, JpaSpecificationExecutor<ChannelConfiguration> {
}
package cn.quantgroup.cashloanflowboss.api.channel.service;
import cn.quantgroup.cashloanflowboss.api.channel.entity.boss.ChannelConf;
import cn.quantgroup.cashloanflowboss.api.channel.entity.clf.ChannelConfiguration;
import cn.quantgroup.cashloanflowboss.api.channel.repository.boss.ChannelConfRepository;
import cn.quantgroup.cashloanflowboss.api.channel.repository.clf.ChannelConfigurationRepository;
import cn.quantgroup.cashloanflowboss.api.channel.util.ChannelConfUtil;
import cn.quantgroup.cashloanflowboss.api.user.model.Pagination;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import java.util.Map;
import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* function:
......@@ -18,20 +27,41 @@ import java.util.Map;
@Service
public class ChannelConfService {
// @Autowired
// private ChannelConfRepository channelConfRepository;
@Autowired
private ChannelConfRepository channelConfRepository;
@Autowired
private ChannelConfigurationRepository clfChannelConfigurationRepository;
public Map<String, Object> getChannelConf(Integer channelId) {
public Page<ChannelConfiguration> getChannelInfo(Pagination pagination, Integer channelId) {
// ChannelConf channelConf = channelConfRepository.getByChannelId(channelId);
// if (channelConf == null) {
// return null;
// }
//
// return ChannelConfUtil.channelConfConvertVOModel(channelConf);
return null;
Page<ChannelConfiguration> page = this.clfChannelConfigurationRepository.findAll((root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
// 指定渠道号
if (Objects.nonNull(channelId)) {
predicates.add(criteriaBuilder.equal(root.get("channelId"), channelId));
}
// 指定排序
criteriaQuery.orderBy(criteriaBuilder.desc(root.get("id")));
return criteriaQuery.getRestriction();
}, new PageRequest(pagination.getPageNumber(), pagination.getPageSize()));
return page;
}
public Result getChannelConf(Integer channelId) {
ChannelConf channelConf = channelConfRepository.getByChannelId(channelId);
return Result.buildSuccess(ChannelConfUtil.channelConfConvertVOModel(channelConf), "success");
}
}
......@@ -2,8 +2,8 @@ package cn.quantgroup.cashloanflowboss.api.channel.util;
import java.util.Date;
import cn.quantgroup.cashloanflowboss.api.channel.entity.boss.ChannelConf;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelConfAddModel;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelConfBaseModel;
import cn.quantgroup.cashloanflowboss.api.channel.model.boss.ChannelConfAddModel;
import cn.quantgroup.cashloanflowboss.api.channel.model.boss.ChannelConfBaseModel;
import org.springframework.beans.BeanUtils;
import java.util.HashMap;
......
package cn.quantgroup.cashloanflowboss.api.log.service;
import cn.quantgroup.cashloanflowboss.api.role.entity.Permission;
import cn.quantgroup.cashloanflowboss.api.role.entity.boss.Permission;
import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus;
import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.service.UserService;
......
package cn.quantgroup.cashloanflowboss.api.role.entity;
package cn.quantgroup.cashloanflowboss.api.role.entity.boss;
import cn.quantgroup.cashloanflowboss.component.security.Authority;
import lombok.Data;
......
package cn.quantgroup.cashloanflowboss.api.role.entity;
package cn.quantgroup.cashloanflowboss.api.role.entity.boss;
import cn.quantgroup.cashloanflowboss.api.role.entity.boss.Permission;
import cn.quantgroup.cashloanflowboss.core.persistence.Primary;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
/**
......@@ -28,6 +30,8 @@ public class Role extends Primary {
/**
* 授权列表
*/
@Transient
private List<Permission> permissions;
}
package cn.quantgroup.cashloanflowboss.api.role.entity.boss;
import cn.quantgroup.cashloanflowboss.core.persistence.Primary;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Table;
@Data
@Entity
@Table(name = "role_user")
public class RoleUser extends Primary {
private Long roleId;
private Long userId;
}
package cn.quantgroup.cashloanflowboss.api.role.repository;
import org.springframework.stereotype.Repository;
/**
* Created by WeiWei on 2019/7/30.
*/
@Repository
public interface RoleRepository {
}
package cn.quantgroup.cashloanflowboss.api.role.repository.boss;
import cn.quantgroup.cashloanflowboss.api.role.entity.boss.Role;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* Created by WeiWei on 2019/7/30.
*/
@Repository
public interface RoleRepository extends JpaRepository<Role, Long> {
}
package cn.quantgroup.cashloanflowboss.api.role.repository.boss;
import cn.quantgroup.cashloanflowboss.api.role.entity.boss.RoleUser;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface RoleUserRepository extends JpaRepository<RoleUser, Long> {
RoleUser findByUserId(Long userId);
}
package cn.quantgroup.cashloanflowboss.api.role.service;
import cn.quantgroup.cashloanflowboss.api.role.entity.boss.Role;
import cn.quantgroup.cashloanflowboss.api.role.entity.boss.RoleUser;
import cn.quantgroup.cashloanflowboss.api.role.repository.boss.RoleRepository;
import cn.quantgroup.cashloanflowboss.api.role.repository.boss.RoleUserRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class RoleService {
@Autowired
private RoleRepository roleRepository;
@Autowired
private RoleUserRepository roleUserRepository;
public Role findRoleByUserId(Long userId) {
RoleUser roleUser = roleUserRepository.findByUserId(userId);
Long roleId = roleUser.getRoleId();
Role role = findRoleByRoleId(roleId);
return role;
}
public Role findRoleByRoleId(Long roleId) {
return roleRepository.findOne(roleId);
}
}
package cn.quantgroup.cashloanflowboss.api.test.controller;
import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.service.UserService;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private UserService userService;
@GetMapping("/user/info")
public Result findUserFromSession() {
User currentUser = userService.findCurrentUser();
return new Result<>(ApplicationStatus.SUCCESS, currentUser);
}
}
package cn.quantgroup.cashloanflowboss.api.user.model;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class UserSessionInfo {
private String userName;
private String roleName;
private Long channelId;
}
......@@ -4,14 +4,20 @@ import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus;
import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.repository.boss.UserRepository;
import cn.quantgroup.cashloanflowboss.core.asserts.Assert;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationDictionary;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import cn.quantgroup.cashloanflowboss.utils.JSONTools;
import cn.quantgroup.cashloanflowboss.utils.MD5Tools;
import com.fasterxml.jackson.core.type.TypeReference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpSession;
import java.util.Objects;
/**
......@@ -130,4 +136,13 @@ public class UserService {
}
public User findCurrentUser() {
HttpSession session = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession();
Assert.isNull(session.getAttribute(ApplicationDictionary.USER_KEY), ApplicationStatus.INVALID_USER);
User user = JSONTools.deserialize(String.valueOf(session.getAttribute(ApplicationDictionary.USER_KEY)), new TypeReference<User>() {
});
return user;
}
}
package cn.quantgroup.cashloanflowboss.api.user.service;
import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.model.UserSessionInfo;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationDictionary;
import cn.quantgroup.cashloanflowboss.utils.JSONTools;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpSession;
@Slf4j
@Service
public class UserSessionService {
public void setUserSessionInfo(User user) {
HttpSession session = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession();
session.setAttribute(ApplicationDictionary.USER_KEY, JSONTools.serialize(user));
//query user role info
//UserSessionInfo.builder()
// .userName(user.getUsername())
// .roleName()
}
}
package cn.quantgroup.cashloanflowboss.core.base;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import cn.quantgroup.cashloanflowboss.core.dictionary.Status;
import lombok.Data;
......@@ -50,4 +51,27 @@ public class Result<T> {
}
@SuppressWarnings("unchecked")
public static<T> Result buildSuccess(T data) {
return new Result(ApplicationStatus.SUCCESS, data);
}
@SuppressWarnings("unchecked")
public static<T> Result buildSuccess(T data, String message) {
return new Result(ApplicationStatus.SUCCESS, data, message);
}
@SuppressWarnings("unchecked")
public static<T> Result buildFial(T data) {
return new Result(ApplicationStatus.FAILURE, data);
}
@SuppressWarnings("unchecked")
public static<T> Result buildFial(T data, String message) {
return new Result(ApplicationStatus.FAILURE, data, message);
}
}
package cn.quantgroup.cashloanflowboss.core.configuration;
import cn.quantgroup.cashloanflowboss.api.role.entity.Permission;
import cn.quantgroup.cashloanflowboss.api.role.entity.boss.Permission;
import cn.quantgroup.cashloanflowboss.component.security.Authority;
import cn.quantgroup.cashloanflowboss.component.security.SecurityHandler;
import cn.quantgroup.cashloanflowboss.core.asserts.Assert;
......
......@@ -65,7 +65,7 @@ public class BossDSConfig {
public LocalContainerEntityManagerFactoryBean entityManager(EntityManagerFactoryBuilder builder) {
return builder.dataSource(createDataSource())
.packages("cn.quantgroup.cashloanflowboss.api.user.entity.boss")
.packages("cn.quantgroup.cashloanflowboss.api.*.entity.boss")
.persistenceUnit(uniquename)
.build();
}
......
package cn.quantgroup.cashloanflowboss.core.configuration.data;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
@Configuration
@EntityScan(basePackages = {"cn.quantgroup.cashloanflowboss.api.*.entity.clf"})
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = {"cn.quantgroup.cashloanflowboss.api.*.repository.clf"},
entityManagerFactoryRef = "clfEntityManager",
transactionManagerRef = "clfTransactionManager")
public class ClfDSConfig {
@Value("${data.boss.url}")
private String jdbcUrl;
@Value("${data.boss.password}")
private String password;
@Value("${data.boss.username}")
private String user;
private String uniquename = "bossDS";
@Value("${data.boss.pool-size}")
private Integer poolSize;
@Bean(name = "clfDataSource")
@ConfigurationProperties(prefix = "data.boss")
public DataSource createDataSource() {
DruidDataSource source = DruidDataSourceBuilder.create().build();
source.setMaxActive(200);
source.setMinIdle(10);
source.setInitialSize(10);
source.setMaxWait(500000);
source.setTimeBetweenEvictionRunsMillis(60000);
source.setMinEvictableIdleTimeMillis(300000);
source.setValidationQuery("SELECT 'x'");
source.setTestWhileIdle(true);
source.setTestOnBorrow(false);
source.setTestOnReturn(false);
source.setPoolPreparedStatements(Boolean.FALSE);
return source;
}
@Bean(name = "clfEntityManager")
public LocalContainerEntityManagerFactoryBean entityManager(EntityManagerFactoryBuilder builder) {
return builder.dataSource(createDataSource())
.packages("cn.quantgroup.cashloanflowboss.api.*.entity.clf")
.persistenceUnit(uniquename)
.build();
}
@Bean(name = "clfTransactionManager")
public PlatformTransactionManager transactionManager(@Qualifier("clfEntityManager") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
......@@ -9,5 +9,7 @@ public final class ApplicationDictionary {
// 权限Session Key
public static final String SECURITY_KEY = "PERMISSION";
// user Session key
public static final String USER_KEY = "USER";
}
Markdown is supported
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