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
1de02036
Commit
1de02036
authored
Dec 07, 2022
by
李传峰
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/1009285' into 'release'
Feature/1009285 See merge request rays/pcloud-book!1706
parents
f0f758ce
15833781
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
1579 additions
and
24 deletions
+1579
-24
BookApplication.java
...e-book/src/main/java/com/pcloud/book/BookApplication.java
+25
-0
AdvertisingCpaPaySettingBiz.java
...oud/book/advertising/biz/AdvertisingCpaPaySettingBiz.java
+57
-0
AdvertisingCpaProductPackageBiz.java
...book/advertising/biz/AdvertisingCpaProductPackageBiz.java
+63
-0
AdvertisingSpaceBiz.java
.../com/pcloud/book/advertising/biz/AdvertisingSpaceBiz.java
+1
-1
BmBiz.java
.../src/main/java/com/pcloud/book/advertising/biz/BmBiz.java
+2
-0
AdvertisingCpaPaySettingBizImpl.java
...advertising/biz/impl/AdvertisingCpaPaySettingBizImpl.java
+204
-0
AdvertisingCpaProductPackageBizImpl.java
...rtising/biz/impl/AdvertisingCpaProductPackageBizImpl.java
+223
-0
AdvertisingSpaceBizImpl.java
...ud/book/advertising/biz/impl/AdvertisingSpaceBizImpl.java
+13
-1
BmBizImpl.java
.../java/com/pcloud/book/advertising/biz/impl/BmBizImpl.java
+20
-10
AdvertisingCheck.java
...a/com/pcloud/book/advertising/check/AdvertisingCheck.java
+6
-1
QiLiShuSheApiHandler.java
...m/pcloud/book/advertising/check/QiLiShuSheApiHandler.java
+86
-0
AdvertisingCpaPaySettingDao.java
...oud/book/advertising/dao/AdvertisingCpaPaySettingDao.java
+17
-0
AdvertisingCpaProductPackageDao.java
...book/advertising/dao/AdvertisingCpaProductPackageDao.java
+15
-0
BmRegisterDao.java
...n/java/com/pcloud/book/advertising/dao/BmRegisterDao.java
+5
-0
BmRegisterItemDao.java
...va/com/pcloud/book/advertising/dao/BmRegisterItemDao.java
+3
-0
AdvertisingCpaPaySettingDaoImpl.java
...advertising/dao/impl/AdvertisingCpaPaySettingDaoImpl.java
+26
-0
AdvertisingCpaProductPackageDaoImpl.java
...rtising/dao/impl/AdvertisingCpaProductPackageDaoImpl.java
+23
-0
BmRegisterDaoImpl.java
...m/pcloud/book/advertising/dao/impl/BmRegisterDaoImpl.java
+10
-0
BmRegisterItemDaoImpl.java
...loud/book/advertising/dao/impl/BmRegisterItemDaoImpl.java
+9
-0
AdvertisingCpaDTO.java
...va/com/pcloud/book/advertising/dto/AdvertisingCpaDTO.java
+53
-0
AdvertisingBmRegister.java
...pcloud/book/advertising/entity/AdvertisingBmRegister.java
+49
-0
AdvertisingCpa.java
...va/com/pcloud/book/advertising/entity/AdvertisingCpa.java
+40
-0
AdvertisingCpaPaySetting.java
...oud/book/advertising/entity/AdvertisingCpaPaySetting.java
+58
-0
AdvertisingCpaProductPackage.java
...book/advertising/entity/AdvertisingCpaProductPackage.java
+52
-0
LinkRevertFacade.java
.../com/pcloud/book/advertising/facade/LinkRevertFacade.java
+12
-0
AdvertisingSpaceFacadeImpl.java
...k/advertising/facade/impl/AdvertisingSpaceFacadeImpl.java
+3
-2
ReaderConsr.java
...ain/java/com/pcloud/book/consumer/reader/ReaderConsr.java
+13
-0
MQTopicConumer.java
...c/main/java/com/pcloud/book/mq/config/MQTopicConumer.java
+8
-0
PaymentExerciseBookListener.java
...com/pcloud/book/mq/topic/PaymentExerciseBookListener.java
+95
-0
RefundExerciseBookListener.java
.../com/pcloud/book/mq/topic/RefundExerciseBookListener.java
+64
-0
AdvertisingBmRegisterItemMapper.xml
...es/mapper/advertising/AdvertisingBmRegisterItemMapper.xml
+9
-0
AdvertisingBmRegisterMapper.xml
...ources/mapper/advertising/AdvertisingBmRegisterMapper.xml
+51
-3
AdvertisingCpaMapper.xml
...ain/resources/mapper/advertising/AdvertisingCpaMapper.xml
+16
-6
AdvertisingCpaPaySetting.Mapper.xml
...es/mapper/advertising/AdvertisingCpaPaySetting.Mapper.xml
+115
-0
AdvertisingCpaProductPackage.Mapper.xml
...apper/advertising/AdvertisingCpaProductPackage.Mapper.xml
+133
-0
No files found.
pcloud-service-book/src/main/java/com/pcloud/book/BookApplication.java
View file @
1de02036
...
...
@@ -359,4 +359,29 @@ public class BookApplication {
public
Binding
recoverQrcodeBind
()
{
return
RabbitMQFactory
.
bindingExchange
(
recoverQrcodeQueue
(),
MQTopicProducer
.
RECOVER_QRCODE
);
}
/**
* 支付记录
*
* @return
*/
@Bean
public
Queue
paymentExerciseBookTopic
()
{
return
RabbitMQFactory
.
queueBuilder
(
MQTopicConumer
.
PAYMENT_EXERCISE_BOOK
);
}
@Bean
public
Binding
paymentExerciseBookBind
()
{
return
RabbitMQFactory
.
bindingExchange
(
paymentExerciseBookTopic
(),
MQTopicProducer
.
EXERCISE_BOOK_PAY
);
}
@Bean
public
Queue
refundExerciseBookTopic
()
{
return
RabbitMQFactory
.
queueBuilder
(
MQTopicConumer
.
REFUND_EXERCISE_BOOK
);
}
@Bean
public
Binding
refundExerciseBookBind
()
{
return
RabbitMQFactory
.
bindingExchange
(
refundExerciseBookTopic
(),
MQTopicProducer
.
EXERCISE_BOOK_REFUND
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/AdvertisingCpaPaySettingBiz.java
0 → 100644
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
biz
;
import
com.pcloud.book.advertising.entity.AdvertisingBmOption
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySetting
;
import
com.pcloud.common.page.PageBeanNew
;
import
java.util.List
;
/**
* (AdvertisingCpaPaySetting)表服务接口
*
* @author makejava
* @since 2022-11-25 14:20:46
*/
public
interface
AdvertisingCpaPaySettingBiz
{
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
AdvertisingCpaPaySetting
getById
(
Long
id
);
/**
* 分页查询
*/
PageBeanNew
getList
(
Integer
currentPage
,
Integer
numPerPage
);
/**
* 新增数据
*
* @param advertisingCpaPaySetting 实例对象
* @return 主键
*/
Long
insert
(
AdvertisingCpaPaySetting
advertisingCpaPaySetting
);
/**
* 修改数据
*
* @param advertisingCpaPaySetting 实例对象
*/
void
update
(
AdvertisingCpaPaySetting
advertisingCpaPaySetting
);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
void
deleteById
(
Long
id
);
void
savePaySettingList
(
List
<
AdvertisingCpaPaySetting
>
advertisingCpaPaySettingList
,
Long
cpaId
,
Integer
paySetting
);
List
<
AdvertisingCpaPaySetting
>
getByCpaId
(
Long
cpaId
,
List
<
AdvertisingBmOption
>
bmOptionList
);
List
<
AdvertisingCpaPaySetting
>
cpaPaySetting4WechatListHandler
(
List
<
AdvertisingCpaPaySetting
>
cpaPaySettingList
,
Integer
isWechatUser
);
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/AdvertisingCpaProductPackageBiz.java
0 → 100644
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
biz
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaProductPackage
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.exercisebook.dto.RefundExerciseBookDTO
;
import
com.pcloud.facade.tradecenter.dto.ExerciseBookPayDTO
;
import
java.util.Map
;
/**
* (AdvertisingCpaProductPackage)表服务接口
*
* @author makejava
* @since 2022-11-29 18:12:15
*/
public
interface
AdvertisingCpaProductPackageBiz
{
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
AdvertisingCpaProductPackage
getById
(
Long
id
);
/**
* 分页查询
*/
PageBeanNew
getList
(
Integer
currentPage
,
Integer
numPerPage
);
/**
* 新增数据
*
* @param advertisingCpaProductPackage 实例对象
* @return 主键
*/
Long
insert
(
AdvertisingCpaProductPackage
advertisingCpaProductPackage
);
/**
* 修改数据
*
* @param advertisingCpaProductPackage 实例对象
*/
void
update
(
AdvertisingCpaProductPackage
advertisingCpaProductPackage
);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
void
deleteById
(
Long
id
);
Map
<
String
,
AdvertisingCpaProductPackage
>
mapAll
();
void
handlerCreateProductPackage
(
ExerciseBookPayDTO
payDTO
);
void
handlerRefundProductPackage
(
RefundExerciseBookDTO
refundDTO
);
void
testQiLiOrder
();
void
testQiLiRefundOrder
();
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/AdvertisingSpaceBiz.java
View file @
1de02036
...
...
@@ -516,7 +516,7 @@ public interface AdvertisingSpaceBiz {
* @param cpaId
* @return
*/
AdvertisingCpaDTO
getCPAContentById
(
Long
cpaId
);
AdvertisingCpaDTO
getCPAContentById
(
Long
cpaId
,
Integer
isWechatUser
);
/**
* 分页查询cpa内容
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/BmBiz.java
View file @
1de02036
...
...
@@ -79,6 +79,8 @@ public interface BmBiz {
*/
Long
userSubmit4Cpa
(
AdvertisingBmRegister
bmRegister
,
Long
wechatUserId
);
void
sendSMS
(
String
phone
,
Map
<
String
,
String
>
paramMap
,
String
templateCode
)
throws
BizException
;
/**
* 微信端获取个人报名详情
* @param adId 应用ID
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/impl/AdvertisingCpaPaySettingBizImpl.java
0 → 100644
View file @
1de02036
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.entity.AdvertisingBmOption
;
import
com.pcloud.book.advertising.entity.AdvertisingBmOptionItem
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySetting
;
import
com.pcloud.book.advertising.dao.AdvertisingCpaPaySettingDao
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaPaySettingBiz
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaProductPackage
;
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
com.pcloud.message.common.enums.YesNoEnums
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.dao.DuplicateKeyException
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* (AdvertisingCpaPaySetting)表服务实现类
*
* @author makejava
* @since 2022-11-25 14:20:46
*/
@Service
(
"advertisingCpaPaySettingBiz"
)
public
class
AdvertisingCpaPaySettingBizImpl
implements
AdvertisingCpaPaySettingBiz
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
AdvertisingCpaPaySettingBizImpl
.
class
);
@Autowired
private
AdvertisingCpaPaySettingDao
advertisingCpaPaySettingDao
;
@Autowired
private
BmBiz
bmBiz
;
@Autowired
private
AdvertisingCpaProductPackageBiz
cpaProductPackageBiz
;
@Override
@ParamLog
(
"通过ID查询单条数据"
)
public
AdvertisingCpaPaySetting
getById
(
Long
id
)
{
return
advertisingCpaPaySettingDao
.
getById
(
id
);
}
@Override
@ParamLog
(
"查询多条数据"
)
public
PageBeanNew
getList
(
Integer
currentPage
,
Integer
numPerPage
)
{
PageBeanNew
pageBeanNew
=
advertisingCpaPaySettingDao
.
listPageNew
(
new
PageParam
(
currentPage
,
numPerPage
),
null
,
"getList"
);
List
recordList
=
pageBeanNew
.
getRecordList
();
if
(
ListUtils
.
isEmpty
(
recordList
))
{
return
pageBeanNew
;
}
// 加载其它数据
return
pageBeanNew
;
}
@Override
@ParamLog
(
"新增"
)
public
Long
insert
(
AdvertisingCpaPaySetting
advertisingCpaPaySetting
)
{
advertisingCpaPaySettingDao
.
insert
(
advertisingCpaPaySetting
);
return
advertisingCpaPaySetting
.
getId
();
}
@Override
@ParamLog
(
"修改"
)
public
void
update
(
AdvertisingCpaPaySetting
advertisingCpaPaySetting
)
{
if
(
advertisingCpaPaySetting
==
null
||
!
NumberUtil
.
isNumber
(
advertisingCpaPaySetting
.
getId
()))
{
throw
BizException
.
PARAM_IS_NULL
;
}
advertisingCpaPaySettingDao
.
update
(
advertisingCpaPaySetting
);
}
@Override
@ParamLog
(
"删除"
)
public
void
deleteById
(
Long
id
)
{
advertisingCpaPaySettingDao
.
deleteById
(
id
);
}
@Override
public
void
savePaySettingList
(
List
<
AdvertisingCpaPaySetting
>
cpaPaySettingList
,
Long
cpaId
,
Integer
paySetting
)
{
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
);
// 只匹配年级学科
Map
<
String
,
Long
>
textMap
=
bmOptionListConvertToTextMapBy
(
bmOptionList
);
// 默认将 first 定为 "年级", "年龄";second 定为 "学科";(以后如果需要扩展,加一个 firstType,secondType ,然后根据类型处理)
for
(
AdvertisingCpaPaySetting
cpaPaySetting
:
cpaPaySettingList
)
{
cpaPaySetting
.
setCpaId
(
cpaId
);
cpaPaySetting
.
setFirstOptionItemId
(
Optional
.
ofNullable
(
textMap
.
get
(
cpaPaySetting
.
getFirstOptionItemText
())).
orElseThrow
(()
->
new
BizException
(
BizException
.
PARAM_DELETION
.
getCode
(),
"配置支付规则失败,未找到对应的表单字段"
)));
cpaPaySetting
.
setSecondOptionItemId
(
Optional
.
ofNullable
(
textMap
.
get
(
cpaPaySetting
.
getSecondOptionItemText
())).
orElseThrow
(()
->
new
BizException
(
BizException
.
PARAM_DELETION
.
getCode
(),
"配置支付规则失败,未找到对应的表单字段"
)));
cpaPaySetting
.
setCreateTime
(
new
Date
());
}
// 删除已有配置
advertisingCpaPaySettingDao
.
deleteByCpaId
(
cpaId
);
// 保存
if
(
CollUtil
.
isNotEmpty
(
cpaPaySettingList
))
{
try
{
advertisingCpaPaySettingDao
.
insert
(
cpaPaySettingList
);
}
catch
(
DuplicateKeyException
e
)
{
throw
new
BizException
(
BizException
.
PARAM_DELETION
.
getCode
(),
"同一年级/年龄和学科只能设置一条付费规则"
);
}
}
}
/**
* 结构转换
* 默认为全部字段不重复
* 目的:没有唯一键id,只能通过 text 拿到 id,然后去保存关系
* 结构:《文本,id》
*/
private
Map
<
String
,
Long
>
bmOptionListConvertToTextMapBy
(
List
<
AdvertisingBmOption
>
bmOptionList
)
{
if
(
CollUtil
.
isEmpty
(
bmOptionList
))
{
return
new
HashMap
<>();
}
return
bmOptionList
.
stream
()
.
filter
(
x
->
CollUtil
.
toList
(
"年级"
,
"年龄"
,
"学科"
).
contains
(
x
.
getItemTitle
()))
.
flatMap
(
x
->
x
.
getOptionItem
().
stream
())
.
collect
(
Collectors
.
toMap
(
AdvertisingBmOptionItem:
:
getText
,
AdvertisingBmOptionItem:
:
getId
,
(
v1
,
v2
)
->
v1
));
// 如果需要 optionId ,那么这里要返回对象,而不只是 getText
}
/**
* 结构(跟上面 bmOptionListConvertToTextMapBy 结果是反的):《Id,文本》
*/
private
Map
<
Long
,
String
>
bmOptionListConvertToIdMapBy
(
List
<
AdvertisingBmOption
>
bmOptionList
)
{
if
(
CollUtil
.
isEmpty
(
bmOptionList
))
{
return
new
HashMap
<>();
}
return
bmOptionList
.
stream
()
.
filter
(
x
->
CollUtil
.
toList
(
"年级"
,
"年龄"
,
"学科"
).
contains
(
x
.
getItemTitle
()))
.
flatMap
(
x
->
x
.
getOptionItem
().
stream
())
.
collect
(
Collectors
.
toMap
(
AdvertisingBmOptionItem:
:
getId
,
AdvertisingBmOptionItem:
:
getText
,
(
v1
,
v2
)
->
v1
));
// 如果需要 optionId ,那么这里要返回对象,而不只是 getText
}
@Override
public
List
<
AdvertisingCpaPaySetting
>
getByCpaId
(
Long
cpaId
,
List
<
AdvertisingBmOption
>
bmOptionList
)
{
List
<
AdvertisingCpaPaySetting
>
cpaPaySettingList
=
Optional
.
ofNullable
(
advertisingCpaPaySettingDao
.
getByCpaId
(
cpaId
)).
orElse
(
CollUtil
.
toList
());
if
(
CollUtil
.
isEmpty
(
bmOptionList
))
{
bmOptionList
=
bmBiz
.
getByCPAId
(
cpaId
);
}
// 只匹配年级学科
Map
<
Long
,
String
>
idMap
=
bmOptionListConvertToIdMapBy
(
bmOptionList
);
// 默认将 first 定为 "年级", "年龄";second 定为 "学科";(以后如果需要扩展,加一个 firstType,secondType ,然后根据类型处理)
for
(
AdvertisingCpaPaySetting
cpaPaySetting
:
cpaPaySettingList
)
{
cpaPaySetting
.
setFirstOptionItemText
(
idMap
.
get
(
cpaPaySetting
.
getFirstOptionItemId
()));
cpaPaySetting
.
setSecondOptionItemText
(
idMap
.
get
(
cpaPaySetting
.
getSecondOptionItemId
()));
}
return
cpaPaySettingList
;
}
@Override
public
List
<
AdvertisingCpaPaySetting
>
cpaPaySetting4WechatListHandler
(
List
<
AdvertisingCpaPaySetting
>
cpaPaySettingList
,
Integer
isWechatUser
)
{
if
(!
YesNoEnums
.
YES
.
code
.
equals
(
isWechatUser
)
||
CollUtil
.
isEmpty
(
cpaPaySettingList
))
{
return
CollUtil
.
toList
();
}
// 拿到所有的第三方权益包商品信息
Map
<
String
,
AdvertisingCpaProductPackage
>
cpaProductPackageMap
=
cpaProductPackageBiz
.
mapAll
();
// 用来判断是否加入过第一层级
Map
<
Long
,
List
<
AdvertisingCpaPaySetting
>>
firstMap
=
new
HashMap
<>();
// 最终嵌套结果
List
<
AdvertisingCpaPaySetting
>
resultList
=
CollUtil
.
toList
();
for
(
AdvertisingCpaPaySetting
cpaPaySetting
:
cpaPaySettingList
)
{
List
<
AdvertisingCpaPaySetting
>
secondCpaPaySettingList
=
firstMap
.
get
(
cpaPaySetting
.
getFirstOptionItemId
());
if
(
CollUtil
.
isEmpty
(
secondCpaPaySettingList
))
{
secondCpaPaySettingList
=
CollUtil
.
toList
();
// 第二层级为空,说明未加入过第一层级;创建第一层级
AdvertisingCpaPaySetting
firstCpaPaySetting
=
new
AdvertisingCpaPaySetting
();
firstCpaPaySetting
.
setCpaId
(
cpaPaySetting
.
getCpaId
());
firstCpaPaySetting
.
setFirstOptionItemId
(
cpaPaySetting
.
getFirstOptionItemId
());
firstCpaPaySetting
.
setFirstOptionItemText
(
cpaPaySetting
.
getFirstOptionItemText
());
// 设置第二层级
firstCpaPaySetting
.
setCpaPaySettingList
(
secondCpaPaySettingList
);
resultList
.
add
(
firstCpaPaySetting
);
// 写入临时变量,用来判断是否加入过第一层级
firstMap
.
put
(
firstCpaPaySetting
.
getFirstOptionItemId
(),
secondCpaPaySettingList
);
}
// 写入第二层级对象
AdvertisingCpaPaySetting
secondCpaPaySetting
=
new
AdvertisingCpaPaySetting
();
secondCpaPaySetting
.
setId
(
cpaPaySetting
.
getId
());
secondCpaPaySetting
.
setFirstOptionItemId
(
cpaPaySetting
.
getFirstOptionItemId
());
secondCpaPaySetting
.
setFirstOptionItemText
(
cpaPaySetting
.
getFirstOptionItemText
());
secondCpaPaySetting
.
setSecondOptionItemId
(
cpaPaySetting
.
getSecondOptionItemId
());
secondCpaPaySetting
.
setSecondOptionItemText
(
cpaPaySetting
.
getSecondOptionItemText
());
secondCpaPaySetting
.
setProductPackageId
(
cpaPaySetting
.
getProductPackageId
());
secondCpaPaySetting
.
setPayPrice
(
cpaPaySetting
.
getPayPrice
());
secondCpaPaySetting
.
setProductName
(
cpaProductPackageMap
.
getOrDefault
(
cpaPaySetting
.
getProductPackageId
(),
new
AdvertisingCpaProductPackage
()).
getProductName
());
secondCpaPaySettingList
.
add
(
secondCpaPaySetting
);
}
return
resultList
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/impl/AdvertisingCpaProductPackageBizImpl.java
0 → 100644
View file @
1de02036
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.check.QiLiShuSheApiHandler
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaPaySettingBiz
;
import
com.pcloud.book.advertising.dao.BmOptionDao
;
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.AdvertisingCpaProductPackage
;
import
com.pcloud.book.advertising.dao.AdvertisingCpaProductPackageDao
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaProductPackageBiz
;
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
com.pcloud.exercisebook.dto.RefundExerciseBookDTO
;
import
com.pcloud.facade.tradecenter.dto.ExerciseBookPayDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
/**
* (AdvertisingCpaProductPackage)表服务实现类
*
* @author makejava
* @since 2022-11-29 18:12:15
*/
@Slf4j
@Service
(
"advertisingCpaProductPackageBiz"
)
public
class
AdvertisingCpaProductPackageBizImpl
implements
AdvertisingCpaProductPackageBiz
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
AdvertisingCpaProductPackageBizImpl
.
class
);
@Autowired
private
AdvertisingCpaProductPackageDao
advertisingCpaProductPackageDao
;
@Autowired
private
BmRegisterDao
bmRegisterDao
;
@Autowired
private
AdvertisingCpaPaySettingBiz
cpaPaySettingBiz
;
@Autowired
private
BmOptionDao
bmOptionDao
;
@Autowired
private
BmRegisterItemDao
bmRegisterItemDao
;
@Override
@ParamLog
(
"通过ID查询单条数据"
)
public
AdvertisingCpaProductPackage
getById
(
Long
id
)
{
return
advertisingCpaProductPackageDao
.
getById
(
id
);
}
@Override
@ParamLog
(
"查询多条数据"
)
public
PageBeanNew
getList
(
Integer
currentPage
,
Integer
numPerPage
)
{
PageBeanNew
pageBeanNew
=
advertisingCpaProductPackageDao
.
listPageNew
(
new
PageParam
(
currentPage
,
numPerPage
),
null
,
"getList"
);
List
recordList
=
pageBeanNew
.
getRecordList
();
if
(
ListUtils
.
isEmpty
(
recordList
)){
return
pageBeanNew
;
}
// 加载其它数据
return
pageBeanNew
;
}
@Override
@ParamLog
(
"新增"
)
public
Long
insert
(
AdvertisingCpaProductPackage
advertisingCpaProductPackage
)
{
advertisingCpaProductPackageDao
.
insert
(
advertisingCpaProductPackage
);
return
advertisingCpaProductPackage
.
getId
();
}
@Override
@ParamLog
(
"修改"
)
public
void
update
(
AdvertisingCpaProductPackage
advertisingCpaProductPackage
)
{
if
(
advertisingCpaProductPackage
==
null
||
!
NumberUtil
.
isNumber
(
advertisingCpaProductPackage
.
getId
())){
throw
BizException
.
PARAM_IS_NULL
;
}
advertisingCpaProductPackageDao
.
update
(
advertisingCpaProductPackage
);
}
@Override
@ParamLog
(
"删除"
)
public
void
deleteById
(
Long
id
)
{
advertisingCpaProductPackageDao
.
deleteById
(
id
);
}
@Override
public
Map
<
String
,
AdvertisingCpaProductPackage
>
mapAll
()
{
return
Optional
.
ofNullable
(
advertisingCpaProductPackageDao
.
listBy
(
null
))
.
orElse
(
CollUtil
.
toList
())
.
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getProductPackageId
(),
Function
.
identity
()));
}
public
void
handlerCreateProductPackage
(
ExerciseBookPayDTO
payDTO
)
{
if
(
StrUtil
.
isBlank
(
payDTO
.
getSnapshotParam
()))
{
log
.
warn
(
"无法同步订单信息到第三方;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
payDTO
));
return
;
}
// 拿到用户的注册信息
AdvertisingBmRegister
bmRegister
=
bmRegisterDao
.
getById
(
payDTO
.
getBuyId
());
// 配置的支付权益信息
AdvertisingCpaPaySetting
cpaPaySetting
=
cpaPaySettingBiz
.
getById
(
bmRegister
.
getCpaPaySettingId
());
if
(
cpaPaySetting
==
null
)
{
log
.
warn
(
"cpaPaySetting 为空,无法同步订单数据;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
payDTO
));
return
;
}
// 根据 权益包id 拿到第三方接口
AdvertisingCpaProductPackage
cpaProductPackage
=
advertisingCpaProductPackageDao
.
getByProductPackageId
(
cpaPaySetting
.
getProductPackageId
());
if
(
cpaProductPackage
==
null
)
{
log
.
warn
(
"cpaProductPackage 为空,无法同步订单数据;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
payDTO
));
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
));
return
;
}
// 请求参数
HashMap
<
String
,
Object
>
bodyMap
=
new
HashMap
<
String
,
Object
>()
{{
put
(
"productPackageId"
,
cpaProductPackage
.
getProductPackageId
());
put
(
"mobile"
,
payDTO
.
getPhoneNumber
());
put
(
"orderId"
,
payDTO
.
getOrderMainNum
());
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
);
}
@Override
public
void
handlerRefundProductPackage
(
RefundExerciseBookDTO
refundDTO
)
{
// 拿到用户的注册信息
AdvertisingBmRegister
bmRegister
=
bmRegisterDao
.
getById
(
refundDTO
.
getBuyId
());
// 配置的支付权益信息
AdvertisingCpaPaySetting
cpaPaySetting
=
cpaPaySettingBiz
.
getById
(
bmRegister
.
getCpaPaySettingId
());
if
(
cpaPaySetting
==
null
)
{
log
.
warn
(
"cpaPaySetting 为空,无法同步退款订单数据;refundDTO:{}"
,
JSONUtil
.
toJsonStr
(
refundDTO
));
return
;
}
// 根据 权益包id 拿到第三方接口
AdvertisingCpaProductPackage
cpaProductPackage
=
advertisingCpaProductPackageDao
.
getByProductPackageId
(
cpaPaySetting
.
getProductPackageId
());
if
(
cpaProductPackage
==
null
)
{
log
.
warn
(
"cpaProductPackage 为空,无法同步退款订单数据;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
refundDTO
));
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
));
return
;
}
// 请求参数
HashMap
<
String
,
Object
>
bodyMap
=
new
HashMap
<
String
,
Object
>()
{{
put
(
"productPackageId"
,
cpaProductPackage
.
getProductPackageId
());
put
(
"mobile"
,
mobile
);
put
(
"orderId"
,
refundDTO
.
getOrderMainNum
());
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
);
}
public
void
testQiLiOrder
()
{
String
productPackageId
=
"6368e407e6850b26cb86a7d9"
;
// 根据 权益包id 拿到第三方接口
AdvertisingCpaProductPackage
cpaProductPackage
=
advertisingCpaProductPackageDao
.
getByProductPackageId
(
productPackageId
);
if
(
cpaProductPackage
==
null
)
{
log
.
warn
(
"cpaProductPackage 为空,无法同步订单数据;payDTO:{}"
,
productPackageId
);
return
;
}
// 请求参数
HashMap
<
String
,
Object
>
bodyMap
=
new
HashMap
<
String
,
Object
>()
{{
put
(
"productPackageId"
,
productPackageId
);
put
(
"mobile"
,
"18616941348"
);
put
(
"orderId"
,
"2022113010001"
);
put
(
"payPrice"
,
1
);
}};
QiLiShuSheApiHandler
apiHandler
=
new
QiLiShuSheApiHandler
(
cpaProductPackage
.
getAppId
(),
cpaProductPackage
.
getAppSecret
(),
cpaProductPackage
.
getApiDomain
());
boolean
result
=
apiHandler
.
post
(
cpaProductPackage
.
getApiMethodCreate
(),
bodyMap
);
}
public
void
testQiLiRefundOrder
()
{
String
productPackageId
=
"6368e407e6850b26cb86a7d9"
;
// 根据 权益包id 拿到第三方接口
AdvertisingCpaProductPackage
cpaProductPackage
=
advertisingCpaProductPackageDao
.
getByProductPackageId
(
productPackageId
);
if
(
cpaProductPackage
==
null
)
{
log
.
warn
(
"cpaProductPackage 为空,无法同步订单数据;payDTO:{}"
,
productPackageId
);
return
;
}
// 请求参数
HashMap
<
String
,
Object
>
bodyMap
=
new
HashMap
<
String
,
Object
>()
{{
put
(
"productPackageId"
,
productPackageId
);
put
(
"mobile"
,
"18616941345"
);
put
(
"orderId"
,
"100000"
);
put
(
"refundPrice"
,
1
);
}};
QiLiShuSheApiHandler
apiHandler
=
new
QiLiShuSheApiHandler
(
cpaProductPackage
.
getAppId
(),
cpaProductPackage
.
getAppSecret
(),
cpaProductPackage
.
getApiDomain
());
boolean
result
=
apiHandler
.
post
(
cpaProductPackage
.
getApiMethodRefund
(),
bodyMap
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/impl/AdvertisingSpaceBizImpl.java
View file @
1de02036
...
...
@@ -3,6 +3,7 @@ package com.pcloud.book.advertising.biz.impl;
import
com.alibaba.fastjson.JSON
;
import
com.pcloud.appcenter.app.dto.AppTypeDto
;
import
com.pcloud.appcenter.app.service.AppTypeService
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaPaySettingBiz
;
import
com.pcloud.book.advertising.biz.AdvertisingSpaceBiz
;
import
com.pcloud.book.advertising.biz.BmBiz
;
import
com.pcloud.book.advertising.check.AdvertisingCheck
;
...
...
@@ -41,6 +42,7 @@ import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import
com.pcloud.book.advertising.entity.AdvertisingBrowseRecord
;
import
com.pcloud.book.advertising.entity.AdvertisingClickRecord
;
import
com.pcloud.book.advertising.entity.AdvertisingCpa
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySetting
;
import
com.pcloud.book.advertising.entity.AdvertisingDetailFile
;
import
com.pcloud.book.advertising.entity.AdvertisingDistributionBook
;
import
com.pcloud.book.advertising.entity.AdvertisingExposureRecord
;
...
...
@@ -227,6 +229,8 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
@Autowired
private
BmBiz
bmBiz
;
@Autowired
private
AdvertisingCpaPaySettingBiz
cpaPaySettingBiz
;
@Autowired
private
AdvertisingPilotRecordDao
advertisingPilotRecordDao
;
@Autowired
private
AdvertisingBrowseRecordDao
advertisingBrowseRecordDao
;
...
...
@@ -3219,6 +3223,8 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
advertisingCpa
=
equipCPA
(
advertisingCpa
);
//广告详情,报名表单选项新增
bmBiz
.
addOptionList
(
advertisingCpa
.
getAdvertisingBmOptionList
(),
cpaId
);
// 配置付费规则
cpaPaySettingBiz
.
savePaySettingList
(
advertisingCpa
.
getAdvertisingCpaPaySettingList
(),
cpaId
,
advertisingCpa
.
getPaySetting
());
//音视频保存
if
(!(
AdDetailModeEnum
.
IMG_TEXT
.
code
.
equals
(
advertisingCpa
.
getDetailMode
())
||
AdDetailModeEnum
.
DEDICATED_LINK
.
code
.
equals
(
advertisingCpa
.
getDetailMode
())))
{
addAdvertisingDetailFile
(
cpaId
,
advertisingCpa
.
getAdvertisingDetailFileList
());
...
...
@@ -3255,6 +3261,8 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
Long
cpaId
=
advertisingCpa
.
getId
();
//广告详情,报名表单选项新增
bmBiz
.
addOptionList
(
advertisingCpa
.
getAdvertisingBmOptionList
(),
cpaId
);
// 配置付费规则
cpaPaySettingBiz
.
savePaySettingList
(
advertisingCpa
.
getAdvertisingCpaPaySettingList
(),
cpaId
,
advertisingCpa
.
getPaySetting
());
//音视频保存
detailFileDao
.
deleteByCPAId
(
cpaId
);
if
(!(
AdDetailModeEnum
.
IMG_TEXT
.
code
.
equals
(
advertisingCpa
.
getDetailMode
())
||
AdDetailModeEnum
.
DEDICATED_LINK
.
code
.
equals
(
advertisingCpa
.
getDetailMode
())))
{
...
...
@@ -3284,7 +3292,7 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
}
@Override
public
AdvertisingCpaDTO
getCPAContentById
(
Long
cpaId
)
{
public
AdvertisingCpaDTO
getCPAContentById
(
Long
cpaId
,
Integer
isWechatUser
)
{
AdvertisingCpaDTO
cpaDTO
=
new
AdvertisingCpaDTO
();
AdvertisingCpa
advertisingCpaDTO
=
advertisingCpaDao
.
getById
(
cpaId
);
if
(
null
==
advertisingCpaDTO
)
{
...
...
@@ -3307,6 +3315,10 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
BeanUtils
.
copyProperties
(
advertisingCpaDTO
,
cpaDTO
);
//填充报名表单,多个上传文件
cpaDTO
.
setAdvertisingBmOptionList
(
bmBiz
.
getByCPAId
(
cpaId
));
// 填充付费规则
cpaDTO
.
setAdvertisingCpaPaySettingList
(
cpaPaySettingBiz
.
getByCpaId
(
cpaId
,
cpaDTO
.
getAdvertisingBmOptionList
()));
// 如果是微信用户,转换数据结构
cpaDTO
.
setAdvertisingCpaPaySetting4WechatList
(
cpaPaySettingBiz
.
cpaPaySetting4WechatListHandler
(
cpaDTO
.
getAdvertisingCpaPaySettingList
(),
isWechatUser
));
List
<
AdvertisingDetailFile
>
fileList
=
detailFileDao
.
getByCPAId
(
cpaId
);
if
(!
ListUtils
.
isEmpty
(
fileList
))
{
cpaDTO
.
setAdvertisingDetailFileList
(
fileList
);
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/biz/impl/BmBizImpl.java
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
biz
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.pcloud.appcenter.base.exception.AppBizException
;
import
com.pcloud.book.advertising.biz.BmBiz
;
import
com.pcloud.book.advertising.dao.AdvertisingCpaDao
;
...
...
@@ -330,15 +331,24 @@ public class BmBizImpl implements BmBiz {
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"请填写表单"
);
}
String
phoneNum
=
null
;
Long
mobilePhoneOptionId
=
bmOptionDao
.
getMobilePhoneOptionIdByCPA
(
cpaId
);
Optional
<
AdvertisingBmRegisterItem
>
itemOptional
=
items
.
stream
().
filter
(
s
->
s
!=
null
&&
s
.
getOptionId
().
equals
(
mobilePhoneOptionId
)).
findFirst
();
if
(
itemOptional
.
isPresent
())
{
// 存在
AdvertisingBmRegisterItem
registerItem
=
itemOptional
.
get
();
if
(
null
!=
registerItem
&&
!
StringUtil
.
isEmpty
(
registerItem
.
getOptionValue
()))
{
phoneNum
=
registerItem
.
getOptionValue
();
Integer
count
=
bmRegisterItemDao
.
checkMobilePhone4Cpa
(
cpaId
,
bmRegister
.
getFromType
(),
bmRegister
.
getFromId
(),
registerItem
.
getOptionValue
());
if
(
count
>
0
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"手机号已存在"
);
if
(
bmRegister
.
getCpaPaySettingId
()
!=
null
)
{
bmRegister
.
setPayStatus
(
0
);
// cpa支付,走指定校验逻辑
boolean
paid
=
bmRegisterDao
.
checkPaid
(
wechatUserId
,
cpaId
,
bmRegister
.
getCpaPaySettingId
(),
bmRegister
.
getPhoneNumber
());
if
(
paid
)
{
throw
new
BizException
(
BookBizException
.
PARAM_IS_ERROR
,
"您已购买了该课程,请选择其他年级或科目"
);
}
}
else
{
Long
mobilePhoneOptionId
=
bmOptionDao
.
getMobilePhoneOptionIdByCPA
(
cpaId
);
Optional
<
AdvertisingBmRegisterItem
>
itemOptional
=
items
.
stream
().
filter
(
s
->
s
!=
null
&&
s
.
getOptionId
().
equals
(
mobilePhoneOptionId
)).
findFirst
();
if
(
itemOptional
.
isPresent
())
{
// 存在
AdvertisingBmRegisterItem
registerItem
=
itemOptional
.
get
();
if
(
null
!=
registerItem
&&
!
StringUtil
.
isEmpty
(
registerItem
.
getOptionValue
()))
{
phoneNum
=
registerItem
.
getOptionValue
();
Integer
count
=
bmRegisterItemDao
.
checkMobilePhone4Cpa
(
cpaId
,
bmRegister
.
getFromType
(),
bmRegister
.
getFromId
(),
registerItem
.
getOptionValue
());
if
(
count
>
0
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"手机号已存在"
);
}
}
}
}
...
...
@@ -353,7 +363,7 @@ public class BmBizImpl implements BmBiz {
// 报名成功发送短信
//cpaId找到手机号
AdvertisingCpa
advertisingCpa
=
advertisingCpaDao
.
getById
(
cpaId
);
if
(
null
!=
advertisingCpa
&&
null
!=
advertisingCpa
.
getSuccessEmail
()
&&
advertisingCpa
.
getSuccessEmail
()==
2
){
if
(
null
!=
advertisingCpa
&&
null
!=
advertisingCpa
.
getSuccessEmail
()
&&
advertisingCpa
.
getSuccessEmail
()==
2
&&
ObjectUtil
.
notEqual
(
advertisingCpa
.
getPaySetting
(),
1
)
){
sendSMS
(
phoneNum
,
null
,
SMSTemplateConstant
.
DEDICATED_LINK_CODE
);
}
return
registerId
;
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/check/AdvertisingCheck.java
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
check
;
import
cn.hutool.core.collection.CollUtil
;
import
com.pcloud.book.advertising.entity.AdvertisingCpa
;
import
com.pcloud.book.advertising.entity.AdvertisingDetailFile
;
import
com.pcloud.book.advertising.entity.AdvertisingSpace
;
...
...
@@ -11,6 +12,7 @@ import com.pcloud.book.advertising.enums.SettlementMethodEnum;
import
com.pcloud.book.base.exception.BookBizException
;
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.stereotype.Component
;
import
java.util.ArrayList
;
...
...
@@ -72,7 +74,7 @@ public class AdvertisingCheck {
// throw new BookBizException(BookBizException.PARAM_IS_ERROR, "优惠展示图不能为空!");
// }
//1图文介绍
if
(
AdDetailModeEnum
.
IMG_TEXT
.
code
.
equals
(
advertisingCpa
.
getDetailMode
())
||
AdDetailModeEnum
.
DEDICATED_LINK
.
code
.
equals
(
advertisingCpa
.
getDetailMode
())
)
{
if
(
AdDetailModeEnum
.
IMG_TEXT
.
code
.
equals
(
advertisingCpa
.
getDetailMode
()))
{
if
(
StringUtil
.
isEmpty
(
advertisingCpa
.
getCoverPic
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"封面不能为空!"
);
}
...
...
@@ -120,6 +122,9 @@ 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
,
"请配置付费规则!"
);
}
}
/**
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/check/QiLiShuSheApiHandler.java
0 → 100644
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
check
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.pcloud.common.exceptions.BizException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.net.util.Base64
;
import
javax.crypto.Mac
;
import
javax.crypto.spec.SecretKeySpec
;
import
java.nio.charset.StandardCharsets
;
import
java.util.Arrays
;
import
java.util.HashMap
;
@Slf4j
public
class
QiLiShuSheApiHandler
{
private
String
appId
;
private
String
appSecret
;
private
String
domain
;
public
QiLiShuSheApiHandler
(
String
appId
,
String
appSecret
,
String
domain
)
{
this
.
appId
=
appId
;
this
.
appSecret
=
appSecret
;
this
.
domain
=
domain
;
}
public
boolean
post
(
String
path
,
HashMap
<
String
,
Object
>
bodyMap
)
{
HttpRequest
post
=
HttpUtil
.
createPost
(
this
.
domain
+
path
);
String
nonceStr
=
IdUtil
.
fastSimpleUUID
();
long
timestamp
=
System
.
currentTimeMillis
()
/
1000
;
String
body
=
JSONObject
.
toJSONString
(
bodyMap
);
post
.
header
(
"appid"
,
this
.
appId
);
post
.
header
(
"nonceStr"
,
nonceStr
);
post
.
header
(
"timestamp"
,
String
.
valueOf
(
timestamp
));
post
.
header
(
"signature"
,
getSign
(
"POST"
,
path
,
sortBody
(
bodyMap
),
nonceStr
,
timestamp
));
post
.
body
(
body
);
String
result
=
post
.
execute
().
body
();
log
.
info
(
"【起礼科技】请求第三方接口结果;result:{};post:{}"
,
result
,
post
);
if
(
StrUtil
.
isBlank
(
result
))
{
return
false
;
}
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
result
);
if
(
jsonObject
.
getBoolean
(
"success"
))
{
log
.
info
(
"【起礼科技】数据同步成功;body:{}"
,
body
);
return
true
;
}
log
.
info
(
"【起礼科技】数据同步失败;body:{}"
,
body
);
return
false
;
}
private
String
sortBody
(
HashMap
<
String
,
Object
>
bodyMap
)
{
char
[]
charArray
=
JSONObject
.
toJSONString
(
bodyMap
).
toCharArray
();
Arrays
.
sort
(
charArray
);
return
new
String
(
charArray
);
}
String
getSign
(
String
method
,
String
path
,
String
body
,
String
nonceStr
,
long
timestamp
)
{
String
message
=
buildMessage
(
method
,
path
,
timestamp
,
nonceStr
,
body
);
return
sign
(
message
);
}
String
buildMessage
(
String
method
,
String
path
,
long
timestamp
,
String
nonceStr
,
String
body
)
{
return
method
+
"\n"
+
path
+
"\n"
+
timestamp
+
"\n"
+
nonceStr
+
"\n"
+
body
+
"\n"
;
}
String
sign
(
String
stringToSign
)
{
try
{
Mac
hmacSha256
=
Mac
.
getInstance
(
"HmacSHA256"
);
byte
[]
keyBytes
=
this
.
appSecret
.
getBytes
(
StandardCharsets
.
UTF_8
);
//appkey 为绑定到API 上的签名密钥
hmacSha256
.
init
(
new
SecretKeySpec
(
keyBytes
,
0
,
keyBytes
.
length
,
"HmacSHA256"
));
return
new
String
(
Base64
.
encodeBase64
(
hmacSha256
.
doFinal
(
stringToSign
.
getBytes
(
"UTF-8"
))),
"UTF-8"
);
}
catch
(
Exception
e
)
{
throw
new
BizException
(
BizException
.
DB_DML_FAIL
.
getCode
(),
"【起礼科技】第三方签名生成失败;"
);
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/AdvertisingCpaPaySettingDao.java
0 → 100644
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
dao
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySetting
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
/**
* (AdvertisingCpaPaySetting)表数据库访问层
*
* @author makejava
* @since 2022-11-25 14:20:46
*/
public
interface
AdvertisingCpaPaySettingDao
extends
BaseDao
<
AdvertisingCpaPaySetting
>
{
int
deleteByCpaId
(
Long
cpaId
);
List
<
AdvertisingCpaPaySetting
>
getByCpaId
(
Long
cpaId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/AdvertisingCpaProductPackageDao.java
0 → 100644
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
dao
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaProductPackage
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
/**
* (AdvertisingCpaProductPackage)表数据库访问层
*
* @author makejava
* @since 2022-11-29 18:12:15
*/
public
interface
AdvertisingCpaProductPackageDao
extends
BaseDao
<
AdvertisingCpaProductPackage
>
{
AdvertisingCpaProductPackage
getByProductPackageId
(
String
productPackageId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/BmRegisterDao.java
View file @
1de02036
...
...
@@ -84,4 +84,9 @@ public interface BmRegisterDao extends BaseDao<AdvertisingBmRegister> {
public
Long
getRegisterCountByBookId
(
Long
bookId
,
Long
adviserId
,
Long
channelId
,
Long
adId
,
String
statisMonth
);
List
<
BmRegisterDTO
>
getRegisterInfoListByCpaId
(
Long
cpaId
,
String
statisMonth
);
/**
* 检测是否购买过
*/
boolean
checkPaid
(
Long
wechatUserId
,
Long
cpaId
,
Long
cpaPaySettingId
,
String
phoneNumber
);
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/BmRegisterItemDao.java
View file @
1de02036
...
...
@@ -21,4 +21,7 @@ public interface BmRegisterItemDao extends BaseDao<AdvertisingBmRegisterItem> {
Integer
checkMobilePhone
(
Long
adId
,
String
fromType
,
Long
fromId
,
String
optionValue
);
Integer
checkMobilePhone4Cpa
(
Long
cpaId
,
String
fromType
,
Long
fromId
,
String
optionValue
);
String
getRegisterOptionValue
(
Long
userId
,
Long
registerId
,
Long
optionId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/impl/AdvertisingCpaPaySettingDaoImpl.java
0 → 100644
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
dao
.
impl
;
import
com.pcloud.book.advertising.dao.AdvertisingCpaPaySettingDao
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySetting
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* (AdvertisingCpaPaySetting)表数据库访问层
*
* @author makejava
* @since 2022-11-25 14:20:46
*/
@Repository
(
"advertisingCpaPaySettingDao"
)
public
class
AdvertisingCpaPaySettingDaoImpl
extends
BaseDaoImpl
<
AdvertisingCpaPaySetting
>
implements
AdvertisingCpaPaySettingDao
{
public
int
deleteByCpaId
(
Long
cpaId
)
{
return
getSessionTemplate
().
update
(
getStatement
(
"deleteByCpaId"
),
cpaId
);
}
@Override
public
List
<
AdvertisingCpaPaySetting
>
getByCpaId
(
Long
cpaId
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"getByCpaId"
),
cpaId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/impl/AdvertisingCpaProductPackageDaoImpl.java
0 → 100644
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
dao
.
impl
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaProductPackage
;
import
com.pcloud.book.advertising.dao.AdvertisingCpaProductPackageDao
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* (AdvertisingCpaProductPackage)表数据库访问层
*
* @author makejava
* @since 2022-11-29 18:12:15
*/
@Repository
(
"advertisingCpaProductPackageDao"
)
public
class
AdvertisingCpaProductPackageDaoImpl
extends
BaseDaoImpl
<
AdvertisingCpaProductPackage
>
implements
AdvertisingCpaProductPackageDao
{
@Override
public
AdvertisingCpaProductPackage
getByProductPackageId
(
String
productPackageId
)
{
return
getSessionTemplate
().
selectOne
(
getStatement
(
"getByProductPackageId"
),
productPackageId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/impl/BmRegisterDaoImpl.java
View file @
1de02036
...
...
@@ -96,4 +96,14 @@ public class BmRegisterDaoImpl extends BaseDaoImpl<AdvertisingBmRegister> implem
map
.
put
(
"statisMonth"
,
statisMonth
);
return
getSessionTemplate
().
selectList
(
getStatement
(
"getRegisterInfoListByCpaId"
),
map
);
}
@Override
public
boolean
checkPaid
(
Long
wechatUserId
,
Long
cpaId
,
Long
cpaPaySettingId
,
String
phoneNumber
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"wechatUserId"
,
wechatUserId
);
map
.
put
(
"cpaId"
,
cpaId
);
map
.
put
(
"cpaPaySettingId"
,
cpaPaySettingId
);
map
.
put
(
"phoneNumber"
,
phoneNumber
);
return
getSessionTemplate
().
selectOne
(
getStatement
(
"checkPaid"
),
map
)
!=
null
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dao/impl/BmRegisterItemDaoImpl.java
View file @
1de02036
...
...
@@ -37,4 +37,13 @@ public class BmRegisterItemDaoImpl extends BaseDaoImpl<AdvertisingBmRegisterItem
map
.
put
(
"optionValue"
,
optionValue
);
return
getSessionTemplate
().
selectOne
(
getStatement
(
"checkMobilePhone4Cpa"
),
map
);
}
@Override
public
String
getRegisterOptionValue
(
Long
userId
,
Long
registerId
,
Long
optionId
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"userId"
,
userId
);
map
.
put
(
"registerId"
,
registerId
);
map
.
put
(
"optionId"
,
optionId
);
return
getSessionTemplate
().
selectOne
(
getStatement
(
"getRegisterOptionValue"
),
map
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/dto/AdvertisingCpaDTO.java
View file @
1de02036
...
...
@@ -2,6 +2,7 @@ package com.pcloud.book.advertising.dto;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.book.advertising.entity.AdvertisingBmOption
;
import
com.pcloud.book.advertising.entity.AdvertisingCpaPaySetting
;
import
com.pcloud.book.advertising.entity.AdvertisingDetailFile
;
import
com.pcloud.common.dto.BaseDto
;
...
...
@@ -168,6 +169,11 @@ public class AdvertisingCpaDTO extends BaseDto {
private
Integer
successEmail
;
/**
* 成功后发送的内容(短信模板)
*/
private
String
successSendCode
;
/**
* 跳转类型,1-统一跳转,2-自定义跳转
*/
private
Integer
jumpStyle
;
...
...
@@ -196,6 +202,53 @@ public class AdvertisingCpaDTO extends BaseDto {
*/
private
String
videoCover
;
/**
* 支付设置;0:关闭;1:开启;
*/
private
Integer
paySetting
;
/**
* 支付规则配置
*/
private
List
<
AdvertisingCpaPaySetting
>
advertisingCpaPaySettingList
;
/**
* 支付规则配置(微信端)
*/
private
List
<
AdvertisingCpaPaySetting
>
advertisingCpaPaySetting4WechatList
;
public
String
getSuccessSendCode
()
{
return
successSendCode
;
}
public
void
setSuccessSendCode
(
String
successSendCode
)
{
this
.
successSendCode
=
successSendCode
;
}
public
Integer
getPaySetting
()
{
return
paySetting
;
}
public
void
setPaySetting
(
Integer
paySetting
)
{
this
.
paySetting
=
paySetting
;
}
public
List
<
AdvertisingCpaPaySetting
>
getAdvertisingCpaPaySettingList
()
{
return
advertisingCpaPaySettingList
;
}
public
void
setAdvertisingCpaPaySettingList
(
List
<
AdvertisingCpaPaySetting
>
advertisingCpaPaySettingList
)
{
this
.
advertisingCpaPaySettingList
=
advertisingCpaPaySettingList
;
}
public
List
<
AdvertisingCpaPaySetting
>
getAdvertisingCpaPaySetting4WechatList
()
{
return
advertisingCpaPaySetting4WechatList
;
}
public
void
setAdvertisingCpaPaySetting4WechatList
(
List
<
AdvertisingCpaPaySetting
>
advertisingCpaPaySetting4WechatList
)
{
this
.
advertisingCpaPaySetting4WechatList
=
advertisingCpaPaySetting4WechatList
;
}
public
String
getVideoCover
()
{
return
videoCover
;
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/entity/AdvertisingBmRegister.java
View file @
1de02036
...
...
@@ -95,6 +95,55 @@ public class AdvertisingBmRegister extends BaseEntity{
*/
private
Long
cpaId
;
/**
* 购买内容id
*/
private
Long
cpaPaySettingId
;
/**
* 订单号
*/
private
String
orderNum
;
/**
* 支付状态;-1:已退款;0:待支付;1:已支付;
*/
private
Integer
payStatus
;
private
String
phoneNumber
;
public
String
getPhoneNumber
()
{
return
phoneNumber
;
}
public
void
setPhoneNumber
(
String
phoneNumber
)
{
this
.
phoneNumber
=
phoneNumber
;
}
public
Integer
getPayStatus
()
{
return
payStatus
;
}
public
void
setPayStatus
(
Integer
payStatus
)
{
this
.
payStatus
=
payStatus
;
}
public
Long
getCpaPaySettingId
()
{
return
cpaPaySettingId
;
}
public
void
setCpaPaySettingId
(
Long
cpaPaySettingId
)
{
this
.
cpaPaySettingId
=
cpaPaySettingId
;
}
public
String
getOrderNum
()
{
return
orderNum
;
}
public
void
setOrderNum
(
String
orderNum
)
{
this
.
orderNum
=
orderNum
;
}
public
Long
getCpaId
()
{
return
cpaId
;
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/entity/AdvertisingCpa.java
View file @
1de02036
...
...
@@ -133,6 +133,11 @@ public class AdvertisingCpa extends BaseEntity{
private
Integer
successEmail
;
/**
* 成功后发送的内容(短信模板)
*/
private
String
successSendCode
;
/**
* 跳转类型,1-统一跳转,2-自定义跳转
*/
private
Integer
jumpStyle
;
...
...
@@ -154,6 +159,41 @@ public class AdvertisingCpa extends BaseEntity{
*/
private
String
videoCover
;
/**
* 支付设置;0:关闭;1:开启;
*/
private
Integer
paySetting
;
/**
* 支付规则配置
* @return
*/
private
List
<
AdvertisingCpaPaySetting
>
advertisingCpaPaySettingList
;
public
String
getSuccessSendCode
()
{
return
successSendCode
;
}
public
void
setSuccessSendCode
(
String
successSendCode
)
{
this
.
successSendCode
=
successSendCode
;
}
public
Integer
getPaySetting
()
{
return
paySetting
;
}
public
void
setPaySetting
(
Integer
paySetting
)
{
this
.
paySetting
=
paySetting
;
}
public
List
<
AdvertisingCpaPaySetting
>
getAdvertisingCpaPaySettingList
()
{
return
advertisingCpaPaySettingList
;
}
public
void
setAdvertisingCpaPaySettingList
(
List
<
AdvertisingCpaPaySetting
>
advertisingCpaPaySettingList
)
{
this
.
advertisingCpaPaySettingList
=
advertisingCpaPaySettingList
;
}
public
String
getVideoCover
()
{
return
videoCover
;
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/advertising/entity/AdvertisingCpaPaySetting.java
0 → 100644
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
entity
;
import
java.util.Date
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* (AdvertisingCpaPaySetting)实体类
*
* @author makejava
* @since 2022-11-25 14:20:46
*/
@Data
public
class
AdvertisingCpaPaySetting
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
-
92641933418831068L
;
@ApiModelProperty
(
"cpa支付设置"
)
private
Long
id
;
@ApiModelProperty
(
"cpa_id"
)
private
Long
cpaId
;
@ApiModelProperty
(
"关系字段(年级、年龄)"
)
private
Long
firstOptionItemId
;
@ApiModelProperty
(
"关系字段(学科)"
)
private
Long
secondOptionItemId
;
@ApiModelProperty
(
"权益id"
)
private
String
productPackageId
;
@ApiModelProperty
(
"权益包名称"
)
private
String
productName
;
@ApiModelProperty
(
"商品金额"
)
private
BigDecimal
payPrice
;
@ApiModelProperty
(
"创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
@ApiModelProperty
(
"关系字段(年级、年龄)"
)
private
String
firstOptionItemText
;
@ApiModelProperty
(
"关系字段(学科)"
)
private
String
secondOptionItemText
;
@ApiModelProperty
(
"微信端需要二级目录结构"
)
private
List
<
AdvertisingCpaPaySetting
>
cpaPaySettingList
;
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/entity/AdvertisingCpaProductPackage.java
0 → 100644
View file @
1de02036
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
;
/**
* (AdvertisingCpaProductPackage)实体类
*
* @author makejava
* @since 2022-11-29 18:28:41
*/
@Data
public
class
AdvertisingCpaProductPackage
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
-
63683675671690720L
;
@ApiModelProperty
(
"权益配置id"
)
private
Long
id
;
@ApiModelProperty
(
"权益id"
)
private
String
productPackageId
;
@ApiModelProperty
(
"权益包名称"
)
private
String
productName
;
@ApiModelProperty
(
"描述"
)
private
String
description
;
@ApiModelProperty
(
"第三方接口-域名"
)
private
String
apiDomain
;
@ApiModelProperty
(
"第三方接口-订单插入"
)
private
String
apiMethodCreate
;
@ApiModelProperty
(
"第三方接口-订单退款"
)
private
String
apiMethodRefund
;
@ApiModelProperty
(
"应用id"
)
private
String
appId
;
@ApiModelProperty
(
"密钥"
)
private
String
appSecret
;
@ApiModelProperty
(
"创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/facade/LinkRevertFacade.java
View file @
1de02036
package
com
.
pcloud
.
book
.
advertising
.
facade
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaProductPackageBiz
;
import
com.pcloud.book.advertising.biz.LinkRevertBiz
;
import
com.pcloud.book.advertising.dto.LinkRevertRecordDTO
;
import
com.pcloud.book.advertising.entity.AdvertisingLinkClick
;
...
...
@@ -44,6 +45,8 @@ public class LinkRevertFacade {
@Autowired
private
LinkRevertBiz
linkRevertBiz
;
@Autowired
private
AdvertisingCpaProductPackageBiz
packageBiz
;
@ApiOperation
(
value
=
"添加链接转换记录"
,
httpMethod
=
"POST"
)
@PostMapping
(
"addRevertRecord"
)
...
...
@@ -167,4 +170,13 @@ public class LinkRevertFacade {
return
new
ResponseDto
<>(
pageBean
);
}
@GetMapping
(
"testOrder"
)
public
void
testOrder
()
{
packageBiz
.
testQiLiOrder
();
}
@GetMapping
(
"testQiLiRefundOrder"
)
public
void
testQiLiRefundOrder
()
{
packageBiz
.
testQiLiRefundOrder
();
}
}
pcloud-service-book/src/main/java/com/pcloud/book/advertising/facade/impl/AdvertisingSpaceFacadeImpl.java
View file @
1de02036
...
...
@@ -29,6 +29,7 @@ import com.pcloud.common.utils.ResponseHandleUtil;
import
com.pcloud.common.utils.SessionUtil
;
import
com.pcloud.common.utils.cookie.Cookie
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.message.common.enums.YesNoEnums
;
import
com.pcloud.wechatgroup.message.enums.IsSystem
;
import
org.codehaus.jackson.JsonParseException
;
...
...
@@ -1134,7 +1135,7 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"参数有误!"
);
}
SessionUtil
.
getToken4Redis
(
token
);
AdvertisingCpaDTO
dto
=
advertisingSpaceBiz
.
getCPAContentById
(
cpaId
);
AdvertisingCpaDTO
dto
=
advertisingSpaceBiz
.
getCPAContentById
(
cpaId
,
YesNoEnums
.
NO
.
code
);
return
new
ResponseDto
<>(
dto
);
}
...
...
@@ -1192,7 +1193,7 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
if
(
null
==
cpaId
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"参数有误!"
);
}
AdvertisingCpaDTO
dto
=
advertisingSpaceBiz
.
getCPAContentById
(
cpaId
);
AdvertisingCpaDTO
dto
=
advertisingSpaceBiz
.
getCPAContentById
(
cpaId
,
YesNoEnums
.
YES
.
code
);
return
new
ResponseDto
<>(
dto
);
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/consumer/reader/ReaderConsr.java
View file @
1de02036
...
...
@@ -557,6 +557,19 @@ public class ReaderConsr {
appletUserService
.
subscribeSend
(
wechatUserId
);
}
public
String
getUnionIdByWechatUserId
(
Long
wechatUserId
)
{
LOGGER
.
info
(
"【获取unionId ,<START>.[wechatUserId:{}]"
,
wechatUserId
);
if
(
wechatUserId
==
null
)
{
return
null
;
}
try
{
return
ResponseHandleUtil
.
parseResponse
(
wechatUserService
.
getUnionIdByWechatUserId
(
wechatUserId
),
String
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
warn
(
"raysUnionUserService.getUnionIdByWechatUserId"
+
e
.
getMessage
(),
e
);
}
return
null
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/mq/config/MQTopicConumer.java
View file @
1de02036
...
...
@@ -121,4 +121,12 @@ public class MQTopicConumer {
* 二维码恢复
*/
public
static
final
String
RECOVER_QRCODE
=
PREFIX
+
MQTopicProducer
.
RECOVER_QRCODE
;
/**
* 支付-解析支付
*/
public
static
final
String
PAYMENT_EXERCISE_BOOK
=
PREFIX
+
MQTopicProducer
.
EXERCISE_BOOK_PAY
;
/**
* 支付-解析支付
*/
public
static
final
String
REFUND_EXERCISE_BOOK
=
PREFIX
+
MQTopicProducer
.
EXERCISE_BOOK_REFUND
;
}
pcloud-service-book/src/main/java/com/pcloud/book/mq/topic/PaymentExerciseBookListener.java
0 → 100644
View file @
1de02036
package
com
.
pcloud
.
book
.
mq
.
topic
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaProductPackageBiz
;
import
com.pcloud.book.advertising.biz.BmBiz
;
import
com.pcloud.book.advertising.dao.AdvertisingCpaDao
;
import
com.pcloud.book.advertising.dao.BmOptionDao
;
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.AdvertisingCpa
;
import
com.pcloud.book.mq.config.MQTopicConumer
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.constant.SMSTemplateConstant
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.exercisebook.enums.PayModeEnums
;
import
com.pcloud.facade.tradecenter.dto.ExerciseBookPayDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.rabbit.annotation.RabbitHandler
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
@RabbitListener
(
queues
=
MQTopicConumer
.
PAYMENT_EXERCISE_BOOK
)
@Slf4j
public
class
PaymentExerciseBookListener
{
@Autowired
private
BmRegisterDao
bmRegisterDao
;
@Autowired
private
AdvertisingCpaDao
advertisingCpaDao
;
@Autowired
private
AdvertisingCpaProductPackageBiz
cpaProductPackageBiz
;
@Autowired
private
BmBiz
bmBiz
;
@Autowired
private
BmOptionDao
bmOptionDao
;
@Autowired
private
BmRegisterItemDao
bmRegisterItemDao
;
@RabbitHandler
@ParamLog
(
"处理订单支付Queue"
)
public
void
process
(
ExerciseBookPayDTO
exerciseBookPayDTO
)
throws
BizException
{
log
.
info
(
"接收处理订单支付Queue exerciseBookPayDTO:{}"
,
exerciseBookPayDTO
);
if
(
exerciseBookPayDTO
==
null
||
exerciseBookPayDTO
.
getOrderMainNum
()
==
null
)
{
return
;
}
try
{
handlePayMessage
(
exerciseBookPayDTO
);
}
catch
(
Exception
e
)
{
log
.
error
(
"小睿伴学处理购买消息失败exerciseBookPayDTO:{},ERROR:{}"
,
exerciseBookPayDTO
,
e
);
}
}
private
void
handlePayMessage
(
ExerciseBookPayDTO
payDTO
)
{
// 判断 buyMode
if
(!
PayModeEnums
.
ADVERTISING_CPA
.
getCode
().
equals
(
payDTO
.
getBuyMode
()))
{
return
;
}
// 根据 buy_id(register_id) 查询详情
AdvertisingBmRegister
bmRegister
=
bmRegisterDao
.
getById
(
payDTO
.
getBuyId
());
if
(
bmRegister
==
null
)
{
log
.
error
(
"未找到对应的 id,无法处理订单,请关注;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
payDTO
));
return
;
}
// 更新 orderNum、支付状态
AdvertisingBmRegister
updateRegister
=
new
AdvertisingBmRegister
();
updateRegister
.
setId
(
bmRegister
.
getId
());
updateRegister
.
setOrderNum
(
payDTO
.
getOrderMainNum
());
updateRegister
.
setPayStatus
(
1
);
updateRegister
.
setPhoneNumber
(
payDTO
.
getPhoneNumber
());
bmRegisterDao
.
update
(
updateRegister
);
// 拿到用户手机
/*Long mobilePhoneOptionId = bmOptionDao.getMobilePhoneOptionIdByCPA(bmRegister.getCpaId());
String mobile = bmRegisterItemDao.getRegisterOptionValue(payDTO.getWechatUserId(), bmRegister.getId(), mobilePhoneOptionId);*/
// 发送短信
AdvertisingCpa
advertisingCpa
=
advertisingCpaDao
.
getById
(
bmRegister
.
getCpaId
());
if
(
null
!=
advertisingCpa
&&
null
!=
advertisingCpa
.
getSuccessEmail
()
&&
advertisingCpa
.
getSuccessEmail
()==
3
&&
StrUtil
.
isNotBlank
(
advertisingCpa
.
getSuccessSendCode
())){
if
(
StrUtil
.
isNotBlank
(
payDTO
.
getPhoneNumber
()))
{
log
.
info
(
"发送短信[{}]:[{}];payDTO:{}"
,
payDTO
.
getPhoneNumber
(),
advertisingCpa
.
getSuccessSendCode
(),
JSONUtil
.
toJsonStr
(
payDTO
));
bmBiz
.
sendSMS
(
payDTO
.
getPhoneNumber
(),
null
,
advertisingCpa
.
getSuccessSendCode
());
}
else
{
log
.
error
(
"未找到手机号,无法发送短信;payDTO:{}"
,
JSONUtil
.
toJsonStr
(
payDTO
));
}
}
// 查询 权益id是否有配置需要发送支付信息给第三方
cpaProductPackageBiz
.
handlerCreateProductPackage
(
payDTO
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/mq/topic/RefundExerciseBookListener.java
0 → 100644
View file @
1de02036
package
com
.
pcloud
.
book
.
mq
.
topic
;
import
cn.hutool.json.JSONUtil
;
import
com.pcloud.book.advertising.biz.AdvertisingCpaProductPackageBiz
;
import
com.pcloud.book.advertising.dao.BmRegisterDao
;
import
com.pcloud.book.advertising.entity.AdvertisingBmRegister
;
import
com.pcloud.book.mq.config.MQTopicConumer
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.exercisebook.dto.RefundExerciseBookDTO
;
import
com.pcloud.exercisebook.enums.PayModeEnums
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.rabbit.annotation.RabbitHandler
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
(
"refundExerciseBookListener"
)
@RabbitListener
(
queues
=
MQTopicConumer
.
REFUND_EXERCISE_BOOK
)
@Slf4j
public
class
RefundExerciseBookListener
{
@Autowired
private
BmRegisterDao
bmRegisterDao
;
@Autowired
private
AdvertisingCpaProductPackageBiz
cpaProductPackageBiz
;
@RabbitHandler
@ParamLog
(
"处理退款订单Queue"
)
public
void
process
(
RefundExerciseBookDTO
refundDTO
)
throws
BizException
{
log
.
info
(
"接收处理退款订单Queue refundDTO:{}"
,
refundDTO
);
if
(
refundDTO
==
null
||
refundDTO
.
getOrderMainNum
()
==
null
)
{
return
;
}
try
{
handleRefundMessage
(
refundDTO
);
}
catch
(
Exception
e
)
{
log
.
error
(
"小睿伴学处理退款消息失败 refundDTO:{},ERROR:{}"
,
refundDTO
,
e
.
getMessage
());
}
}
private
void
handleRefundMessage
(
RefundExerciseBookDTO
refundDTO
)
{
// 判断 buyMode
if
(!
PayModeEnums
.
ADVERTISING_CPA
.
getCode
().
equals
(
refundDTO
.
getBuyMode
()))
{
return
;
}
// 根据 buy_id(register_id) 查询详情
AdvertisingBmRegister
bmRegister
=
bmRegisterDao
.
getById
(
refundDTO
.
getBuyId
());
if
(
bmRegister
==
null
)
{
log
.
error
(
"未找到对应的 id,无法处理退款单,请关注;refundDTO:{}"
,
JSONUtil
.
toJsonStr
(
refundDTO
));
return
;
}
// 更新退款状态
AdvertisingBmRegister
updateRegister
=
new
AdvertisingBmRegister
();
updateRegister
.
setId
(
bmRegister
.
getId
());
updateRegister
.
setPayStatus
(-
1
);
bmRegisterDao
.
update
(
updateRegister
);
// 退款
cpaProductPackageBiz
.
handlerRefundProductPackage
(
refundDTO
);
}
}
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/advertising/AdvertisingBmRegisterItemMapper.xml
View file @
1de02036
...
...
@@ -79,5 +79,13 @@
AND o.item_title = '手机号'
AND i.option_value = #{optionValue}
</select>
<select
id=
"getRegisterOptionValue"
resultType=
"string"
parameterType=
"map"
>
SELECT option_value FROM `advertising_bm_register_item`
WHERE user_id = #{userId}
AND register_id = #{registerId}
AND option_id = #{optionId}
LIMIT 1
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/advertising/AdvertisingBmRegisterMapper.xml
View file @
1de02036
...
...
@@ -19,6 +19,10 @@
<result
column=
"create_day"
property=
"createDay"
jdbcType=
"DATE"
/>
<result
column=
"create_month"
property=
"createMonth"
jdbcType=
"VARCHAR"
/>
<result
column=
"cpa_id"
property=
"cpaId"
jdbcType=
"BIGINT"
/>
<result
column=
"cpa_pay_setting_id"
property=
"cpaPaySettingId"
jdbcType=
"BIGINT"
/>
<result
column=
"order_num"
property=
"orderNum"
jdbcType=
"VARCHAR"
/>
<result
column=
"pay_status"
property=
"payStatus"
jdbcType=
"INTEGER"
/>
<result
column=
"phone_number"
property=
"phoneNumber"
jdbcType=
"VARCHAR"
/>
</resultMap>
<!-- 微信端用户详细信息 -->
...
...
@@ -37,9 +41,15 @@
<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
from_id,book_id,create_day, create_month,cpa_id
,cpa_pay_setting_id,order_num,pay_status,phone_number
</sql>
<select
id=
"getById"
parameterType=
"long"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM advertising_bm_register
WHERE id = #{id}
</select>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.advertising.entity.AdvertisingBmRegister"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
INSERT INTO advertising_bm_register (
user_id,
...
...
@@ -57,7 +67,11 @@
book_id,
create_day,
create_month,
cpa_id
cpa_id,
cpa_pay_setting_id,
order_num,
pay_status,
phone_number
)
VALUES
(
...
...
@@ -76,7 +90,11 @@
#{bookId,jdbcType=BIGINT},
NOW(),
DATE_FORMAT(NOW(), '%Y-%m'),
#{cpaId}
#{cpaId},
#{cpaPaySettingId},
#{orderNum},
#{payStatus},
#{phoneNumber}
)
</insert>
...
...
@@ -222,4 +240,33 @@
ORDER BY create_time DESC
</select>
<update
id=
"update"
parameterType=
"com.pcloud.book.advertising.entity.AdvertisingBmRegister"
>
UPDATE advertising_bm_register
<set>
<if
test=
"orderNum!=null"
>
order_num = #{orderNum},
</if>
<if
test=
"payStatus!=null"
>
pay_status = #{payStatus},
</if>
<if
test=
"phoneNumber!=null"
>
phone_number = #{phoneNumber},
</if>
</set>
WHERE
id = #{id}
</update>
<select
id=
"checkPaid"
parameterType=
"map"
resultType=
"int"
>
SELECT 1 FROM advertising_bm_register
WHERE pay_status = 1
AND (user_id = #{wechatUserId}
<if
test=
"phoneNumber!=null and phoneNumber!=''"
>
OR phone_number = #{phoneNumber}
</if>
)
AND cpa_id = #{cpaId}
AND cpa_pay_setting_id = #{cpaPaySettingId}
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/advertising/AdvertisingCpaMapper.xml
View file @
1de02036
...
...
@@ -27,6 +27,7 @@
<result
column=
"bottom_button_image"
property=
"bottomButtonImage"
jdbcType=
"VARCHAR"
/>
<result
column=
"privacy_agreement"
property=
"privacyAgreement"
jdbcType=
"INTEGER"
/>
<result
column=
"success_email"
property=
"successEmail"
jdbcType=
"INTEGER"
/>
<result
column=
"success_send_code"
property=
"successSendCode"
jdbcType=
"VARCHAR"
/>
<result
column=
"jump_style"
property=
"jumpStyle"
jdbcType=
"INTEGER"
/>
<result
column=
"create_user"
property=
"createUser"
jdbcType=
"BIGINT"
/>
<result
column=
"update_user"
property=
"updateUser"
jdbcType=
"BIGINT"
/>
...
...
@@ -35,6 +36,7 @@
<result
column=
"file_convert_state"
property=
"fileConvertState"
jdbcType=
"INTEGER"
/>
<result
column=
"cover_video_file_name"
property=
"coverVideoFileName"
jdbcType=
"VARCHAR"
/>
<result
column=
"video_cover"
property=
"videoCover"
jdbcType=
"VARCHAR"
/>
<result
column=
"pay_setting"
property=
"paySetting"
jdbcType=
"INTEGER"
/>
</resultMap>
<resultMap
id=
"AdvertisingCpaDTO"
type=
"com.pcloud.book.advertising.dto.AdvertisingCpaDTO"
>
...
...
@@ -62,6 +64,7 @@
<result
column=
"bottom_button_image"
property=
"bottomButtonImage"
jdbcType=
"VARCHAR"
/>
<result
column=
"privacy_agreement"
property=
"privacyAgreement"
jdbcType=
"INTEGER"
/>
<result
column=
"success_email"
property=
"successEmail"
jdbcType=
"INTEGER"
/>
<result
column=
"success_send_code"
property=
"successSendCode"
jdbcType=
"VARCHAR"
/>
<result
column=
"jump_style"
property=
"jumpStyle"
jdbcType=
"INTEGER"
/>
<result
column=
"create_user"
property=
"createUser"
jdbcType=
"BIGINT"
/>
<result
column=
"update_user"
property=
"updateUser"
jdbcType=
"BIGINT"
/>
...
...
@@ -70,14 +73,15 @@
<result
column=
"file_convert_state"
property=
"fileConvertState"
jdbcType=
"INTEGER"
/>
<result
column=
"cover_video_file_name"
property=
"coverVideoFileName"
jdbcType=
"VARCHAR"
/>
<result
column=
"video_cover"
property=
"videoCover"
jdbcType=
"VARCHAR"
/>
<result
column=
"pay_setting"
property=
"paySetting"
jdbcType=
"INTEGER"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, detail_name, detail_mode, cover_pic, welfare_pic, form_mobile_check, form_remark,
form_button, form_link, create_time, update_time, detail_info, preview_link
,cover_video,bg_color,success_toast_type,success_toast_content,commit_button_type,commit_button_content
,commit_button_image,bottom_button_type,bottom_button_content,bottom_button_image,privacy_agreement,success_email,jump_style,create_user,update_user
,head_picture,cover_video_file_id,file_convert_state,cover_video_file_name,video_cover
,commit_button_image,bottom_button_type,bottom_button_content,bottom_button_image,privacy_agreement,success_email,
success_send_code,
jump_style,create_user,update_user
,head_picture,cover_video_file_id,file_convert_state,cover_video_file_name,video_cover
,pay_setting
</sql>
<select
id=
"getById"
resultMap=
"BaseResultMap"
parameterType=
"java.lang.Long"
>
...
...
@@ -97,16 +101,16 @@
form_remark, form_button, form_link,
create_time, update_time, detail_info, preview_link
,cover_video,bg_color,success_toast_type,success_toast_content,commit_button_type,commit_button_content
,commit_button_image,bottom_button_type,bottom_button_content,bottom_button_image,privacy_agreement,success_email,jump_style
,create_user,update_user,head_picture,cover_video_file_id,file_convert_state,cover_video_file_name,video_cover
,commit_button_image,bottom_button_type,bottom_button_content,bottom_button_image,privacy_agreement,success_email,
success_send_code,
jump_style
,create_user,update_user,head_picture,cover_video_file_id,file_convert_state,cover_video_file_name,video_cover
,pay_setting
)
values (#{detailName,jdbcType=VARCHAR}, #{detailMode,jdbcType=VARCHAR},
#{coverPic,jdbcType=VARCHAR}, #{welfarePic,jdbcType=VARCHAR}, #{formMobileCheck,jdbcType=BIT},
#{formRemark,jdbcType=VARCHAR}, #{formButton,jdbcType=VARCHAR}, #{formLink,jdbcType=VARCHAR},
NOW(), NOW(), #{detailInfo,jdbcType=LONGVARCHAR}, #{previewLink,jdbcType=VARCHAR}
,#{coverVideo},#{bgColor},#{successToastType},#{successToastContent},#{commitButtonType},#{commitButtonContent},#{commitButtonImage}
,#{bottomButtonType},#{bottomButtonContent},#{bottomButtonImage},#{privacyAgreement},#{successEmail},#{jumpStyle},#{createUser},#{updateUser},#{headPicture}
,#{coverVideoFileId},#{fileConvertState},#{coverVideoFileName},#{videoCover}
,#{bottomButtonType},#{bottomButtonContent},#{bottomButtonImage},#{privacyAgreement},#{successEmail},#{
successSendCode},#{
jumpStyle},#{createUser},#{updateUser},#{headPicture}
,#{coverVideoFileId},#{fileConvertState},#{coverVideoFileName},#{videoCover}
,#{paySetting}
)
</insert>
...
...
@@ -180,6 +184,9 @@
<if
test=
"successEmail != null"
>
success_email = #{successEmail},
</if>
<if
test=
"successSendCode != null"
>
success_send_code = #{successSendCode},
</if>
<if
test=
"jumpStyle != null"
>
jump_style = #{jumpStyle},
</if>
...
...
@@ -204,6 +211,9 @@
<if
test=
"videoCover != null"
>
video_cover = #{videoCover},
</if>
<if
test=
"paySetting != null"
>
pay_setting = #{paySetting},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
...
...
pcloud-service-book/src/main/resources/mapper/advertising/AdvertisingCpaPaySetting.Mapper.xml
0 → 100644
View file @
1de02036
<?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.AdvertisingCpaPaySettingDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.advertising.entity.AdvertisingCpaPaySetting"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"cpa_id"
property=
"cpaId"
jdbcType=
"BIGINT"
/>
<result
column=
"first_option_item_id"
property=
"firstOptionItemId"
jdbcType=
"BIGINT"
/>
<result
column=
"second_option_item_id"
property=
"secondOptionItemId"
jdbcType=
"BIGINT"
/>
<result
column=
"product_package_id"
property=
"productPackageId"
jdbcType=
"VARCHAR"
/>
<result
column=
"pay_price"
property=
"payPrice"
jdbcType=
"DECIMAL"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, cpa_id, first_option_item_id, second_option_item_id, product_package_id, pay_price, create_time
</sql>
<select
id=
"getById"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM advertising_cpa_pay_setting
WHERE id = #{id}
</select>
<select
id=
"getList"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM advertising_cpa_pay_setting
</select>
<insert
id=
"insert"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
INSERT INTO advertising_cpa_pay_setting(
cpa_id,
first_option_item_id,
second_option_item_id,
product_package_id,
pay_price,
create_time
) VALUES (
#{cpaId, jdbcType=BIGINT},
#{firstOptionItemId, jdbcType=BIGINT},
#{secondOptionItemId, jdbcType=BIGINT},
#{productPackageId, jdbcType=VARCHAR},
#{payPrice, jdbcType=DECIMAL},
#{createTime, jdbcType=TIMESTAMP}
)
</insert>
<insert
id=
"batchInsert"
>
INSERT INTO advertising_cpa_pay_setting (
cpa_id,
first_option_item_id,
second_option_item_id,
product_package_id,
pay_price,
create_time
) VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(
#{item.cpaId, jdbcType=BIGINT},
#{item.firstOptionItemId, jdbcType=BIGINT},
#{item.secondOptionItemId, jdbcType=BIGINT},
#{item.productPackageId, jdbcType=VARCHAR},
#{item.payPrice, jdbcType=DECIMAL},
#{item.createTime, jdbcType=TIMESTAMP}
)
</foreach>
</insert>
<!--通过主键修改数据-->
<update
id=
"update"
>
UPDATE advertising_cpa_pay_setting
<set>
<if
test=
"cpaId != null"
>
cpa_id = #{cpaId},
</if>
<if
test=
"firstOptionItemId != null"
>
first_option_item_id = #{firstOptionItemId},
</if>
<if
test=
"secondOptionItemId != null"
>
second_option_item_id = #{secondOptionItemId},
</if>
<if
test=
"productPackageId != null and productPackageId != ''"
>
product_package_id = #{productPackageId},
</if>
<if
test=
"payPrice != null"
>
pay_price = #{payPrice},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
</set>
WHERE id = #{id}
</update>
<!--通过主键删除-->
<delete
id=
"deleteById"
>
DELETE FROM advertising_cpa_pay_setting where id = #{id}
</delete>
<!--通过主键删除-->
<delete
id=
"deleteByCpaId"
>
DELETE FROM advertising_cpa_pay_setting where cpa_id = #{cpaId}
</delete>
<select
id=
"getByCpaId"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM advertising_cpa_pay_setting
WHERE cpa_id = #{cpaId}
</select>
</mapper>
pcloud-service-book/src/main/resources/mapper/advertising/AdvertisingCpaProductPackage.Mapper.xml
0 → 100644
View file @
1de02036
<?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.AdvertisingCpaProductPackageDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.advertising.entity.AdvertisingCpaProductPackage"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"product_package_id"
property=
"productPackageId"
jdbcType=
"VARCHAR"
/>
<result
column=
"product_name"
property=
"productName"
jdbcType=
"VARCHAR"
/>
<result
column=
"description"
property=
"description"
jdbcType=
"VARCHAR"
/>
<result
column=
"api_domain"
property=
"apiDomain"
jdbcType=
"VARCHAR"
/>
<result
column=
"api_method_create"
property=
"apiMethodCreate"
jdbcType=
"VARCHAR"
/>
<result
column=
"api_method_refund"
property=
"apiMethodRefund"
jdbcType=
"VARCHAR"
/>
<result
column=
"app_id"
property=
"appId"
jdbcType=
"VARCHAR"
/>
<result
column=
"app_secret"
property=
"appSecret"
jdbcType=
"VARCHAR"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, product_package_id, product_name, description, api_domain, api_method_create, api_method_refund, app_id, app_secret, create_time
</sql>
<select
id=
"getById"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM advertising_cpa_product_package
WHERE id = #{id}
</select>
<select
id=
"listBy"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM advertising_cpa_product_package
</select>
<insert
id=
"insert"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
INSERT INTO advertising_cpa_product_package(
product_package_id,
product_name,
description,
api_domain,
api_method_create,
api_method_refund,
app_id,
app_secret,
create_time
) VALUES (
#{productPackageId, jdbcType=VARCHAR},
#{productName, jdbcType=VARCHAR},
#{description, jdbcType=VARCHAR},
#{apiDomain, jdbcType=VARCHAR},
#{apiMethodCreate, jdbcType=VARCHAR},
#{apiMethodRefund, jdbcType=VARCHAR},
#{appId, jdbcType=VARCHAR},
#{appSecret, jdbcType=VARCHAR},
#{createTime, jdbcType=TIMESTAMP}
)
</insert>
<insert
id=
"batchInsert"
>
INSERT INTO advertising_cpa_product_package (
product_package_id,
product_name,
description,
api_domain,
api_method_create,
api_method_refund,
app_id,
app_secret,
create_time
) VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(
#{item.productPackageId, jdbcType=VARCHAR},
#{item.productName, jdbcType=VARCHAR},
#{item.description, jdbcType=VARCHAR},
#{item.apiDomain, jdbcType=VARCHAR},
#{item.apiMethodCreate, jdbcType=VARCHAR},
#{item.apiMethodRefund, jdbcType=VARCHAR},
#{item.appId, jdbcType=VARCHAR},
#{item.appSecret, jdbcType=VARCHAR},
#{item.createTime, jdbcType=TIMESTAMP}
)
</foreach>
</insert>
<!--通过主键修改数据-->
<update
id=
"update"
>
UPDATE advertising_cpa_product_package
<set>
<if
test=
"productPackageId != null and productPackageId != ''"
>
product_package_id = #{productPackageId},
</if>
<if
test=
"productName != null and productName != ''"
>
product_name = #{productName},
</if>
<if
test=
"description != null and description != ''"
>
description = #{description},
</if>
<if
test=
"apiDomain != null and apiDomain != ''"
>
api_domain = #{apiDomain},
</if>
<if
test=
"apiMethodCreate != null and apiMethodCreate != ''"
>
api_method_create = #{apiMethodCreate},
</if>
<if
test=
"apiMethodRefund != null and apiMethodRefund != ''"
>
api_method_refund = #{apiMethodRefund},
</if>
<if
test=
"appId != null and appId != ''"
>
app_id = #{appId},
</if>
<if
test=
"appSecret != null and appSecret != ''"
>
app_secret = #{appSecret},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
</set>
WHERE id = #{id}
</update>
<!--通过主键删除-->
<delete
id=
"deleteById"
>
DELETE FROM advertising_cpa_product_package where id = #{id}
</delete>
<select
id=
"getByProductPackageId"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM advertising_cpa_product_package
WHERE product_package_id = #{productPackageId}
</select>
</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