Commit 9ad06d45 authored by 王亮's avatar 王亮

add records list.

parent 100b82df
...@@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; ...@@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
...@@ -24,6 +25,7 @@ import org.springframework.scheduling.annotation.EnableAsync; ...@@ -24,6 +25,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
@EnableAspectJAutoProxy @EnableAspectJAutoProxy
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableConfigurationProperties({SequencerProperties.class}) @EnableConfigurationProperties({SequencerProperties.class})
@EnableFeignClients
public class Bootstrap { public class Bootstrap {
public static void main(String[] args) { public static void main(String[] args) {
......
...@@ -13,25 +13,31 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter ...@@ -13,25 +13,31 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
@Component @Component
public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter { public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter {
@Override @Override
public void addFormatters(FormatterRegistry registry) { public void addFormatters(FormatterRegistry registry) {
registry.removeConvertible(String.class, Enum.class); registry.removeConvertible(String.class, Enum.class);
registry.addConverterFactory(new IntegerToEnumConverterFactory()); registry.addConverterFactory(new IntegerToEnumConverterFactory());
} }
/** /**
* 快速校验参数. 第一个出错后面的不用再校验了 * 快速校验参数. 第一个出错后面的不用再校验了
* @return *
*/ * @return
@Bean */
public MethodValidationPostProcessor methodValidationPostProcessor() { @Bean
MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor(); public MethodValidationPostProcessor methodValidationPostProcessor() {
ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class) MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();
.configure() ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
.addProperty("hibernate.validator.fail_fast", "true") .configure()
.buildValidatorFactory(); .addProperty("hibernate.validator.fail_fast", "true")
Validator validator = validatorFactory.getValidator(); .buildValidatorFactory();
postProcessor.setValidator(validator); Validator validator = validatorFactory.getValidator();
return postProcessor; postProcessor.setValidator(validator);
} return postProcessor;
}
// @Override
// public void addInterceptors(InterceptorRegistry registry) {
// registry.addInterceptor(new TokenInterceptor()).addPathPatterns("/innerapi/user/**");
// }
} }
\ No newline at end of file
...@@ -14,6 +14,7 @@ import cn.quantgroup.xyqb.exception.UserNotExistException; ...@@ -14,6 +14,7 @@ import cn.quantgroup.xyqb.exception.UserNotExistException;
import cn.quantgroup.xyqb.model.Gender; import cn.quantgroup.xyqb.model.Gender;
import cn.quantgroup.xyqb.model.IdType; import cn.quantgroup.xyqb.model.IdType;
import cn.quantgroup.xyqb.model.*; import cn.quantgroup.xyqb.model.*;
import cn.quantgroup.xyqb.remote.StmsRemoteService;
import cn.quantgroup.xyqb.repository.IUserDisableRecordRepository; import cn.quantgroup.xyqb.repository.IUserDisableRecordRepository;
import cn.quantgroup.xyqb.service.api.IUserApiService; import cn.quantgroup.xyqb.service.api.IUserApiService;
import cn.quantgroup.xyqb.service.auth.IIdCardService; import cn.quantgroup.xyqb.service.auth.IIdCardService;
...@@ -40,6 +41,8 @@ import org.apache.commons.lang3.math.NumberUtils; ...@@ -40,6 +41,8 @@ import org.apache.commons.lang3.math.NumberUtils;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -92,14 +95,15 @@ public class InnerController implements IBaseController { ...@@ -92,14 +95,15 @@ public class InnerController implements IBaseController {
@Autowired @Autowired
private ISmsService smsService; private ISmsService smsService;
@Autowired @Autowired
private LoginUserContext loginUserContext;
@Autowired
private IUserRegisterService userRegisterService; private IUserRegisterService userRegisterService;
@Resource @Resource
private ApplicationEventPublisher applicationEventPublisher; private ApplicationEventPublisher applicationEventPublisher;
@Resource @Resource
private CleanDataService cleanDataService; private CleanDataService cleanDataService;
@Autowired
private StmsRemoteService stmsRemoteService;
@Autowired @Autowired
private ITenantService tenantService; private ITenantService tenantService;
...@@ -1368,12 +1372,15 @@ public class InnerController implements IBaseController { ...@@ -1368,12 +1372,15 @@ public class InnerController implements IBaseController {
* @return * @return
*/ */
@RequestMapping(path = "/user/active", method = RequestMethod.POST) @RequestMapping(path = "/user/active", method = RequestMethod.POST)
public JsonResult activeUser(Long userId) { public JsonResult activeUser(Long userId,@RequestHeader(value = "Access-Token",required = false)String accessToken) {
boolean flushed = flushUserStatus(userId, true); boolean flushed = flushUserStatus(userId, true);
UserDisableRecord userDisableRecord = new UserDisableRecord(); UserDisableRecord userDisableRecord = new UserDisableRecord();
userDisableRecord.setUserId(userId); userDisableRecord.setUserId(userId);
userDisableRecord.setCreatedBy(loginUserContext.getUserName()); if(StringUtils.isNotEmpty(accessToken)){
userDisableRecord.setUpdatedBy(loginUserContext.getUserName()); LoginUserContext loginUserContext = getLoginUserContextFromStms(accessToken);
userDisableRecord.setCreatedBy(loginUserContext.getUserName());
userDisableRecord.setUpdatedBy(loginUserContext.getUserName());
}
userDisableRecord.setOperation_type((short) 1); userDisableRecord.setOperation_type((short) 1);
applicationEventPublisher.publishEvent(new UserDisableRecordEvent(this,userDisableRecord)); applicationEventPublisher.publishEvent(new UserDisableRecordEvent(this,userDisableRecord));
log.info("激活/启用 用户,userId:[{}],result:[{}]", userId, flushed); log.info("激活/启用 用户,userId:[{}],result:[{}]", userId, flushed);
...@@ -1388,12 +1395,15 @@ public class InnerController implements IBaseController { ...@@ -1388,12 +1395,15 @@ public class InnerController implements IBaseController {
* @return * @return
*/ */
@RequestMapping(path = "/user/disable", method = RequestMethod.POST) @RequestMapping(path = "/user/disable", method = RequestMethod.POST)
public JsonResult forbiddenUser(Long userId,String reason) { public JsonResult forbiddenUser(Long userId,String reason,@RequestHeader(value = "Access-Token",required = false)String accessToken) {
boolean flushed = flushUserStatus(userId, false); boolean flushed = flushUserStatus(userId, false);
UserDisableRecord userDisableRecord = new UserDisableRecord(); UserDisableRecord userDisableRecord = new UserDisableRecord();
userDisableRecord.setUserId(userId); userDisableRecord.setUserId(userId);
userDisableRecord.setCreatedBy(loginUserContext.getUserName()); if(StringUtils.isNotEmpty(accessToken)){
userDisableRecord.setUpdatedBy(loginUserContext.getUserName()); LoginUserContext loginUserContext = getLoginUserContextFromStms(accessToken);
userDisableRecord.setCreatedBy(loginUserContext.getUserName());
userDisableRecord.setUpdatedBy(loginUserContext.getUserName());
}
userDisableRecord.setReason(reason); userDisableRecord.setReason(reason);
userDisableRecord.setOperation_type((short) 0); userDisableRecord.setOperation_type((short) 0);
applicationEventPublisher.publishEvent(new UserDisableRecordEvent(this,userDisableRecord)); applicationEventPublisher.publishEvent(new UserDisableRecordEvent(this,userDisableRecord));
...@@ -1407,10 +1417,26 @@ public class InnerController implements IBaseController { ...@@ -1407,10 +1417,26 @@ public class InnerController implements IBaseController {
* @return List<UserDisableRecord> * @return List<UserDisableRecord>
*/ */
@RequestMapping(path = "/user/records/{userId}", method = RequestMethod.POST) @RequestMapping(path = "/user/records/{userId}", method = RequestMethod.POST)
public JsonResult disableRecordList( @PathVariable("userId") Long userId){ public JsonResult disableRecordList(@PathVariable("userId") Long userId,@RequestParam("page")int page,@RequestParam("size") int size){
return JsonResult.buildSuccessResultGeneric(iUserDisableRecordRepository.findByUserId(userId)); Pageable pageable = new PageRequest(page,size);
return JsonResult.buildSuccessResultGeneric(iUserDisableRecordRepository.findByUserIdOrderByCreatedAtDesc(userId,pageable));
}
private LoginUserContext getLoginUserContextFromStms(String accessToken){
LoginUserContext loginUserContext= new LoginUserContext();
OauthResult oauthResult = stmsRemoteService.checkToken(accessToken);
if (oauthResult == null || !Objects.equals(2000,
oauthResult.getCode())) {
throw new UserNotExistException("stms用户异常,请检查token");
}else{
LinkedHashMap onlineUser = (LinkedHashMap) oauthResult.getData();
loginUserContext.setUserId(onlineUser.get("id").toString());
loginUserContext.setUserName(String.valueOf(onlineUser.get("account")));
}
return loginUserContext;
} }
/** /**
* 重置用户实名信息接口 * 重置用户实名信息接口
* -- 供内部系统免密调用 * -- 供内部系统免密调用
......
...@@ -2,11 +2,13 @@ package cn.quantgroup.xyqb.entity; ...@@ -2,11 +2,13 @@ package cn.quantgroup.xyqb.entity;
import java.io.Serializable; import java.io.Serializable;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import lombok.Data; import lombok.Data;
@Data @Data
@Entity
@Table(name = "user_disable_record") @Table(name = "user_disable_record")
public class UserDisableRecord extends BaseEntity implements Serializable { public class UserDisableRecord extends BaseEntity implements Serializable {
@Column(name = "user_id") @Column(name = "user_id")
...@@ -21,6 +23,6 @@ public class UserDisableRecord extends BaseEntity implements Serializable { ...@@ -21,6 +23,6 @@ public class UserDisableRecord extends BaseEntity implements Serializable {
@Column(name="created_by") @Column(name="created_by")
private String createdBy; private String createdBy;
@Column(name = "updated_at") @Column(name = "updated_by")
private String updatedBy; private String updatedBy;
} }
...@@ -15,7 +15,7 @@ public class UserDisableRecordEvent extends ApplicationEvent { ...@@ -15,7 +15,7 @@ public class UserDisableRecordEvent extends ApplicationEvent {
public UserDisableRecordEvent(Object source, UserDisableRecord userDisableRecord) { public UserDisableRecordEvent(Object source, UserDisableRecord userDisableRecord) {
super(source); super(source);
userDisableRecord = userDisableRecord; this.userDisableRecord = userDisableRecord;
} }
} }
\ No newline at end of file
package cn.quantgroup.xyqb.filter;
import cn.hutool.extra.spring.SpringUtil;
import cn.quantgroup.xyqb.model.LoginUserContext;
import cn.quantgroup.xyqb.model.OauthResult;
import cn.quantgroup.xyqb.remote.StmsRemoteService;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Objects;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
@Slf4j
public class TokenInterceptor implements HandlerInterceptor {
private final LoginUserContext loginUserContext;
private final StmsRemoteService stmsRemoteService;
private final List<String> includes = new ArrayList<>();
public TokenInterceptor() {
this.loginUserContext = SpringUtil.getBean(LoginUserContext.class);
this.stmsRemoteService = SpringUtil.getBean(StmsRemoteService.class);
includes.add("/innerapi/user/disable");
includes.add("/innerapi/user/active");
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
if (includes.contains(request.getRequestURI())) {
String accessToken = request.getHeader("Access-Token");
//原有的拦截器判断逻辑
if (StringUtils.isNotEmpty(accessToken)) {
OauthResult oauthResult = stmsRemoteService.checkToken(accessToken);
if (oauthResult == null || !Objects.equals(2000,
oauthResult.getCode())) {
return false;
}else{
LinkedHashMap onlineUser = (LinkedHashMap) oauthResult.getData();
loginUserContext.setUserId(onlineUser.get("id").toString());
loginUserContext.setUserName(String.valueOf(onlineUser.get("account")));
}
}
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
}
}
\ No newline at end of file
...@@ -2,9 +2,7 @@ package cn.quantgroup.xyqb.model; ...@@ -2,9 +2,7 @@ package cn.quantgroup.xyqb.model;
import lombok.Data; import lombok.Data;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.context.annotation.RequestScope;
@RequestScope
@Component @Component
@Data @Data
public class LoginUserContext { public class LoginUserContext {
......
...@@ -5,7 +5,7 @@ import org.springframework.cloud.netflix.feign.FeignClient; ...@@ -5,7 +5,7 @@ import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestHeader;
@FeignClient(name = "kuaidi100", url = "http://www.kuaidi100.com/") @FeignClient(name = "stms", url = "${stms.https}")
public interface StmsRemoteService { public interface StmsRemoteService {
@PostMapping("/v2/oauth/currentuserinfo") @PostMapping("/v2/oauth/currentuserinfo")
OauthResult checkToken(@RequestHeader("Access-Token") String accessToken); OauthResult checkToken(@RequestHeader("Access-Token") String accessToken);
......
...@@ -2,10 +2,11 @@ package cn.quantgroup.xyqb.repository; ...@@ -2,10 +2,11 @@ package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.UserDisableRecord; import cn.quantgroup.xyqb.entity.UserDisableRecord;
import java.util.List; import java.util.List;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface IUserDisableRecordRepository public interface IUserDisableRecordRepository
extends JpaRepository<UserDisableRecord, Long>, JpaSpecificationExecutor<UserDisableRecord> { extends JpaRepository<UserDisableRecord, Long>, JpaSpecificationExecutor<UserDisableRecord> {
List<UserDisableRecord> findByUserId(Long userId); List<UserDisableRecord> findByUserIdOrderByCreatedAtDesc(Long userId, Pageable pageable);
} }
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