Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
R
run-score
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
jackma
run-score
Commits
d3b8a353
提交
d3b8a353
authored
11月 01, 2021
作者:
jacksmith1988
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
//init
上级
ed53a40a
全部展开
显示空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
124 行增加
和
47 行删除
+124
-47
Constant.java
...i/src/main/java/me/zohar/runscore/constants/Constant.java
+4
-0
GatheringCode.java
...me/zohar/runscore/gatheringcode/domain/GatheringCode.java
+12
-0
GatheringCodeParam.java
...ohar/runscore/gatheringcode/param/GatheringCodeParam.java
+13
-0
GatheringCodeService.java
.../runscore/gatheringcode/service/GatheringCodeService.java
+8
-2
MerchantOrderService.java
...zohar/runscore/merchant/service/MerchantOrderService.java
+44
-20
OrderGatheringCodeVO.java
...a/me/zohar/runscore/merchant/vo/OrderGatheringCodeVO.java
+4
-0
LoginLog.java
...n/java/me/zohar/runscore/useraccount/domain/LoginLog.java
+1
-0
UserAccountRepo.java
...a/me/zohar/runscore/useraccount/repo/UserAccountRepo.java
+3
-0
ApiController.java
.../java/me/zohar/runscore/api/controller/ApiController.java
+5
-0
StartOrderTest.java
.../src/test/java/me/zohar/runscore/test/StartOrderTest.java
+4
-3
gathering-code.js
...ore-mobile/src/main/resources/static/js/gathering-code.js
+26
-22
gathering-code.html
...e-mobile/src/main/resources/templates/gathering-code.html
+0
-0
没有找到文件。
runscore-api/src/main/java/me/zohar/runscore/constants/Constant.java
浏览文件 @
d3b8a353
...
...
@@ -160,4 +160,8 @@ public class Constant {
public
static
final
String
下级账号查询范围
_
指定账号及直接下级
=
"20"
;
public
static
final
String
支付渠道
_
银行卡
=
"bankcard"
;
public
static
final
String
支付渠道
_
微信码
=
"wechat"
;
public
static
final
String
支付渠道
_
支付宝码
=
"alipay"
;
}
runscore-api/src/main/java/me/zohar/runscore/gatheringcode/domain/GatheringCode.java
浏览文件 @
d3b8a353
...
...
@@ -58,6 +58,18 @@ public class GatheringCode {
*/
private
String
payee
;
/**
* 开户行
*/
private
String
bankAddress
;
/**
* 卡号
*/
private
String
bankCode
;
/**
* 卡户主
*/
private
String
bankUsername
;
/**
* 创建时间
*/
...
...
runscore-api/src/main/java/me/zohar/runscore/gatheringcode/param/GatheringCodeParam.java
浏览文件 @
d3b8a353
...
...
@@ -54,6 +54,19 @@ public class GatheringCodeParam {
private
String
storageId
;
/**
* 开户行
*/
private
String
bankAddress
;
/**
* 卡号
*/
private
String
bankCode
;
/**
* 卡户主
*/
private
String
bankUsername
;
public
GatheringCode
convertToPo
(
String
userAccountId
)
{
GatheringCode
po
=
new
GatheringCode
();
BeanUtils
.
copyProperties
(
this
,
po
);
...
...
runscore-api/src/main/java/me/zohar/runscore/gatheringcode/service/GatheringCodeService.java
浏览文件 @
d3b8a353
...
...
@@ -157,18 +157,21 @@ public class GatheringCodeService {
@ParamValid
@Transactional
public
void
addOrUpdateGatheringCode
(
GatheringCodeParam
param
,
String
userAccountId
)
{
if
(
param
.
getFixedGatheringAmount
())
{
/*
if (param.getFixedGatheringAmount()) {
if (param.getGatheringAmount() == null) {
throw new BizException(BizError.参数异常);
}
if (param.getGatheringAmount() <= 0) {
throw new BizException(BizError.参数异常);
}
}
}
*/
// 新增
if
(
StrUtil
.
isBlank
(
param
.
getId
()))
{
GatheringCode
gatheringCode
=
param
.
convertToPo
(
userAccountId
);
gatheringCodeRepo
.
save
(
gatheringCode
);
if
(
param
.
getGatheringChannelCode
().
equals
(
"bankcard"
))
{
return
;
}
associateGatheringCodeStorage
(
param
.
getStorageId
(),
gatheringCode
.
getId
());
}
// 修改
...
...
@@ -180,6 +183,9 @@ public class GatheringCodeService {
}
BeanUtils
.
copyProperties
(
param
,
gatheringCode
);
gatheringCodeRepo
.
save
(
gatheringCode
);
if
(
param
.
getGatheringChannelCode
().
equals
(
"bankcard"
))
{
return
;
}
associateGatheringCodeStorage
(
param
.
getStorageId
(),
gatheringCode
.
getId
());
}
}
...
...
runscore-api/src/main/java/me/zohar/runscore/merchant/service/MerchantOrderService.java
浏览文件 @
d3b8a353
...
...
@@ -37,6 +37,7 @@ import cn.hutool.core.date.DateField;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.NumberUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.crypto.digest.DigestAlgorithm
;
import
cn.hutool.crypto.digest.Digester
;
...
...
@@ -111,6 +112,8 @@ public class MerchantOrderService {
@Autowired
private
OrderRebateRepo
orderRebateRepo
;
@Transactional
(
readOnly
=
true
)
public
MerchantOrderDetailsVO
findMerchantOrderDetailsById
(
@NotBlank
String
orderId
)
{
MerchantOrderDetailsVO
vo
=
MerchantOrderDetailsVO
.
convertFor
(
merchantOrderRepo
.
getOne
(
orderId
));
...
...
@@ -119,8 +122,6 @@ public class MerchantOrderService {
/**
* 客服取消订单退款
*
* @param orderId
*/
@Transactional
public
void
customerServiceCancelOrderRefund
(
@NotBlank
String
orderId
)
{
...
...
@@ -168,10 +169,12 @@ public class MerchantOrderService {
log
.
error
(
"商户订单不存在;orderNo:{}"
,
orderNo
);
throw
new
BizException
(
BizError
.
商户订单不存在
);
}
String
gatheringCodeStorageId
=
getGatheringCodeStorageId
(
order
.
getReceivedAccountId
(),
GatheringCode
gatheringCode
=
getGatheringCode
(
order
.
getReceivedAccountId
(),
order
.
getGatheringChannelCode
(),
order
.
getGatheringAmount
());
OrderGatheringCodeVO
vo
=
OrderGatheringCodeVO
.
convertFor
(
order
);
vo
.
setGatheringCodeStorageId
(
gatheringCodeStorageId
);
vo
.
setGatheringCodeStorageId
(
gatheringCode
.
getStorageId
());
vo
.
setGatheringCode
(
gatheringCode
);
return
vo
;
}
...
...
@@ -197,6 +200,28 @@ public class MerchantOrderService {
return
null
;
}
@Transactional
(
readOnly
=
true
)
public
GatheringCode
getGatheringCode
(
String
receivedAccountId
,
String
gatheringChannelCode
,
Double
gatheringAmount
)
{
ReceiveOrderSetting
merchantOrderSetting
=
platformOrderSettingRepo
.
findTopByOrderByLatelyUpdateTime
();
if
(
merchantOrderSetting
.
getUnfixedGatheringCodeReceiveOrder
())
{
GatheringCode
gatheringCode
=
gatheringCodeRepo
.
findTopByUserAccountIdAndGatheringChannelCodeAndFixedGatheringAmountIsFalse
(
receivedAccountId
,
gatheringChannelCode
);
if
(
gatheringCode
!=
null
)
{
return
gatheringCode
;
}
}
else
{
GatheringCode
gatheringCode
=
gatheringCodeRepo
.
findTopByUserAccountIdAndGatheringChannelCodeAndGatheringAmount
(
receivedAccountId
,
gatheringChannelCode
,
gatheringAmount
);
if
(
gatheringCode
!=
null
)
{
return
gatheringCode
;
}
}
return
null
;
}
@Transactional
public
void
userConfirmToPaid
(
@NotBlank
String
userAccountId
,
@NotBlank
String
orderId
)
{
MerchantOrder
platformOrder
=
merchantOrderRepo
.
findByIdAndReceivedAccountId
(
orderId
,
userAccountId
);
...
...
@@ -214,8 +239,6 @@ public class MerchantOrderService {
/**
* 客服确认已支付
*
* @param orderId
*/
@Transactional
public
void
customerServiceConfirmToPaid
(
@NotBlank
String
orderId
,
String
note
)
{
...
...
@@ -253,8 +276,6 @@ public class MerchantOrderService {
/**
* 生成订单返点
*
* @param bettingOrder
*/
public
void
generateOrderRebate
(
MerchantOrder
merchantOrder
)
{
UserAccount
userAccount
=
merchantOrder
.
getReceivedAccount
();
...
...
@@ -283,8 +304,6 @@ public class MerchantOrderService {
/**
* 通知指定的订单进行返点结算
*
* @param issueId
*/
@Transactional
(
readOnly
=
true
)
public
void
noticeOrderRebateSettlement
(
@NotBlank
String
orderId
)
{
...
...
@@ -398,14 +417,17 @@ public class MerchantOrderService {
merchantOrder
.
setPayInfoId
(
payInfo
.
getId
());
merchantOrderRepo
.
save
(
merchantOrder
);
merchantOrderPayInfoRepo
.
save
(
payInfo
);
//todo this is temporary code 这里要匹配有资源的用户接单
List
<
UserAccount
>
userAccounts
=
userAccountRepo
.
findAllByAccountType
(
Constant
.
账号类型
_
会员
);
;
this
.
receiveOrder
(
userAccounts
.
get
(
RandomUtil
.
randomInt
(
0
,
userAccounts
.
size
())).
getId
(),
merchantOrder
.
getId
());
return
MerchantOrderVO
.
convertFor
(
merchantOrder
);
}
/**
* 接单
*
* @param param
* @return
*/
@Lock
(
keys
=
"'receiveOrder_' + #orderId"
)
@Transactional
...
...
@@ -423,7 +445,8 @@ public class MerchantOrderService {
}
String
gatheringCodeStorageId
=
getGatheringCodeStorageId
(
userAccountId
,
platformOrder
.
getGatheringChannelCode
(),
platformOrder
.
getGatheringAmount
());
if
(
StrUtil
.
isBlank
(
gatheringCodeStorageId
))
{
//支付宝和微信才有收款码
if
(
StrUtil
.
isBlank
(
gatheringCodeStorageId
)
&&
!
platformOrder
.
getGatheringChannelCode
().
equals
(
Constant
.
支付渠道
_
银行卡
)
)
{
throw
new
BizException
(
BizError
.
无法接单找不到对应金额的收款码
);
}
// 校验用户是否达到接单上限,若达到上限,则不能接单
...
...
@@ -550,8 +573,6 @@ public class MerchantOrderService {
/**
* 取消订单
*
* @param id
*/
@Transactional
public
void
cancelOrder
(
@NotBlank
String
id
)
{
...
...
@@ -566,8 +587,6 @@ public class MerchantOrderService {
/**
* 商户取消订单
*
* @param id
*/
@Transactional
public
void
merchatCancelOrder
(
@NotBlank
String
merchantId
,
@NotBlank
String
id
)
{
...
...
@@ -628,13 +647,18 @@ public class MerchantOrderService {
merchantOrder
.
setPayInfoId
(
payInfo
.
getId
());
merchantOrderRepo
.
save
(
merchantOrder
);
merchantOrderPayInfoRepo
.
save
(
payInfo
);
//todo this is temporary code 这里要匹配有资源的用户接单
List
<
UserAccount
>
userAccounts
=
userAccountRepo
.
findAllByAccountType
(
Constant
.
账号类型
_
会员
);
;
this
.
receiveOrder
(
userAccounts
.
get
(
RandomUtil
.
randomInt
(
0
,
userAccounts
.
size
())).
getId
(),
merchantOrder
.
getId
());
return
StartOrderSuccessVO
.
convertFor
(
merchantOrder
.
getOrderNo
());
}
/**
* 支付成功异步通知
*
* @param merchantOrderId
*/
@Transactional
public
String
paySuccessAsynNotice
(
@NotBlank
String
merchantOrderId
)
{
...
...
runscore-api/src/main/java/me/zohar/runscore/merchant/vo/OrderGatheringCodeVO.java
浏览文件 @
d3b8a353
...
...
@@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.Data
;
import
me.zohar.runscore.dictconfig.DictHolder
;
import
me.zohar.runscore.gatheringcode.domain.GatheringCode
;
import
me.zohar.runscore.merchant.domain.MerchantOrder
;
@Data
...
...
@@ -58,6 +59,8 @@ public class OrderGatheringCodeVO {
private
String
gatheringCodeUrl
;
private
GatheringCode
gatheringCode
;
/**
* 同步通知地址
*/
...
...
@@ -75,4 +78,5 @@ public class OrderGatheringCodeVO {
return
vo
;
}
}
runscore-api/src/main/java/me/zohar/runscore/useraccount/domain/LoginLog.java
浏览文件 @
d3b8a353
...
...
@@ -32,6 +32,7 @@ public class LoginLog {
/**
* 登录系统
*/
@Column
(
name
=
"`system`"
)
private
String
system
;
/**
...
...
runscore-api/src/main/java/me/zohar/runscore/useraccount/repo/UserAccountRepo.java
浏览文件 @
d3b8a353
...
...
@@ -3,6 +3,8 @@ package me.zohar.runscore.useraccount.repo;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
java.util.List
;
import
me.zohar.runscore.useraccount.domain.UserAccount
;
...
...
@@ -12,4 +14,5 @@ public interface UserAccountRepo extends JpaRepository<UserAccount, String>, Jpa
Long
countByInviterId
(
String
inviterId
);
List
<
UserAccount
>
findAllByAccountType
(
String
accountType
);
}
runscore-merchant/src/main/java/me/zohar/runscore/api/controller/ApiController.java
浏览文件 @
d3b8a353
...
...
@@ -19,6 +19,11 @@ public class ApiController {
@Autowired
private
MerchantOrderService
platformOrderService
;
/**
* 商户开单,获取支付方式,返回银行卡信息或者支付码信息
* @param param
* @return
*/
@PostMapping
(
"/startOrder"
)
@ResponseBody
public
Result
startOrder
(
StartOrderParam
param
)
{
...
...
runscore-merchant/src/test/java/me/zohar/runscore/test/StartOrderTest.java
浏览文件 @
d3b8a353
...
...
@@ -15,11 +15,12 @@ public class StartOrderTest {
*/
public
static
void
main
(
String
[]
args
)
{
String
merchantNum
=
"
201906
001"
;
String
merchantOrderNo
=
"20190629023134U93628387
7
"
;
String
merchantNum
=
"
1
001"
;
String
merchantOrderNo
=
"20190629023134U93628387
8
"
;
Double
amount
=
100
d
;
String
notifyUrl
=
"http://xhbc10.com/index.php/Pay/Paynotify"
;
String
secretKey
=
"l54x9426o68962464"
;
//String returnUrl = "http://xhbc10.com/index.php/Pay/Paynotify";
String
secretKey
=
"456"
;
String
sign
=
merchantNum
+
merchantOrderNo
+
new
DecimalFormat
(
"###################.###########"
).
format
(
amount
)
+
notifyUrl
+
secretKey
;
System
.
out
.
println
(
sign
);
...
...
runscore-mobile/src/main/resources/static/js/gathering-code.js
浏览文件 @
d3b8a353
...
...
@@ -135,9 +135,12 @@ var gatheringCodeVM = new Vue({
that
.
editGatheringCode
=
{
gatheringChannelCode
:
''
,
state
:
''
,
fixedGatheringAmount
:
tru
e
,
fixedGatheringAmount
:
fals
e
,
gatheringAmount
:
''
,
payee
:
''
payee
:
''
,
bankAddress
:
''
,
bankCode
:
''
,
bankUsername
:
''
};
that
.
showEditGatheringCodePageInner
();
that
.
initFileUploadWidget
();
...
...
@@ -187,24 +190,24 @@ var gatheringCodeVM = new Vue({
});
return
;
}
if
(
editGatheringCode
.
fixedGatheringAmount
==
null
)
{
layer
.
alert
(
'请选择是否固定收款金额'
,
{
title
:
'提示'
,
icon
:
7
,
time
:
3000
});
return
;
}
if
(
editGatheringCode
.
fixedGatheringAmount
)
{
if
(
editGatheringCode
.
gatheringAmount
==
null
||
editGatheringCode
.
gatheringAmount
==
''
)
{
layer
.
alert
(
'请输入收款金额'
,
{
title
:
'提示'
,
icon
:
7
,
time
:
3000
});
return
;
}
}
//
if (editGatheringCode.fixedGatheringAmount == null) {
//
layer.alert('请选择是否固定收款金额', {
//
title : '提示',
//
icon : 7,
//
time : 3000
//
});
//
return;
//
}
//
if (editGatheringCode.fixedGatheringAmount) {
//
if (editGatheringCode.gatheringAmount == null || editGatheringCode.gatheringAmount == '') {
//
layer.alert('请输入收款金额', {
//
title : '提示',
//
icon : 7,
//
time : 3000
//
});
//
return;
//
}
//
}
if
(
editGatheringCode
.
payee
==
null
||
editGatheringCode
.
payee
==
''
)
{
layer
.
alert
(
'请选择收款人'
,
{
title
:
'提示'
,
...
...
@@ -214,11 +217,12 @@ var gatheringCodeVM = new Vue({
return
;
}
if
(
$
(
'.gathering-code-pic'
).
fileinput
(
'getPreview'
).
content
.
length
!=
0
)
{
if
(
$
(
'.gathering-code-pic'
).
fileinput
(
'getPreview'
).
content
.
length
!=
0
||
editGatheringCode
.
gatheringChannelCode
==
'bankcard'
)
{
that
.
addOrUpdateGatheringCodeInner
();
}
else
{
var
filesCount
=
$
(
'.gathering-code-pic'
).
fileinput
(
'getFilesCount'
);
if
(
filesCount
==
0
)
{
console
.
log
(
editGatheringCode
.
gatheringChannelCode
);
if
(
filesCount
==
0
)
{
layer
.
alert
(
'请选择要上传的图片'
,
{
title
:
'提示'
,
icon
:
7
,
...
...
runscore-mobile/src/main/resources/templates/gathering-code.html
浏览文件 @
d3b8a353
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论