Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
huhu-partner
Project
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guanchen
huhu-partner
Commits
7c77db91
Commit
7c77db91
authored
Jun 29, 2019
by
guanchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加代理商处理
parent
4630db2c
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1338 additions
and
52 deletions
+1338
-52
PartnerApplication.java
...main/java/com/lanren/huhu/partner/PartnerApplication.java
+2
-0
AsyncConfig.java
...main/java/com/lanren/huhu/partner/config/AsyncConfig.java
+33
-0
Constants.java
...ain/java/com/lanren/huhu/partner/constants/Constants.java
+50
-0
AgentController.java
...a/com/lanren/huhu/partner/controller/AgentController.java
+22
-6
PartnerController.java
...com/lanren/huhu/partner/controller/PartnerController.java
+2
-2
UserController.java
...va/com/lanren/huhu/partner/controller/UserController.java
+7
-20
AgentRewardMapper.java
...n/java/com/lanren/huhu/partner/dao/AgentRewardMapper.java
+19
-0
AgentReward.java
...main/java/com/lanren/huhu/partner/domain/AgentReward.java
+238
-0
AgentManager.java
...in/java/com/lanren/huhu/partner/manager/AgentManager.java
+37
-6
PartnerAccountManager.java
...om/lanren/huhu/partner/manager/PartnerAccountManager.java
+0
-2
PartnerManager.java
.../java/com/lanren/huhu/partner/manager/PartnerManager.java
+2
-0
UserManager.java
...ain/java/com/lanren/huhu/partner/manager/UserManager.java
+24
-10
AgentResponse.java
...ain/java/com/lanren/huhu/partner/model/AgentResponse.java
+2
-2
AgentRewardMessage.java
...ava/com/lanren/huhu/partner/model/AgentRewardMessage.java
+42
-0
PartnerResponse.java
...n/java/com/lanren/huhu/partner/model/PartnerResponse.java
+2
-2
AgentRewardQueueTask.java
...om/lanren/huhu/partner/schedule/AgentRewardQueueTask.java
+192
-0
AgentRewardService.java
...a/com/lanren/huhu/partner/service/AgentRewardService.java
+28
-0
AgentRewardServiceImpl.java
...ren/huhu/partner/service/impl/AgentRewardServiceImpl.java
+42
-0
UserServiceImpl.java
...com/lanren/huhu/partner/service/impl/UserServiceImpl.java
+2
-2
AgentRewardMapper.xml
src/main/resources/mapper/AgentRewardMapper.xml
+592
-0
No files found.
src/main/java/com/lanren/huhu/partner/PartnerApplication.java
View file @
7c77db91
...
...
@@ -7,12 +7,14 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import
org.springframework.boot.builder.SpringApplicationBuilder
;
import
org.springframework.boot.web.servlet.support.SpringBootServletInitializer
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
/**
* @author houseme
*/
@SpringBootApplication
@EnableCaching
@EnableScheduling
public
class
PartnerApplication
extends
SpringBootServletInitializer
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PartnerApplication
.
class
);
...
...
src/main/java/com/lanren/huhu/partner/config/AsyncConfig.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
config
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.AsyncConfigurer
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
java.util.concurrent.Executor
;
/**
* @author chen
* @title: AsyncConfig
* @projectName partner
* @description: 异步任务设置
* @package com.lanren.huhu.partner.config
* @date 2019-06-29 15:48
*/
@Configuration
@EnableAsync
public
class
AsyncConfig
implements
AsyncConfigurer
{
@Override
public
Executor
getAsyncExecutor
()
{
ThreadPoolTaskExecutor
taskExecutor
=
new
ThreadPoolTaskExecutor
();
//核心线程数
taskExecutor
.
setCorePoolSize
(
8
);
//最大线程数
taskExecutor
.
setMaxPoolSize
(
16
);
//队列大小
taskExecutor
.
setQueueCapacity
(
100
);
taskExecutor
.
initialize
();
return
taskExecutor
;
}
}
src/main/java/com/lanren/huhu/partner/constants/Constants.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
constants
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author chen
* @title: Constants
* @projectName partner
* @description: TODO
* @package com.lanren.huhu.partner.constants
* @date 2019-06-29 17:04
*/
public
class
Constants
{
public
static
final
String
AGENT_REWARD_QUEUE_KEY
=
"agent_reward_redis_city_key"
;
public
static
final
int
AGENT_REWARD_TYPE_YEAR_VIP
=
710
;
public
static
final
int
AGENT_REWARD_TYPE_HALF_YEAR_VIP
=
720
;
public
static
final
int
AGENT_REWARD_TYPE_SVIP
=
730
;
public
static
final
int
AGENT_REWARD_TYPE_ORDER_AND_REDPACK
=
740
;
public
static
Map
<
Integer
,
Map
<
Integer
,
BigDecimal
>>
AGENT_RATE_MAP
=
new
HashMap
<
Integer
,
Map
<
Integer
,
BigDecimal
>>();
public
static
final
int
AGENT_LEVEL_1
=
1
;
public
static
final
int
AGENT_LEVEL_2
=
2
;
public
static
final
int
AGENT_LEVEL_3
=
3
;
public
static
final
int
AGENT_LEVEL_4
=
4
;
public
static
final
String
DATE_FORMAT
=
"yyyy-MM-dd hh:mm:ss"
;
static
{
AGENT_RATE_MAP
.
put
(
AGENT_REWARD_TYPE_YEAR_VIP
,
new
HashMap
<
Integer
,
BigDecimal
>());
AGENT_RATE_MAP
.
put
(
AGENT_REWARD_TYPE_HALF_YEAR_VIP
,
new
HashMap
<
Integer
,
BigDecimal
>());
AGENT_RATE_MAP
.
put
(
AGENT_REWARD_TYPE_SVIP
,
new
HashMap
<
Integer
,
BigDecimal
>());
AGENT_RATE_MAP
.
put
(
AGENT_REWARD_TYPE_ORDER_AND_REDPACK
,
new
HashMap
<
Integer
,
BigDecimal
>());
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_YEAR_VIP
).
put
(
0
,
new
BigDecimal
(
"0.03333333"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_YEAR_VIP
).
put
(
1
,
new
BigDecimal
(
"0.01388889"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_YEAR_VIP
).
put
(
2
,
new
BigDecimal
(
"0.00833333"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_HALF_YEAR_VIP
).
put
(
0
,
new
BigDecimal
(
"0.03015075"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_HALF_YEAR_VIP
).
put
(
1
,
new
BigDecimal
(
"0.01256281"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_HALF_YEAR_VIP
).
put
(
2
,
new
BigDecimal
(
"0.00753769"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_SVIP
).
put
(
0
,
new
BigDecimal
(
"0.02500000"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_SVIP
).
put
(
1
,
new
BigDecimal
(
"0.01111111"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_SVIP
).
put
(
2
,
new
BigDecimal
(
"0.00555556"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_ORDER_AND_REDPACK
).
put
(
0
,
new
BigDecimal
(
"0.03"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_ORDER_AND_REDPACK
).
put
(
1
,
new
BigDecimal
(
"0.02"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_ORDER_AND_REDPACK
).
put
(
2
,
new
BigDecimal
(
"0.01"
));
}
}
src/main/java/com/lanren/huhu/partner/controller/AgentController.java
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
controller
;
import
com.lanren.huhu.partner.manager.
User
AgentManager
;
import
com.lanren.huhu.partner.manager.AgentManager
;
import
com.lanren.huhu.partner.model.Agent
;
import
com.lanren.huhu.partner.model.AgentR
sp
;
import
com.lanren.huhu.partner.model.AgentR
esponse
;
import
com.lanren.huhu.partner.result.Result
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -22,13 +22,29 @@ public class AgentController {
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
AgentController
.
class
);
@Autowired
UserAgentManager
userA
gentManager
;
AgentManager
a
gentManager
;
@RequestMapping
(
value
=
"/level"
,
method
=
RequestMethod
.
POST
)
public
Result
<
AgentR
sp
>
getAgentLevel
(
@RequestBody
@Valid
Agent
agent
,
@RequestHeader
HttpHeaders
headers
)
{
public
Result
<
AgentR
esponse
>
getAgentLevel
(
@RequestBody
@Valid
Agent
agent
,
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"getLevel agentId:{},header:{},time:{}"
,
agent
.
getAgentId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
logger
.
info
(
"
AgentController
getLevel agentId:{},header:{},time:{}"
,
agent
.
getAgentId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
return
userAgentManager
.
getAgentLevel
(
agent
.
getAgentId
());
return
agentManager
.
getAgentLevel
(
agent
.
getAgentId
());
}
@RequestMapping
(
value
=
"/reward/divide"
,
method
=
RequestMethod
.
POST
)
public
Result
<
String
>
divideReward
(
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"AgentController divideReward, header:{},time:{}"
,
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
return
agentManager
.
divideReward
();
}
@RequestMapping
(
value
=
"/reward/push"
,
method
=
RequestMethod
.
POST
)
public
Result
<
String
>
pushReward
(
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"AgentController divideReward, header:{},time:{}"
,
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
return
agentManager
.
pushReward
();
}
}
src/main/java/com/lanren/huhu/partner/controller/PartnerController.java
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
controller
;
import
com.lanren.huhu.partner.manager.PartnerAccountManager
;
import
com.lanren.huhu.partner.model.Partner
;
import
com.lanren.huhu.partner.model.PartnerRsp
;
import
com.lanren.huhu.partner.result.Result
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
java.time.LocalDateTime
;
/** * @Author houseme * @Date 2019-06-26 11:00 * @Project partner * @Package com.lanren.huhu.partner.controller * @File: PartnerController */
@RestController
@RequestMapping
(
"/v1/partner"
)
public
class
PartnerController
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PartnerController
.
class
);
@Autowired
private
PartnerAccountManager
partnerAccountManager
;
@RequestMapping
(
value
=
"/level"
,
method
=
RequestMethod
.
POST
)
public
Result
<
PartnerRsp
>
getPartnerLevel
(
@RequestBody
@Valid
Partner
partner
,
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"getPartnerLevel userId:{ },header:{},time:{}"
,
partner
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
return
partnerAccountManager
.
getPartnerLevel
(
partner
.
getUserId
());
}
}
\ No newline at end of file
package
com
.
lanren
.
huhu
.
partner
.
controller
;
import
com.lanren.huhu.partner.manager.PartnerManager
;
import
com.lanren.huhu.partner.model.Partner
;
import
com.lanren.huhu.partner.model.PartnerResponse
;
import
com.lanren.huhu.partner.result.Result
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
java.time.LocalDateTime
;
/** * @Author houseme * @Date 2019-06-26 11:00 * @Project partner * @Package com.lanren.huhu.partner.controller * @File: PartnerController */
@RestController
@RequestMapping
(
"/v1/partner"
)
public
class
PartnerController
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PartnerController
.
class
);
@Autowired
private
PartnerManager
partnerManager
;
@RequestMapping
(
value
=
"/level"
,
method
=
RequestMethod
.
POST
)
public
Result
<
PartnerResponse
>
getPartnerLevel
(
@RequestBody
@Valid
Partner
partner
,
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"getPartnerLevel userId:{ },header:{},time:{}"
,
partner
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
return
partnerManager
.
getPartnerLevel
(
partner
.
getUserId
());
}
}
\ No newline at end of file
...
...
src/main/java/com/lanren/huhu/partner/controller/UserController.java
View file @
7c77db91
...
...
@@ -3,11 +3,11 @@ package com.lanren.huhu.partner.controller;
import
com.lanren.huhu.partner.manager.UserManager
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.service.PartnerAccountService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
...
...
@@ -17,24 +17,20 @@ import java.time.LocalDateTime;
* @author chen
*/
@RestController
@EnableAsync
@RequestMapping
(
"/v1/user"
)
public
class
UserController
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
UserController
.
class
);
@Autowired
private
UserManager
userManager
;
@Autowired
private
PartnerAccountService
partnerAccountService
;
@RequestMapping
(
value
=
"/relation"
,
method
=
RequestMethod
.
POST
)
public
Result
<
User
>
getRelation
(
@RequestBody
@Valid
User
user
,
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"getRelation userId:{ },header:{},time:{}"
,
user
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
User
resutrnUser
=
userManager
.
getRelationByUserId
(
user
.
getUserId
());
Result
<
User
>
result
=
new
Result
<
User
>();
result
.
setData
(
resutrnUser
);
return
result
;
return
userManager
.
getRelationByUserId
(
user
.
getUserId
());
}
@RequestMapping
(
value
=
"/relation/delete"
,
method
=
RequestMethod
.
POST
)
...
...
@@ -42,13 +38,7 @@ public class UserController {
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"deletrRelation userId:{ },header:{},time:{}"
,
user
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
Result
<
String
>
result
=
new
Result
<
String
>();
if
(
userManager
.
deleteRalationByUserId
(
user
.
getUserId
()))
{
result
.
setData
(
"删除成功"
);
}
else
{
result
.
setCode
(
500
);
}
return
result
;
return
userManager
.
deleteRalationByUserId
(
user
.
getUserId
());
}
@RequestMapping
(
value
=
"/relation/change"
,
method
=
RequestMethod
.
POST
)
...
...
@@ -56,13 +46,10 @@ public class UserController {
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"changeRelation userId:{},header:{},time:{}"
,
user
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
userManager
.
changeRelation
(
user
.
getUserId
());
logger
.
info
(
"============>"
+
Thread
.
currentThread
().
getName
());
Result
<
String
>
result
=
new
Result
<
String
>();
int
code
=
userManager
.
findPartnerChiledren
(
user
.
getUserId
());
if
(
code
==
0
)
{
result
.
setData
(
"用户刷新成功"
);
}
else
{
result
.
setCode
(
code
);
}
result
.
setData
(
"异步,正在执行刷新......"
);
return
result
;
}
}
src/main/java/com/lanren/huhu/partner/dao/AgentRewardMapper.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.lanren.huhu.partner.domain.AgentReward
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
@Mapper
public
interface
AgentRewardMapper
extends
BaseMapper
<
AgentReward
>
{
int
updateBatch
(
List
<
AgentReward
>
list
);
int
batchInsert
(
@Param
(
"list"
)
List
<
AgentReward
>
list
);
int
insertOrUpdate
(
AgentReward
record
);
int
insertOrUpdateSelective
(
AgentReward
record
);
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/domain/AgentReward.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
domain
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
lombok.Data
;
@Data
@TableName
(
value
=
"agent_reward"
)
public
class
AgentReward
implements
Serializable
{
/**
* ID序号
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 代理商id
*/
@TableField
(
value
=
"agent_id"
)
private
Integer
agentId
;
/**
* 代理商等级
*/
@TableField
(
value
=
"agent_level"
)
private
Integer
agentLevel
;
/**
* 用户id
*/
@TableField
(
value
=
"user_id"
)
private
Integer
userId
;
/**
* 奖励类型 40 开卡奖励 50 充值奖励 30 购买VIP会员 20 购买超级VIP会员
*/
@TableField
(
value
=
"reward_type"
)
private
Integer
rewardType
;
/**
* 描述
*/
@TableField
(
value
=
"reward_remark"
)
private
String
rewardRemark
;
/**
* 状态 100正常 99 错误
*/
@TableField
(
value
=
"reward_status"
)
private
Integer
rewardStatus
;
/**
* 卡面值
*/
@TableField
(
value
=
"money"
)
private
BigDecimal
money
;
/**
* 奖励金额
*/
@TableField
(
value
=
"amount"
)
private
BigDecimal
amount
;
/**
* 充值支付金额或许充值卡卡号
*/
@TableField
(
value
=
"cash_code"
)
private
String
cashCode
;
/**
* 用户充值时间
*/
@TableField
(
value
=
"recharge_time"
)
private
LocalDateTime
rechargeTime
;
/**
* 可分红总额
*/
@TableField
(
value
=
"commission_acount"
)
private
BigDecimal
commissionAcount
;
/**
* 比例值
*/
@TableField
(
value
=
"commission_rate"
)
private
BigDecimal
commissionRate
;
/**
* 得到分红值
*/
@TableField
(
value
=
"commission"
)
private
BigDecimal
commission
;
/**
* 相关id 产品或许充值卡相关id
*/
@TableField
(
value
=
"reference_id"
)
private
Long
referenceId
;
/**
* 结算状态 100在路上 200预结算 300已结算 -100在路上已失效 -200预结算已失效 -300已结算扣回
*/
@TableField
(
value
=
"settle_state"
)
private
Integer
settleState
;
/**
* 来源订单 与order表的order_id 关联
*/
@TableField
(
value
=
"source_order"
)
private
String
sourceOrder
;
/**
* 源用户id
*/
@TableField
(
value
=
"source_user_id"
)
private
Integer
sourceUserId
;
/**
* 源用户等级
*/
@TableField
(
value
=
"source_user_level"
)
private
Integer
sourceUserLevel
;
/**
* 商品id
*/
@TableField
(
value
=
"goods_id"
)
private
String
goodsId
;
/**
* 标题
*/
@TableField
(
value
=
"title"
)
private
String
title
;
/**
* 订单类型
*/
@TableField
(
value
=
"order_type"
)
private
String
orderType
;
/**
* 订单号
*/
@TableField
(
value
=
"order_sn"
)
private
String
orderSn
;
/**
* 子订单号
*/
@TableField
(
value
=
"sub_order_sn"
)
private
String
subOrderSn
;
/**
* 描述信息 比如充值卡或许充值卡信息
*/
@TableField
(
value
=
"reward_extend"
)
private
String
rewardExtend
;
@TableField
(
value
=
"created_at"
)
private
Long
createdAt
;
@TableField
(
value
=
"updated_at"
)
private
Long
updatedAt
;
@TableField
(
value
=
"deleted_at"
)
private
Long
deletedAt
;
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
)
private
LocalDateTime
createTime
;
private
static
final
long
serialVersionUID
=
1L
;
public
static
final
String
COL_AGENT_ID
=
"agent_id"
;
public
static
final
String
COL_AGENT_LEVEL
=
"agent_level"
;
public
static
final
String
COL_USER_ID
=
"user_id"
;
public
static
final
String
COL_REWARD_TYPE
=
"reward_type"
;
public
static
final
String
COL_REWARD_REMARK
=
"reward_remark"
;
public
static
final
String
COL_REWARD_STATUS
=
"reward_status"
;
public
static
final
String
COL_MONEY
=
"money"
;
public
static
final
String
COL_AMOUNT
=
"amount"
;
public
static
final
String
COL_CASH_CODE
=
"cash_code"
;
public
static
final
String
COL_RECHARGE_TIME
=
"recharge_time"
;
public
static
final
String
COL_COMMISSION_ACOUNT
=
"commission_acount"
;
public
static
final
String
COL_COMMISSION_RATE
=
"commission_rate"
;
public
static
final
String
COL_COMMISSION
=
"commission"
;
public
static
final
String
COL_REFERENCE_ID
=
"reference_id"
;
public
static
final
String
COL_SETTLE_STATE
=
"settle_state"
;
public
static
final
String
COL_SOURCE_ORDER
=
"source_order"
;
public
static
final
String
COL_SOURCE_USER_ID
=
"source_user_id"
;
public
static
final
String
COL_SOURCE_USER_LEVEL
=
"source_user_level"
;
public
static
final
String
COL_GOODS_ID
=
"goods_id"
;
public
static
final
String
COL_TITLE
=
"title"
;
public
static
final
String
COL_ORDER_TYPE
=
"order_type"
;
public
static
final
String
COL_ORDER_SN
=
"order_sn"
;
public
static
final
String
COL_SUB_ORDER_SN
=
"sub_order_sn"
;
public
static
final
String
COL_REWARD_EXTEND
=
"reward_extend"
;
public
static
final
String
COL_CREATED_AT
=
"created_at"
;
public
static
final
String
COL_UPDATED_AT
=
"updated_at"
;
public
static
final
String
COL_DELETED_AT
=
"deleted_at"
;
public
static
final
String
COL_CREATE_TIME
=
"create_time"
;
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/manager/
User
AgentManager.java
→
src/main/java/com/lanren/huhu/partner/manager/AgentManager.java
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
manager
;
import
com.alibaba.fastjson.JSON
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.AgentRsp
;
import
com.lanren.huhu.partner.model.AgentResponse
;
import
com.lanren.huhu.partner.model.AgentRewardMessage
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.service.UserAgentService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.ListOperations
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
/**
* @author chen
*/
@Component
public
class
User
AgentManager
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
User
AgentManager
.
class
);
public
class
AgentManager
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
AgentManager
.
class
);
@Autowired
UserAgentService
userAgentService
;
@Autowired
StringRedisTemplate
redisTemplate
;
/***
* * 获取代理商等级 1 总代, 2 大区, 3 省, 4 市
* @param agentId
* @return
*/
public
Result
<
AgentR
sp
>
getAgentLevel
(
Integer
agentId
)
{
public
Result
<
AgentR
esponse
>
getAgentLevel
(
Integer
agentId
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"UserAgentManager getLevel agentId:{},time:{}"
,
agentId
,
LocalDateTime
.
now
());
}
Result
<
AgentR
sp
>
result
=
new
Result
<>();
Result
<
AgentR
esponse
>
result
=
new
Result
<>();
UserAgent
userAgent
=
userAgentService
.
getOneByAgentId
(
agentId
);
if
(
null
!=
userAgent
)
{
result
.
setData
(
new
AgentR
sp
(
userAgent
.
getUserId
(),
userAgent
.
getAgentLevel
()));
result
.
setData
(
new
AgentR
esponse
(
userAgent
.
getUserId
(),
userAgent
.
getAgentLevel
()));
}
else
{
result
.
setCode
(
601
);
}
return
result
;
}
public
Result
<
String
>
divideReward
()
{
ListOperations
<
String
,
String
>
ops
=
redisTemplate
.
opsForList
();
logger
.
info
(
"message is: {}"
,
ops
.
rightPop
(
"agent_reward_redis_city_key"
));
return
new
Result
<>();
}
public
Result
<
String
>
pushReward
()
{
ListOperations
<
String
,
String
>
ops
=
redisTemplate
.
opsForList
();
AgentRewardMessage
agentRewardMessage
=
new
AgentRewardMessage
();
agentRewardMessage
.
setRewardType
(
710
);
agentRewardMessage
.
setRechargeTime
(
"2019-06-29 01:23:45"
);
agentRewardMessage
.
setSourceUserId
(
2328
);
agentRewardMessage
.
setReferenceId
(
"9999"
);
agentRewardMessage
.
setAgentId
(
33
);
agentRewardMessage
.
setAgentReward
(
new
BigDecimal
(
5
));
agentRewardMessage
.
setSettleState
(-
100
);
agentRewardMessage
.
setOrderType
(
"taobao"
);
agentRewardMessage
.
setOrderSn
(
"507596802910534728"
);
agentRewardMessage
.
setSubOrderSn
(
"507596802910534728"
);
agentRewardMessage
.
setOrderCommission
(
new
BigDecimal
(
"35.400000"
));
ops
.
leftPush
(
"agent_reward_redis_city_key"
,
JSON
.
toJSONString
(
agentRewardMessage
));
return
new
Result
<>();
}
}
src/main/java/com/lanren/huhu/partner/manager/PartnerAccountManager.java
deleted
100644 → 0
View file @
4630db2c
package
com
.
lanren
.
huhu
.
partner
.
manager
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.model.PartnerRsp
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.service.PartnerAccountService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
/** * @author houseme * @date 2019-06-26 10:56 * @Project partner * @Package com.lanren.huhu.partner.manager * @File: PartnerAccountManager */
@Component
public
class
PartnerAccountManager
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PartnerAccountManager
.
class
);
@Autowired
private
PartnerAccountService
partnerAccountService
;
/*** * 获取合伙人账户信息 * @param userId * @return */
public
Result
<
PartnerAccount
>
findByUserId
(
Integer
userId
)
{
Result
<
PartnerAccount
>
result
=
new
Result
<>();
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"PartnerAccountManager findByUserId userId:{},time:{}"
,
userId
,
LocalDateTime
.
now
());
}
PartnerAccount
partnerAccount
=
partnerAccountService
.
getOneByUserId
(
userId
);
result
.
setData
(
partnerAccount
);
return
result
;
}
/*** * 获取合伙人等级 10 普通, 20 高级, 30 超级 * @param userId * @return */
public
Result
<
PartnerRsp
>
getPartnerLevel
(
Integer
userId
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"PartnerAccountManager getPartnerLevel userId:{},time:{}"
,
userId
,
LocalDateTime
.
now
());
}
Result
<
PartnerRsp
>
result
=
new
Result
<>();
PartnerAccount
partnerAccount
=
partnerAccountService
.
getOneByUserId
(
userId
);
if
(
null
!=
partnerAccount
)
{
int
partnerLevel
;
if
(
partnerAccount
.
getIsSuperPartner
()
==
1
)
{
partnerLevel
=
30
;
}
else
{
partnerLevel
=
partnerAccount
.
getPartnerLevel
();
}
result
.
setData
(
new
PartnerRsp
(
partnerLevel
));
}
else
{
result
.
setCode
(
601
);
}
return
result
;
}
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/manager/PartnerManager.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
manager
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.model.PartnerResponse
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.service.PartnerAccountService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
/** * @author houseme * @date 2019-06-26 10:56 * @Project partner * @Package com.lanren.huhu.partner.manager * @File: PartnerAccountManager */
@Component
public
class
PartnerManager
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PartnerManager
.
class
);
@Autowired
private
PartnerAccountService
partnerAccountService
;
/*** * 获取合伙人账户信息 * @param userId * @return */
public
Result
<
PartnerAccount
>
findByUserId
(
Integer
userId
)
{
Result
<
PartnerAccount
>
result
=
new
Result
<>();
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"PartnerAccountManager findByUserId userId:{},time:{}"
,
userId
,
LocalDateTime
.
now
());
}
PartnerAccount
partnerAccount
=
partnerAccountService
.
getOneByUserId
(
userId
);
result
.
setData
(
partnerAccount
);
return
result
;
}
/*** * 获取合伙人等级 10 普通, 20 高级, 30 超级 * @param userId * @return */
public
Result
<
PartnerResponse
>
getPartnerLevel
(
Integer
userId
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"PartnerAccountManager getPartnerLevel userId:{},time:{}"
,
userId
,
LocalDateTime
.
now
());
}
Result
<
PartnerResponse
>
result
=
new
Result
<>();
PartnerAccount
partnerAccount
=
partnerAccountService
.
getOneByUserId
(
userId
);
if
(
null
!=
partnerAccount
)
{
int
partnerLevel
;
if
(
partnerAccount
.
getIsSuperPartner
()
==
1
)
{
partnerLevel
=
30
;
}
else
{
partnerLevel
=
partnerAccount
.
getPartnerLevel
();
}
result
.
setData
(
new
PartnerResponse
(
partnerLevel
));
}
else
{
result
.
setCode
(
601
);
}
return
result
;
}
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/manager/UserManager.java
View file @
7c77db91
...
...
@@ -4,10 +4,12 @@ import com.lanren.huhu.partner.domain.PartnerAccount;
import
com.lanren.huhu.partner.model.ParentPartner
;
import
com.lanren.huhu.partner.model.PartnerTree
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.service.UserService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
...
...
@@ -22,24 +24,35 @@ public class UserManager {
@Autowired
UserService
userService
;
public
User
getRelationByUserId
(
int
userId
)
{
return
userService
.
getRelationByUserId
(
userId
);
public
Result
<
User
>
getRelationByUserId
(
int
userId
)
{
User
resutrnUser
=
userService
.
getRelationByUserId
(
userId
);
Result
<
User
>
result
=
new
Result
<
User
>();
result
.
setData
(
resutrnUser
);
return
result
;
}
public
boolean
deleteRalationByUserId
(
int
userId
)
{
return
userService
.
deleteRalationByUserId
(
userId
);
public
Result
<
String
>
deleteRalationByUserId
(
int
userId
)
{
Result
<
String
>
result
=
new
Result
<
String
>();
if
(
userService
.
deleteRalationByUserId
(
userId
))
{
result
.
setData
(
"删除成功"
);
}
else
{
result
.
setCode
(
500
);
}
return
result
;
}
/**
* 根据输入的userId, 完成递归查找
* @param userId
*/
public
int
findPartnerChiledren
(
Integer
userId
)
{
@Async
public
Result
<
String
>
changeRelation
(
Integer
userId
)
{
Result
<
String
>
result
=
new
Result
<
String
>();
try
{
logger
.
info
(
"start
findPartnerChiledre
n for userId: {} ..."
,
userId
);
logger
.
info
(
"start
changeRelatio
n for userId: {} ..."
,
userId
);
PartnerAccount
partnerAccount
=
userService
.
getPartnerAccountByUserId
(
userId
);
if
(
partnerAccount
==
null
)
{
re
turn
413
;
re
sult
.
setCode
(
413
)
;
}
int
partnerLevel
=
partnerAccount
.
getIsSuperPartner
()
==
1
?
30
:
partnerAccount
.
getPartnerLevel
();
PartnerTree
root
=
new
PartnerTree
();
...
...
@@ -47,12 +60,13 @@ public class UserManager {
root
.
setLevel
(
partnerLevel
);
root
.
setParentList
(
new
ArrayList
<
ParentPartner
>());
recursiveSet
(
root
);
logger
.
info
(
"done
findPartnerChiledre
n for userId: {}"
,
userId
);
re
turn
0
;
logger
.
info
(
"done
changeRelatio
n for userId: {}"
,
userId
);
re
sult
.
setData
(
"用户刷新成功"
)
;
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
re
turn
500
;
re
sult
.
setCode
(
500
)
;
}
return
result
;
}
/**
...
...
src/main/java/com/lanren/huhu/partner/model/AgentR
sp
.java
→
src/main/java/com/lanren/huhu/partner/model/AgentR
esponse
.java
View file @
7c77db91
...
...
@@ -4,11 +4,11 @@ import com.lanren.huhu.partner.model.base.BaseModel;
import
lombok.Data
;
@Data
public
class
AgentR
sp
extends
BaseModel
{
public
class
AgentR
esponse
extends
BaseModel
{
int
userId
;
int
level
;
public
AgentR
sp
(
int
userId
,
int
level
)
{
public
AgentR
esponse
(
int
userId
,
int
level
)
{
this
.
userId
=
userId
;
this
.
level
=
level
;
}
...
...
src/main/java/com/lanren/huhu/partner/model/AgentRewardMessage.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
model
;
import
com.lanren.huhu.partner.model.base.BaseModel
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* @author chen
* @title: AgentRewardMessage
* @projectName partner
* @description: 代理商奖励处理 Redis队列消息结构
* @package com.lanren.huhu.partner.model
* @date 2019-06-29 12:29
*/
@Data
public
class
AgentRewardMessage
extends
BaseModel
{
int
rewardType
;
String
rechargeTime
;
int
sourceUserId
;
String
referenceId
;
int
agentId
;
BigDecimal
agentReward
;
int
settleState
;
String
orderType
;
String
orderSn
;
String
subOrderSn
;
BigDecimal
orderCommission
;
// public AgentRewardMessage(int rewardType, String rechargeTime, int sourceUserId, String referenceId, int agentId, BigDecimal agentReward, int settleState, String orderType, String orderSn, String subOrderSn, BigDecimal orderCommission) {
// this.rewardType = rewardType;
// this.rechargeTime = rechargeTime;
// this.sourceUserId = sourceUserId;
// this.referenceId = referenceId;
// this.agentId = agentId;
// this.agentReward = agentReward;
// this.settleState = settleState;
// this.orderType = orderType;
// this.orderSn = orderSn;
// this.subOrderSn = subOrderSn;
// this.orderCommission = orderCommission;
// }
}
src/main/java/com/lanren/huhu/partner/model/PartnerR
sp
.java
→
src/main/java/com/lanren/huhu/partner/model/PartnerR
esponse
.java
View file @
7c77db91
...
...
@@ -4,10 +4,10 @@ import com.lanren.huhu.partner.model.base.BaseModel;
import
lombok.Data
;
@Data
public
class
PartnerR
sp
extends
BaseModel
{
public
class
PartnerR
esponse
extends
BaseModel
{
int
level
;
public
PartnerR
sp
(
int
level
)
{
public
PartnerR
esponse
(
int
level
)
{
this
.
level
=
level
;
}
}
src/main/java/com/lanren/huhu/partner/schedule/AgentRewardQueueTask.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
schedule
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.lanren.huhu.partner.domain.AgentReward
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.AgentRewardMessage
;
import
com.lanren.huhu.partner.model.ParentAgent
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.service.AgentRewardService
;
import
com.lanren.huhu.partner.service.PartnerAccountService
;
import
com.lanren.huhu.partner.service.UserAgentService
;
import
com.lanren.huhu.partner.service.UserService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.ListOperations
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
static
com
.
lanren
.
huhu
.
partner
.
constants
.
Constants
.*;
/**
* @author chen
* @title: AgentRewardQueueTask
* @projectName partner
* @description: 消费 代理商奖励的消息队列, 处理代理商奖励, 写到agent_reward
* @package com.lanren.huhu.partner.schedule
* @date 2019-06-29 15:39
*/
@Component
public
class
AgentRewardQueueTask
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
AgentRewardQueueTask
.
class
);
@Autowired
StringRedisTemplate
stringRedisTemplate
;
@Autowired
UserAgentService
userAgentService
;
@Autowired
UserService
userService
;
@Autowired
AgentRewardService
agentRewardService
;
@Autowired
PartnerAccountService
partnerAccountService
;
@Scheduled
(
fixedDelay
=
1000L
)
public
void
runScheduledTask
()
{
logger
.
info
(
"run AgentRewardQueueTask"
);
runConsume
();
logger
.
info
(
"run AgentRewardQueueTask done"
);
}
public
void
runConsume
()
{
ListOperations
<
String
,
String
>
ops
=
stringRedisTemplate
.
opsForList
();
while
(
null
!=
ops
&&
null
!=
ops
.
size
(
AGENT_REWARD_QUEUE_KEY
)
&&
ops
.
size
(
AGENT_REWARD_QUEUE_KEY
)
>
0L
)
{
String
msg
=
""
;
try
{
msg
=
ops
.
rightPop
(
AGENT_REWARD_QUEUE_KEY
);
logger
.
info
(
"msg is {}"
,
msg
);
JSONObject
json
=
JSON
.
parseObject
(
msg
);
AgentRewardMessage
message
=
json
.
toJavaObject
(
AgentRewardMessage
.
class
);
processReward
(
message
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"process agent reward message failed"
,
msg
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
}
@Async
public
void
processReward
(
AgentRewardMessage
message
)
{
ListOperations
<
String
,
String
>
ops
=
stringRedisTemplate
.
opsForList
();
logger
.
info
(
"异步处理 agent reward: {}"
,
message
);
int
rewardType
=
message
.
getRewardType
();
Map
<
Integer
,
BigDecimal
>
rateMap
;
if
(!
AGENT_RATE_MAP
.
keySet
().
contains
(
rewardType
))
{
logger
.
error
(
"未知的奖励类型 跳过不处理: {}"
,
message
);
return
;
}
else
{
rateMap
=
AGENT_RATE_MAP
.
get
(
rewardType
);
}
UserAgent
userAgent
=
userAgentService
.
getOneByAgentId
(
message
.
getAgentId
());
if
(
userAgent
==
null
)
{
logger
.
error
(
"代理商id: {} 不存在, 跳过不处理"
,
message
);
return
;
}
if
(
userAgent
.
getAgentLevel
()
!=
AGENT_LEVEL_4
)
{
logger
.
error
(
"代理商id: {} 不是城市代理, 跳过不处理"
,
message
);
return
;
}
User
user
=
userService
.
getRelationByUserId
(
userAgent
.
getUserId
());
ArrayList
<
ParentAgent
>
parentList
=
user
.
getAgentList
();
ArrayList
<
ParentAgent
>
level4List
=
new
ArrayList
<
ParentAgent
>();
if
(
parentList
.
size
()
>
0
)
{
/**
* 扫描agentlist中的平推城市代理
* 最多只需要找3个
*/
int
rewardCnt
=
0
;
ArrayList
<
ParentAgent
>
rewardList
=
new
ArrayList
<
ParentAgent
>();
for
(
ParentAgent
agent
:
parentList
)
{
/**
* 先扫描平推代理, 写到level4List
* 如果不是平推, 奖励次数还不够3, 写到rewardList
*/
if
(
agent
.
getLevel
()
==
AGENT_LEVEL_4
&&
rewardCnt
<
3
)
{
level4List
.
add
(
agent
);
rewardList
.
add
(
agent
);
rewardCnt
++;
}
else
if
(
rewardCnt
<
3
){
rewardList
.
add
(
agent
);
}
else
{
break
;
}
}
/**
* 如果平推层级小于3, 又没有上级代理, 报错不处理
*/
if
(
level4List
.
size
()
<
3
&&
level4List
.
size
()
==
rewardList
.
size
())
{
logger
.
error
(
"代理商关系错误, 只有平推, 没有上级. {}"
,
message
);
return
;
}
/**
* 如果上面检查通过, 证明代理商关系没问题, 后面处理只看rewardList的size
* 决定比例怎么分: 1个人-拿3份; 2个人-第二个拿后2份; 3个人-各1份
*/
List
<
BigDecimal
>
rateList
=
new
ArrayList
<
BigDecimal
>();
if
(
rewardList
.
size
()
==
1
)
{
rateList
.
add
(
rateMap
.
get
(
0
).
add
(
rateMap
.
get
(
1
)).
add
(
rateMap
.
get
(
2
)));
}
else
if
(
rewardList
.
size
()
==
2
)
{
rateList
.
add
(
rateMap
.
get
(
0
));
rateList
.
add
(
rateMap
.
get
(
1
).
add
(
rateMap
.
get
(
2
)));
}
else
if
(
rewardList
.
size
()
==
3
)
{
rateList
.
add
(
rateMap
.
get
(
0
));
rateList
.
add
(
rateMap
.
get
(
1
));
rateList
.
add
(
rateMap
.
get
(
2
));
}
for
(
int
i
=
0
;
i
<
rewardList
.
size
();
i
++)
{
BigDecimal
commissionRate
=
rateList
.
get
(
i
);
if
(
doInsert
(
commissionRate
,
rewardList
.
get
(
i
),
message
))
{
logger
.
info
(
"插入代理商分成奖励,奖励比例: {}, 代理商: {}"
,
commissionRate
,
rewardList
.
get
(
i
));
}
else
{
logger
.
error
(
"插入失败, 写回到队列"
);
// ops.leftPush(AGENT_REWARD_QUEUE_KEY, JSON.toJSONString(message));
}
}
}
}
private
boolean
doInsert
(
BigDecimal
commissionRate
,
ParentAgent
agent
,
AgentRewardMessage
message
)
{
try
{
int
partnerLevel
=
partnerAccountService
.
getOneByUserId
(
agent
.
getUserId
()).
getPartnerLevel
();
int
sourceUserLevel
=
partnerAccountService
.
getOneByUserId
(
message
.
getSourceUserId
()).
getPartnerLevel
();
AgentReward
agentReward
=
new
AgentReward
();
agentReward
.
setRewardType
(
message
.
getRewardType
());
agentReward
.
setRechargeTime
(
LocalDateTime
.
parse
(
message
.
getRechargeTime
(),
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
agentReward
.
setSourceUserId
(
message
.
getSourceUserId
());
agentReward
.
setReferenceId
(
Long
.
parseLong
(
message
.
getReferenceId
()));
agentReward
.
setAgentId
(
agent
.
getAgentId
());
agentReward
.
setCommissionAcount
(
message
.
getAgentReward
().
multiply
(
commissionRate
));
agentReward
.
setCommissionRate
(
commissionRate
);
agentReward
.
setSettleState
(
message
.
getSettleState
());
agentReward
.
setOrderType
(
message
.
getOrderType
());
agentReward
.
setOrderSn
(
message
.
getOrderSn
());
agentReward
.
setSubOrderSn
(
message
.
getSubOrderSn
());
agentReward
.
setMoney
(
message
.
getOrderCommission
());
agentReward
.
setAgentLevel
(
agent
.
getLevel
());
agentReward
.
setUserId
(
agent
.
getUserId
());
agentReward
.
setRewardRemark
(
"测试"
);
agentReward
.
setAmount
(
message
.
getAgentReward
().
multiply
(
commissionRate
));
agentReward
.
setSourceOrder
(
message
.
getReferenceId
());
agentReward
.
setSourceUserLevel
(
sourceUserLevel
);
if
(
agentRewardService
.
insertOrUpdate
(
agentReward
)
>
0
)
{
return
true
;
}
else
{
return
false
;
}
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
return
false
;
}
}
}
src/main/java/com/lanren/huhu/partner/service/AgentRewardService.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.lanren.huhu.partner.domain.AgentReward
;
import
java.util.List
;
/**
* @author chen
* @title: ${NAME}
* @projectName partner
* @description: TODO
* @package ${PACKAGE_NAME}
* @date 2019-06-29 18:49
*/
public
interface
AgentRewardService
extends
IService
<
AgentReward
>
{
int
updateBatch
(
List
<
AgentReward
>
list
);
int
batchInsert
(
List
<
AgentReward
>
list
);
int
insertOrUpdate
(
AgentReward
record
);
int
insertOrUpdateSelective
(
AgentReward
record
);
}
src/main/java/com/lanren/huhu/partner/service/impl/AgentRewardServiceImpl.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.lanren.huhu.partner.dao.AgentRewardMapper
;
import
com.lanren.huhu.partner.domain.AgentReward
;
import
com.lanren.huhu.partner.service.AgentRewardService
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author chen
* @title: ${NAME}
* @projectName partner
* @description: TODO
* @package ${PACKAGE_NAME}
* @date 2019-06-29 18:49
*/
@Service
public
class
AgentRewardServiceImpl
extends
ServiceImpl
<
AgentRewardMapper
,
AgentReward
>
implements
AgentRewardService
{
@Override
public
int
updateBatch
(
List
<
AgentReward
>
list
)
{
return
baseMapper
.
updateBatch
(
list
);
}
@Override
public
int
batchInsert
(
List
<
AgentReward
>
list
)
{
return
baseMapper
.
batchInsert
(
list
);
}
@Override
public
int
insertOrUpdate
(
AgentReward
record
)
{
return
baseMapper
.
insertOrUpdate
(
record
);
}
@Override
public
int
insertOrUpdateSelective
(
AgentReward
record
)
{
return
baseMapper
.
insertOrUpdateSelective
(
record
);
}
}
src/main/java/com/lanren/huhu/partner/service/impl/UserServiceImpl.java
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.lanren.huhu.partner.dao.PartnerAccountMapper
;
import
com.lanren.huhu.partner.dao.UserAgentMapper
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.ParentAgent
;
import
com.lanren.huhu.partner.model.ParentPartner
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.service.UserService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
/** * @author houseme * @date 2019-06-28 18:36 * @Project partner * @Package com.lanren.huhu.partner.service.impl * @File: UserServiceImpl */
@Service
@CacheConfig
(
cacheNames
=
"user_cache"
)
public
class
UserServiceImpl
implements
UserService
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
UserServiceImpl
.
class
);
@Autowired
private
UserAgentMapper
userAgentMapper
;
@Autowired
private
PartnerAccountMapper
partnerAccountMapper
;
/** * 用户上级 合伙人 和 代理 关系 * @param userId * @return */
@Override
@Cacheable
public
User
getRelationByUserId
(
Integer
userId
)
{
logger
.
info
(
"new a user object "
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"new a user object "
);
}
User
user
=
new
User
();
user
.
setUserId
(
userId
);
user
.
setPartnerList
((
ArrayList
<
ParentPartner
>)
getPartnerListByUserId
(
userId
));
user
.
setAgentList
((
ArrayList
<
ParentAgent
>)
getAgentListByUserId
(
userId
));
return
user
;
}
@Override
@CacheEvict
(
key
=
"#userId"
)
public
boolean
deleteRalationByUserId
(
Integer
userId
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"delete user relation cache, userId: {}"
,
userId
);
}
return
true
;
}
/** * 合伙人数据 * @param userId * @return */
@Override
public
PartnerAccount
getPartnerAccountByUserId
(
Integer
userId
)
{
QueryWrapper
<
PartnerAccount
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"user_id"
,
userId
);
return
partnerAccountMapper
.
selectOne
(
queryWrapper
);
}
@Override
public
List
<
PartnerAccount
>
getPartnerAccountChildrenByUserId
(
Integer
userId
)
{
return
partnerAccountMapper
.
getChildrenByUserId
(
userId
);
}
@Override
public
ParentPartner
getParentPartner
(
Integer
userId
)
{
PartnerAccount
partnerAccount
=
partnerAccountMapper
.
getParentByUserId
(
userId
);
ParentPartner
parentPartner
=
null
;
if
(
null
!=
partnerAccount
)
{
int
partnerLevel
=
partnerAccount
.
getIsSuperPartner
()
==
1
?
30
:
partnerAccount
.
getPartnerLevel
();
parentPartner
=
new
ParentPartner
(
partnerAccount
.
getUserId
(),
partnerLevel
);
}
return
parentPartner
;
}
@Override
public
List
<
ParentPartner
>
getPartnerListByUserId
(
Integer
userId
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"begin setPartnerList for user: {} ......"
,
userId
);
}
ArrayList
<
ParentPartner
>
partnerList
=
new
ArrayList
<
ParentPartner
>();
/** * 无限找 */
int
loopUserId
=
userId
;
while
(
true
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
}
ParentPartner
parentPartner
=
getParentPartner
(
loopUserId
);
if
(
null
==
parentPartner
)
{
break
;
}
else
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"parent is {} "
,
parentPartner
.
getUserId
());
}
partnerList
.
add
(
parentPartner
);
loopUserId
=
parentPartner
.
getUserId
();
}
}
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"setPartnerList for user: {} end"
,
userId
);
}
return
partnerList
;
}
/** * 代理商数据 * @param userId * @return */
@Override
public
UserAgent
getUserAgentByUserId
(
Integer
userId
)
{
QueryWrapper
<
UserAgent
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"user_id"
,
userId
).
le
(
"agent_level"
,
4
);
return
userAgentMapper
.
selectOne
(
queryWrapper
);
}
@Override
public
ParentAgent
getParentAgent
(
Integer
agentId
)
{
UserAgent
userAgent
=
userAgentMapper
.
getParentAgent
(
agentId
);
ParentAgent
parentAgent
=
null
;
if
(
null
!=
userAgent
)
{
int
agentLevel
=
userAgent
.
getAgentLevel
();
parentAgent
=
new
ParentAgent
(
userAgent
.
getUserId
(),
userAgent
.
getAgentId
(),
agentLevel
);
}
return
parentAgent
;
}
@Override
public
List
<
ParentAgent
>
getAgentListByUserId
(
Integer
userId
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"begin setAgentList for user: {} ......"
,
userId
);
}
ArrayList
<
ParentAgent
>
agentList
=
new
ArrayList
<
ParentAgent
>();
/** * 无限找 * 先无限找上级合伙人, 直到找到第一个是代理商的合伙人 */
int
loopUserId
=
userId
;
while
(
true
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
}
ParentPartner
parentPartner
=
getParentPartner
(
loopUserId
);
/** * 有上级合伙人 */
if
(
null
!=
parentPartner
)
{
UserAgent
userAgent
=
getUserAgentByUserId
(
parentPartner
.
getUserId
());
/** * 找到了第一个是代理商的合伙人 */
if
(
null
!=
userAgent
)
{
/** * 然后开始 无限找 这个人的上级代理商 */
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"find first agent({}) for user: {}"
,
userAgent
.
getAgentId
(),
userId
);
}
agentList
.
add
(
new
ParentAgent
(
userAgent
.
getUserId
(),
userAgent
.
getAgentId
(),
userAgent
.
getAgentLevel
()));
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop find parent agent start ......"
);
}
int
loogAgentId
=
userAgent
.
getAgentId
();
while
(
true
)
{
ParentAgent
loopUserAgent
=
getParentAgent
(
loogAgentId
);
if
(
null
==
loopUserAgent
)
{
break
;
}
else
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"parent agent is "
,
loopUserAgent
.
getAgentId
());
}
agentList
.
add
(
new
ParentAgent
(
loopUserAgent
.
getUserId
(),
loopUserAgent
.
getAgentId
(),
loopUserAgent
.
getLevel
()));
loogAgentId
=
loopUserAgent
.
getAgentId
();
}
}
/** * 找完 "第一个是代理商的合伙人" 的 全部上级代理后 退出while循环 */
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop find parent agent end"
);
}
break
;
}
else
{
/** * 这个人不是代理商 继续往上找 */
loopUserId
=
parentPartner
.
getUserId
();
}
}
else
{
/** * 没有上级合伙人 打印结束信息 跳出循环 */
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop end with userId: {}"
,
loopUserId
);
}
break
;
}
}
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"setAgentList for user: {} end"
,
userId
);
}
return
agentList
;
}
}
\ No newline at end of file
package
com
.
lanren
.
huhu
.
partner
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.lanren.huhu.partner.dao.PartnerAccountMapper
;
import
com.lanren.huhu.partner.dao.UserAgentMapper
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.ParentAgent
;
import
com.lanren.huhu.partner.model.ParentPartner
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.service.UserService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
/** * @author houseme * @date 2019-06-28 18:36 * @Project partner * @Package com.lanren.huhu.partner.service.impl * @File: UserServiceImpl */
@Service
@CacheConfig
(
cacheNames
=
"user:relation:cache"
)
public
class
UserServiceImpl
implements
UserService
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
UserServiceImpl
.
class
);
@Autowired
private
UserAgentMapper
userAgentMapper
;
@Autowired
private
PartnerAccountMapper
partnerAccountMapper
;
/** * 用户上级 合伙人 和 代理 关系 * @param userId * @return */
@Override
@Cacheable
public
User
getRelationByUserId
(
Integer
userId
)
{
logger
.
info
(
"new a user object "
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"new a user object "
);
}
User
user
=
new
User
();
user
.
setUserId
(
userId
);
user
.
setPartnerList
((
ArrayList
<
ParentPartner
>)
getPartnerListByUserId
(
userId
));
user
.
setAgentList
((
ArrayList
<
ParentAgent
>)
getAgentListByUserId
(
userId
));
return
user
;
}
@Override
@CacheEvict
(
key
=
"#userId"
)
public
boolean
deleteRalationByUserId
(
Integer
userId
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"delete user relation cache, userId: {}"
,
userId
);
}
return
true
;
}
/** * 合伙人数据 * @param userId * @return */
@Override
public
PartnerAccount
getPartnerAccountByUserId
(
Integer
userId
)
{
QueryWrapper
<
PartnerAccount
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"user_id"
,
userId
);
return
partnerAccountMapper
.
selectOne
(
queryWrapper
);
}
@Override
public
List
<
PartnerAccount
>
getPartnerAccountChildrenByUserId
(
Integer
userId
)
{
return
partnerAccountMapper
.
getChildrenByUserId
(
userId
);
}
@Override
public
ParentPartner
getParentPartner
(
Integer
userId
)
{
PartnerAccount
partnerAccount
=
partnerAccountMapper
.
getParentByUserId
(
userId
);
ParentPartner
parentPartner
=
null
;
if
(
null
!=
partnerAccount
)
{
int
partnerLevel
=
partnerAccount
.
getIsSuperPartner
()
==
1
?
30
:
partnerAccount
.
getPartnerLevel
();
parentPartner
=
new
ParentPartner
(
partnerAccount
.
getUserId
(),
partnerLevel
);
}
return
parentPartner
;
}
@Override
public
List
<
ParentPartner
>
getPartnerListByUserId
(
Integer
userId
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"begin setPartnerList for user: {} ......"
,
userId
);
}
ArrayList
<
ParentPartner
>
partnerList
=
new
ArrayList
<
ParentPartner
>();
/** * 无限找 */
int
loopUserId
=
userId
;
int
loopTimes
=
0
;
while
(
true
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
}
ParentPartner
parentPartner
=
getParentPartner
(
loopUserId
);
if
(
null
==
parentPartner
)
{
break
;
}
else
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"parent is {} "
,
parentPartner
.
getUserId
());
}
partnerList
.
add
(
parentPartner
);
loopUserId
=
parentPartner
.
getUserId
();
loopTimes
++;
if
(
loopTimes
>
500
)
{
partnerList
.
clear
();
logger
.
error
(
"用户:{} 邀请关系异常, 已超500层"
,
userId
);
break
;
}
}
}
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"setPartnerList for user: {} end"
,
userId
);
}
return
partnerList
;
}
/** * 代理商数据 * @param userId * @return */
@Override
public
UserAgent
getUserAgentByUserId
(
Integer
userId
)
{
QueryWrapper
<
UserAgent
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"user_id"
,
userId
).
le
(
"agent_level"
,
4
);
return
userAgentMapper
.
selectOne
(
queryWrapper
);
}
@Override
public
ParentAgent
getParentAgent
(
Integer
agentId
)
{
UserAgent
userAgent
=
userAgentMapper
.
getParentAgent
(
agentId
);
ParentAgent
parentAgent
=
null
;
if
(
null
!=
userAgent
)
{
int
agentLevel
=
userAgent
.
getAgentLevel
();
parentAgent
=
new
ParentAgent
(
userAgent
.
getUserId
(),
userAgent
.
getAgentId
(),
agentLevel
);
}
return
parentAgent
;
}
@Override
public
List
<
ParentAgent
>
getAgentListByUserId
(
Integer
userId
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"begin setAgentList for user: {} ......"
,
userId
);
}
ArrayList
<
ParentAgent
>
agentList
=
new
ArrayList
<
ParentAgent
>();
/** * 无限找 * 先无限找上级合伙人, 直到找到第一个是代理商的合伙人 */
int
loopUserId
=
userId
;
int
loopTimes
=
0
;
while
(
true
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
}
ParentPartner
parentPartner
=
getParentPartner
(
loopUserId
);
/** * 有上级合伙人 */
if
(
null
!=
parentPartner
)
{
UserAgent
userAgent
=
getUserAgentByUserId
(
parentPartner
.
getUserId
());
/** * 找到了第一个是代理商的合伙人 */
if
(
null
!=
userAgent
)
{
/** * 然后开始 无限找 这个人的上级代理商 */
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"find first agent({}) for user: {}"
,
userAgent
.
getAgentId
(),
userId
);
}
agentList
.
add
(
new
ParentAgent
(
userAgent
.
getUserId
(),
userAgent
.
getAgentId
(),
userAgent
.
getAgentLevel
()));
loopTimes
++;
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop find parent agent start ......"
);
}
int
loogAgentId
=
userAgent
.
getAgentId
();
while
(
true
)
{
ParentAgent
loopUserAgent
=
getParentAgent
(
loogAgentId
);
if
(
null
==
loopUserAgent
)
{
break
;
}
else
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"parent agent is "
,
loopUserAgent
.
getAgentId
());
}
agentList
.
add
(
new
ParentAgent
(
loopUserAgent
.
getUserId
(),
loopUserAgent
.
getAgentId
(),
loopUserAgent
.
getLevel
()));
loogAgentId
=
loopUserAgent
.
getAgentId
();
loopTimes
++;
if
(
loopTimes
>
500
)
{
agentList
.
clear
();
logger
.
error
(
"用户ID:{} 代理商关系异常, 已超500层"
,
userId
);
break
;
}
}
}
/** * 找完 "第一个是代理商的合伙人" 的 全部上级代理后 退出while循环 */
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop find parent agent end"
);
}
break
;
}
else
{
/** * 这个人不是代理商 继续往上找 */
loopUserId
=
parentPartner
.
getUserId
();
}
}
else
{
/** * 没有上级合伙人 打印结束信息 跳出循环 */
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop end with userId: {}"
,
loopUserId
);
}
break
;
}
}
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"setAgentList for user: {} end"
,
userId
);
}
return
agentList
;
}
}
\ No newline at end of file
...
...
src/main/resources/mapper/AgentRewardMapper.xml
0 → 100644
View file @
7c77db91
<?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.lanren.huhu.partner.dao.AgentRewardMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.lanren.huhu.partner.domain.AgentReward"
>
<!--@mbg.generated-->
<id
column=
"id"
property=
"id"
/>
<result
column=
"agent_id"
property=
"agentId"
/>
<result
column=
"agent_level"
property=
"agentLevel"
/>
<result
column=
"user_id"
property=
"userId"
/>
<result
column=
"reward_type"
property=
"rewardType"
/>
<result
column=
"reward_remark"
property=
"rewardRemark"
/>
<result
column=
"reward_status"
property=
"rewardStatus"
/>
<result
column=
"money"
property=
"money"
/>
<result
column=
"amount"
property=
"amount"
/>
<result
column=
"cash_code"
property=
"cashCode"
/>
<result
column=
"recharge_time"
property=
"rechargeTime"
/>
<result
column=
"commission_acount"
property=
"commissionAcount"
/>
<result
column=
"commission_rate"
property=
"commissionRate"
/>
<result
column=
"commission"
property=
"commission"
/>
<result
column=
"reference_id"
property=
"referenceId"
/>
<result
column=
"settle_state"
property=
"settleState"
/>
<result
column=
"source_order"
property=
"sourceOrder"
/>
<result
column=
"source_user_id"
property=
"sourceUserId"
/>
<result
column=
"source_user_level"
property=
"sourceUserLevel"
/>
<result
column=
"goods_id"
property=
"goodsId"
/>
<result
column=
"title"
property=
"title"
/>
<result
column=
"order_type"
property=
"orderType"
/>
<result
column=
"order_sn"
property=
"orderSn"
/>
<result
column=
"sub_order_sn"
property=
"subOrderSn"
/>
<result
column=
"reward_extend"
property=
"rewardExtend"
/>
<result
column=
"created_at"
property=
"createdAt"
/>
<result
column=
"updated_at"
property=
"updatedAt"
/>
<result
column=
"deleted_at"
property=
"deletedAt"
/>
<result
column=
"create_time"
property=
"createTime"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
<!--@mbg.generated-->
id, agent_id, agent_level, user_id, reward_type, reward_remark, reward_status, money,
amount, cash_code, recharge_time, commission_acount, commission_rate, commission,
reference_id, settle_state, source_order, source_user_id, source_user_level, goods_id,
title, order_type, order_sn, sub_order_sn, reward_extend, created_at, updated_at,
deleted_at, create_time
</sql>
<update
id=
"updateBatch"
parameterType=
"java.util.List"
>
<!--@mbg.generated-->
update agent_reward
<trim
prefix=
"set"
suffixOverrides=
","
>
<trim
prefix=
"agent_id = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.agentId}
</foreach>
</trim>
<trim
prefix=
"agent_level = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.agentLevel}
</foreach>
</trim>
<trim
prefix=
"user_id = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.userId}
</foreach>
</trim>
<trim
prefix=
"reward_type = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.rewardType}
</foreach>
</trim>
<trim
prefix=
"reward_remark = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.rewardRemark}
</foreach>
</trim>
<trim
prefix=
"reward_status = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.rewardStatus}
</foreach>
</trim>
<trim
prefix=
"money = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.money}
</foreach>
</trim>
<trim
prefix=
"amount = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.amount}
</foreach>
</trim>
<trim
prefix=
"cash_code = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.cashCode}
</foreach>
</trim>
<trim
prefix=
"recharge_time = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.rechargeTime}
</foreach>
</trim>
<trim
prefix=
"commission_acount = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.commissionAcount}
</foreach>
</trim>
<trim
prefix=
"commission_rate = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.commissionRate}
</foreach>
</trim>
<trim
prefix=
"commission = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.commission}
</foreach>
</trim>
<trim
prefix=
"reference_id = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.referenceId}
</foreach>
</trim>
<trim
prefix=
"settle_state = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.settleState}
</foreach>
</trim>
<trim
prefix=
"source_order = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.sourceOrder}
</foreach>
</trim>
<trim
prefix=
"source_user_id = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.sourceUserId}
</foreach>
</trim>
<trim
prefix=
"source_user_level = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.sourceUserLevel}
</foreach>
</trim>
<trim
prefix=
"goods_id = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.goodsId}
</foreach>
</trim>
<trim
prefix=
"title = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.title}
</foreach>
</trim>
<trim
prefix=
"order_type = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.orderType}
</foreach>
</trim>
<trim
prefix=
"order_sn = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.orderSn}
</foreach>
</trim>
<trim
prefix=
"sub_order_sn = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.subOrderSn}
</foreach>
</trim>
<trim
prefix=
"reward_extend = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.rewardExtend}
</foreach>
</trim>
<trim
prefix=
"created_at = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.createdAt}
</foreach>
</trim>
<trim
prefix=
"updated_at = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.updatedAt}
</foreach>
</trim>
<trim
prefix=
"deleted_at = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.deletedAt}
</foreach>
</trim>
<trim
prefix=
"create_time = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when id = #{item.id} then #{item.createTime}
</foreach>
</trim>
</trim>
where id in
<foreach
close=
")"
collection=
"list"
item=
"item"
open=
"("
separator=
", "
>
#{item.id}
</foreach>
</update>
<insert
id=
"batchInsert"
keyColumn=
"id"
keyProperty=
"id"
parameterType=
"map"
useGeneratedKeys=
"true"
>
<!--@mbg.generated-->
insert into agent_reward
(agent_id, agent_level, user_id, reward_type, reward_remark, reward_status, money,
amount, cash_code, recharge_time, commission_acount, commission_rate, commission,
reference_id, settle_state, source_order, source_user_id, source_user_level, goods_id,
title, order_type, order_sn, sub_order_sn, reward_extend, created_at, updated_at,
deleted_at, create_time)
values
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(#{item.agentId}, #{item.agentLevel}, #{item.userId}, #{item.rewardType}, #{item.rewardRemark},
#{item.rewardStatus}, #{item.money}, #{item.amount}, #{item.cashCode}, #{item.rechargeTime},
#{item.commissionAcount}, #{item.commissionRate}, #{item.commission}, #{item.referenceId},
#{item.settleState}, #{item.sourceOrder}, #{item.sourceUserId}, #{item.sourceUserLevel},
#{item.goodsId}, #{item.title}, #{item.orderType}, #{item.orderSn}, #{item.subOrderSn},
#{item.rewardExtend}, #{item.createdAt}, #{item.updatedAt}, #{item.deletedAt},
#{item.createTime})
</foreach>
</insert>
<insert
id=
"insertOrUpdate"
keyColumn=
"id"
keyProperty=
"id"
parameterType=
"com.lanren.huhu.partner.domain.AgentReward"
useGeneratedKeys=
"true"
>
<!--@mbg.generated-->
insert into agent_reward
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
id,
</if>
agent_id,
agent_level,
user_id,
reward_type,
reward_remark,
reward_status,
money,
amount,
cash_code,
recharge_time,
commission_acount,
commission_rate,
commission,
reference_id,
settle_state,
source_order,
source_user_id,
source_user_level,
goods_id,
title,
order_type,
order_sn,
sub_order_sn,
reward_extend,
created_at,
updated_at,
deleted_at,
create_time,
</trim>
values
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
#{id},
</if>
#{agentId},
#{agentLevel},
#{userId},
#{rewardType},
#{rewardRemark},
#{rewardStatus},
#{money},
#{amount},
#{cashCode},
#{rechargeTime},
#{commissionAcount},
#{commissionRate},
#{commission},
#{referenceId},
#{settleState},
#{sourceOrder},
#{sourceUserId},
#{sourceUserLevel},
#{goodsId},
#{title},
#{orderType},
#{orderSn},
#{subOrderSn},
#{rewardExtend},
#{createdAt},
#{updatedAt},
#{deletedAt},
#{createTime},
</trim>
on duplicate key update
<trim
suffixOverrides=
","
>
<if
test=
"id != null"
>
id = #{id},
</if>
agent_id = #{agentId},
agent_level = #{agentLevel},
user_id = #{userId},
reward_type = #{rewardType},
reward_remark = #{rewardRemark},
reward_status = #{rewardStatus},
money = #{money},
amount = #{amount},
cash_code = #{cashCode},
recharge_time = #{rechargeTime},
commission_acount = #{commissionAcount},
commission_rate = #{commissionRate},
commission = #{commission},
reference_id = #{referenceId},
settle_state = #{settleState},
source_order = #{sourceOrder},
source_user_id = #{sourceUserId},
source_user_level = #{sourceUserLevel},
goods_id = #{goodsId},
title = #{title},
order_type = #{orderType},
order_sn = #{orderSn},
sub_order_sn = #{subOrderSn},
reward_extend = #{rewardExtend},
created_at = #{createdAt},
updated_at = #{updatedAt},
deleted_at = #{deletedAt},
create_time = #{createTime},
</trim>
</insert>
<insert
id=
"insertOrUpdateSelective"
keyColumn=
"id"
keyProperty=
"id"
parameterType=
"com.lanren.huhu.partner.domain.AgentReward"
useGeneratedKeys=
"true"
>
<!--@mbg.generated-->
insert into agent_reward
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
id,
</if>
<if
test=
"agentId != null"
>
agent_id,
</if>
<if
test=
"agentLevel != null"
>
agent_level,
</if>
<if
test=
"userId != null"
>
user_id,
</if>
<if
test=
"rewardType != null"
>
reward_type,
</if>
<if
test=
"rewardRemark != null"
>
reward_remark,
</if>
<if
test=
"rewardStatus != null"
>
reward_status,
</if>
<if
test=
"money != null"
>
money,
</if>
<if
test=
"amount != null"
>
amount,
</if>
<if
test=
"cashCode != null"
>
cash_code,
</if>
<if
test=
"rechargeTime != null"
>
recharge_time,
</if>
<if
test=
"commissionAcount != null"
>
commission_acount,
</if>
<if
test=
"commissionRate != null"
>
commission_rate,
</if>
<if
test=
"commission != null"
>
commission,
</if>
<if
test=
"referenceId != null"
>
reference_id,
</if>
<if
test=
"settleState != null"
>
settle_state,
</if>
<if
test=
"sourceOrder != null"
>
source_order,
</if>
<if
test=
"sourceUserId != null"
>
source_user_id,
</if>
<if
test=
"sourceUserLevel != null"
>
source_user_level,
</if>
<if
test=
"goodsId != null"
>
goods_id,
</if>
<if
test=
"title != null"
>
title,
</if>
<if
test=
"orderType != null"
>
order_type,
</if>
<if
test=
"orderSn != null"
>
order_sn,
</if>
<if
test=
"subOrderSn != null"
>
sub_order_sn,
</if>
<if
test=
"rewardExtend != null"
>
reward_extend,
</if>
<if
test=
"createdAt != null"
>
created_at,
</if>
<if
test=
"updatedAt != null"
>
updated_at,
</if>
<if
test=
"deletedAt != null"
>
deleted_at,
</if>
<if
test=
"createTime != null"
>
create_time,
</if>
</trim>
values
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
#{id},
</if>
<if
test=
"agentId != null"
>
#{agentId},
</if>
<if
test=
"agentLevel != null"
>
#{agentLevel},
</if>
<if
test=
"userId != null"
>
#{userId},
</if>
<if
test=
"rewardType != null"
>
#{rewardType},
</if>
<if
test=
"rewardRemark != null"
>
#{rewardRemark},
</if>
<if
test=
"rewardStatus != null"
>
#{rewardStatus},
</if>
<if
test=
"money != null"
>
#{money},
</if>
<if
test=
"amount != null"
>
#{amount},
</if>
<if
test=
"cashCode != null"
>
#{cashCode},
</if>
<if
test=
"rechargeTime != null"
>
#{rechargeTime},
</if>
<if
test=
"commissionAcount != null"
>
#{commissionAcount},
</if>
<if
test=
"commissionRate != null"
>
#{commissionRate},
</if>
<if
test=
"commission != null"
>
#{commission},
</if>
<if
test=
"referenceId != null"
>
#{referenceId},
</if>
<if
test=
"settleState != null"
>
#{settleState},
</if>
<if
test=
"sourceOrder != null"
>
#{sourceOrder},
</if>
<if
test=
"sourceUserId != null"
>
#{sourceUserId},
</if>
<if
test=
"sourceUserLevel != null"
>
#{sourceUserLevel},
</if>
<if
test=
"goodsId != null"
>
#{goodsId},
</if>
<if
test=
"title != null"
>
#{title},
</if>
<if
test=
"orderType != null"
>
#{orderType},
</if>
<if
test=
"orderSn != null"
>
#{orderSn},
</if>
<if
test=
"subOrderSn != null"
>
#{subOrderSn},
</if>
<if
test=
"rewardExtend != null"
>
#{rewardExtend},
</if>
<if
test=
"createdAt != null"
>
#{createdAt},
</if>
<if
test=
"updatedAt != null"
>
#{updatedAt},
</if>
<if
test=
"deletedAt != null"
>
#{deletedAt},
</if>
<if
test=
"createTime != null"
>
#{createTime},
</if>
</trim>
on duplicate key update
<trim
suffixOverrides=
","
>
<if
test=
"id != null"
>
id = #{id},
</if>
<if
test=
"agentId != null"
>
agent_id = #{agentId},
</if>
<if
test=
"agentLevel != null"
>
agent_level = #{agentLevel},
</if>
<if
test=
"userId != null"
>
user_id = #{userId},
</if>
<if
test=
"rewardType != null"
>
reward_type = #{rewardType},
</if>
<if
test=
"rewardRemark != null"
>
reward_remark = #{rewardRemark},
</if>
<if
test=
"rewardStatus != null"
>
reward_status = #{rewardStatus},
</if>
<if
test=
"money != null"
>
money = #{money},
</if>
<if
test=
"amount != null"
>
amount = #{amount},
</if>
<if
test=
"cashCode != null"
>
cash_code = #{cashCode},
</if>
<if
test=
"rechargeTime != null"
>
recharge_time = #{rechargeTime},
</if>
<if
test=
"commissionAcount != null"
>
commission_acount = #{commissionAcount},
</if>
<if
test=
"commissionRate != null"
>
commission_rate = #{commissionRate},
</if>
<if
test=
"commission != null"
>
commission = #{commission},
</if>
<if
test=
"referenceId != null"
>
reference_id = #{referenceId},
</if>
<if
test=
"settleState != null"
>
settle_state = #{settleState},
</if>
<if
test=
"sourceOrder != null"
>
source_order = #{sourceOrder},
</if>
<if
test=
"sourceUserId != null"
>
source_user_id = #{sourceUserId},
</if>
<if
test=
"sourceUserLevel != null"
>
source_user_level = #{sourceUserLevel},
</if>
<if
test=
"goodsId != null"
>
goods_id = #{goodsId},
</if>
<if
test=
"title != null"
>
title = #{title},
</if>
<if
test=
"orderType != null"
>
order_type = #{orderType},
</if>
<if
test=
"orderSn != null"
>
order_sn = #{orderSn},
</if>
<if
test=
"subOrderSn != null"
>
sub_order_sn = #{subOrderSn},
</if>
<if
test=
"rewardExtend != null"
>
reward_extend = #{rewardExtend},
</if>
<if
test=
"createdAt != null"
>
created_at = #{createdAt},
</if>
<if
test=
"updatedAt != null"
>
updated_at = #{updatedAt},
</if>
<if
test=
"deletedAt != null"
>
deleted_at = #{deletedAt},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
</trim>
</insert>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment