Commit 5d25985a by tang

添加用户级别定时任务,修改验证类型,以及sdf格式化错误等

parent 985bb501
......@@ -112,7 +112,7 @@ public static final String QUICK_WEB_PAY = "/quick/web/pay";
public static final long seconds = 60;
public static final long minutes = 60;
public static final long hours = 24;
public static final SimpleDateFormat YYYYMMDD_HHMMSS = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
public static final SimpleDateFormat YYYYMMDD_HHMMSS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//HH:mm:ss 24小时制
public static final SimpleDateFormat YYYYMMDDHHMM = new SimpleDateFormat("yyyyMMddhhmm");
/**
* 系统公共
......
......@@ -59,8 +59,19 @@ public class IdGen implements IdGenerator, SessionIdGenerator {
public Serializable generateId(Session session) {
return IdGen.uuid();
}
/**
* 六位数字ID
* @return
*/
public static String randomIntId(){
return String.valueOf((int)((Math.random()*9+1)*100000));
}
public static void main(String[] args) {
System.out.println(IdGen.randomIntId());
System.out.println((int)((Math.random()*9+1)*100000));
System.out.println(IdGen.uuid());
System.out.println(IdGen.uuid().length());
System.out.println(new IdGen().getNextId());
......
......@@ -135,7 +135,7 @@ public class JuHeZhongPayJFenService {
dto.put("sign", sign);
logger.info("signBefore:{},sign:{}", signBefore,sign);
String respStr = HttpUtil.post(ComCode.HOST + ComCode.JFEN_QUICK_PAY_URL, dto.toJSONString());
System.out.println(respStr);
logger.debug("请求结果:{}", respStr);
return JSONObject.parseObject(respStr);
}
......
......@@ -698,6 +698,15 @@ public class PayApiService {
// HL2 通道 即JFEN 发送验证码 需要的参数 SubMerchantCode\amount\cardCode\PayChannel 通道\
@Transactional(readOnly = false)
public Response sendMessageJFen(JuHeZhongPayRequest request) throws MyException {
// RateEntity rate = new RateEntity();
// rate.setUserLevel(userEntityRequest.getLevel());
// rate.setPayChannel(ComCode.PAYCHANNEL_HL2);
// rate.setPayMethod("quick");//全部写死是quick
// RateEntity rateEntity = this.getRateByLevel(rate);
// rateEntity.setServiceType("0");
// Thread.sleep(2000);
// // 添加费率
// this.merchantFeelJFen(JFenSubMchId,rateEntity);
request.setPayMethod("quick");
CardEntity cardEntity = userService.getCardInfoSwpaccid(request);
UserSubMchId userSubMchId = new UserSubMchId();
......@@ -786,7 +795,7 @@ public class PayApiService {
return response;
}
// HL2 通道 即JFEN 发送验证码 需要的参数 SubMerchantCode\payNo\passwd\cardCode \
// HL2 通道 即JFEN 支付 需要的参数 SubMerchantCode\payNo\passwd\cardCode \
@Transactional(readOnly = false)
public PayBackDto jFenPayJuhezhong(JuHeZhongPayRequest request) throws Exception {
......@@ -840,7 +849,7 @@ public class PayApiService {
//获取用户对应等级费率以及每笔需要的手续费
RateEntity gradeRate = getGradeRate(userEntity.getLevel(), request.getPayChannel());
logger.debug("用户等级请求结果,费率: {}, 单笔价格: {}",gradeRate.getRate(), gradeRate.getSiglePrice());
//获取扣除手续费后的金额,已经转换为分
// BigDecimal amount = calculationAmount(gradeRate, request.getAmount());
// int amountFen = amount.multiply(BigDecimal.valueOf(100.0)).setScale(2, BigDecimal.ROUND_HALF_UP).intValue();
......@@ -879,9 +888,9 @@ public class PayApiService {
dto.setTimestamp(System.currentTimeMillis());
logger.debug("HL4支付请求参数, expireDate: {}, cvn2: {}, cardMobile: {}, " +
"cardNo: {}, settleBankName: {}, settleBankNo: {}, settleBankPhone:{}, " +
"name:{}, certificateCode:{}", request.getExpireDate(), request.getCvn2(),
"name:{}, certificateCode:{}, userFee:{}", request.getExpireDate(), request.getCvn2(),
cardEntity.getCardMobile(), cardEntity.getCardNo(), cardEntityDebit.getBankName(), cardEntityDebit.getCardNo(),
cardEntityDebit.getCardMobile(), userDetail.getRealName(), userDetail.getIdCard());
cardEntityDebit.getCardMobile(), userDetail.getRealName(), userDetail.getIdCard(),amount);
JSONObject jsonObject = juHeZhongPayService.quickPay(dto);
logger.debug("HL4支付返回结果信息:{}" + jsonObject.toJSONString());
......@@ -1186,10 +1195,11 @@ public class PayApiService {
//修改费率
RateEntity rateEntity = new RateEntity();
rateEntity.setPayChannel("quick_jfen");
rateEntity.setPayMethod("quick");
rateEntity.setUserLevel(userEntity.getLevel());
rateEntity.setServiceType("1");//修改的标识
userDao.getRateByLevel(rateEntity);
userService.merchantFeelJFen(userSubMchIdQuery.getSubmchid(),rateEntity);
RateEntity rateByLevel = userDao.getRateByLevel(rateEntity);
rateByLevel.setServiceType("1");//修改的标识
userService.merchantFeelJFen(userSubMchIdQuery.getSubmchid(),rateByLevel);
}
}
}
......@@ -1420,7 +1430,8 @@ public class PayApiService {
Double rate = Double.valueOf(gradeRate.getRate());
Double amountDouble = Double.valueOf(amount);
//总共所需手续费
int result = BigDecimal.valueOf(amountDouble * rate).add(BigDecimal.valueOf(siglePrice * 100.0)).intValue();
int result = BigDecimal.valueOf(amountDouble * rate).add(BigDecimal.valueOf(siglePrice).subtract(BigDecimal.ONE)).multiply(BigDecimal.valueOf(100)).intValue();
logger.debug("计算出来的费率:"+ result);
//扣除费率及手续费后的金额
// BigDecimal result = BigDecimal.valueOf(amountDouble).subtract(BigDecimal.valueOf(siglePrice))
// .subtract(BigDecimal.valueOf(amountDouble * rate));
......
......@@ -31,10 +31,18 @@ public class TimingService {
@Autowired
private JuHeZhongPayIntegralService juHeZhongPayIntegralService;
@Autowired
private UserApiService userApiService;
@Scheduled(cron = "0 0 0/1 * * ?")
public void updateOrders(){
payApiService.updateOrderTiming();
payApiService.updateOrders();
}
@Scheduled(cron = "0 0/15 * * * ? ")
public void updateUserGrade(){
userApiService.updateUserLevel();
}
}
......@@ -79,7 +79,7 @@ public class UserApiController {
return resp;
}
Map identifyCodeMap = new HashMap();
// identifyCodeMap.put("indentifyCode", userService.getIdentifyCode(request));
identifyCodeMap.put("indentifyCode", userService.getIdentifyCode(request));
resp.setData(identifyCodeMap);
resp.setStatus(ComCode.STATUS_CODE_2000);
resp.setMessage(ComCode.STATUS_CODE_2000_DESC);
......@@ -107,38 +107,38 @@ public class UserApiController {
resp.setMessage(ComCode.STATUS_CODE_4001_DESC);
return resp;
}
// // 根据手机号 + 使用场景 + 验证码查询
// IdentityCodeEntity identityCodeEntity = userService.getIdentifyCode(request);
// // 验证码使用场景
// if (identityCodeEntity == null) {
// resp.setStatus(ComCode.STATUS_CODE_4010);
// resp.setMessage(ComCode.STATUS_CODE_4010_DESC);
// return resp;
// }
// // 验证码是否过期
// if (!userService.checkIdentifyCodeExpired(identityCodeEntity)) {
// resp.setStatus(ComCode.STATUS_CODE_4009);
// resp.setMessage(ComCode.STATUS_CODE_4009_DESC);
// return resp;
// }
// // 查询推荐人是否存在
// if (userService.checkRecommend(request) == null) {
// resp.setStatus(ComCode.STATUS_CODE_4006);
// resp.setMessage(ComCode.STATUS_CODE_4006_DESC);
// return resp;
// }
// // 查询注册手机号是否存在
// if (userService.checkMobile(request) != null) {
// resp.setStatus(ComCode.STATUS_CODE_4007);
// resp.setMessage(ComCode.STATUS_CODE_4007_DESC);
// return resp;
// }
// // 注册手机号与推荐人手机号是否重复
// if (request.getMobile().equals(request.getRecommendedMobile())) {
// resp.setStatus(ComCode.STATUS_CODE_4008);
// resp.setMessage(ComCode.STATUS_CODE_4008_DESC);
// return resp;
// }
// 根据手机号 + 使用场景 + 验证码查询
IdentityCodeEntity identityCodeEntity = userService.getIdentifyCode(request);
// 验证码使用场景
if (identityCodeEntity == null) {
resp.setStatus(ComCode.STATUS_CODE_4010);
resp.setMessage(ComCode.STATUS_CODE_4010_DESC);
return resp;
}
// 验证码是否过期
if (!userService.checkIdentifyCodeExpired(identityCodeEntity)) {
resp.setStatus(ComCode.STATUS_CODE_4009);
resp.setMessage(ComCode.STATUS_CODE_4009_DESC);
return resp;
}
// 查询推荐人是否存在
if (userService.checkRecommend(request) == null) {
resp.setStatus(ComCode.STATUS_CODE_4006);
resp.setMessage(ComCode.STATUS_CODE_4006_DESC);
return resp;
}
// 查询注册手机号是否存在
if (userService.checkMobile(request) != null) {
resp.setStatus(ComCode.STATUS_CODE_4007);
resp.setMessage(ComCode.STATUS_CODE_4007_DESC);
return resp;
}
// 注册手机号与推荐人手机号是否重复
if (request.getMobile().equals(request.getRecommendedMobile())) {
resp.setStatus(ComCode.STATUS_CODE_4008);
resp.setMessage(ComCode.STATUS_CODE_4008_DESC);
return resp;
}
// 保存注册用户
resp.setData(userService.signUp(request));
resp.setStatus(ComCode.STATUS_CODE_2000);
......@@ -368,7 +368,13 @@ public class UserApiController {
resp.setMessage(ComCode.STATUS_CODE_2000_DESC);
} catch (MyException e) {
resp.setStatus(ComCode.STATUS_CODE_5001);
resp.setMessage(ComCode.STATUS_CODE_5001_DESC);
if(e.getMessage().equals("输入银行卡号有误") || e.getMessage().equals("银行卡类别不正确")
|| e.getMessage().equals("手机号码格式不正确")|| e.getMessage().equals("信用卡信息需补全")){
resp.setMessage(e.getMessage());
}else{
resp.setMessage(ComCode.STATUS_CODE_5001_DESC);
}
resp.setError(e.getMessage());
} catch (Exception e) {
resp.setStatus(ComCode.STATUS_CODE_9998);
......@@ -468,21 +474,21 @@ public class UserApiController {
throw new MyException("手机号码格式不正确");
}
// // 根据手机号 + 使用场景 + 验证码查询
// request.setMobile(request.getCardMobile());
// IdentityCodeEntity identityCodeEntity = userService.getIdentifyCode(request);
// // 验证码使用场景
// if (identityCodeEntity == null) {
// resp.setStatus(ComCode.STATUS_CODE_4010);
// resp.setMessage(ComCode.STATUS_CODE_4010_DESC);
// return resp;
// }
// // 验证码是否过期
// if (!userService.checkIdentifyCodeExpired(identityCodeEntity)) {
// resp.setStatus(ComCode.STATUS_CODE_4009);
// resp.setMessage(ComCode.STATUS_CODE_4009_DESC);
// return resp;
// }
// 根据手机号 + 使用场景 + 验证码查询
request.setMobile(request.getCardMobile());
IdentityCodeEntity identityCodeEntity = userService.getIdentifyCode(request);
// 验证码使用场景
if (identityCodeEntity == null) {
resp.setStatus(ComCode.STATUS_CODE_4010);
resp.setMessage(ComCode.STATUS_CODE_4010_DESC);
return resp;
}
// 验证码是否过期
if (!userService.checkIdentifyCodeExpired(identityCodeEntity)) {
resp.setStatus(ComCode.STATUS_CODE_4009);
resp.setMessage(ComCode.STATUS_CODE_4009_DESC);
return resp;
}
userService.certification(request);
resp.setStatus(ComCode.STATUS_CODE_2000);
resp.setMessage(ComCode.STATUS_CODE_2000_DESC);
......@@ -693,4 +699,23 @@ public class UserApiController {
return true;
}
@PostMapping("/testMatch")
public Response testMatch(UserRequest request){
Response resp = new Response();
if(request == null || StringUtils.isBlank(request.getSubMerchantCode())){
resp.setStatus(ComCode.STATUS_CODE_4002);
resp.setMessage(ComCode.STATUS_CODE_4001_DESC);
return resp;
}
try{
userService.updateUserLevel();
resp.setStatus(ComCode.STATUS_CODE_2000);
resp.setMessage(ComCode.STATUS_CODE_2000_DESC);
}catch (Exception e){
resp.setStatus(ComCode.STATUS_CODE_9998);
resp.setMessage(ComCode.STATUS_CODE_9998_DESC);
resp.setError(e.getMessage());
}
return resp;
}
}
......@@ -120,4 +120,10 @@ public interface UserApiDao {
void updateCard(CardEntity cardEntity);
CardEntity getCardEntity(Request request);
//获取所有级别是青铜,推荐数大于等于3的推荐人
List<UserEntity> getUserLevelIsE();
//获取满足条件的数量
Integer getMatchNum(String mobile);
}
......@@ -20,6 +20,7 @@ import com.thinkgem.jeesite.modules.user.bean.UserRequest;
import com.thinkgem.jeesite.modules.user.dao.UserApiDao;
import com.thinkgem.jeesite.modules.user.entity.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.Rate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -27,8 +28,13 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormat;
import java.text.ParseException;
......@@ -69,7 +75,9 @@ public class UserApiService {
@Transactional(readOnly = false)
public String getIdentifyCode(IdentityCodeRequest request) throws IOException, NoSuchAlgorithmException {
// 生成验证码
String identifyCode = IdGen.randomBase62(6).toUpperCase();
// String identifyCode = IdGen.randomBase62(6).toUpperCase();
// 换成六位数字
String identifyCode = IdGen.randomIntId();
StringBuilder sb = new StringBuilder();
// 发送验证码 1注册 2验证码登录 3忘记密码/修改密码 4实名认证 5添加储蓄卡 6添加信用卡
......@@ -218,9 +226,21 @@ public class UserApiService {
@Transactional(readOnly = false)
public void addNewCard(UserRequest request) throws MyException, Exception {
//校验银行卡的卡号
String checkCardNum = checkCardNum(request.getCardNo());
if(StringUtils.isBlank(checkCardNum)){
logger.debug("输入银行卡号有误");
throw new MyException("输入银行卡号有误");
}
// CC信用卡,DC储蓄卡
String cardType = checkCardNum.equals("CC")?"C":"D";
if (!request.getCardType().equals(cardType)){
logger.debug("银行卡类别不正确");
throw new MyException("银行卡类别不正确");
}
String code = IdGen.randomBase62(64);
String type = "1"; // 默认将卡片添加为对私
String status = "0"; // 新增卡片审核状态均为未审核
String status = "1"; // 新增卡片审核状态均为审核
String subMerchantId = "";//registJuHeZhongPay(request, type);
String cardSrc = "";
if(request.getCardSrc()!= null){
......@@ -245,6 +265,13 @@ public class UserApiService {
@Transactional(readOnly = false)
public void certification(UserRequest request) throws MyException, Exception {
logger.debug("进入实名认证service");
// 校验银行卡的卡号是否正确
String checkCardNum = checkCardNum(request.getCardNo());
if(StringUtils.isBlank(checkCardNum)){
throw new MyException("输入银行卡号有误!");
}
// CC信用卡,DC储蓄卡
String cardType = checkCardNum.equals("CC")?"C":"D";
// 更新用户详情
UserDetailEntity userDetailEntity = new UserDetailEntity(IdGen.randomBase62(64), request.getSubMerchantCode(), request.getRealName(), request.getIdCard(), request.getProvince()+request.getCity(), "", "", "", "");
if (userDao.getUserDetailByCode(new UserEntity(request.getSubMerchantCode())) == null) {
......@@ -266,109 +293,109 @@ public class UserApiService {
CardEntity cardStatusEntity = new CardEntity(request.getSubMerchantCode(), "N");
userDao.updateCardStatus(cardStatusEntity);
logger.debug("修改完银行卡信息");
CardEntity cardEntity = new CardEntity(IdGen.randomBase62(64), request.getSubMerchantCode(), "D", request.getCardNo(), request.getExpireDate(), request.getCvn2(),request.getCardMobile(), request.getBelongBank(), request.getCardBank(), request.getCardPlace(), "Y", subMerchantId, "", type, status, request.getProvince(), request.getCity());
CardEntity cardEntity = new CardEntity(IdGen.randomBase62(64), request.getSubMerchantCode(), cardType, request.getCardNo(), request.getExpireDate(), request.getCvn2(),request.getCardMobile(), request.getBelongBank(), request.getCardBank(), request.getCardPlace(), "Y", subMerchantId, "", type, status, request.getProvince(), request.getCity());
CardEntity cardInfo = userDao.getCardEntity(request);
if(cardInfo == null){
userDao.addNewCard(cardEntity);
}else{
userDao.updateCard(cardEntity);
}
// 查询与实名用户相同推荐人的信息
UserEntity queryUserRecommendEntity = new UserEntity(request.getSubMerchantCode());
List<UserEntity> countRecommend = userDao.getUserInfoBySameRecommend(queryUserRecommendEntity);
// 与实名用户的推荐人,推荐了4名及以上人员实名
if (countRecommend.size() >= 4) {
String[] recommendPath = countRecommend.get(0).getRecommendedPath().split(",");
UserEntity recommendedUser = userDao.getUserInfoById(recommendPath[recommendPath.length - 1]);
// 实名用户的推荐人等级由E(青铜)升为D(白银)
if (recommendedUser.getLevel().equals("E")){
recommendedUser.setLevel("D");
userDao.updateUserLevel(recommendedUser);
}
RateEntity rateEntityParam = new RateEntity();
rateEntityParam.setUserLevel("D");
List<RateEntity> list = userDao.getRateListByLevel(rateEntityParam);
for(RateEntity rateEntity:list){
if(ComCode.PAYCHANNEL_HL3.equals(rateEntity.getPayChannel())){
String subMchId = this.quickPayHandleJuhezhong(request,"","D");
UserSubMchId userSubMchId = new UserSubMchId();
userSubMchId.setSubmchid(subMchId);
userSubMchId.setUserCode(recommendedUser.getCode());
userSubMchId.setPayChannel(rateEntity.getPayChannel());
int row = this.updateUserSubmchid(userSubMchId);
if(row == 0){
this.addUserSubmchid(userSubMchId);
}
}else if(ComCode.PAYCHANNEL_HL2.equals(rateEntity.getPayChannel())){
UserSubMchId userSubMchId = new UserSubMchId();
userSubMchId.setUserCode(recommendedUser.getCode());
userSubMchId.setPayChannel(rateEntity.getPayChannel());
UserSubMchId userSubMchIdQuery = userDao.getUserSubmchid(userSubMchId);
// 如果推荐人的 quick_jfen 通道下的 subMchId 是空 则该通道下先注册
if(userSubMchIdQuery == null){
recommendedUser = this.getUserDetailInfo(recommendedUser);
JSONObject dto = new JSONObject();
String orderId = MakeOrderNum.makeOrderNum();
dto.put("orderId", MakeOrderNum.makeOrderNum());
dto.put("serviceType",1);
dto.put("subMerchantName",recommendedUser.getUserDetail().getRealName()+orderId);
dto.put("subMerchantType","PERSON");
dto.put("businessLicense",recommendedUser.getUserDetail().getRealName()+orderId);
dto.put("legalPersonName",recommendedUser.getUserDetail().getRealName());
dto.put("legalPersonID",recommendedUser.getUserDetail().getIdCard());
dto.put("subMerchantPersonName",recommendedUser.getUserDetail().getRealName());
dto.put("subMerchantPersonPhone",recommendedUser.getMobile());
dto.put("bankType","TOPRIVATE");
dto.put("accountName",recommendedUser.getUserDetail().getRealName());
dto.put("accountNo",recommendedUser.getUserDetail().getCard().getCardNo());
dto.put("bankName",recommendedUser.getUserDetail().getCard().getBankName());
dto.put("bankProv",recommendedUser.getUserDetail().getCard().getProvince());
dto.put("bankCity",recommendedUser.getUserDetail().getCard().getCity());
dto.put("bankBranch",recommendedUser.getUserDetail().getCard().getCardPlace());
dto.put("bankCode",recommendedUser.getUserDetail().getCard().getBelongBank());
dto.put("timestamp",System.currentTimeMillis());
JSONObject jsonObject = juHeZhongPayJFenService.merchantIn(dto);
if (!"0000".equals(jsonObject.getString("code"))) {
throw new MyException(jsonObject.getString("msg"));
}
String subMchId = jsonObject.getString("subMchId");
userSubMchIdQuery = new UserSubMchId();
userSubMchIdQuery.setUserCode(recommendedUser.getCode());
userSubMchIdQuery.setPayChannel(rateEntity.getPayChannel());
userSubMchIdQuery.setSubmchid(subMchId);
rateEntity.setServiceType("0");// 添加费率
this.addUserSubmchid(userSubMchIdQuery);
this.merchantFeelJFen(subMchId,rateEntity);
}else{
// 修改费率
rateEntity.setServiceType("0");
this.merchantFeelJFen(userSubMchId.getSubmchid(),rateEntity);
}
}else if(ComCode.PAYCHANNEL_HL3.equals(rateEntity.getPayChannel())){
}
}
}
//原有代码推荐好友逻辑修改,放到定时任务中
//
// // 查询与实名用户相同推荐人的信息
// UserEntity queryUserRecommendEntity = new UserEntity(request.getSubMerchantCode());
// List<UserEntity> countRecommend = userDao.getUserInfoBySameRecommend(queryUserRecommendEntity);
// // 与实名用户的推荐人,推荐了4名及以上人员实名
// if (countRecommend.size() >= 4) {
// String[] recommendPath = countRecommend.get(0).getRecommendedPath().split(",");
//
//
// UserEntity recommendedUser = userDao.getUserInfoById(recommendPath[recommendPath.length - 1]);
// // 实名用户的推荐人等级由E(青铜)升为D(白银)
// if (recommendedUser.getLevel().equals("E")){
// recommendedUser.setLevel("D");
// userDao.updateUserLevel(recommendedUser);
// }
//
// RateEntity rateEntityParam = new RateEntity();
// rateEntityParam.setUserLevel("D");
// List<RateEntity> list = userDao.getRateListByLevel(rateEntityParam);
// for(RateEntity rateEntity:list){
// if(ComCode.PAYCHANNEL_HL3.equals(rateEntity.getPayChannel())){
// String subMchId = this.quickPayHandleJuhezhong(request,"","D");
// UserSubMchId userSubMchId = new UserSubMchId();
// userSubMchId.setSubmchid(subMchId);
// userSubMchId.setUserCode(recommendedUser.getCode());
// userSubMchId.setPayChannel(rateEntity.getPayChannel());
//
// int row = this.updateUserSubmchid(userSubMchId);
// if(row == 0){
// this.addUserSubmchid(userSubMchId);
// }
// }else if(ComCode.PAYCHANNEL_HL2.equals(rateEntity.getPayChannel())){
// UserSubMchId userSubMchId = new UserSubMchId();
// userSubMchId.setUserCode(recommendedUser.getCode());
// userSubMchId.setPayChannel(rateEntity.getPayChannel());
//
// UserSubMchId userSubMchIdQuery = userDao.getUserSubmchid(userSubMchId);
//
// // 如果推荐人的 quick_jfen 通道下的 subMchId 是空 则该通道下先注册
// if(userSubMchIdQuery == null){
// recommendedUser = this.getUserDetailInfo(recommendedUser);
// JSONObject dto = new JSONObject();
//
// String orderId = MakeOrderNum.makeOrderNum();
//
// dto.put("orderId", MakeOrderNum.makeOrderNum());
//
// dto.put("serviceType",1);
// dto.put("subMerchantName",recommendedUser.getUserDetail().getRealName()+orderId);
// dto.put("subMerchantType","PERSON");
// dto.put("businessLicense",recommendedUser.getUserDetail().getRealName()+orderId);
// dto.put("legalPersonName",recommendedUser.getUserDetail().getRealName());
// dto.put("legalPersonID",recommendedUser.getUserDetail().getIdCard());
// dto.put("subMerchantPersonName",recommendedUser.getUserDetail().getRealName());
// dto.put("subMerchantPersonPhone",recommendedUser.getMobile());
// dto.put("bankType","TOPRIVATE");
//
// dto.put("accountName",recommendedUser.getUserDetail().getRealName());
// dto.put("accountNo",recommendedUser.getUserDetail().getCard().getCardNo());
// dto.put("bankName",recommendedUser.getUserDetail().getCard().getBankName());
// dto.put("bankProv",recommendedUser.getUserDetail().getCard().getProvince());
// dto.put("bankCity",recommendedUser.getUserDetail().getCard().getCity());
// dto.put("bankBranch",recommendedUser.getUserDetail().getCard().getCardPlace());
// dto.put("bankCode",recommendedUser.getUserDetail().getCard().getBelongBank());
//
// dto.put("timestamp",System.currentTimeMillis());
//
// JSONObject jsonObject = juHeZhongPayJFenService.merchantIn(dto);
// if (!"0000".equals(jsonObject.getString("code"))) {
// throw new MyException(jsonObject.getString("msg"));
// }
// String subMchId = jsonObject.getString("subMchId");
// userSubMchIdQuery = new UserSubMchId();
// userSubMchIdQuery.setUserCode(recommendedUser.getCode());
// userSubMchIdQuery.setPayChannel(rateEntity.getPayChannel());
// userSubMchIdQuery.setSubmchid(subMchId);
// rateEntity.setServiceType("0");// 添加费率
// this.addUserSubmchid(userSubMchIdQuery);
// this.merchantFeelJFen(subMchId,rateEntity);
// }else{
// // 修改费率
// rateEntity.setServiceType("0");
// this.merchantFeelJFen(userSubMchId.getSubmchid(),rateEntity);
// }
//
// }else if(ComCode.PAYCHANNEL_HL3.equals(rateEntity.getPayChannel())){
//
// }
// }
//
// }
/* 实名认证用户 商户入网 和 添加对应的费率 开始*/
UserEntity userEntityRequest = this.getUserInfo(request);
RateEntity rate = new RateEntity();
rate.setUserLevel(userEntityRequest.getLevel());
UserSubMchId userSubMchIdRequest = new UserSubMchId();
userSubMchIdRequest.setUserCode(request.getSubMerchantCode());
......@@ -393,10 +420,14 @@ public class UserApiService {
userSubMchIdRequest.setSubmchid(JFenSubMchId);
this.addUserSubmchid(userSubMchIdRequest);
logger.debug("添加用户submchid完成");
//添加费率部分暂时不在认证处进行
RateEntity rate = new RateEntity();
rate.setUserLevel(userEntityRequest.getLevel());
rate.setPayChannel(ComCode.PAYCHANNEL_HL2);
rate.setPayMethod("quick");//全部写死是quick
RateEntity rateEntity = this.getRateByLevel(rate);
rateEntity.setServiceType("0");
Thread.sleep(2000);
// 添加费率
this.merchantFeelJFen(JFenSubMchId,rateEntity);
......@@ -606,6 +637,7 @@ public class UserApiService {
if("1".equals(rateEntity.getServiceType())){
jsonObject = juHeZhongPayJFenService.merchantModifyFeel(dto);
}else {
logger.debug("进入到增加费率");
jsonObject = juHeZhongPayJFenService.merchantAddFeel(dto);
}
......@@ -799,4 +831,123 @@ public class UserApiService {
return userDao.getActiveUserNum(request);
}
//定时任务
public void updateUserLevel(){
logger.debug("修改用户等级的定时任务开始执行");
// 满足条件:
// 1,青铜用户;2,推荐人数大于2个;3,每个被推荐人交易金额大于1万
//获得符合前两个条件的推荐人
List<UserEntity> list = userDao.getUserLevelIsE();
for(UserEntity entity : list){
Integer matchNum = userDao.getMatchNum(entity.getMobile());
logger.debug("用户mobile: {} ,符合条件的数量: {}",entity.getMobile(),matchNum);
if(matchNum > 2){
// 修改等级,青铜(E)到白银(D)
entity.setLevel("D");
userDao.updateUserLevelByCode(entity);
// 关系到HL2通道,修改费率
try {
timeUpdateRateHL2(entity);
} catch (Exception e) {
e.printStackTrace();
logger.debug("定时修改费率出错!");
}
}
}
logger.debug("修改用户等级的定时任务执行结束");
}
//增加或者修改HL2通道费率
public void timeUpdateRateHL2(UserEntity entity) throws Exception {
UserSubMchId userSubMchId = new UserSubMchId();
userSubMchId.setUserCode(entity.getCode());
userSubMchId.setPayChannel("quick_jfen");
UserSubMchId userSubMchIdQuery = userDao.getUserSubmchid(userSubMchId);
RateEntity rate = new RateEntity();
rate.setUserLevel(entity.getLevel());
rate.setPayChannel("quick_jfen");
rate.setPayMethod("quick");
RateEntity rateEntity = userDao.getRateByLevel(rate);
// 如果推荐人的 quick_jfen 通道下的 subMchId 是空 则该通道下先注册,存在则修改费率
if(userSubMchIdQuery == null){
entity = this.getUserDetailInfo(entity);
JSONObject dto = new JSONObject();
String orderId = MakeOrderNum.makeOrderNum();
dto.put("orderId", MakeOrderNum.makeOrderNum());
dto.put("serviceType",1);
dto.put("subMerchantName",entity.getUserDetail().getRealName()+orderId);
dto.put("subMerchantType","PERSON");
dto.put("businessLicense",entity.getUserDetail().getRealName()+orderId);
dto.put("legalPersonName",entity.getUserDetail().getRealName());
dto.put("legalPersonID",entity.getUserDetail().getIdCard());
dto.put("subMerchantPersonName",entity.getUserDetail().getRealName());
dto.put("subMerchantPersonPhone",entity.getMobile());
dto.put("bankType","TOPRIVATE");
dto.put("accountName",entity.getUserDetail().getRealName());
dto.put("accountNo",entity.getUserDetail().getCard().getCardNo());
dto.put("bankName",entity.getUserDetail().getCard().getBankName());
dto.put("bankProv",entity.getUserDetail().getCard().getProvince());
dto.put("bankCity",entity.getUserDetail().getCard().getCity());
dto.put("bankBranch",entity.getUserDetail().getCard().getCardPlace());
dto.put("bankCode",entity.getUserDetail().getCard().getBelongBank());
dto.put("timestamp",System.currentTimeMillis());
JSONObject jsonObject = juHeZhongPayJFenService.merchantIn(dto);
if (!"0000".equals(jsonObject.getString("code"))) {
throw new MyException(jsonObject.getString("msg"));
}
String subMchId = jsonObject.getString("subMchId");
userSubMchIdQuery = new UserSubMchId();
userSubMchIdQuery.setUserCode(entity.getCode());
userSubMchIdQuery.setPayChannel(rateEntity.getPayChannel());
userSubMchIdQuery.setSubmchid(subMchId);
rateEntity.setServiceType("0");// 添加费率
this.addUserSubmchid(userSubMchIdQuery);
this.merchantFeelJFen(subMchId,rateEntity);
}else{
// 修改费率
rateEntity.setServiceType("1");
this.merchantFeelJFen(userSubMchIdQuery.getSubmchid(),rateEntity);
}
}
//获取银行卡类型,非空则银行卡正确,返回银行卡类型
private String checkCardNum(String cardNum){
String cardDetail = getCardDetailByAli(cardNum);
JSONObject parse = (JSONObject) JSONObject.parse(cardDetail);
if(parse.get("validated").equals(true)){
return parse.get("cardType").toString();
}
logger.debug("银行卡校验失败: {}",parse.get("messages"));
return "";
}
public static String getCardDetailByAli(String cardNo) {
String urls = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=%s&cardBinCheck=true";
String url = String.format(urls, cardNo);
StringBuilder sb = new StringBuilder();
try {
URL urlObject = new URL(url);
URLConnection uc = urlObject.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String inputLine = null;
while ( (inputLine = in.readLine()) != null) {
sb.append(inputLine);
}
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
}
......@@ -991,4 +991,55 @@
AND yc.del_flag = '0'
LIMIT 1
</select>
<select id="getUserLevelIsE" resultType="com.thinkgem.jeesite.modules.user.entity.UserEntity">
SELECT
id,
`code`,
nickname,
`level`,
mobile
FROM
youka_users
WHERE
`level` = "E"
AND mobile IN (
SELECT
recommended_mobile
FROM
youka_users
GROUP BY
recommended_mobile
HAVING
count(recommended_mobile) > 2
)
</select>
<select id="getMatchNum" resultType="java.lang.Integer">
SELECT
count(amountSum)
FROM
(
SELECT
a.user_code,
SUM(a.amount) amountSum
FROM
youka_orders a
WHERE
pay_status = 2
AND pay_method = "quick"
AND user_code IN (
SELECT
CODE
FROM
`youka_users` b
WHERE
b.recommended_mobile = #{mobile}
)
GROUP BY
user_code
) a
WHERE
a.amountSum >= 10000;
</select>
</mapper>
\ No newline at end of file
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