Commit 84d4af3e authored by 贷前—徐菲's avatar 贷前—徐菲

用户实名账户

parent 5f337151
...@@ -47,6 +47,6 @@ public class Bootstrap { ...@@ -47,6 +47,6 @@ public class Bootstrap {
springApplication.run(args); springApplication.run(args);
log.info("server start..."); log.info("server start...");
Sentry.init("http://13ef5642903a414c910f8d0e0a2c56ee:8b351ad1abf44de3b4c25f39105fb927@172.16.4.89:9000/6"); //Sentry.init("http://13ef5642903a414c910f8d0e0a2c56ee:8b351ad1abf44de3b4c25f39105fb927@172.16.4.89:9000/6");
} }
} }
...@@ -94,4 +94,6 @@ public interface Constants { ...@@ -94,4 +94,6 @@ public interface Constants {
String AES_KEY = "ScnmRBhuQpo9kBdn"; String AES_KEY = "ScnmRBhuQpo9kBdn";
String CREATE_USER_AUTHORIZED_FAIL="fail";
String CREATE_USER_AUTHORIZED_SUCCESS="success";
} }
package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.controller.IBaseController;
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.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Map;
/**
* @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;
@RequestMapping(value="/hasUserAuthorized",method = RequestMethod.GET)
public Boolean hasUserAuthorized(String idNo){
LOGGER.info("[hasUserAuthorized]需要校验的用户的身份证号为idNo:{}",idNo);
return userAuthorizedService.hasUserAuthorized(idNo);
}
@RequestMapping(value = "/createUserAuthorized",method = RequestMethod.POST)
public String createUserAuthorized(@RequestParam Map<String,String> parameters){
LOGGER.info("[createUserAuthorized]创建实名账户,parameters:{}",parameters);
return userAuthorizedService.createUserAuthorized(parameters);
}
@RequestMapping(value = "/getUserAuthorizedId",method = RequestMethod.GET)
public Long getUserAuthorizedId(Long userId){
LOGGER.info("[getUserAuthorizedId]获取实名账户的id,userId:{}",userId);
return userAuthorizedService.getUserAuthorizedId(userId);
}
}
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.model.AuthPattern;
import lombok.Data; import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
...@@ -28,7 +29,7 @@ public class UserAuthorized { ...@@ -28,7 +29,7 @@ public class UserAuthorized {
private String name; private String name;
@Column(name = "auth_pattern") @Column(name = "auth_pattern")
private String authPattern; private AuthPattern authPattern;
@Column(name = "available") @Column(name = "available")
private Boolean available; private Boolean available;
......
package cn.quantgroup.xyqb.entity;
import lombok.Data;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* @author xufei on 2018/1/5.
*/
@Data
@Entity
@Table(name = "user_authorized_change_record")
public class UserAuthorizedChangeRecord {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_authorized_id")
private Long userAuthorizedId;
@Column(name = "before_user_id")
private Long beforeUserId;
@Column(name = "after_user_id")
private Long afterUserId;
//创建时间
@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.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 userId 用户id
* @return 实体
*/
UserAuthorized findByUserId(Long userId);
}
package cn.quantgroup.xyqb.service.auth;
import java.util.Map;
/**
* @author xufei on 2018/1/5.
*/
public interface IUserAuthorizedService {
/**
* 该身份证是否有对应的实名账户
*
* @param idNo 身份证号
* @return true有实名账户 false无实名账户
*/
Boolean hasUserAuthorized(String idNo);
/**
* 创建实名账户
*
* @param parameters 请求参数
* @return 成功返回success 失败返回fail
*/
String createUserAuthorized(Map<String,String> parameters);
/**
* 通过userId获取实名账户表的id
*
* @param userId userId
* @return userAuthorized的id
*/
Long getUserAuthorizedId(Long userId);
}
package cn.quantgroup.xyqb.service.auth.impl;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import cn.quantgroup.xyqb.model.AuthPattern;
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 org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.Map;
/**
* @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 null;
}
} catch (ParseException e) {
LOGGER.error("[hasUserAuthorized]参数异常e:{}", e);
}
UserAuthorized userAuthorized = userAuthorizedRepository.findByIdNo(idNo);
LOGGER.info("[hasUserAuthorized]查询实名账户userAuthorized:{}", userAuthorized);
return null != userAuthorized;
}
@Override
public String createUserAuthorized(Map<String,String> parameters) {
if (CollectionUtils.isEmpty(parameters)){
return Constants.CREATE_USER_AUTHORIZED_FAIL;
}
String name = parameters.get("name");
String idNo= parameters.get("idNo");
Long userId = Long.valueOf(parameters.get("userId"));
String authPatternStr= parameters.get("authPattern");
AuthPattern authPattern =AuthPattern.valueOf(authPatternStr);
try {
if (StringUtils.isBlank(name) || StringUtils.isBlank(idNo) || null ==authPattern
|| !iIdCardService.isIdCardValid(idNo)) {
return Constants.CREATE_USER_AUTHORIZED_FAIL;
}
} catch (ParseException e) {
LOGGER.error("[createUserAuthorized]参数异常e:{}", e);
}
UserAuthorized userAuthorized =new UserAuthorized();
userAuthorized.setAuthPattern(authPattern);
userAuthorized.setAvailable(Boolean.TRUE);
userAuthorized.setName(name);
userAuthorized.setIdNo(idNo);
userAuthorized.setUserId(userId);
Timestamp now = new Timestamp(System.currentTimeMillis());
userAuthorized.setCreatedAt(now);
userAuthorized.setUpdatedAt(now);
try {
userAuthorized=userAuthorizedRepository.save(userAuthorized);
LOGGER.info("[createUserAuthorized]创建实名账户成功,userAuthorized:{}",userAuthorized);
return Constants.CREATE_USER_AUTHORIZED_SUCCESS;
} catch (Exception e) {
LOGGER.error("[createUserAuthorized]创建实名账户异常e:{}",e);
return Constants.CREATE_USER_AUTHORIZED_FAIL;
}
}
@Override
public Long getUserAuthorizedId(Long userId) {
if (null==userId ||userId==0 ){
return null;
}
UserAuthorized userAuthorized=userAuthorizedRepository.findByUserId(userId);
if (null==userAuthorized){
LOGGER.info("[getUserAuthorizedId]该实名账户不存在userId:{}",userId);
return null;
}
LOGGER.info("[getUserAuthorizedId]获取实名账户的id,userAuthorized:{}",userAuthorized);
return userAuthorized.getId();
}
}
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