Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
midjourney-proxy
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
徐少华
midjourney-proxy
Commits
ba5378df
Commit
ba5378df
authored
Dec 09, 2022
by
李传峰
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/checkCpa' into 'master'
feat: [none] CPA广告-权益ID校验 See merge request rays/pcloud-book!1709
parents
78a21b72
5f2f8f72
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
505 additions
and
22 deletions
+505
-22
AdvertisingCpaPaySyncRecordBiz.java
.../book/advertising/biz/AdvertisingCpaPaySyncRecordBiz.java
+51
-0
AdvertisingCpaPaySettingBizImpl.java
...advertising/biz/impl/AdvertisingCpaPaySettingBizImpl.java
+3
-3
AdvertisingCpaPaySyncRecordBizImpl.java
...ertising/biz/impl/AdvertisingCpaPaySyncRecordBizImpl.java
+73
-0
AdvertisingCpaProductPackageBizImpl.java
...rtising/biz/impl/AdvertisingCpaProductPackageBizImpl.java
+72
-10
AdvertisingSpaceBizImpl.java
...ud/book/advertising/biz/impl/AdvertisingSpaceBizImpl.java
+2
-0
AdvertisingCheck.java
...a/com/pcloud/book/advertising/check/AdvertisingCheck.java
+29
-2
QiLiShuSheApiHandler.java
...m/pcloud/book/advertising/check/QiLiShuSheApiHandler.java
+28
-4
AdvertisingCpaPaySyncRecordDao.java
.../book/advertising/dao/AdvertisingCpaPaySyncRecordDao.java
+14
-0
AdvertisingCpaPaySyncRecordDaoImpl.java
...ertising/dao/impl/AdvertisingCpaPaySyncRecordDaoImpl.java
+19
-0
AdvertisingBmRegister.java
...pcloud/book/advertising/entity/AdvertisingBmRegister.java
+10
-0
AdvertisingCpaPaySyncRecord.java
.../book/advertising/entity/AdvertisingCpaPaySyncRecord.java
+50
-0
ApiActionCodeEnum.java
.../com/pcloud/book/advertising/enums/ApiActionCodeEnum.java
+8
-0
PayStatusThirdSyncEnum.java
...pcloud/book/advertising/enums/PayStatusThirdSyncEnum.java
+19
-0
AdvertisingBmRegisterMapper.xml
...ources/mapper/advertising/AdvertisingBmRegisterMapper.xml
+9
-3
AdvertisingCpaPaySyncRecord.Mapper.xml
...mapper/advertising/AdvertisingCpaPaySyncRecord.Mapper.xml
+118
-0
No files found.
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/AdvertisingCpaPaySyncRecordBiz.java
0 → 100644
View file @
ba5378df
package
com
.
pcloud
.
book
.
advertising
.
biz
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySyncRecord
;
import
com.pcloud.common.page.PageBeanNew
;
import
java.util.List
;
/**
* (AdvertisingCpaPaySyncRecord)表服务接口
*
* @author makejava
* @since 2022-12-09 16:41:33
*/
public
interface
AdvertisingCpaPaySyncRecordBiz
{
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
AdvertisingCpaPaySyncRecord
getById
(
Long
id
);
/**
* 分页查询
*/
PageBeanNew
getList
(
Integer
currentPage
,
Integer
numPerPage
);
/**
* 新增数据
*
* @param advertisingCpaPaySyncRecord 实例对象
* @return 主键
*/
Long
insert
(
AdvertisingCpaPaySyncRecord
advertisingCpaPaySyncRecord
);
/**
* 修改数据
*
* @param advertisingCpaPaySyncRecord 实例对象
*/
void
update
(
AdvertisingCpaPaySyncRecord
advertisingCpaPaySyncRecord
);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
void
deleteById
(
Long
id
);
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/impl/AdvertisingCpaPaySettingBizImpl.java
View file @
ba5378df
...
...
@@ -3,6 +3,7 @@ package com.pcloud.book.advertising.biz.impl;
import
cn.hutool.core.collection.CollUtil
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaProductPackageBiz
;
import
com.pcloud.book.advertising.biz.BmBiz
;
import
com.pcloud.book.advertising.check.AdvertisingCheck
;
import
com.pcloud.book.advertising.entity.AdvertisingBmOption
;
import
com.pcloud.book.advertising.entity.AdvertisingBmOptionItem
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySetting
;
...
...
@@ -42,6 +43,8 @@ public class AdvertisingCpaPaySettingBizImpl implements AdvertisingCpaPaySetting
private
BmBiz
bmBiz
;
@Autowired
private
AdvertisingCpaProductPackageBiz
cpaProductPackageBiz
;
@Autowired
private
AdvertisingCheck
advertisingCheck
;
@Override
@ParamLog
(
"通过ID查询单条数据"
)
...
...
@@ -89,9 +92,6 @@ public class AdvertisingCpaPaySettingBizImpl implements AdvertisingCpaPaySetting
if
(
cpaId
==
null
)
{
return
;
}
if
(
Objects
.
equals
(
paySetting
,
YesNoEnums
.
YES
.
code
)
&&
CollUtil
.
isEmpty
(
cpaPaySettingList
))
{
throw
new
BizException
(
BizException
.
PARAM_DELETION
.
getCode
(),
"请配置付费规则"
);
}
cpaPaySettingList
=
Optional
.
ofNullable
(
cpaPaySettingList
).
orElse
(
CollUtil
.
toList
());
// 查询报名表单
List
<
AdvertisingBmOption
>
bmOptionList
=
bmBiz
.
getByCPAId
(
cpaId
);
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/impl/AdvertisingCpaPaySyncRecordBizImpl.java
0 → 100644
View file @
ba5378df
package
com
.
pcloud
.
book
.
advertising
.
biz
.
impl
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySyncRecord
;
import
com.pcloud.book.advertising.dao.AdvertisingCpaPaySyncRecordDao
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaPaySyncRecordBiz
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.page.PageParam
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.NumberUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* (AdvertisingCpaPaySyncRecord)表服务实现类
*
* @author makejava
* @since 2022-12-09 16:41:33
*/
@Service
(
"advertisingCpaPaySyncRecordBiz"
)
public
class
AdvertisingCpaPaySyncRecordBizImpl
implements
AdvertisingCpaPaySyncRecordBiz
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
AdvertisingCpaPaySyncRecordBizImpl
.
class
);
@Autowired
private
AdvertisingCpaPaySyncRecordDao
advertisingCpaPaySyncRecordDao
;
@Override
@ParamLog
(
"通过ID查询单条数据"
)
public
AdvertisingCpaPaySyncRecord
getById
(
Long
id
)
{
return
advertisingCpaPaySyncRecordDao
.
getById
(
id
);
}
@Override
@ParamLog
(
"查询多条数据"
)
public
PageBeanNew
getList
(
Integer
currentPage
,
Integer
numPerPage
)
{
PageBeanNew
pageBeanNew
=
advertisingCpaPaySyncRecordDao
.
listPageNew
(
new
PageParam
(
currentPage
,
numPerPage
),
null
,
"getList"
);
List
recordList
=
pageBeanNew
.
getRecordList
();
if
(
ListUtils
.
isEmpty
(
recordList
)){
return
pageBeanNew
;
}
// 加载其它数据
return
pageBeanNew
;
}
@Override
@ParamLog
(
"新增"
)
public
Long
insert
(
AdvertisingCpaPaySyncRecord
advertisingCpaPaySyncRecord
)
{
advertisingCpaPaySyncRecordDao
.
insert
(
advertisingCpaPaySyncRecord
);
return
advertisingCpaPaySyncRecord
.
getId
();
}
@Override
@ParamLog
(
"修改"
)
public
void
update
(
AdvertisingCpaPaySyncRecord
advertisingCpaPaySyncRecord
)
{
if
(
advertisingCpaPaySyncRecord
==
null
||
!
NumberUtil
.
isNumber
(
advertisingCpaPaySyncRecord
.
getId
())){
throw
BizException
.
PARAM_IS_NULL
;
}
advertisingCpaPaySyncRecordDao
.
update
(
advertisingCpaPaySyncRecord
);
}
@Override
@ParamLog
(
"删除"
)
public
void
deleteById
(
Long
id
)
{
advertisingCpaPaySyncRecordDao
.
deleteById
(
id
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/impl/AdvertisingCpaProductPackageBizImpl.java
View file @
ba5378df
...
...
@@ -3,6 +3,7 @@ package com.pcloud.book.advertising.biz.impl;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaPaySyncRecordBiz
;
import
com.pcloud.book.advertising.check.QiLiShuSheApiHandler
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaPaySettingBiz
;
import
com.pcloud.book.advertising.dao.BmOptionDao
;
...
...
@@ -10,9 +11,12 @@ import com.pcloud.book.advertising.dao.BmRegisterDao;
import
com.pcloud.book.advertising.dao.BmRegisterItemDao
;
import
com.pcloud.book.advertising.entity.AdvertisingBmRegister
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySetting
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySyncRecord
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaProductPackage
;
import
com.pcloud.book.advertising.dao.AdvertisingCpaProductPackageDao
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaProductPackageBiz
;
import
com.pcloud.book.advertising.enums.ApiActionCodeEnum
;
import
com.pcloud.book.advertising.enums.PayStatusThirdSyncEnum
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.page.PageParam
;
...
...
@@ -28,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -57,6 +62,8 @@ public class AdvertisingCpaProductPackageBizImpl implements AdvertisingCpaProduc
private
BmOptionDao
bmOptionDao
;
@Autowired
private
BmRegisterItemDao
bmRegisterItemDao
;
@Autowired
private
AdvertisingCpaPaySyncRecordBiz
cpaPaySyncRecordBiz
;
@Override
@ParamLog
(
"通过ID查询单条数据"
)
...
...
@@ -111,25 +118,33 @@ public class AdvertisingCpaProductPackageBizImpl implements AdvertisingCpaProduc
log
.
warn
(
"无法同步订单信息到第三方;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
payDTO
));
return
;
}
String
msg
=
"【起礼科技】支付调用开始"
;
AdvertisingCpaPaySyncRecord
cpaPaySyncRecord
=
initCpaPaySyncRecord
(
payDTO
.
getOrderMainNum
(),
ApiActionCodeEnum
.
PAY
.
name
(),
msg
);
// 拿到用户的注册信息
AdvertisingBmRegister
bmRegister
=
bmRegisterDao
.
getById
(
payDTO
.
getBuyId
());
// 配置的支付权益信息
AdvertisingCpaPaySetting
cpaPaySetting
=
cpaPaySettingBiz
.
getById
(
bmRegister
.
getCpaPaySettingId
());
if
(
cpaPaySetting
==
null
)
{
log
.
warn
(
"cpaPaySetting 为空,无法同步订单数据;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
payDTO
));
msg
=
"cpaPaySetting 为空,无法同步订单数据;"
;
log
.
warn
(
"{}payDTO:{}"
,
msg
,
JSONUtil
.
toJsonStr
(
payDTO
));
cpaPaySyncMsgRecord
(
cpaPaySyncRecord
,
msg
);
return
;
}
// 根据 权益包id 拿到第三方接口
AdvertisingCpaProductPackage
cpaProductPackage
=
advertisingCpaProductPackageDao
.
getByProductPackageId
(
cpaPaySetting
.
getProductPackageId
());
if
(
cpaProductPackage
==
null
)
{
log
.
warn
(
"cpaProductPackage 为空,无法同步订单数据;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
payDTO
));
msg
=
"cpaProductPackage 为空,无法同步订单数据;"
;
log
.
warn
(
"{}payDTO:{}"
,
msg
,
JSONUtil
.
toJsonStr
(
payDTO
));
cpaPaySyncMsgRecord
(
cpaPaySyncRecord
,
msg
);
return
;
}
// 拿到用户手机
/*Long mobilePhoneOptionId = bmOptionDao.getMobilePhoneOptionIdByCPA(bmRegister.getCpaId());
String mobile = bmRegisterItemDao.getRegisterOptionValue(payDTO.getWechatUserId(), bmRegister.getId(), mobilePhoneOptionId);*/
if
(
StrUtil
.
isBlank
(
payDTO
.
getPhoneNumber
()))
{
log
.
error
(
"未找到手机号,无法同步订单数据;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
payDTO
));
msg
=
"未找到手机号,无法同步订单数据;"
;
log
.
warn
(
"{}payDTO:{}"
,
msg
,
JSONUtil
.
toJsonStr
(
payDTO
));
cpaPaySyncMsgRecord
(
cpaPaySyncRecord
,
msg
);
return
;
}
// 请求参数
...
...
@@ -140,30 +155,45 @@ public class AdvertisingCpaProductPackageBizImpl implements AdvertisingCpaProduc
put
(
"payPrice"
,
payDTO
.
getMoney
().
multiply
(
BigDecimal
.
valueOf
(
100
)).
intValue
());
}};
QiLiShuSheApiHandler
apiHandler
=
new
QiLiShuSheApiHandler
(
cpaProductPackage
.
getAppId
(),
cpaProductPackage
.
getAppSecret
(),
cpaProductPackage
.
getApiDomain
());
boolean
result
=
apiHandler
.
post
(
cpaProductPackage
.
getApiMethodCreate
(),
bodyMap
);
QiLiShuSheApiHandler
.
ApiRequestResult
apiRequestResult
=
apiHandler
.
post
(
cpaProductPackage
.
getApiMethodCreate
(),
bodyMap
);
// 更新第三方同步记录
AdvertisingBmRegister
updateRegister
=
new
AdvertisingBmRegister
();
updateRegister
.
setId
(
bmRegister
.
getId
());
updateRegister
.
setPayStatusThird
(
apiRequestResult
.
getRunSuccess
()
?
PayStatusThirdSyncEnum
.
PAY_SYNC_SUCCESS
.
status
:
PayStatusThirdSyncEnum
.
PAY_SYNC_FAIL
.
status
);
bmRegisterDao
.
update
(
updateRegister
);
// 调用第三方记录
cpaPaySyncApiRecord
(
apiRequestResult
,
cpaPaySyncRecord
);
}
@Override
public
void
handlerRefundProductPackage
(
RefundExerciseBookDTO
refundDTO
)
{
String
msg
=
"【起礼科技】退款调用开始"
;
AdvertisingCpaPaySyncRecord
cpaPaySyncRecord
=
initCpaPaySyncRecord
(
refundDTO
.
getOrderMainNum
(),
ApiActionCodeEnum
.
REFUND
.
name
(),
msg
);
// 拿到用户的注册信息
AdvertisingBmRegister
bmRegister
=
bmRegisterDao
.
getById
(
refundDTO
.
getBuyId
());
// 配置的支付权益信息
AdvertisingCpaPaySetting
cpaPaySetting
=
cpaPaySettingBiz
.
getById
(
bmRegister
.
getCpaPaySettingId
());
if
(
cpaPaySetting
==
null
)
{
log
.
warn
(
"cpaPaySetting 为空,无法同步退款订单数据;refundDTO:{}"
,
JSONUtil
.
toJsonStr
(
refundDTO
));
msg
=
"cpaPaySetting 为空,无法同步退款订单数据;"
;
log
.
warn
(
"{}refundDTO:{}"
,
msg
,
JSONUtil
.
toJsonStr
(
refundDTO
));
cpaPaySyncMsgRecord
(
cpaPaySyncRecord
,
msg
);
return
;
}
// 根据 权益包id 拿到第三方接口
AdvertisingCpaProductPackage
cpaProductPackage
=
advertisingCpaProductPackageDao
.
getByProductPackageId
(
cpaPaySetting
.
getProductPackageId
());
if
(
cpaProductPackage
==
null
)
{
log
.
warn
(
"cpaProductPackage 为空,无法同步退款订单数据;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
refundDTO
));
msg
=
"cpaProductPackage 为空,无法同步退款订单数据;"
;
log
.
warn
(
"{}refundDTO:{}"
,
msg
,
JSONUtil
.
toJsonStr
(
refundDTO
));
cpaPaySyncMsgRecord
(
cpaPaySyncRecord
,
msg
);
return
;
}
// 拿到用户手机
Long
mobilePhoneOptionId
=
bmOptionDao
.
getMobilePhoneOptionIdByCPA
(
bmRegister
.
getCpaId
());
String
mobile
=
bmRegisterItemDao
.
getRegisterOptionValue
(
refundDTO
.
getWechatUserId
(),
bmRegister
.
getId
(),
mobilePhoneOptionId
);
if
(
StrUtil
.
isBlank
(
mobile
))
{
log
.
error
(
"未找到手机号,无法同步退款订单数据;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
refundDTO
));
msg
=
"未找到手机号,无法同步退款订单数据;"
;
log
.
warn
(
"{}refundDTO:{}"
,
msg
,
JSONUtil
.
toJsonStr
(
refundDTO
));
cpaPaySyncMsgRecord
(
cpaPaySyncRecord
,
msg
);
return
;
}
...
...
@@ -175,7 +205,39 @@ public class AdvertisingCpaProductPackageBizImpl implements AdvertisingCpaProduc
put
(
"refundPrice"
,
refundDTO
.
getRefundFee
().
multiply
(
BigDecimal
.
valueOf
(
100
)).
intValue
());
}};
QiLiShuSheApiHandler
apiHandler
=
new
QiLiShuSheApiHandler
(
cpaProductPackage
.
getAppId
(),
cpaProductPackage
.
getAppSecret
(),
cpaProductPackage
.
getApiDomain
());
boolean
result
=
apiHandler
.
post
(
cpaProductPackage
.
getApiMethodRefund
(),
bodyMap
);
QiLiShuSheApiHandler
.
ApiRequestResult
apiRequestResult
=
apiHandler
.
post
(
cpaProductPackage
.
getApiMethodRefund
(),
bodyMap
);
// 更新第三方同步记录
AdvertisingBmRegister
updateRegister
=
new
AdvertisingBmRegister
();
updateRegister
.
setId
(
bmRegister
.
getId
());
updateRegister
.
setPayStatusThird
(
apiRequestResult
.
getRunSuccess
()
?
PayStatusThirdSyncEnum
.
REFUND_SYNC_SUCCESS
.
status
:
PayStatusThirdSyncEnum
.
REFUND_SYNC_FAIL
.
status
);
bmRegisterDao
.
update
(
updateRegister
);
// 调用第三方记录
cpaPaySyncApiRecord
(
apiRequestResult
,
cpaPaySyncRecord
);
}
private
void
cpaPaySyncMsgRecord
(
AdvertisingCpaPaySyncRecord
cpaPaySyncRecord
,
String
msg
)
{
cpaPaySyncRecord
.
setUpdateTime
(
new
Date
());
cpaPaySyncRecord
.
setMsg
(
msg
);
cpaPaySyncRecordBiz
.
update
(
cpaPaySyncRecord
);
}
private
AdvertisingCpaPaySyncRecord
initCpaPaySyncRecord
(
String
orderMainNum
,
String
name
,
String
msg
)
{
AdvertisingCpaPaySyncRecord
cpaPaySyncRecord
=
new
AdvertisingCpaPaySyncRecord
();
cpaPaySyncRecord
.
setOrderNum
(
orderMainNum
);
cpaPaySyncRecord
.
setActionCode
(
name
);
cpaPaySyncRecord
.
setCreateTime
(
new
Date
());
cpaPaySyncRecord
.
setUpdateTime
(
new
Date
());
cpaPaySyncRecord
.
setMsg
(
msg
);
cpaPaySyncRecordBiz
.
insert
(
cpaPaySyncRecord
);
return
cpaPaySyncRecord
;
}
private
void
cpaPaySyncApiRecord
(
QiLiShuSheApiHandler
.
ApiRequestResult
apiRequestResult
,
AdvertisingCpaPaySyncRecord
cpaPaySyncRecord
)
{
cpaPaySyncRecord
.
setApiUrl
(
apiRequestResult
.
getApiUrl
());
cpaPaySyncRecord
.
setApiBody
(
apiRequestResult
.
getApiBody
());
cpaPaySyncRecord
.
setApiResult
(
apiRequestResult
.
getApiResult
());
cpaPaySyncRecord
.
setUpdateTime
(
new
Date
());
cpaPaySyncRecordBiz
.
update
(
cpaPaySyncRecord
);
}
...
...
@@ -197,7 +259,7 @@ public class AdvertisingCpaProductPackageBizImpl implements AdvertisingCpaProduc
put
(
"payPrice"
,
1
);
}};
QiLiShuSheApiHandler
apiHandler
=
new
QiLiShuSheApiHandler
(
cpaProductPackage
.
getAppId
(),
cpaProductPackage
.
getAppSecret
(),
cpaProductPackage
.
getApiDomain
());
boolean
result
=
apiHandler
.
post
(
cpaProductPackage
.
getApiMethodCreate
(),
bodyMap
);
apiHandler
.
post
(
cpaProductPackage
.
getApiMethodCreate
(),
bodyMap
);
}
public
void
testQiLiRefundOrder
()
{
...
...
@@ -218,6 +280,6 @@ public class AdvertisingCpaProductPackageBizImpl implements AdvertisingCpaProduc
put
(
"refundPrice"
,
1
);
}};
QiLiShuSheApiHandler
apiHandler
=
new
QiLiShuSheApiHandler
(
cpaProductPackage
.
getAppId
(),
cpaProductPackage
.
getAppSecret
(),
cpaProductPackage
.
getApiDomain
());
boolean
result
=
apiHandler
.
post
(
cpaProductPackage
.
getApiMethodRefund
(),
bodyMap
);
apiHandler
.
post
(
cpaProductPackage
.
getApiMethodRefund
(),
bodyMap
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/impl/AdvertisingSpaceBizImpl.java
View file @
ba5378df
...
...
@@ -3257,6 +3257,8 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
@Override
public
void
updateCPAContent
(
AdvertisingCpa
advertisingCpa
)
{
// 校验
advertisingCheck
.
checkCPAProductPackageParam
(
advertisingCpa
.
getPaySetting
(),
advertisingCpa
.
getAdvertisingCpaPaySettingList
());
advertisingCpa
=
equipCPA
(
advertisingCpa
);
Long
cpaId
=
advertisingCpa
.
getId
();
//广告详情,报名表单选项新增
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/check/AdvertisingCheck.java
View file @
ba5378df
package
com
.
pcloud
.
book
.
advertising
.
check
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaProductPackageBiz
;
import
com.pcloud.book.advertising.entity.AdvertisingCpa
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySetting
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaProductPackage
;
import
com.pcloud.book.advertising.entity.AdvertisingDetailFile
;
import
com.pcloud.book.advertising.entity.AdvertisingSpace
;
import
com.pcloud.book.advertising.enums.AdDetailModeEnum
;
...
...
@@ -14,9 +19,11 @@ import com.pcloud.common.utils.ListUtils;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.message.common.enums.YesNoEnums
;
import
org.apache.commons.lang3.ArrayUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
...
...
@@ -29,6 +36,9 @@ import java.util.regex.Pattern;
@Component
(
"advertisingCheck"
)
public
class
AdvertisingCheck
{
@Autowired
private
AdvertisingCpaProductPackageBiz
cpaProductPackageBiz
;
/**
* 新增广告位前校验参数
*/
...
...
@@ -122,8 +132,25 @@ public class AdvertisingCheck {
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"按钮提示不能为空!"
);
}
}
if
(
YesNoEnums
.
YES
.
code
.
equals
(
advertisingCpa
.
getPaySetting
())
&&
CollUtil
.
isEmpty
(
advertisingCpa
.
getAdvertisingCpaPaySettingList
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"请配置付费规则!"
);
// CPA第三方权益包校验
checkCPAProductPackageParam
(
advertisingCpa
.
getPaySetting
(),
advertisingCpa
.
getAdvertisingCpaPaySettingList
());
}
public
void
checkCPAProductPackageParam
(
Integer
paySetting
,
List
<
AdvertisingCpaPaySetting
>
cpaPaySettingList
)
{
if
(
YesNoEnums
.
YES
.
code
.
equals
(
paySetting
))
{
if
(
CollUtil
.
isEmpty
(
cpaPaySettingList
))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"请配置付费规则!"
);
}
else
{
Map
<
String
,
AdvertisingCpaProductPackage
>
cpaProductPackageMap
=
cpaProductPackageBiz
.
mapAll
();
if
(
MapUtil
.
isEmpty
(
cpaProductPackageMap
))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"请先在数据库中配置好第三方权益包!"
);
}
for
(
AdvertisingCpaPaySetting
cpaPaySetting
:
cpaPaySettingList
)
{
if
(!
cpaProductPackageMap
.
containsKey
(
cpaPaySetting
.
getProductPackageId
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
StrUtil
.
format
(
"请核对权益ID【{}】是否正确"
,
cpaPaySetting
.
getProductPackageId
()));
}
}
}
}
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/check/QiLiShuSheApiHandler.java
View file @
ba5378df
...
...
@@ -6,11 +6,13 @@ import cn.hutool.http.HttpRequest;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.pcloud.common.exceptions.BizException
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.net.util.Base64
;
import
javax.crypto.Mac
;
import
javax.crypto.spec.SecretKeySpec
;
import
java.io.Serializable
;
import
java.nio.charset.StandardCharsets
;
import
java.util.Arrays
;
import
java.util.HashMap
;
...
...
@@ -30,7 +32,7 @@ public class QiLiShuSheApiHandler {
this
.
domain
=
domain
;
}
public
boolean
post
(
String
path
,
HashMap
<
String
,
Object
>
bodyMap
)
{
public
ApiRequestResult
post
(
String
path
,
HashMap
<
String
,
Object
>
bodyMap
)
{
HttpRequest
post
=
HttpUtil
.
createPost
(
this
.
domain
+
path
);
String
nonceStr
=
IdUtil
.
fastSimpleUUID
();
long
timestamp
=
System
.
currentTimeMillis
()
/
1000
;
...
...
@@ -41,17 +43,26 @@ public class QiLiShuSheApiHandler {
post
.
header
(
"signature"
,
getSign
(
"POST"
,
path
,
sortBody
(
bodyMap
),
nonceStr
,
timestamp
));
post
.
body
(
body
);
String
result
=
post
.
execute
().
body
();
// 返回值
ApiRequestResult
requestResult
=
new
ApiRequestResult
();
requestResult
.
setRunSuccess
(
false
);
requestResult
.
setApiUrl
(
post
.
getUrl
());
requestResult
.
setApiBody
(
body
);
requestResult
.
setApiResult
(
result
);
log
.
info
(
"【起礼科技】请求第三方接口结果;result:{};post:{}"
,
result
,
post
);
if
(
StrUtil
.
isBlank
(
result
))
{
return
false
;
return
requestResult
;
}
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
result
);
if
(
jsonObject
.
getBoolean
(
"success"
))
{
log
.
info
(
"【起礼科技】数据同步成功;body:{}"
,
body
);
return
true
;
requestResult
.
setRunSuccess
(
true
);
return
requestResult
;
}
log
.
info
(
"【起礼科技】数据同步失败;body:{}"
,
body
);
return
false
;
return
requestResult
;
}
private
String
sortBody
(
HashMap
<
String
,
Object
>
bodyMap
)
{
...
...
@@ -83,4 +94,17 @@ public class QiLiShuSheApiHandler {
throw
new
BizException
(
BizException
.
DB_DML_FAIL
.
getCode
(),
"【起礼科技】第三方签名生成失败;"
);
}
}
@Data
public
static
class
ApiRequestResult
implements
Serializable
{
private
Boolean
runSuccess
;
private
String
apiUrl
;
private
String
apiBody
;
private
String
apiResult
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/AdvertisingCpaPaySyncRecordDao.java
0 → 100644
View file @
ba5378df
package
com
.
pcloud
.
book
.
advertising
.
dao
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySyncRecord
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
/**
* (AdvertisingCpaPaySyncRecord)表数据库访问层
*
* @author makejava
* @since 2022-12-09 16:41:33
*/
public
interface
AdvertisingCpaPaySyncRecordDao
extends
BaseDao
<
AdvertisingCpaPaySyncRecord
>
{
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/impl/AdvertisingCpaPaySyncRecordDaoImpl.java
0 → 100644
View file @
ba5378df
package
com
.
pcloud
.
book
.
advertising
.
dao
.
impl
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySyncRecord
;
import
com.pcloud.book.advertising.dao.AdvertisingCpaPaySyncRecordDao
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* (AdvertisingCpaPaySyncRecord)表数据库访问层
*
* @author makejava
* @since 2022-12-09 16:41:33
*/
@Repository
(
"advertisingCpaPaySyncRecordDaoImpl"
)
public
class
AdvertisingCpaPaySyncRecordDaoImpl
extends
BaseDaoImpl
<
AdvertisingCpaPaySyncRecord
>
implements
AdvertisingCpaPaySyncRecordDao
{
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/entity/AdvertisingBmRegister.java
View file @
ba5378df
...
...
@@ -112,6 +112,16 @@ public class AdvertisingBmRegister extends BaseEntity{
private
String
phoneNumber
;
private
Integer
payStatusThird
;
public
Integer
getPayStatusThird
()
{
return
payStatusThird
;
}
public
void
setPayStatusThird
(
Integer
payStatusThird
)
{
this
.
payStatusThird
=
payStatusThird
;
}
public
String
getPhoneNumber
()
{
return
phoneNumber
;
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/entity/AdvertisingCpaPaySyncRecord.java
0 → 100644
View file @
ba5378df
package
com
.
pcloud
.
book
.
advertising
.
entity
;
import
java.util.Date
;
import
java.math.BigDecimal
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* (AdvertisingCpaPaySyncRecord)实体类
*
* @author makejava
* @since 2022-12-09 19:24:49
*/
@Data
public
class
AdvertisingCpaPaySyncRecord
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1
;
@ApiModelProperty
(
"权益配置id"
)
private
Long
id
;
@ApiModelProperty
(
"订单号"
)
private
String
orderNum
;
@ApiModelProperty
(
"调用链接"
)
private
String
apiUrl
;
@ApiModelProperty
(
"调用参数"
)
private
String
apiBody
;
@ApiModelProperty
(
"调用结果"
)
private
String
apiResult
;
@ApiModelProperty
(
"创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
updateTime
;
@ApiModelProperty
(
"动作code"
)
private
String
actionCode
;
@ApiModelProperty
(
"消息"
)
private
String
msg
;
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/enums/ApiActionCodeEnum.java
0 → 100644
View file @
ba5378df
package
com
.
pcloud
.
book
.
advertising
.
enums
;
public
enum
ApiActionCodeEnum
{
PAY
,
REFUND
,
;
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/enums/PayStatusThirdSyncEnum.java
0 → 100644
View file @
ba5378df
package
com
.
pcloud
.
book
.
advertising
.
enums
;
public
enum
PayStatusThirdSyncEnum
{
PAY_SYNC_SUCCESS
(
1
,
"支付同步成功"
),
PAY_SYNC_FAIL
(
2
,
"支付同步失败"
),
REFUND_SYNC_SUCCESS
(
3
,
"退款同步成功"
),
REFUND_SYNC_FAIL
(
4
,
"退款同步失败"
),
;
public
final
Integer
status
;
public
final
String
desc
;
PayStatusThirdSyncEnum
(
Integer
status
,
String
desc
)
{
this
.
status
=
status
;
this
.
desc
=
desc
;
}
}
pcloud-service-book/src/main/resources/mapper/advertising/AdvertisingBmRegisterMapper.xml
View file @
ba5378df
...
...
@@ -23,6 +23,7 @@
<result
column=
"order_num"
property=
"orderNum"
jdbcType=
"VARCHAR"
/>
<result
column=
"pay_status"
property=
"payStatus"
jdbcType=
"INTEGER"
/>
<result
column=
"phone_number"
property=
"phoneNumber"
jdbcType=
"VARCHAR"
/>
<result
column=
"pay_status_third"
property=
"payStatusThird"
jdbcType=
"INTEGER"
/>
</resultMap>
<!-- 微信端用户详细信息 -->
...
...
@@ -41,7 +42,7 @@
<sql
id=
"Base_Column_List"
>
id, user_id, ad_id, nick_name, create_time, qrcode_id, scene_id, adviser_id, agent_id, channel_id, official_account_id, from_type,
from_id,book_id,create_day, create_month,cpa_id,cpa_pay_setting_id,order_num,pay_status,phone_number
from_id,book_id,create_day, create_month,cpa_id,cpa_pay_setting_id,order_num,pay_status,phone_number
,pay_status_third
</sql>
<select
id=
"getById"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
...
...
@@ -71,7 +72,8 @@
cpa_pay_setting_id,
order_num,
pay_status,
phone_number
phone_number,
pay_status_third
)
VALUES
(
...
...
@@ -94,7 +96,8 @@
#{cpaPaySettingId},
#{orderNum},
#{payStatus},
#{phoneNumber}
#{phoneNumber},
#{payStatusThird}
)
</insert>
...
...
@@ -252,6 +255,9 @@
<if
test=
"phoneNumber!=null"
>
phone_number = #{phoneNumber},
</if>
<if
test=
"payStatusThird!=null"
>
pay_status_third = #{payStatusThird},
</if>
</set>
WHERE
id = #{id}
...
...
pcloud-service-book/src/main/resources/mapper/advertising/AdvertisingCpaPaySyncRecord.Mapper.xml
0 → 100644
View file @
ba5378df
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.pcloud.book.advertising.dao.impl.AdvertisingCpaPaySyncRecordDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.advertising.entity.AdvertisingCpaPaySyncRecord"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"order_num"
property=
"orderNum"
jdbcType=
"VARCHAR"
/>
<result
column=
"api_url"
property=
"apiUrl"
jdbcType=
"VARCHAR"
/>
<result
column=
"api_body"
property=
"apiBody"
jdbcType=
"VARCHAR"
/>
<result
column=
"api_result"
property=
"apiResult"
jdbcType=
"VARCHAR"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"update_time"
property=
"updateTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"action_code"
property=
"actionCode"
jdbcType=
"VARCHAR"
/>
<result
column=
"msg"
property=
"msg"
jdbcType=
"VARCHAR"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, order_num, api_url, api_body, api_result, create_time, update_time, action_code, msg
</sql>
<select
id=
"getById"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM advertising_cpa_pay_sync_record
WHERE id = #{id}
</select>
<select
id=
"getList"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM advertising_cpa_pay_sync_record
</select>
<insert
id=
"insert"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
INSERT INTO advertising_cpa_pay_sync_record(
order_num,
api_url,
api_body,
api_result,
create_time,
update_time,
action_code,
msg
) VALUES (
#{orderNum, jdbcType=VARCHAR},
#{apiUrl, jdbcType=VARCHAR},
#{apiBody, jdbcType=VARCHAR},
#{apiResult, jdbcType=VARCHAR},
#{createTime, jdbcType=TIMESTAMP},
#{updateTime, jdbcType=TIMESTAMP},
#{actionCode, jdbcType=VARCHAR},
#{msg, jdbcType=VARCHAR}
)
</insert>
<insert
id=
"batchInsert"
>
INSERT INTO advertising_cpa_pay_sync_record (
order_num,
api_url,
api_body,
api_result,
create_time,
update_time,
action_code,
msg
) VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(
#{item.orderNum, jdbcType=VARCHAR},
#{item.apiUrl, jdbcType=VARCHAR},
#{item.apiBody, jdbcType=VARCHAR},
#{item.apiResult, jdbcType=VARCHAR},
#{item.createTime, jdbcType=TIMESTAMP},
#{item.updateTime, jdbcType=TIMESTAMP},
#{item.actionCode, jdbcType=VARCHAR},
#{item.msg, jdbcType=VARCHAR}
)
</foreach>
</insert>
<!--通过主键修改数据-->
<update
id=
"update"
>
UPDATE advertising_cpa_pay_sync_record
<set>
<if
test=
"orderNum != null"
>
order_num = #{orderNum},
</if>
<if
test=
"apiUrl != null"
>
api_url = #{apiUrl},
</if>
<if
test=
"apiBody != null"
>
api_body = #{apiBody},
</if>
<if
test=
"apiResult != null"
>
api_result = #{apiResult},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
<if
test=
"updateTime != null"
>
update_time = #{updateTime},
</if>
<if
test=
"actionCode != null"
>
action_code = #{actionCode},
</if>
<if
test=
"msg != null"
>
msg = #{msg},
</if>
</set>
WHERE id = #{id}
</update>
<!--通过主键删除-->
<delete
id=
"deleteById"
>
DELETE FROM advertising_cpa_pay_sync_record where id = #{id}
</delete>
</mapper>
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