Commit 86b5cbc0 authored by Java-刘 彧阳's avatar Java-刘 彧阳

记录白条商户注册的渠道号,并在用户登录时和原来的登录信息一起存入redis,基本保持原有数据结构不变

parent 0c126d5d
......@@ -4,16 +4,20 @@ import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.Merchant;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserBtRegister;
import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.exception.NullUserException;
import cn.quantgroup.xyqb.model.*;
import cn.quantgroup.xyqb.model.session.LoginInfo;
import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.repository.IUserBtRegisterRepository;
import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.merchant.IMerchantService;
import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.sms.ISmsService;
import cn.quantgroup.xyqb.service.user.ILkbUserService;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.IPUtil;
......@@ -59,7 +63,8 @@ public class AppController implements IBaseController {
private IIdCardService idCardService;
@Autowired
private IMerchantService merchantService;
@Autowired
private IUserBtRegisterService userBtRegisterService;
/**
* 第三方用户登录
*/
......@@ -68,7 +73,7 @@ public class AppController implements IBaseController {
String phoneNo,
@RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId,
String idNo, String name, String key, @RequestParam(required = false, defaultValue = "") String appChannel, HttpServletRequest request
String idNo, String name, String key, @RequestParam(required = false, defaultValue = "") String appChannel,@RequestParam(required = false)Long btRegisterChannelId, HttpServletRequest request
) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
......@@ -78,7 +83,7 @@ public class AppController implements IBaseController {
LOGGER.info("第三方用户登录, loginFrom:{}, requestIp:{}", registerFrom, requestIp);
User user = userService.findByPhoneInDb(phoneNo);
if (user == null) {
user = register(registerFrom, phoneNo, idNo, name, channelId);
user = register(registerFrom, phoneNo, idNo, name, channelId,btRegisterChannelId);
}
if (user == null) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
......@@ -103,6 +108,8 @@ public class AppController implements IBaseController {
return new JsonResult(bean);
}
/**
* 第三方用户登录并返回用户信息
*/
......@@ -111,7 +118,7 @@ public class AppController implements IBaseController {
String phoneNo,
@RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId,
String idNo, String name, String key, @RequestParam(required = false, defaultValue = "") String appChannel, HttpServletRequest request
String idNo, String name, String key, @RequestParam(required = false, defaultValue = "") String appChannel, @RequestParam(required = false) Long btRegisterChannelId,HttpServletRequest request
) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
......@@ -121,7 +128,7 @@ public class AppController implements IBaseController {
LOGGER.info("第三方用户登录, loginFrom:{}, requestIp:{}", registerFrom, requestIp);
User user = userService.findByPhoneInDb(phoneNo);
if (user == null) {
user = register(registerFrom, phoneNo, idNo, name, channelId);
user = register(registerFrom, phoneNo, idNo, name, channelId,btRegisterChannelId);
}
if (user == null) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
......@@ -153,6 +160,26 @@ public class AppController implements IBaseController {
return JsonResult.buildSuccessResult("", loginInfo);
}
/**
* 注册新用户,带白条渠道号
* @param registerFrom
* @param phoneNo
* @param idNo
* @param name
* @param channelId
* @param btRegisterChannelId
* @return
*/
private User register(Long registerFrom, String phoneNo, String idNo, String name, Long channelId, Long btRegisterChannelId) {
User user = register(registerFrom, phoneNo, idNo, name, channelId);
if(null != user && null != btRegisterChannelId && channelId == 222L) {
UserBtRegister userBtRegister = new UserBtRegister();
userBtRegister.setUserId(user.getId());
userBtRegister.setRegisterBtMerchantId(btRegisterChannelId);
userBtRegisterService.save(userBtRegister);
}
return user;
}
/**
* 注册新用户
......
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.config.http.Timestamp2LongConverter;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* Created by Administrator on 2017/5/16.
*/
@Getter
@Setter
@ToString
@Entity
@Table(name = "user_bt_register")
public class UserBtRegister implements Serializable {
private static final long serialVersionUID = -1L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_id")
private Long userId;
@Column(name = "register_bt_merchant_id")
private Long registerBtMerchantId;
@Column(name = "is_active")
private Boolean isActive;
//创建时间
@Column(name = "created_at")
private Timestamp createdAt;
//上一次修改时间
@Column(name = "updated_at")
@JSONField(serializeUsing = Timestamp2LongConverter.class)
private Timestamp updatedAt;
@PrePersist
public void prePersist(){
Timestamp now = new Timestamp(System.currentTimeMillis());
this.createdAt =now;
this.updatedAt =now;
}
@PreUpdate
public void preUpdate(){
Timestamp now = new Timestamp(System.currentTimeMillis());
this.createdAt =now;
this.updatedAt =now;
}
}
......@@ -11,4 +11,5 @@ public class LoginProperties {
private Long createdFrom = 1L;
private String appChannel = "";
private String merchantName;
private Long btMerchantId =1L;
}
package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.UserBtRegister;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* Created by Administrator on 2017/5/16.
*/
public interface IUserBtRegisterRepository extends JpaRepository<UserBtRegister, Long>,JpaSpecificationExecutor<UserBtRegister> {
}
package cn.quantgroup.xyqb.service.session.aspect;
import java.lang.annotation.*;
/**
* 用户的白条注册信息填充标记
* Created by ocean on 2017/5/16.
*/
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UserBtRegisterFill {
}
package cn.quantgroup.xyqb.service.session.aspect;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserBtRegister;
import cn.quantgroup.xyqb.model.session.SessionValue;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
/**
* Created by Administrator on 2017/5/16.
*/
@Aspect
@Component
@Order(value = Ordered.HIGHEST_PRECEDENCE + 200)
public class UserBtRegisterFillAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(UserBtRegisterFillAspect.class);
@Autowired
private IUserBtRegisterService userBtRegisterService;
@Pointcut("@annotation(cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill)") //生成还款计划的时候,去生成趸交服务费
public void userBtRegisterFillCut() {
}
@Around("userBtRegisterFillCut()")
public Object handleSingleServiceFeeRule(ProceedingJoinPoint pjp) throws Throwable {
Object[] args = pjp.getArgs();
try {
args =fillUserBtRegister(args);
}catch (Exception e){
LOGGER.error("补充用户白条登录渠道信息失败",e);
}
return pjp.proceed(args);
}
private Object[] fillUserBtRegister(Object[] args) {
for (int i = 0;i<args.length;i++){
Object obj = args[i];
if (obj instanceof SessionValue){
SessionValue value =(SessionValue)obj;
UserBtRegister userBtRegister = userBtRegisterService.findByUserId(value.getUser().getId());
if(null != userBtRegister && null != value.getLoginProperties()){
value.getLoginProperties().setBtMerchantId(userBtRegister.getRegisterBtMerchantId());
}
}
}
return args;
}
}
......@@ -8,6 +8,7 @@ import cn.quantgroup.xyqb.model.LoginProperties;
import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.model.session.SessionValue;
import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill;
import com.alibaba.fastjson.JSON;
import com.google.common.base.Joiner;
import lombok.extern.slf4j.Slf4j;
......@@ -121,6 +122,7 @@ public class SessionServiceImpl implements ISessionService {
}
@Override
@UserBtRegisterFill
public void persistSession(String token, SessionValue sessionValue) {
Timestamp current = new Timestamp(System.currentTimeMillis());
sessionValue.setLastAccessTime(current);
......
package cn.quantgroup.xyqb.service.user;
import cn.quantgroup.xyqb.entity.UserBtRegister;
/**
* Created by Administrator on 2017/5/16.
*/
public interface IUserBtRegisterService {
UserBtRegister findByUserId(Long userId);
UserBtRegister save(UserBtRegister userBtRegister);
}
package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.xyqb.entity.UserBtRegister;
import cn.quantgroup.xyqb.repository.IUserBtRegisterRepository;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2017/5/16.
*/
@Service
public class UserBtRegisterServiceImpl implements IUserBtRegisterService {
@Autowired
private IUserBtRegisterRepository userBtRegisterRepository;
@Override
@Cacheable(value = "btRegisterCache", key = "'userId' + #userId", unless = "#result == null", cacheManager = "cacheManager")
public UserBtRegister findByUserId(Long userId) {
if(null != userId) {
return userBtRegisterRepository.findOne((root, query, cb) -> {
List<Predicate> list = new ArrayList<>();
list.add(cb.equal(root.get("isActive").as(Boolean.class), Boolean.TRUE));
list.add(cb.equal(root.get("userId").as(Long.class), userId));
Predicate[] p = new Predicate[list.size()];
query.where(cb.and(list.toArray(p)));
return query.getRestriction();
});
}
return null;
}
@Override
public UserBtRegister save(UserBtRegister userBtRegister) {
return userBtRegisterRepository.saveAndFlush(userBtRegister);
}
}
configserver.disable=1
configserver.system=xyqb-user
xyqb.data.mysql.jdbc-url=jdbc:mysql://192.168.4.163:3306/xyqb_user?useUnicode=true&characterEncoding=UTF8
xyqb.data.mysql.jdbc-url=jdbc:mysql://192.168.4.22:3306/xyqb_user?useUnicode=true&characterEncoding=UTF8
#xyqb.data.mysql.jdbc-url=jdbc:mysql://192.168.4.163:3306/xyqb_user?useUnicode=true&characterEncoding=UTF8
xyqb.data.mysql.password=qatest
......@@ -15,7 +16,7 @@ xyqb.filter.allowedHeaders=Origin, No-Cache, x-auth-token, X-Requested-With, If-
xyqb.data.redis.defaultExpiration=3600
# redis
xyqb.redis.master.host=192.168.4.163
xyqb.redis.master.host=192.168.4.22
xyqb.redis.master.port=6379
xyqb.redis.master.name=
xyqb.redis.sentinel1.host=
......
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