Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
A
Afrishop refactored project
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Whispa
Afrishop refactored project
Commits
bac2bb41
提交
bac2bb41
authored
12月 03, 2020
作者:
吴德鹏
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改佣金规则
上级
5101fc50
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
777 行增加
和
29 行删除
+777
-29
ActivityController.java
...m/example/afrishop_v3/controllers/ActivityController.java
+25
-0
AddressController.java
...om/example/afrishop_v3/controllers/AddressController.java
+1
-0
AuthController.java
...a/com/example/afrishop_v3/controllers/AuthController.java
+2
-2
DpoPayController.java
...com/example/afrishop_v3/controllers/DpoPayController.java
+125
-8
FeedbackController.java
...m/example/afrishop_v3/controllers/FeedbackController.java
+0
-1
FlutterWaveController.java
...xample/afrishop_v3/controllers/FlutterWaveController.java
+125
-5
ImageSearchController.java
...xample/afrishop_v3/controllers/ImageSearchController.java
+1
-2
PaypalContoller.java
.../com/example/afrishop_v3/controllers/PaypalContoller.java
+124
-8
UserController.java
...a/com/example/afrishop_v3/controllers/UserController.java
+0
-2
Activity.java
src/main/java/com/example/afrishop_v3/models/Activity.java
+309
-0
Bonus.java
src/main/java/com/example/afrishop_v3/models/Bonus.java
+7
-0
ActivityRepository.java
...om/example/afrishop_v3/repository/ActivityRepository.java
+20
-0
WebSecurityConfig.java
...a/com/example/afrishop_v3/security/WebSecurityConfig.java
+1
-1
AfrishopV3ApplicationTests.java
...a/com/example/afrishop_v3/AfrishopV3ApplicationTests.java
+37
-0
没有找到文件。
src/main/java/com/example/afrishop_v3/controllers/ActivityController.java
浏览文件 @
bac2bb41
package
com
.
example
.
afrishop_v3
.
controllers
;
import
com.example.afrishop_v3.base.Result
;
import
com.example.afrishop_v3.models.Activity
;
import
com.example.afrishop_v3.repository.ActivityRepository
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
* @Auther: wudepeng
* @Date: 2020/11/30
* @Description:活动管理
*/
@RestController
@RequestMapping
(
"/activity"
)
public
class
ActivityController
{
private
final
ActivityRepository
activityRepository
;
public
ActivityController
(
ActivityRepository
activityRepository
)
{
this
.
activityRepository
=
activityRepository
;
}
@GetMapping
(
"/getAllActivity"
)
public
Result
getAllActivity
(
@RequestParam
(
"pageNum"
)
Integer
pageNum
,
@RequestParam
(
"pageSize"
)
Integer
pageSize
)
{
return
new
Result
(
activityRepository
.
getAllActivity
());
}
}
src/main/java/com/example/afrishop_v3/controllers/AddressController.java
浏览文件 @
bac2bb41
...
...
@@ -22,6 +22,7 @@ public class AddressController extends Controller{
private
final
AuthenticationUser
user
;
public
AddressController
(
TbCfAddressRepository
repository
,
UserRepository
userRepository
,
AuthenticationUser
user
)
{
super
(
networkRepository
,
bonusRepository
,
postRepository
,
orderRepository
,
userRepository
);
this
.
repository
=
repository
;
this
.
userRepository
=
userRepository
;
this
.
user
=
user
;
...
...
src/main/java/com/example/afrishop_v3/controllers/AuthController.java
浏览文件 @
bac2bb41
...
...
@@ -30,7 +30,6 @@ import org.springframework.web.bind.annotation.*;
import
javax.persistence.EntityManager
;
import
javax.persistence.Query
;
import
java.net.URLDecoder
;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -57,6 +56,7 @@ public class AuthController extends Controller {
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
AuthController
.
class
);
public
AuthController
(
AuthenticationManager
authenticationManager
,
UserRepository
userRepository
,
EmailHelper
emailHelper
,
TbCfCouponRepository
couponRepository
,
TbCfToicouponRepository
toicouponRepository
,
NetworkRepository
networkRepository
,
EntityManager
entityManager
,
PasswordEncoder
encoder
,
DomainProperties
domainProperties
,
JwtUtils
jwtUtils
)
{
super
(
networkRepository
,
bonusRepository
,
postRepository
,
orderRepository
,
userRepository
);
this
.
authenticationManager
=
authenticationManager
;
this
.
userRepository
=
userRepository
;
this
.
emailHelper
=
emailHelper
;
...
...
@@ -98,7 +98,7 @@ public class AuthController extends Controller {
TbCfUserInfo
userInfo
=
byAccount
.
get
();
fixCode
(
userInfo
);
Authentication
authentication
;
try
{
authentication
=
authenticationManager
.
authenticate
(
...
...
src/main/java/com/example/afrishop_v3/controllers/DpoPayController.java
浏览文件 @
bac2bb41
...
...
@@ -6,12 +6,8 @@ import com.example.afrishop_v3.config.DpoConfiguration;
import
com.example.afrishop_v3.enums.DeliveryStatusEnum
;
import
com.example.afrishop_v3.enums.OrderStatusEnum
;
import
com.example.afrishop_v3.enums.ResultCodeEnum
;
import
com.example.afrishop_v3.models.TbCfFinance
;
import
com.example.afrishop_v3.models.TbCfOrder
;
import
com.example.afrishop_v3.models.TbCfUserInfo
;
import
com.example.afrishop_v3.repository.TbCfFinanceRepository
;
import
com.example.afrishop_v3.repository.TbCfOrderRepository
;
import
com.example.afrishop_v3.repository.UserRepository
;
import
com.example.afrishop_v3.models.*
;
import
com.example.afrishop_v3.repository.*
;
import
com.example.afrishop_v3.security.services.AuthenticationUser
;
import
com.example.afrishop_v3.util.DataUtils
;
import
com.example.afrishop_v3.util.HttpsUtil
;
...
...
@@ -26,6 +22,7 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
...
...
@@ -42,13 +39,21 @@ public class DpoPayController extends Controller {
private
final
TbCfFinanceRepository
financeRepository
;
private
final
AuthenticationUser
user
;
private
final
DpoConfiguration
config
;
private
final
NetworkRepository
networkRepository
;
private
final
BonusRepository
bonusRepository
;
private
final
PostRepository
postRepository
;
private
final
TbCfOrderRepository
orderRepository
;
public
DpoPayController
(
TbCfOrderRepository
repository
,
UserRepository
userRepository
,
TbCfFinanceRepository
financeRepository
,
AuthenticationUser
user
,
DpoConfiguration
config
)
{
public
DpoPayController
(
TbCfOrderRepository
repository
,
UserRepository
userRepository
,
TbCfFinanceRepository
financeRepository
,
AuthenticationUser
user
,
DpoConfiguration
config
,
NetworkRepository
networkRepository
,
BonusRepository
bonusRepository
,
PostRepository
postRepository
,
TbCfOrderRepository
orderRepository
)
{
this
.
repository
=
repository
;
this
.
userRepository
=
userRepository
;
this
.
financeRepository
=
financeRepository
;
this
.
user
=
user
;
this
.
config
=
config
;
this
.
networkRepository
=
networkRepository
;
this
.
bonusRepository
=
bonusRepository
;
this
.
postRepository
=
postRepository
;
this
.
orderRepository
=
orderRepository
;
}
@GetMapping
(
"/notify"
)
...
...
@@ -122,7 +127,7 @@ public class DpoPayController extends Controller {
if
(
config
.
getSuccessCode
().
equals
(
resCode
))
{
String
userId
=
order
.
getUserId
();
Optional
<
TbCfUserInfo
>
userInfoOptional
=
userRepository
.
findById
(
userId
);
if
(
userInfoOptional
.
isPresent
()
)
{
if
(
userInfoOptional
.
isPresent
()
)
{
TbCfUserInfo
user
=
userInfoOptional
.
get
();
System
.
out
.
println
(
"user================"
+
user
);
/**
...
...
@@ -161,6 +166,21 @@ public class DpoPayController extends Controller {
verify
=
true
;
//清除缓存中的订单
// removeRedisCache(tbCfOrderVo);
//生成佣金
Optional
<
TbCfOrder
>
optional
=
orderRepository
.
findById
(
orderId
);
if
(
optional
.
isPresent
())
{
TbCfOrder
tbCfOrder
=
optional
.
get
();
Bonus
bonus
=
new
Bonus
();
TbCfUserInfo
userInfo
=
new
TbCfUserInfo
();
userInfo
.
setUserId
(
tbCfOrder
.
getUserId
());
// bonus.setUserId(tbCfOrder.getUserId());
bonus
.
setOrderId
(
orderId
);
bonus
.
setAmount
(
tbCfOrder
.
getItemsPrice
());
System
.
out
.
println
(
"佣金-----》》》订单号:"
+
orderId
+
"=user="
+
tbCfOrder
.
getUserId
()+
"=price="
+
tbCfOrder
.
getItemsPrice
());
saveNetworkMarketing
(
bonus
,
tbCfOrder
.
getUserId
());
}
}
}
...
...
@@ -300,4 +320,101 @@ public class DpoPayController extends Controller {
paramMap
.
put
(
"API3G"
,
apiMap
);
return
paramMap
;
}
public
Result
saveNetworkMarketing
(
Bonus
bonus
,
String
userId
)
{
TbCfUserInfo
info
=
user
.
user
();
// Optional<String> userIdOptional = userId;
System
.
out
.
println
(
"userId=="
+
userId
);
String
orderId
=
bonus
.
getOrderId
();
if
(
orderId
==
null
)
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Order is missing !!!"
);
Optional
<
TbCfOrder
>
orderOptional
=
orderRepository
.
findById
(
orderId
);
if
(!
orderOptional
.
isPresent
())
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Order is missing !!!"
);
TbCfOrder
order
=
orderOptional
.
get
();
if
(!
OrderStatusEnum
.
PAID
.
getValue
().
equals
(
order
.
getPayStatus
()))
{
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Invalid order status"
);
}
if
(
bonusRepository
.
existsByOrderId
(
orderId
))
{
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Transaction already done !!!"
);
}
BigDecimal
amount
=
bonus
.
getAmount
();
if
(!
StringUtils
.
isBlank
(
userId
))
{
Optional
<
TbCfUserInfo
>
optionalUser
=
userRepository
.
findById
(
userId
);
if
(
optionalUser
.
isPresent
())
{
TbCfUserInfo
user
=
optionalUser
.
get
();
Post
post
=
bonus
.
getPost
();
Optional
<
Post
>
postOptional
=
post
==
null
?
Optional
.
empty
()
:
postRepository
.
findById
(
post
.
getId
());
String
productSharer
=
bonus
.
getProductSharer
();
Optional
<
TbCfUserInfo
>
sharer
=
Optional
.
empty
();
if
(
productSharer
!=
null
)
{
sharer
=
userRepository
.
findByCode
(
productSharer
);
}
if
(
user
.
invited
())
{
BigDecimal
v
=
amount
.
multiply
(
BigDecimal
.
valueOf
(
10
)).
divide
(
BigDecimal
.
valueOf
(
100
),
RoundingMode
.
CEILING
);
bonus
.
setAmount
(
v
);
bonus
.
setUserInfo
(
user
);
bonus
.
setPercentage
(
10
);
bonus
=
bonusRepository
.
save
(
bonus
);
if
(
user
.
hasFcm
())
{
sendNotification
(
user
.
getFcm
(),
"Bonus alert !!"
,
user
.
display
()
+
", You received bonus of $"
+
formatter
.
format
(
v
)
+
" in your account"
);
}
}
TbCfUserInfo
bonusInc
=
runBonusInc
(
user
,
amount
,
5
,
false
,
orderId
);
runBonusInc
(
sharer
.
orElseGet
(()
->
postOptional
.
isPresent
()
?
postOptional
.
get
().
getRealUser
()
:
bonusInc
),
amount
,
5
,
postOptional
.
isPresent
()
||
sharer
.
isPresent
(),
orderId
);
//runBonusInc(bonusInc, amount, 0);
}
}
return
new
Result
<>(
bonus
);
}
private
TbCfUserInfo
runBonusInc
(
TbCfUserInfo
user
,
BigDecimal
amount
,
int
percent
,
boolean
direct
,
String
orderId
)
{
if
(
user
==
null
)
return
null
;
Optional
<
Network
>
userCode
=
networkRepository
.
findByNetworkInfoCode
(
user
.
getCode
());
if
(
userCode
.
isPresent
()
||
direct
)
{
TbCfUserInfo
userInfo
=
direct
?
user
:
userCode
.
get
().
getUserInfo
();
Bonus
bonus
=
new
Bonus
();
bonus
.
setUserInfo
(
userInfo
);
BigDecimal
v
=
amount
.
multiply
(
BigDecimal
.
valueOf
(
percent
));
v
=
v
.
divide
(
BigDecimal
.
valueOf
(
100
),
RoundingMode
.
CEILING
);
bonus
.
setAmount
(
v
);
bonus
.
setPercentage
(
percent
);
bonus
.
setOrderId
(
orderId
);
if
(
userInfo
.
invited
())
{
bonusRepository
.
save
(
bonus
);
// bonus = repository.save(bonus);
if
(
userInfo
.
hasFcm
())
{
sendNotification
(
userInfo
.
getFcm
(),
"Bonus alert !!"
,
userInfo
.
display
()
+
", You received bonus of $"
+
formatter
.
format
(
v
)
+
" in your account"
);
}
}
return
userInfo
;
}
return
null
;
}
}
src/main/java/com/example/afrishop_v3/controllers/FeedbackController.java
浏览文件 @
bac2bb41
...
...
@@ -4,7 +4,6 @@ import com.example.afrishop_v3.base.Result;
import
com.example.afrishop_v3.base.StateConstant
;
import
com.example.afrishop_v3.models.TbCfFeedback
;
import
com.example.afrishop_v3.repository.TbCfFeedbackRepository
;
import
com.example.afrishop_v3.util.IdUtil
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Date
;
...
...
src/main/java/com/example/afrishop_v3/controllers/FlutterWaveController.java
浏览文件 @
bac2bb41
...
...
@@ -3,19 +3,17 @@ package com.example.afrishop_v3.controllers;
import
com.alibaba.fastjson.JSON
;
import
com.example.afrishop_v3.base.Result
;
import
com.example.afrishop_v3.config.CardCharge
;
import
com.example.afrishop_v3.config.DomainProperties
;
import
com.example.afrishop_v3.config.Environment
;
import
com.example.afrishop_v3.config.RaveConstant
;
import
com.example.afrishop_v3.enums.DeliveryStatusEnum
;
import
com.example.afrishop_v3.enums.OrderStatusEnum
;
import
com.example.afrishop_v3.enums.ResultCodeEnum
;
import
com.example.afrishop_v3.models.*
;
import
com.example.afrishop_v3.repository.TbCfFinanceRepository
;
import
com.example.afrishop_v3.repository.TbCfOrderRepository
;
import
com.example.afrishop_v3.repository.UserRepository
;
import
com.example.afrishop_v3.repository.*
;
import
com.example.afrishop_v3.security.services.AuthenticationUser
;
import
com.example.afrishop_v3.util.HttpClientUtil
;
import
com.example.afrishop_v3.util.IdUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.json.JSONObject
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -25,6 +23,8 @@ import org.springframework.http.ResponseEntity;
import
org.springframework.web.bind.annotation.*
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.*
;
@RestController
...
...
@@ -37,6 +37,11 @@ public class FlutterWaveController extends Controller {
// private final DomainProperties domainProperties;
private
final
AuthenticationUser
user
;
private
final
NetworkRepository
networkRepository
;
private
final
BonusRepository
bonusRepository
;
private
final
PostRepository
postRepository
;
private
final
TbCfOrderRepository
orderRepository
;
@Value
(
"${flutter.refund_url}"
)
private
String
FLUTTERWAVE_REFUND_URL
;
...
...
@@ -60,12 +65,16 @@ public class FlutterWaveController extends Controller {
// // //校验API
// private String VERIFY_PAY_URL = "https://api.ravepay.co/flwv3-pug/getpaidx/api/v2/verify";
public
FlutterWaveController
(
TbCfOrderRepository
repository
,
TbCfFinanceRepository
financeRepository
,
UserRepository
userRepository
,
AuthenticationUser
user
)
{
public
FlutterWaveController
(
TbCfOrderRepository
repository
,
TbCfFinanceRepository
financeRepository
,
UserRepository
userRepository
,
AuthenticationUser
user
,
NetworkRepository
networkRepository
,
BonusRepository
bonusRepository
,
PostRepository
postRepository
,
TbCfOrderRepository
orderRepository
)
{
this
.
repository
=
repository
;
this
.
financeRepository
=
financeRepository
;
this
.
userRepository
=
userRepository
;
// this.domainProperties = domainProperties;
this
.
user
=
user
;
this
.
networkRepository
=
networkRepository
;
this
.
bonusRepository
=
bonusRepository
;
this
.
postRepository
=
postRepository
;
this
.
orderRepository
=
orderRepository
;
}
@PostMapping
(
"/pay"
)
...
...
@@ -224,6 +233,21 @@ public class FlutterWaveController extends Controller {
}*/
//生成支付流水
TbCfFinance
finance
=
createFinance
(
paymentid
,
authurl
,
tbCfOrderVo
);
//生成佣金
Optional
<
TbCfOrder
>
optional
=
orderRepository
.
findById
(
orderId
);
if
(
optional
.
isPresent
())
{
TbCfOrder
tbCfOrder
=
optional
.
get
();
Bonus
bonus
=
new
Bonus
();
TbCfUserInfo
userInfo
=
new
TbCfUserInfo
();
userInfo
.
setUserId
(
tbCfOrder
.
getUserId
());
// bonus.setUserId(tbCfOrder.getUserId());
bonus
.
setOrderId
(
orderId
);
bonus
.
setAmount
(
tbCfOrder
.
getItemsPrice
());
System
.
out
.
println
(
"佣金-----》》》订单号:"
+
orderId
+
"=user="
+
tbCfOrder
.
getUserId
()+
"=price="
+
tbCfOrder
.
getItemsPrice
());
saveNetworkMarketing
(
bonus
,
tbCfOrder
.
getUserId
());
}
// TbCfFinanceVo tbCfFinanceVo = new TbCfFinanceVo();
// BeanUtils.copyProperties(finance, tbCfFinanceVo);
// removeRedisCache(tbCfOrderVo);
...
...
@@ -333,4 +357,100 @@ public class FlutterWaveController extends Controller {
result
.
setData
(
key
).
setMessage
(
ResultCodeEnum
.
SUCCESS
.
getDesc
());
return
result
;
}
public
Result
saveNetworkMarketing
(
Bonus
bonus
,
String
userId
)
{
TbCfUserInfo
info
=
user
.
user
();
// Optional<String> userIdOptional = userId;
System
.
out
.
println
(
"userId=="
+
userId
);
String
orderId
=
bonus
.
getOrderId
();
if
(
orderId
==
null
)
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Order is missing !!!"
);
Optional
<
TbCfOrder
>
orderOptional
=
orderRepository
.
findById
(
orderId
);
if
(!
orderOptional
.
isPresent
())
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Order is missing !!!"
);
TbCfOrder
order
=
orderOptional
.
get
();
if
(!
OrderStatusEnum
.
PAID
.
getValue
().
equals
(
order
.
getPayStatus
()))
{
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Invalid order status"
);
}
if
(
bonusRepository
.
existsByOrderId
(
orderId
))
{
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Transaction already done !!!"
);
}
BigDecimal
amount
=
bonus
.
getAmount
();
if
(!
StringUtils
.
isBlank
(
userId
))
{
Optional
<
TbCfUserInfo
>
optionalUser
=
userRepository
.
findById
(
userId
);
if
(
optionalUser
.
isPresent
())
{
TbCfUserInfo
user
=
optionalUser
.
get
();
Post
post
=
bonus
.
getPost
();
Optional
<
Post
>
postOptional
=
post
==
null
?
Optional
.
empty
()
:
postRepository
.
findById
(
post
.
getId
());
String
productSharer
=
bonus
.
getProductSharer
();
Optional
<
TbCfUserInfo
>
sharer
=
Optional
.
empty
();
if
(
productSharer
!=
null
)
{
sharer
=
userRepository
.
findByCode
(
productSharer
);
}
if
(
user
.
invited
())
{
BigDecimal
v
=
amount
.
multiply
(
BigDecimal
.
valueOf
(
10
)).
divide
(
BigDecimal
.
valueOf
(
100
),
RoundingMode
.
CEILING
);
bonus
.
setAmount
(
v
);
bonus
.
setUserInfo
(
user
);
bonus
.
setPercentage
(
10
);
bonus
=
bonusRepository
.
save
(
bonus
);
if
(
user
.
hasFcm
())
{
sendNotification
(
user
.
getFcm
(),
"Bonus alert !!"
,
user
.
display
()
+
", You received bonus of $"
+
formatter
.
format
(
v
)
+
" in your account"
);
}
}
TbCfUserInfo
bonusInc
=
runBonusInc
(
user
,
amount
,
5
,
false
,
orderId
);
runBonusInc
(
sharer
.
orElseGet
(()
->
postOptional
.
isPresent
()
?
postOptional
.
get
().
getRealUser
()
:
bonusInc
),
amount
,
5
,
postOptional
.
isPresent
()
||
sharer
.
isPresent
(),
orderId
);
//runBonusInc(bonusInc, amount, 0);
}
}
return
new
Result
<>(
bonus
);
}
private
TbCfUserInfo
runBonusInc
(
TbCfUserInfo
user
,
BigDecimal
amount
,
int
percent
,
boolean
direct
,
String
orderId
)
{
if
(
user
==
null
)
return
null
;
Optional
<
Network
>
userCode
=
networkRepository
.
findByNetworkInfoCode
(
user
.
getCode
());
if
(
userCode
.
isPresent
()
||
direct
)
{
TbCfUserInfo
userInfo
=
direct
?
user
:
userCode
.
get
().
getUserInfo
();
Bonus
bonus
=
new
Bonus
();
bonus
.
setUserInfo
(
userInfo
);
BigDecimal
v
=
amount
.
multiply
(
BigDecimal
.
valueOf
(
percent
));
v
=
v
.
divide
(
BigDecimal
.
valueOf
(
100
),
RoundingMode
.
CEILING
);
bonus
.
setAmount
(
v
);
bonus
.
setPercentage
(
percent
);
bonus
.
setOrderId
(
orderId
);
if
(
userInfo
.
invited
())
{
bonusRepository
.
save
(
bonus
);
// bonus = repository.save(bonus);
if
(
userInfo
.
hasFcm
())
{
sendNotification
(
userInfo
.
getFcm
(),
"Bonus alert !!"
,
userInfo
.
display
()
+
", You received bonus of $"
+
formatter
.
format
(
v
)
+
" in your account"
);
}
}
return
userInfo
;
}
return
null
;
}
}
src/main/java/com/example/afrishop_v3/controllers/ImageSearchController.java
浏览文件 @
bac2bb41
...
...
@@ -3,7 +3,6 @@ package com.example.afrishop_v3.controllers;
import
com.example.afrishop_v3.base.Result
;
import
com.example.afrishop_v3.enums.ResultCodeEnum
;
import
com.example.afrishop_v3.models.ItemLabel
;
import
com.example.afrishop_v3.models.Post
;
import
com.example.afrishop_v3.models.TbCfStationItem
;
import
com.example.afrishop_v3.repository.ItemLabelRepository
;
import
com.example.afrishop_v3.repository.TbCfStationItemRepository
;
...
...
@@ -15,7 +14,6 @@ import org.springframework.data.domain.PageRequest;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.servlet.mvc.support.RedirectAttributes
;
import
java.io.IOException
;
import
java.util.*
;
...
...
@@ -31,6 +29,7 @@ public class ImageSearchController extends Controller {
public
ImageSearchController
(
TbCfStationItemRepository
repository
,
ItemLabelRepository
labelRepository
)
{
this
.
repository
=
repository
;
this
.
labelRepository
=
labelRepository
;
}
...
...
src/main/java/com/example/afrishop_v3/controllers/PaypalContoller.java
浏览文件 @
bac2bb41
...
...
@@ -7,10 +7,8 @@ import com.example.afrishop_v3.config.PaypalPaymentMethod;
import
com.example.afrishop_v3.enums.DeliveryStatusEnum
;
import
com.example.afrishop_v3.enums.OrderStatusEnum
;
import
com.example.afrishop_v3.enums.ResultCodeEnum
;
import
com.example.afrishop_v3.models.TbCfFinance
;
import
com.example.afrishop_v3.models.TbCfOrder
;
import
com.example.afrishop_v3.repository.TbCfFinanceRepository
;
import
com.example.afrishop_v3.repository.TbCfOrderRepository
;
import
com.example.afrishop_v3.models.*
;
import
com.example.afrishop_v3.repository.*
;
import
com.example.afrishop_v3.util.IdUtil
;
import
com.paypal.api.payments.*
;
import
com.paypal.base.rest.APIContext
;
...
...
@@ -25,6 +23,7 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
...
...
@@ -39,7 +38,7 @@ import java.util.Optional;
@RestController
@RequestMapping
(
value
=
"/paypal"
)
@Transactional
public
class
PaypalContoller
{
public
class
PaypalContoller
extends
Controller
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PaypalContoller
.
class
);
...
...
@@ -57,15 +56,22 @@ public class PaypalContoller {
private
final
APIContext
apiContext
;
private
final
TbCfOrderRepository
orderRepository
;
private
final
TbCfFinanceRepository
financeRepository
;
private
final
NetworkRepository
networkRepository
;
private
final
BonusRepository
bonusRepository
;
private
final
PostRepository
postRepository
;
private
final
UserRepository
userRepository
;
public
PaypalContoller
(
APIContext
apiContext
,
TbCfOrderRepository
orderRepository
,
TbCfFinanceRepository
financeRepository
)
{
public
PaypalContoller
(
APIContext
apiContext
,
TbCfOrderRepository
orderRepository
,
TbCfFinanceRepository
financeRepository
,
NetworkRepository
networkRepository
,
BonusRepository
bonusRepository
,
PostRepository
postRepository
,
UserRepository
userRepository
)
{
this
.
apiContext
=
apiContext
;
this
.
orderRepository
=
orderRepository
;
this
.
financeRepository
=
financeRepository
;
this
.
networkRepository
=
networkRepository
;
this
.
bonusRepository
=
bonusRepository
;
this
.
postRepository
=
postRepository
;
this
.
userRepository
=
userRepository
;
}
...
...
@@ -208,6 +214,20 @@ public class PaypalContoller {
//数据库校验支付状态##PayStatus 20
if
(
OrderStatusEnum
.
PAID
.
getValue
().
equals
(
tbCfOrder
.
getPayStatus
()))
verify
=
true
;
//生成佣金
Optional
<
TbCfOrder
>
optional
=
orderRepository
.
findById
(
orderId
);
if
(
optional
.
isPresent
())
{
TbCfOrder
order1
=
optional
.
get
();
Bonus
bonus
=
new
Bonus
();
TbCfUserInfo
userInfo
=
new
TbCfUserInfo
();
userInfo
.
setUserId
(
order1
.
getUserId
());
// bonus.setUserId(tbCfOrder.getUserId());
bonus
.
setOrderId
(
orderId
);
bonus
.
setAmount
(
order1
.
getItemsPrice
());
System
.
out
.
println
(
"佣金-----》》》订单号:"
+
orderId
+
"=user="
+
order1
.
getUserId
()+
"=price="
+
order1
.
getItemsPrice
());
saveNetworkMarketing
(
bonus
,
order1
.
getUserId
());
}
}
}
...
...
@@ -265,4 +285,100 @@ public class PaypalContoller {
String
now
=
format
.
format
(
new
Date
());
return
now
;
}
public
Result
saveNetworkMarketing
(
Bonus
bonus
,
String
userId
)
{
// TbCfUserInfo info = user.user();
// Optional<String> userIdOptional = userId;
System
.
out
.
println
(
"userId=="
+
userId
);
String
orderId
=
bonus
.
getOrderId
();
if
(
orderId
==
null
)
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Order is missing !!!"
);
Optional
<
TbCfOrder
>
orderOptional
=
orderRepository
.
findById
(
orderId
);
if
(!
orderOptional
.
isPresent
())
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Order is missing !!!"
);
TbCfOrder
order
=
orderOptional
.
get
();
if
(!
OrderStatusEnum
.
PAID
.
getValue
().
equals
(
order
.
getPayStatus
()))
{
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Invalid order status"
);
}
if
(
bonusRepository
.
existsByOrderId
(
orderId
))
{
return
new
Result
(
ResultCodeEnum
.
VALIDATE_ERROR
.
getCode
(),
"Transaction already done !!!"
);
}
BigDecimal
amount
=
bonus
.
getAmount
();
if
(!
StringUtils
.
isBlank
(
userId
))
{
Optional
<
TbCfUserInfo
>
optionalUser
=
userRepository
.
findById
(
userId
);
if
(
optionalUser
.
isPresent
())
{
TbCfUserInfo
user
=
optionalUser
.
get
();
Post
post
=
bonus
.
getPost
();
Optional
<
Post
>
postOptional
=
post
==
null
?
Optional
.
empty
()
:
postRepository
.
findById
(
post
.
getId
());
String
productSharer
=
bonus
.
getProductSharer
();
Optional
<
TbCfUserInfo
>
sharer
=
Optional
.
empty
();
if
(
productSharer
!=
null
)
{
sharer
=
userRepository
.
findByCode
(
productSharer
);
}
if
(
user
.
invited
())
{
BigDecimal
v
=
amount
.
multiply
(
BigDecimal
.
valueOf
(
10
)).
divide
(
BigDecimal
.
valueOf
(
100
),
RoundingMode
.
CEILING
);
bonus
.
setAmount
(
v
);
bonus
.
setUserInfo
(
user
);
bonus
.
setPercentage
(
10
);
bonus
=
bonusRepository
.
save
(
bonus
);
if
(
user
.
hasFcm
())
{
sendNotification
(
user
.
getFcm
(),
"Bonus alert !!"
,
user
.
display
()
+
", You received bonus of $"
+
formatter
.
format
(
v
)
+
" in your account"
);
}
}
TbCfUserInfo
bonusInc
=
runBonusInc
(
user
,
amount
,
5
,
false
,
orderId
);
runBonusInc
(
sharer
.
orElseGet
(()
->
postOptional
.
isPresent
()
?
postOptional
.
get
().
getRealUser
()
:
bonusInc
),
amount
,
5
,
postOptional
.
isPresent
()
||
sharer
.
isPresent
(),
orderId
);
//runBonusInc(bonusInc, amount, 0);
}
}
return
new
Result
<>(
bonus
);
}
private
TbCfUserInfo
runBonusInc
(
TbCfUserInfo
user
,
BigDecimal
amount
,
int
percent
,
boolean
direct
,
String
orderId
)
{
if
(
user
==
null
)
return
null
;
Optional
<
Network
>
userCode
=
networkRepository
.
findByNetworkInfoCode
(
user
.
getCode
());
if
(
userCode
.
isPresent
()
||
direct
)
{
TbCfUserInfo
userInfo
=
direct
?
user
:
userCode
.
get
().
getUserInfo
();
Bonus
bonus
=
new
Bonus
();
bonus
.
setUserInfo
(
userInfo
);
BigDecimal
v
=
amount
.
multiply
(
BigDecimal
.
valueOf
(
percent
));
v
=
v
.
divide
(
BigDecimal
.
valueOf
(
100
),
RoundingMode
.
CEILING
);
bonus
.
setAmount
(
v
);
bonus
.
setPercentage
(
percent
);
bonus
.
setOrderId
(
orderId
);
if
(
userInfo
.
invited
())
{
bonusRepository
.
save
(
bonus
);
// bonus = repository.save(bonus);
if
(
userInfo
.
hasFcm
())
{
sendNotification
(
userInfo
.
getFcm
(),
"Bonus alert !!"
,
userInfo
.
display
()
+
", You received bonus of $"
+
formatter
.
format
(
v
)
+
" in your account"
);
}
}
return
userInfo
;
}
return
null
;
}
}
src/main/java/com/example/afrishop_v3/controllers/UserController.java
浏览文件 @
bac2bb41
...
...
@@ -20,10 +20,8 @@ import org.springframework.data.domain.PageRequest;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.web.bind.annotation.*
;
import
java.awt.print.Pageable
;
import
java.net.URLDecoder
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Optional
;
@RestController
...
...
src/main/java/com/example/afrishop_v3/models/Activity.java
0 → 100644
浏览文件 @
bac2bb41
package
com
.
example
.
afrishop_v3
.
models
;
import
javax.persistence.Entity
;
import
javax.persistence.Id
;
import
javax.persistence.Transient
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 实体
* 表名 activity
*
* @author lipengjun
* @date 2020-11-28 16:30:49
*/
@Entity
public
class
Activity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 活动ID
*/
@Id
private
String
id
;
/**
* 活动名称
*/
private
String
name
;
/**
* 活动类型 1:满减 2:满折 3:满几件打折
*/
private
Integer
type
;
/**
* 使用类型 1:全场 2:分类商品 3:特定商品
*/
private
Integer
useType
;
/**
* 商品分类ID
*/
private
String
categoryId
;
/**
* 活动图片
*/
private
String
picture
;
/**
* 满减金额
*/
private
BigDecimal
fullAmount
;
/**
* 抵扣金额
*/
private
BigDecimal
reducedAmount
;
/**
* 折扣率
*/
private
Double
discountRate
;
/**
* 商品IDS
*/
private
String
itemIds
;
/**
* 活动状态 0:关闭 1:开启
*/
private
Integer
status
;
/**
* 活动开始时间
*/
private
Date
startTime
;
/**
* 活动结束时间
*/
private
Date
endTime
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 更新时间
*/
private
Date
updateTime
;
// @Transient
// private List<TbCfStationItem> itemList;
/**
* 设置:活动ID
*/
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
/**
* 获取:活动ID
*/
public
String
getId
()
{
return
id
;
}
/**
* 设置:活动名称
*/
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
/**
* 获取:活动名称
*/
public
String
getName
()
{
return
name
;
}
/**
* 设置:活动类型 1:满减 2:满折 3:满几件打折
*/
public
void
setType
(
Integer
type
)
{
this
.
type
=
type
;
}
/**
* 获取:活动类型 1:满减 2:满折 3:满几件打折
*/
public
Integer
getType
()
{
return
type
;
}
/**
* 设置:使用类型 1:全场 2:分类商品 3:特定商品
*/
public
void
setUseType
(
Integer
useType
)
{
this
.
useType
=
useType
;
}
/**
* 获取:使用类型 1:全场 2:分类商品 3:特定商品
*/
public
Integer
getUseType
()
{
return
useType
;
}
/**
* 设置:商品分类ID
*/
public
void
setCategoryId
(
String
categoryId
)
{
this
.
categoryId
=
categoryId
;
}
/**
* 获取:商品分类ID
*/
public
String
getCategoryId
()
{
return
categoryId
;
}
/**
* 设置:活动图片
*/
public
void
setPicture
(
String
picture
)
{
this
.
picture
=
picture
;
}
/**
* 获取:活动图片
*/
public
String
getPicture
()
{
return
picture
;
}
/**
* 设置:满减金额
*/
public
void
setFullAmount
(
BigDecimal
fullAmount
)
{
this
.
fullAmount
=
fullAmount
;
}
/**
* 获取:满减金额
*/
public
BigDecimal
getFullAmount
()
{
return
fullAmount
;
}
/**
* 设置:抵扣金额
*/
public
void
setReducedAmount
(
BigDecimal
reducedAmount
)
{
this
.
reducedAmount
=
reducedAmount
;
}
/**
* 获取:抵扣金额
*/
public
BigDecimal
getReducedAmount
()
{
return
reducedAmount
;
}
/**
* 设置:折扣率
*/
public
void
setdiscountRate
(
Double
discountRate
)
{
this
.
discountRate
=
discountRate
;
}
/**
* 获取:折扣率
*/
public
Double
getdiscountRate
()
{
return
discountRate
;
}
/**
* 设置:商品IDS
*/
public
void
setItemIds
(
String
itemIds
)
{
this
.
itemIds
=
itemIds
;
}
/**
* 获取:商品IDS
*/
public
String
getItemIds
()
{
return
itemIds
;
}
/**
* 设置:活动状态 0:关闭 1:开启
*/
public
void
setStatus
(
Integer
status
)
{
this
.
status
=
status
;
}
/**
* 获取:活动状态 0:关闭 1:开启
*/
public
Integer
getStatus
()
{
return
status
;
}
/**
* 设置:活动开始时间
*/
public
void
setStartTime
(
Date
startTime
)
{
this
.
startTime
=
startTime
;
}
/**
* 获取:活动开始时间
*/
public
Date
getStartTime
()
{
return
startTime
;
}
/**
* 设置:活动结束时间
*/
public
void
setEndTime
(
Date
endTime
)
{
this
.
endTime
=
endTime
;
}
/**
* 获取:活动结束时间
*/
public
Date
getEndTime
()
{
return
endTime
;
}
/**
* 设置:创建时间
*/
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
/**
* 获取:创建时间
*/
public
Date
getCreateTime
()
{
return
createTime
;
}
/**
* 设置:更新时间
*/
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
/**
* 获取:更新时间
*/
public
Date
getUpdateTime
()
{
return
updateTime
;
}
public
Double
getDiscountRate
()
{
return
discountRate
;
}
public
void
setDiscountRate
(
Double
discountRate
)
{
this
.
discountRate
=
discountRate
;
}
}
src/main/java/com/example/afrishop_v3/models/Bonus.java
浏览文件 @
bac2bb41
...
...
@@ -57,6 +57,13 @@ public class Bonus extends Model {
private
double
percentage
;
@Transient
private
String
userId
;
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
public
void
setOrderId
(
String
orderId
)
{
this
.
orderId
=
orderId
;
}
...
...
src/main/java/com/example/afrishop_v3/repository/ActivityRepository.java
0 → 100644
浏览文件 @
bac2bb41
package
com
.
example
.
afrishop_v3
.
repository
;
import
com.example.afrishop_v3.models.Activity
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Query
;
import
java.util.List
;
/**
* @Auther: wudepeng
* @Date: 2020/12/02
* @Description:
*/
public
interface
ActivityRepository
extends
JpaRepository
<
Activity
,
String
>
{
@Query
(
value
=
"select a from Activity a where CURRENT_TIMESTAMP between startTime and endTime and status=1"
)
List
<
Activity
>
getAllActivity
();
}
src/main/java/com/example/afrishop_v3/security/WebSecurityConfig.java
浏览文件 @
bac2bb41
...
...
@@ -66,7 +66,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
.
sessionManagement
().
sessionCreationPolicy
(
SessionCreationPolicy
.
STATELESS
).
and
()
.
authorizeRequests
().
antMatchers
(
"/api/auth/**"
,
"/search/image/**"
,
"/itemStation/**"
,
"/startPage/**"
,
"/goodsType/**"
,
"/home/**"
,
"/spider/**"
,
"/store/**"
,
"/shopify/**"
,
"/community/**"
,
"/version/**"
,
"/flutterwave/notify/**"
,
"/dpo/notify/**"
,
"/advertisement/**"
,
"/website/**"
,
"/paypal/**"
).
permitAll
()
"/flutterwave/notify/**"
,
"/dpo/notify/**"
,
"/advertisement/**"
,
"/website/**"
,
"/paypal/**"
,
"/discover/bonus/**"
).
permitAll
()
.
antMatchers
(
"/api/test/**"
).
permitAll
()
.
anyRequest
().
authenticated
();
...
...
src/test/java/com/example/afrishop_v3/AfrishopV3ApplicationTests.java
浏览文件 @
bac2bb41
//package com.example.afrishop_v3;
//
//import com.example.afrishop_v3.models.JsonTag;
//import com.example.afrishop_v3.models.TbCfOrder;
//import com.example.afrishop_v3.repository.TbCfOrderRepository;
//import com.google.gson.JsonObject;
//import net.sf.json.JSONObject;
//import org.junit.jupiter.api.Test;
//import org.junit.runner.Result;
//import org.junit.runner.RunWith;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.http.ResponseEntity;
//import org.springframework.test.context.junit4.SpringRunner;
//import org.springframework.web.client.RestTemplate;
//
//import java.text.SimpleDateFormat;
//import java.time.LocalDateTime;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//import java.util.Optional;
//
//@RunWith(SpringRunner.class)
//@SpringBootTest
//public class AfrishopV3ApplicationTests {
//
// RestTemplate restTemplate = new RestTemplate();
//
// @Test
// void contextLoads() {
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
...
...
@@ -20,4 +34,27 @@
// System.out.println(now);
// }
//
// private String url = "http://localhost:8099/afrishop/discover/bonus/saveNetworkMarketing";
// @Autowired
// private TbCfOrderRepository orderRepository;
//
//// post35789572fbf643cdab55901d1dc511a6
//// userInfo00297bf300ed45e092a5182dececad21
//// productSharervv32GmG4q
//// amount0.9
//// orderId008272b1fb994aef9b199449f46d5aa5
//
// @Test
// public void test1() {
//
// Optional<TbCfOrder> byId = orderRepository.findById("12a9d7d1042348278c97980a00fc67c4");
// JSONObject json=new JSONObject();
// json.put("userInfo", "32dcda5a709c4265a6f01686ae9b1c1c");
// json.put("amount", byId.get().getItemsPrice());
// json.put("orderId","12a9d7d1042348278c97980a00fc67c4");
// System.out.println(json);
// ResponseEntity<Result> resultResponseEntity = restTemplate.postForEntity(url, json, Result.class);
// System.err.println(resultResponseEntity);
// }
//
//}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论