Commit c165e56f authored by 技术部-任文超's avatar 技术部-任文超

Merge branch 'master' into feature/junit_test

# Conflicts:
#	pom.xml
#	src/main/java/cn/quantgroup/xyqb/Bootstrap.java
#	src/main/resources/META-INF/app.properties
#	src/test/resources/META-INF/app.properties
parents ab172d63 182c5496
package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.UserAuthorizedParam;
import cn.quantgroup.xyqb.service.auth.IUserAuthorizedService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author xufei on 2018/1/5.
*/
@RestController
@RequestMapping("/user/auth")
public class UserAuthorizedController {
private static final Logger LOGGER = LoggerFactory.getLogger(UserAuthorizedController.class);
@Resource
private IUserAuthorizedService userAuthorizedService;
@LogHttpCaller
@RequestMapping(value = "/hasUserAuthorized")
public JsonResult hasUserAuthorized(String idNo) {
LOGGER.info("[hasUserAuthorized]需要校验的用户的身份证号为idNo:{}", idNo);
if (userAuthorizedService.hasUserAuthorized(idNo)) {
return JsonResult.buildSuccessResult(null, true);
} else {
return JsonResult.buildErrorStateResult(null, false);
}
}
@LogHttpCaller
@RequestMapping(value = "/createUserAuthorized")
public JsonResult createUserAuthorized(UserAuthorizedParam userAuthorizedParam) {
LOGGER.info("[createUserAuthorized]创建实名账户,userAuthorizedParam:{},", userAuthorizedParam);
try {
if (userAuthorizedService.checkUserAuthorizedParam(userAuthorizedParam)) {
return JsonResult.buildErrorStateResult("参数异常", null);
}
} catch (Exception e) {
LOGGER.info("[createUserAuthorized]创建实名账户失败e:{}", e);
return JsonResult.buildErrorStateResult("参数异常", null);
}
UserAuthorized userAuthorized = userAuthorizedService.createUserAuthorized(userAuthorizedParam);
if (null == userAuthorized) {
return JsonResult.buildErrorStateResult("重复创建异常", null);
} else {
return JsonResult.buildSuccessResult("创建成功", userAuthorized.getId());
}
}
@LogHttpCaller
@RequestMapping(value = "/getUserAuthorizedId")
public JsonResult getUserAuthorizedId(String userUuid) {
LOGGER.info("[getUserAuthorizedId]获取实名账户的id,userUuid:{}", userUuid);
return JsonResult.buildSuccessResult(null, userAuthorizedService.getUserAuthorizedId(userUuid));
}
}
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.model.AuthPattern;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* @author xufei on 2018/1/5.
*/
@Data
@Entity
@Table(name = "user_authorized")
public class UserAuthorized {
@Id
@Column(name = "id")
@GeneratedValue(generator = "uuid")
@GenericGenerator(name ="uuid" , strategy = "uuid")
private String id;
@Column(name = "user_uuid")
private String userUuid;
//证件号
@Column(name = "id_no")
private String idNo;
@Column(name = "name")
private String name;
@Column(name = "auth_pattern")
private AuthPattern authPattern;
@Column(name = "available")
private Boolean available;
//创建时间
@Column(name = "created_at")
private Timestamp createdAt;
//上一次修改时间
@Column(name = "updated_at")
private Timestamp updatedAt;
}
package cn.quantgroup.xyqb.model;
/**
* @author xufei on 2018/1/5.
*/
public enum AuthPattern {
ZMXY("芝麻分授权"),
FOUR_ELEMENTS_OF_BANK_CARD("银行卡四要素");
private String desc;
AuthPattern(String desc) {
this.desc = desc;
}
}
package cn.quantgroup.xyqb.model;
import lombok.Data;
import lombok.Getter;
/**
* @author xufei on 2018/1/10.
*/
@Getter
@Data
public class UserAuthorizedParam {
private String name;
private String idNo;
private Long userId;
private String authPattern;
private String userUuid;
}
package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @author xufei on 2018/1/5.
*/
public interface IUserAuthorizedRepository extends JpaRepository<UserAuthorized, Long>, JpaSpecificationExecutor<UserAuthorized> {
/**
* 通过身份证号查找实名账户
*
* @param idNo 身份证号
* @return 实体
*/
UserAuthorized findByIdNo(String idNo);
/**
* 通过userId查找实名账户
*
* @param userUuid 用户表的uuid
* @return 实体
*/
UserAuthorized findByUserUuid(String userUuid);
}
package cn.quantgroup.xyqb.service.auth;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import cn.quantgroup.xyqb.model.UserAuthorizedParam;
/**
* @author xufei on 2018/1/5.
*/
public interface IUserAuthorizedService {
/**
* 该身份证是否有对应的实名账户
*
* @param idNo 身份证号
* @return
*/
Boolean hasUserAuthorized(String idNo);
/**
* 创建实名账户
*
* @param userAuthorizedParam
* @return
*/
UserAuthorized createUserAuthorized(UserAuthorizedParam userAuthorizedParam);
/**
* 通过userId获取实名账户表的id
*
* @param userUuid userUuid
* @return
*/
String getUserAuthorizedId(String userUuid);
/**
* 校验参数
*
* @param userAuthorizedParam
* @return
* @throws Exception
*/
Boolean checkUserAuthorizedParam(UserAuthorizedParam userAuthorizedParam) throws Exception;
}
package cn.quantgroup.xyqb.service.auth.impl;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import cn.quantgroup.xyqb.model.AuthPattern;
import cn.quantgroup.xyqb.model.UserAuthorizedParam;
import cn.quantgroup.xyqb.repository.IUserAuthorizedRepository;
import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.auth.IUserAuthorizedService;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.sql.Timestamp;
import java.text.ParseException;
/**
* @author xufei on 2018/1/5.
*/
@Service
public class UserAuthorizedServiceImpl implements IUserAuthorizedService {
private static final Logger LOGGER = LoggerFactory.getLogger(UserAuthorizedServiceImpl.class);
@Resource
private IIdCardService iIdCardService;
@Resource
private IUserAuthorizedRepository userAuthorizedRepository;
@Override
public Boolean hasUserAuthorized(String idNo) {
try {
if (StringUtils.isBlank(idNo) || !iIdCardService.isIdCardValid(idNo)) {
return Boolean.FALSE;
}
} catch (ParseException e) {
LOGGER.error("[hasUserAuthorized]参数异常e:{}", e);
}
UserAuthorized userAuthorized = userAuthorizedRepository.findByIdNo(idNo);
LOGGER.info("[hasUserAuthorized]查询实名账户userAuthorized:{}", userAuthorized);
return null != userAuthorized;
}
@Override
public Boolean checkUserAuthorizedParam(UserAuthorizedParam userAuthorizedParam) throws Exception {
if (null == userAuthorizedParam) {
return Boolean.TRUE;
}
Long userId = userAuthorizedParam.getUserId();
String userUuid = userAuthorizedParam.getUserUuid();
if (userId == null || userId == 0L) {
if (StringUtils.isBlank(userUuid)) {
return Boolean.TRUE;
}
}
String name = userAuthorizedParam.getName();
String authPattern = userAuthorizedParam.getAuthPattern();
String idNo = userAuthorizedParam.getIdNo();
return (StringUtils.isBlank(name) || StringUtils.isBlank(authPattern) || !iIdCardService.isIdCardValid(idNo));
}
@Override
public UserAuthorized createUserAuthorized(UserAuthorizedParam userAuthorizedParam) {
AuthPattern authPatternEnum = AuthPattern.valueOf(userAuthorizedParam.getAuthPattern());
UserAuthorized userAuthorized = new UserAuthorized();
userAuthorized.setAuthPattern(authPatternEnum);
userAuthorized.setAvailable(Boolean.TRUE);
userAuthorized.setName(userAuthorizedParam.getName());
userAuthorized.setIdNo(userAuthorizedParam.getIdNo());
userAuthorized.setUserUuid(userAuthorizedParam.getUserUuid());
Timestamp now = new Timestamp(System.currentTimeMillis());
userAuthorized.setCreatedAt(now);
userAuthorized.setUpdatedAt(now);
try {
userAuthorized = userAuthorizedRepository.save(userAuthorized);
LOGGER.info("[createUserAuthorized]创建实名账户成功,userAuthorized:{}", userAuthorized);
return userAuthorized;
} catch (Exception e) {
LOGGER.error("[createUserAuthorized]创建实名账户异常e:{}", e);
return null;
}
}
@Override
public String getUserAuthorizedId(String userUuid) {
if (StringUtils.isBlank(userUuid)) {
return null;
}
UserAuthorized userAuthorized = userAuthorizedRepository.findByUserUuid(userUuid);
LOGGER.info("[getUserAuthorizedId]获取实名账户的id,userUuid:{},userAuthorized:{}", userUuid,userAuthorized);
if (null == userAuthorized) {
return null;
}
return userAuthorized.getId();
}
}
...@@ -19,12 +19,12 @@ import org.apache.http.message.BasicNameValuePair; ...@@ -19,12 +19,12 @@ import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -39,10 +39,10 @@ public class TestUserLogin { ...@@ -39,10 +39,10 @@ public class TestUserLogin {
private MockHttpServletRequest request = new MockHttpServletRequest();; private MockHttpServletRequest request = new MockHttpServletRequest();;
@Autowired @Resource
private UserController userController; private UserController userController;
@Autowired @Resource
private InnerController innerController; private InnerController innerController;
@Test @Test
......
package repsitory;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import cn.quantgroup.xyqb.model.AuthPattern;
import cn.quantgroup.xyqb.repository.IUserAuthorizedRepository;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import demo.BaseParametersTests;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Example;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collection;
/**
* 业务层测试用例
* @author renwc
* @date 2018-01-05
*/
@Slf4j
@Rollback
@Transactional
@RunWith(value = Parameterized.class)
@SpringBootTest(classes = Bootstrap.class)
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
public class UserAuthorizedRepsitoryTests extends BaseParametersTests {
@Resource
private IUserAuthorizedRepository userAuthorizedRepository;
UserAuthorized obj = new UserAuthorized();
public UserAuthorizedRepsitoryTests(String userUuid, String idNo, String name, AuthPattern authPattern, Boolean available) {
obj.setUserUuid(userUuid);
obj.setIdNo(idNo);
obj.setName(name);
obj.setAuthPattern(authPattern);
obj.setAvailable(available);
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
Object[][] data = new Object[][]{
{1L,"350504198805144101","史书一", AuthPattern.ZMXY, true},
{10L,"350504198805144102","史书二", AuthPattern.ZMXY, true},
{20L,"350504198805144103","史书三", AuthPattern.FOUR_ELEMENTS_OF_BANK_CARD, true},
{1L, "IDNO-1", "王-1", AuthPattern.ZMXY, true}
};
return Arrays.asList(data);
}
@Test
public void testExist() throws Exception {
log.info("testExist: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
UserAuthorized obj = new UserAuthorized();
boolean exist = userAuthorizedRepository.exists(Example.of(obj));
Assert.assertNotNull(obj);
}
@Test
public void testSave() throws Exception {
log.info("testSave: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
UserAuthorized obj = new UserAuthorized();
obj = userAuthorizedRepository.save(obj);
Assert.assertNotNull(obj);
}
@Test
public void testQuery(){
log.info("testQuery: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
UserAuthorized obj = userAuthorizedRepository.findByIdNo(this.obj.getIdNo());
Assert.assertNotNull(obj);
}
}
...@@ -4,7 +4,6 @@ import cn.quantgroup.xyqb.Bootstrap; ...@@ -4,7 +4,6 @@ import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.entity.Address; import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.service.user.IAddressService; import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IContactService; import cn.quantgroup.xyqb.service.user.IContactService;
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer; import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -12,14 +11,13 @@ import org.junit.Before; ...@@ -12,14 +11,13 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.junit.runners.Parameterized; import org.junit.runners.Parameterized;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback; import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestContextManager; import org.springframework.test.context.TestContextManager;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
...@@ -39,9 +37,9 @@ public class TestUserService { ...@@ -39,9 +37,9 @@ public class TestUserService {
private TestContextManager testContextManager; private TestContextManager testContextManager;
@Autowired @Resource
private IAddressService addressService; private IAddressService addressService;
@Autowired @Resource
private IContactService contactService; private IContactService contactService;
private Address addressObj; private Address addressObj;
......
package service;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.model.AuthPattern;
import cn.quantgroup.xyqb.model.UserAuthorizedParam;
import cn.quantgroup.xyqb.service.auth.IUserAuthorizedService;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import demo.BaseParametersTests;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collection;
import java.util.Optional;
/**
* 业务层测试用例
* @author renwc
* @date 2018-01-05
*/
@Slf4j
@Rollback
@Transactional
@RunWith(value = Parameterized.class)
@SpringBootTest(classes = Bootstrap.class)
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
public class UserAuthorizedServiceTests extends BaseParametersTests {
@Resource
private IUserAuthorizedService userAuthorizedService;
UserAuthorizedParam obj = new UserAuthorizedParam();
public UserAuthorizedServiceTests(String userUuid, String idNo, String name, AuthPattern authPattern, Boolean available) {
obj.setUserUuid(userUuid);
obj.setIdNo(idNo);
obj.setName(name);
obj.setAuthPattern(Optional.ofNullable(authPattern).orElse(AuthPattern.ZMXY).name());
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
Object[][] data = new Object[][]{
{1L,"350504198805144101","史书一", AuthPattern.ZMXY, true},
{10L,"350504198805144102","史书二", AuthPattern.ZMXY, true},
{20L,"350504198805144103","史书三", AuthPattern.FOUR_ELEMENTS_OF_BANK_CARD, true},
{1L, "IDNO-1", "王-1", AuthPattern.ZMXY, true}
};
return Arrays.asList(data);
}
@Test
public void testExist() throws Exception {
log.info("testExist: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
Object obj = userAuthorizedService.hasUserAuthorized(this.obj.getIdNo());
Assert.assertNotNull(obj);
}
@Test
public void testSave() throws Exception {
log.info("testSave: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
Object obj = userAuthorizedService.createUserAuthorized(this.obj);
Assert.assertNotNull(obj);
}
@Test
public void testQuery(){
log.info("testQuery: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
Object obj = userAuthorizedService.getUserAuthorizedId(this.obj.getUserUuid());
Assert.assertNotNull(obj);
}
}
package web;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.model.AuthPattern;
import cn.quantgroup.xyqb.model.UserAuthorizedParam;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import demo.BaseParametersTests;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Optional;
/**
* 业务层测试用例
* @author renwc
* @date 2018-01-05
*/
@Slf4j
@Rollback
@Transactional
@RunWith(value = SpringRunner.class)
@SpringBootTest(classes = Bootstrap.class, webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
public class UserAuthorizedControllerTests extends BaseParametersTests {
@Resource
private TestRestTemplate restTemplate;
private UserAuthorizedParam obj = new UserAuthorizedParam();
{
Long userId = 1L;
String idNo = "350504198805144101";
String name = "史书一";
AuthPattern authPattern = AuthPattern.ZMXY;
Boolean available = true;
obj.setUserId(userId);
obj.setIdNo(idNo);
obj.setName(name);
obj.setAuthPattern(Optional.ofNullable(authPattern).orElse(AuthPattern.ZMXY).name());
}
@Test
public void testExist() throws Exception {
ResponseEntity<String> phil = restTemplate.getForEntity("/user/auth/{model}?idNo={idNo}", String.class, "hasUserAuthorized", obj.getIdNo());
log.info("testExist: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserId(), obj.getAuthPattern());
Assert.assertEquals(phil.getStatusCode(), HttpStatus.OK);
}
@Test
public void testSave() throws Exception {
ResponseEntity<String> phil = restTemplate.postForEntity("/user/auth/{model}", this.obj, String.class, "createUserAuthorized");
log.info("testSave: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserId(), obj.getAuthPattern());
Assert.assertEquals(phil.getStatusCode(), HttpStatus.OK);
}
@Test
public void testQuery(){
ResponseEntity<String> phil = restTemplate.getForEntity("/user/auth/{model}?userId={userId}", String.class, "getUserAuthorizedId", obj.getUserId());
Assert.assertEquals(phil.getStatusCode(), HttpStatus.OK);
}
}
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