Commit b210b512 authored by 杨钧's avatar 杨钧

客服绑卡接口新增

parent 9542e687
......@@ -17,6 +17,8 @@ public interface Constant {
String LOGIN_FAIL = "登录失败";
String NAME_OR_PWD_ERROR = "用户名或密码错误";
String SUCCESS_CODE = "0000";
Gson GSON = new Gson();
}
......@@ -2,6 +2,7 @@ package cn.quantgroup.customer.enums;
public enum ErrorCodeEnum {
NET_ERROR(6001L, "网络通讯异常"),
RETURN_ERROR(7001L, "返回值异常"),
PARAM_ERROR(7002L, "参数异常");
......
package cn.quantgroup.customer.rest;
import cn.quantgroup.customer.rest.param.card.ModifyCardsQuery;
import cn.quantgroup.customer.rest.param.card.ModifyReservePhone;
import cn.quantgroup.customer.rest.param.card.UnBindCardModel;
import cn.quantgroup.customer.rest.vo.JsonResult;
import cn.quantgroup.customer.service.ICardService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author yangjun
* @Date 2020/3/9 10:40
* @Desc 银行卡相关
* @Update
*/
@Slf4j
@RestController
@RequestMapping("/bindcard")
public class CardRest {
@Autowired
private ICardService cardService;
/**
* 查询用户绑卡信息
*
* @param cardsQuery
* @return
*/
@GetMapping("/info")
public JsonResult queryCardLists(ModifyCardsQuery cardsQuery) {
log.info("[查询用户绑卡列表],请求参数:cardsQuery={}", cardsQuery);
return cardService.queryCardLists(cardsQuery);
}
/**
* 绑卡关系查询
*
* @param bankId
* @return
*/
@GetMapping("/relation/{bankId}")
public JsonResult relation(@PathVariable Long bankId) {
log.info("[绑卡关系查询],请求参数:bankId={}", bankId);
return cardService.queryCardRelation(bankId);
}
/**
* 解除绑定
*
* @param unBindCardModel
* @return
*/
@PostMapping("/unbind")
public JsonResult unbind(UnBindCardModel unBindCardModel) {
log.info("[解除绑定],请求参数:unBindCardModel={}", unBindCardModel);
return cardService.unBindCardRelation(unBindCardModel);
}
/**
* 修改预留手机号
*
* @param modifyReservePhone
* @return
*/
@PostMapping("/reservephone")
public JsonResult modifyReservePhone(ModifyReservePhone modifyReservePhone) {
log.info("[解除绑定],请求参数:modifyReservePhone={}", modifyReservePhone);
return cardService.modifyReservePhone(modifyReservePhone);
}
}
package cn.quantgroup.customer.rest.param.card;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @author yangjun
* @Date 2020/3/9 10:42
* @Desc
* @Update
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class ModifyCardsQuery {
private String phoneNo;
private Long userId;
}
package cn.quantgroup.customer.rest.param.card;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @author yangjun
* @Date 2020/3/9 13:36
* @Desc
* @Update
*/
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class ModifyReservePhone {
private Long bankId;
private Long userId;
private String phoneNo;
}
package cn.quantgroup.customer.rest.param.card;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @author yangjun
* @Date 2020/3/9 12:52
* @Desc
* @Update
*/
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class UnBindCardModel {
private Long bindCardRecordId;
private Long userId;
}
package cn.quantgroup.customer.rest.vo.card;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.List;
/**
* @author Jony
* @Date 2020/3/9 11:20
* @Desc
* @Update
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class CardResult {
private List<XyqbCardsInfo> bindCardInfo;
// TODO 还有user信息
}
package cn.quantgroup.customer.rest.vo.card;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @author yangjun
* @Date 2020/3/9 11:48
* @Desc
* @Update
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class XyqbCardRelation {
private Long bindCardRecordId;
private String accountNo;
private String payApproachDesc;
private String createAt;
}
package cn.quantgroup.customer.rest.vo.card;
import cn.quantgroup.customer.constant.Constant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.List;
import java.util.Objects;
/**
* @author yangjun
* @Date 2020/3/9 11:13
* @Desc
* @Update
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class XyqbCardRelationResult {
private String msg;
private String code;
private String businessCode;
private Boolean success;
private List<XyqbCardRelation> data;
public boolean isSucc() {
return Constant.SUCCESS_CODE.equals(this.getCode()) && Objects.nonNull(this.data);
}
}
package cn.quantgroup.customer.rest.vo.card;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @author yangjun
* @Date 2020/3/9 11:12
* @Desc
* @Update
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class XyqbCardsInfo {
private Long id;
private String cardNo;
private String bankName;
private String preservePhoneNo;
private String createAt;
}
package cn.quantgroup.customer.rest.vo.card;
import cn.quantgroup.customer.constant.Constant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.List;
import java.util.Objects;
/**
* @author yangjun
* @Date 2020/3/9 11:13
* @Desc
* @Update
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class XyqbCardsResult {
private String msg;
private String code;
private String businessCode;
private Boolean success;
private List<XyqbCardsInfo> data;
public boolean isSucc() {
return Constant.SUCCESS_CODE.equals(this.getCode()) && Objects.nonNull(this.data);
}
}
package cn.quantgroup.customer.service;
import cn.quantgroup.customer.rest.param.card.ModifyCardsQuery;
import cn.quantgroup.customer.rest.param.card.ModifyReservePhone;
import cn.quantgroup.customer.rest.param.card.UnBindCardModel;
import cn.quantgroup.customer.rest.vo.JsonResult;
/**
* 银行卡相关
*/
public interface ICardService {
JsonResult queryCardLists(ModifyCardsQuery cardsQuery);
JsonResult queryCardRelation(Long bankId);
JsonResult unBindCardRelation(UnBindCardModel unBindCardModel);
JsonResult modifyReservePhone(ModifyReservePhone modifyReservePhone);
}
package cn.quantgroup.customer.service;
import cn.quantgroup.customer.rest.param.card.ModifyReservePhone;
import cn.quantgroup.customer.rest.param.card.UnBindCardModel;
import cn.quantgroup.customer.rest.param.repay.RepayOrderQuery;
public interface IXyqbService {
String findRepayOrders(RepayOrderQuery repayOrderQuery);
String queryCardLists(Long userId);
String queryCardRelation(Long bankId);
String unBindCardRelation(UnBindCardModel unBindCardModel);
String modifyReservePhone(ModifyReservePhone modifyReservePhone);
}
package cn.quantgroup.customer.service.impl;
import cn.quantgroup.customer.enums.ErrorCodeEnum;
import cn.quantgroup.customer.rest.param.card.ModifyCardsQuery;
import cn.quantgroup.customer.rest.param.card.ModifyReservePhone;
import cn.quantgroup.customer.rest.param.card.UnBindCardModel;
import cn.quantgroup.customer.rest.vo.JsonResult;
import cn.quantgroup.customer.rest.vo.card.CardResult;
import cn.quantgroup.customer.rest.vo.card.XyqbCardRelationResult;
import cn.quantgroup.customer.rest.vo.card.XyqbCardsResult;
import cn.quantgroup.customer.service.ICardService;
import cn.quantgroup.customer.service.IXyqbService;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* @author yangjun
* @Date 2020/3/9 10:52
* @Desc
* @Update
*/
@Slf4j
@Service("cardService")
public class CardServiceImpl implements ICardService {
@Autowired
private IXyqbService xyqbService;
@Override
public JsonResult queryCardLists(ModifyCardsQuery cardsQuery) {
if (Objects.isNull(cardsQuery)) {
log.error("请求参数 cardsQuery 为空");
return JsonResult.buildErrorStateResult(ErrorCodeEnum.PARAM_ERROR.getMessage(), ErrorCodeEnum.PARAM_ERROR.getCode());
}
if (StringUtils.isBlank(cardsQuery.getPhoneNo()) && Objects.isNull(cardsQuery.getUserId())) {
log.error("请求参数 phoneNo 和 userId 不能同时为空");
return JsonResult.buildErrorStateResult("phoneNo 和 userId 不能同时为空", ErrorCodeEnum.RETURN_ERROR.getCode());
}
Long userId = cardsQuery.getUserId();
if (Objects.isNull(userId)) {
// TODO 需要根据手机号查询用户userId
userId = null;
}
//发起xyqb查询
String cardXyqbStr = xyqbService.queryCardLists(userId);
log.info("[查询xyqb返回绑卡信息],cardXyqbStr={}", cardXyqbStr);
if (StringUtils.isBlank(cardXyqbStr)) {
log.error("[查询xyqb返回绑卡信息],返回结果为null");
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
}
XyqbCardsResult xyqbCardsResult = null;
try {
xyqbCardsResult = JSONObject.parseObject(cardXyqbStr, XyqbCardsResult.class);
} catch (Exception e) {
log.error("[绑卡信息转换异常]", e);
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
}
if (!xyqbCardsResult.isSucc()) {
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
}
CardResult cardResult = new CardResult();
cardResult.setBindCardInfo(xyqbCardsResult.getData());
log.info("[查询绑卡信息],返回 cardResult={}", cardResult);
return JsonResult.buildSuccessResult("处理成功", cardResult);
}
/**
* 查询卡关联信息
*
* @param bankId
* @return
*/
@Override
public JsonResult queryCardRelation(Long bankId) {
if (Objects.isNull(bankId)) {
log.error("请求参数 bankId 为空");
return JsonResult.buildErrorStateResult(ErrorCodeEnum.PARAM_ERROR.getMessage(), ErrorCodeEnum.PARAM_ERROR.getCode());
}
//发起xyqb查询
String cardRelationStr = xyqbService.queryCardRelation(bankId);
log.info("[查询xyqb返回卡关联信息],cardRelationStr={}", cardRelationStr);
if (StringUtils.isBlank(cardRelationStr)) {
log.error("[查询xyqb返回卡关联信息],返回结果为null");
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
}
XyqbCardRelationResult xyqbCardRelationResult = null;
try {
xyqbCardRelationResult = JSONObject.parseObject(cardRelationStr, XyqbCardRelationResult.class);
} catch (Exception e) {
log.error("[卡关联信息转换异常]", e);
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
}
if (!xyqbCardRelationResult.isSucc()) {
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
}
log.info("[查询卡关联信息],返回 data={}", xyqbCardRelationResult.getData());
return JsonResult.buildSuccessResult("处理成功", xyqbCardRelationResult.getData());
}
@Override
public JsonResult unBindCardRelation(UnBindCardModel unBindCardModel) {
if (Objects.isNull(unBindCardModel)) {
log.error("请求参数 unBindCardModel 为空");
return JsonResult.buildErrorStateResult(ErrorCodeEnum.PARAM_ERROR.getMessage(), ErrorCodeEnum.PARAM_ERROR.getCode());
}
if (Objects.isNull(unBindCardModel.getBindCardRecordId()) || Objects.isNull(unBindCardModel.getUserId())) {
log.error("请求参数 bindCardRecordId 和 userId 不能为空");
return JsonResult.buildErrorStateResult("bindCardRecordId 和 userId 不能为空", ErrorCodeEnum.RETURN_ERROR.getCode());
}
//发起xyqb查询
String unBindCardStr = xyqbService.unBindCardRelation(unBindCardModel);
log.info("[解除绑卡信息],unBindCardStr={}", unBindCardStr);
if (StringUtils.isBlank(unBindCardStr)) {
log.error("[查询xyqb返回绑卡信息],返回结果为null");
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
}
log.info("[解除绑卡信息],返回 cardResult={}", 123);
return JsonResult.buildSuccessResult("处理成功", "");
}
@Override
public JsonResult modifyReservePhone(ModifyReservePhone modifyReservePhone) {
if (Objects.isNull(modifyReservePhone)) {
log.error("请求参数 unBindCardModel 为空");
return JsonResult.buildErrorStateResult(ErrorCodeEnum.PARAM_ERROR.getMessage(), ErrorCodeEnum.PARAM_ERROR.getCode());
}
if (Objects.isNull(modifyReservePhone.getBankId())
|| Objects.isNull(modifyReservePhone.getUserId())
|| StringUtils.isBlank(modifyReservePhone.getPhoneNo())) {
log.error("请求参数 bindId,userId,phoneNo 都不能为空");
return JsonResult.buildErrorStateResult("bindId,userId,phoneNo 不能为空", ErrorCodeEnum.RETURN_ERROR.getCode());
}
//发起xyqb查询
String modifyReservePhoneStr = xyqbService.modifyReservePhone(modifyReservePhone);
log.info("[调用xyqb,修改预留手机号],modifyReservePhoneStr={}", modifyReservePhoneStr);
if (StringUtils.isBlank(modifyReservePhoneStr)) {
log.error("[调用xyqb,修改预留手机号],返回结果为null");
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
}
log.info("[修改预留手机号],返回 cardResult={}", 123);
return JsonResult.buildSuccessResult("处理成功", "");
}
}
package cn.quantgroup.customer.service.impl;
import cn.quantgroup.customer.rest.param.card.ModifyReservePhone;
import cn.quantgroup.customer.rest.param.card.UnBindCardModel;
import cn.quantgroup.customer.rest.param.repay.RepayOrderQuery;
import cn.quantgroup.customer.service.IXyqbService;
import cn.quantgroup.customer.service.http.IHttpService;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -10,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
......@@ -43,4 +47,96 @@ public class XyqbServiceImpl implements IXyqbService {
log.info("[xyqb][query repay orders ] param:{},请求业务系统返回值:{}", param, response);
return response;
}
/**
* 查询绑定卡列表
*
* @param userId
* @return
*/
@Override
public String queryCardLists(Long userId) {
String url = xyqbSysUrl + "/ex/inside/customer_sys/query/bankcard";
Map<String, Object> param = new HashMap<>(4);
if (Objects.nonNull(userId)) {
param.put("userId", userId);
}
String response = null;
try {
response = httpService.post(url, param);
log.info("[queryCardLists] param:{},请求业务系统返回值:{}", param, response);
} catch (Exception e) {
log.error("[queryCardLists] param:{},请求业务系统异常:{}", param, e);
}
return response;
}
@Override
public String queryCardRelation(Long bankId) {
String url = xyqbSysUrl + "/ex/inside/customer_sys/query/cardrelation";
Map<String, Object> param = new HashMap<>(4);
if (Objects.nonNull(bankId)) {
param.put("bankId", bankId);
}
String response = null;
try {
response = httpService.post(url, param);
log.info("[queryCardRelation] param:{},请求业务系统返回值:{}", param, response);
} catch (Exception e) {
log.error("[queryCardRelation] param:{},请求业务系统异常:{}", param, e);
}
return response;
}
@Override
public String unBindCardRelation(UnBindCardModel unBindCardModel) {
String url = xyqbSysUrl + "/ex/inside/customer_sys/unbundle/relation";
Map<String, Object> param = new HashMap<>(4);
Long userId = unBindCardModel.getUserId();
Long bindCardRecordId = unBindCardModel.getBindCardRecordId();
if (Objects.nonNull(bindCardRecordId)) {
param.put("bindCardRecordId", bindCardRecordId);
}
if (Objects.nonNull(userId)) {
param.put("userId", userId);
}
String response = null;
try {
response = httpService.post(url, param);
log.info("[unBindCardRelation] param:{},请求业务系统返回值:{}", param, response);
} catch (Exception e) {
log.error("[unBindCardRelation] param:{},请求业务系统异常:{}", param, e);
}
return response;
}
@Override
public String modifyReservePhone(ModifyReservePhone modifyReservePhone) {
String url = xyqbSysUrl + "/ex/inside/customer_sys/modify/reservedphone";
Map<String, Object> param = new HashMap<>(8);
Long userId = modifyReservePhone.getUserId();
Long bankId = modifyReservePhone.getBankId();
String phoneNo = modifyReservePhone.getPhoneNo();
if (Objects.nonNull(bankId)) {
param.put("bankId", bankId);
}
if (Objects.nonNull(userId)) {
param.put("userId", userId);
}
if (StringUtils.isNotBlank(phoneNo)) {
param.put("phoneNo", phoneNo);
}
String response = null;
try {
response = httpService.post(url, param);
log.info("[modifyReservePhone] param:{},请求业务系统返回值:{}", param, response);
} catch (Exception e) {
log.error("[modifyReservePhone] param:{},请求业务系统异常:{}", param, e);
}
return response;
}
}
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