Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
youka-api
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
java-youka-wallet
youka-api
Commits
5d25985a
Commit
5d25985a
authored
Jun 22, 2018
by
tang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加用户级别定时任务,修改验证类型,以及sdf格式化错误等
parent
985bb501
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
419 additions
and
155 deletions
+419
-155
ComCode.java
src/main/java/com/thinkgem/jeesite/common/constant/ComCode.java
+1
-1
IdGen.java
src/main/java/com/thinkgem/jeesite/common/utils/IdGen.java
+11
-0
JuHeZhongPayJFenService.java
src/main/java/com/thinkgem/jeesite/modules/pay/juhezhong/service/JuHeZhongPayJFenService.java
+1
-1
PayApiService.java
src/main/java/com/thinkgem/jeesite/modules/pay/service/PayApiService.java
+19
-8
TimingService.java
src/main/java/com/thinkgem/jeesite/modules/pay/service/TimingService.java
+8
-0
UserApiController.java
src/main/java/com/thinkgem/jeesite/modules/user/api/UserApiController.java
+74
-49
UserApiDao.java
src/main/java/com/thinkgem/jeesite/modules/user/dao/UserApiDao.java
+6
-0
UserApiService.java
src/main/java/com/thinkgem/jeesite/modules/user/service/UserApiService.java
+247
-96
UserDao.xml
src/main/resources/mappings/modules/user/UserDao.xml
+52
-0
No files found.
src/main/java/com/thinkgem/jeesite/common/constant/ComCode.java
View file @
5d25985a
...
...
@@ -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"
);
/**
* 系统公共
...
...
src/main/java/com/thinkgem/jeesite/common/utils/IdGen.java
View file @
5d25985a
...
...
@@ -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
());
...
...
src/main/java/com/thinkgem/jeesite/modules/pay/juhezhong/service/JuHeZhongPayJFenService.java
View file @
5d25985a
...
...
@@ -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
);
}
...
...
src/main/java/com/thinkgem/jeesite/modules/pay/service/PayApiService.java
View file @
5d25985a
...
...
@@ -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
(),
rate
Entity
);
RateEntity
rateByLevel
=
userDao
.
getRateByLevel
(
rateEntity
);
rateByLevel
.
setServiceType
(
"1"
);
//修改的标识
userService
.
merchantFeelJFen
(
userSubMchIdQuery
.
getSubmchid
(),
rate
ByLevel
);
}
}
}
...
...
@@ -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));
...
...
src/main/java/com/thinkgem/jeesite/modules/pay/service/TimingService.java
View file @
5d25985a
...
...
@@ -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
();
}
}
src/main/java/com/thinkgem/jeesite/modules/user/api/UserApiController.java
View file @
5d25985a
...
...
@@ -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
;
}
}
src/main/java/com/thinkgem/jeesite/modules/user/dao/UserApiDao.java
View file @
5d25985a
...
...
@@ -120,4 +120,10 @@ public interface UserApiDao {
void
updateCard
(
CardEntity
cardEntity
);
CardEntity
getCardEntity
(
Request
request
);
//获取所有级别是青铜,推荐数大于等于3的推荐人
List
<
UserEntity
>
getUserLevelIsE
();
//获取满足条件的数量
Integer
getMatchNum
(
String
mobile
);
}
src/main/java/com/thinkgem/jeesite/modules/user/service/UserApiService.java
View file @
5d25985a
...
...
@@ -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
();
}
}
src/main/resources/mappings/modules/user/UserDao.xml
View file @
5d25985a
...
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment