Commit 5d25985a by tang

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

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