Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
goods
Project
Project
Details
Activity
Releases
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
bp
goods
Commits
008d19fc
Commit
008d19fc
authored
Aug 30, 2021
by
luhongguang
Browse files
Options
Browse Files
Download
Plain Diff
update: 处理冲突
parents
6eae02b0
e5082790
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
729 additions
and
3 deletions
+729
-3
MarketingException.php
application/exception/custom/MarketingException.php
+1
-0
Colonelorder.php
application/modules/Cli/controllers/Colonelorder.php
+225
-0
Colonelwallet.php
application/modules/Cli/controllers/Colonelwallet.php
+126
-0
GoodsService.php
application/services/goods/GoodsService.php
+1
-1
PindanActivityInviteOrderService.php
...n/services/marketing/PindanActivityInviteOrderService.php
+19
-2
Colonelorder.php
daemon/Colonelorder.php
+232
-0
Colonelwallet.php
daemon/Colonelwallet.php
+125
-0
No files found.
application/exception/custom/MarketingException.php
View file @
008d19fc
...
...
@@ -24,6 +24,7 @@ class MarketingException extends BaseException
const
COLONEL_TAKE_PLACE_FAILED
=
32
;
protected
$cus
=
[
0
=>
'活动名称不能为空'
,
1
=>
'活动名称不能大于50'
,
...
...
application/modules/Cli/controllers/Colonelorder.php
0 → 100644
View file @
008d19fc
<?php
use
Api\PhpServices\Idgen\Idgen
;
use
Api\PhpUtils\Log\FileLog
;
use
App\Base\Cli
;
use
\App\Models\marketing\mysql\ColonelDistributorColonel
;
use
\App\Models\marketing\mysql\ColonelDistributorInviteOrder
;
use
\App\Models\marketing\mysql\ColonelDistributorConfig
;
use
\App\Models\marketing\mysql\ColonelDistributorInviteOrderNum
;
use
\App\Models\marketing\mysql\ColonelDistributorPayInfo
;
use
\App\Exception\custom\InterfaceException
;
use
Api\PhpUtils\Http\HttpUtil
;
use
\App\Models\user\mysql\UserWechatBind
;
/**
* php public/cli.php colonelorder index
*/
class
ColonelorderController
extends
Cli
{
public
function
indexAction
()
{
$userIdList
=
$this
->
getColonelUserIds
();
ColonelDistributorPayInfo
::
beginTransaction
();
if
(
!
empty
(
$userIdList
))
{
$userIdCount
=
count
(
$userIdList
);
//每次100个用户
$length
=
1
;
$start
=
(
int
)
ceil
(
$userIdCount
/
$length
);
$insertData
=
[];
for
(
$i
=
0
;
$i
<
$start
;)
{
$userIds
=
array_slice
(
$userIdList
,
$i
,
$length
);
$today
=
date
(
"Y-m-d"
);
$yesterday
=
date
(
"Y-m-d"
,
strtotime
(
"-1 day"
));
$startTime
=
$yesterday
.
" 16:00:00"
;
$endTime
=
$today
.
" 10:00:00"
;
$colonelConfig
=
$this
->
getColonelConfig
(
$yesterday
);
if
(
!
empty
(
$colonelConfig
[
"data"
]))
{
$configList
=
json_decode
(
$colonelConfig
[
"data"
],
true
);
//完成目标单数
$inviteOrderNumList
=
$this
->
getInviteOrderNum
(
$userIds
,
$yesterday
,
$today
);
foreach
(
$inviteOrderNumList
as
$orderNum
)
{
foreach
(
$configList
as
$config
)
{
if
(
!
empty
(
$orderNum
[
"num"
])
&&
$orderNum
[
"num"
]
>=
$config
[
"assess_order_num"
])
{
$payInfo
=
[
"colonel_user_id"
=>
$orderNum
[
"colonel_user_id"
],
"date"
=>
$yesterday
,
"type"
=>
ColonelDistributorPayInfo
::
TYPE_FINISH_TARGET
,
"reward"
=>
$config
[
"reward_amount"
]
*
100
,
"finish_num"
=>
$config
[
"assess_order_num"
],
"invite_user_id"
=>
0
,
"invite_user_nick"
=>
""
,
];
$insertData
[]
=
$payInfo
;
}
}
}
//新用户奖励
$inviteNewUserList
=
$this
->
getInviteNewUserList
(
$userIds
,
$today
);
if
(
!
empty
(
$inviteNewUserList
))
{
$colonelUserIds
=
array_column
(
$inviteNewUserList
,
"user_id"
);
$userNickList
=
$this
->
getUserList
(
$colonelUserIds
);
foreach
(
$inviteNewUserList
as
$newUser
)
{
$payInfo
=
[
"colonel_user_id"
=>
$newUser
[
"inviter_user_id"
],
"date"
=>
$yesterday
,
"type"
=>
ColonelDistributorPayInfo
::
TYPE_NEW_USER
,
"reward"
=>
5
*
100
,
"finish_num"
=>
1
,
"invite_user_id"
=>
$newUser
[
"user_id"
],
"invite_user_nick"
=>
empty
(
$userNickList
[
$newUser
[
"user_id"
]][
"user_nick"
])
?
""
:
$userNickList
[
$newUser
[
"user_id"
]][
"user_nick"
],
];
$insertData
[]
=
$payInfo
;
}
}
}
$i
=
$i
+
$length
;
}
if
(
!
empty
(
$insertData
))
{
$data
=
$this
->
addIdgenId
(
$insertData
);
$res
=
$this
->
addColonelDistributorPayInfo
(
$data
);
if
(
$res
===
false
)
{
ColonelDistributorPayInfo
::
rollback
();
FileLog
::
info
(
"add_colonel_distributor_pay_info"
,
sprintf
(
"写入错误参数 %s"
,
json_encode
(
$data
)));
}
}
}
if
(
!
ColonelDistributorPayInfo
::
commit
())
{
ColonelDistributorPayInfo
::
rollback
();
}
}
/**
* 团长任务配置
* @param $yesterday
* @return \Api\PhpUtils\Mysql\MysqlBase
*/
public
function
getColonelConfig
(
$yesterday
)
{
$type
=
empty
(
$params
[
"type"
])
?
ColonelDistributorConfig
::
TYPE_COLONEL
:
$params
[
"type"
];
$config
=
ColonelDistributorConfig
::
getRecord
([
"date"
=>
$yesterday
,
"type"
=>
$type
]);
if
(
empty
(
$config
))
{
$config
=
ColonelDistributorConfig
::
getRecord
([
"date[<=]"
=>
$yesterday
,
"ORDER"
=>
[
"date"
=>
"DESC"
],
"LIMIT"
=>
1
]);
}
return
$config
;
}
/**
* 团长user_id
* @return array
*/
public
function
getColonelUserIds
()
{
$colonelRes
=
ColonelDistributorColonel
::
select
([
"user_id"
],
[
"LIMIT"
=>
10000000
]);
$userIds
=
[];
if
(
!
empty
(
$colonelRes
))
{
$userIds
=
array_column
(
$colonelRes
,
"user_id"
);
}
return
$userIds
;
}
public
function
getInviteOrder
(
$colonelUserIds
,
$startTime
,
$endTime
)
{
return
ColonelDistributorInviteOrder
::
select
([
"colonel_user_id"
,
"user_id"
,
"is_refund"
,
"create_time"
],
[
"colonel_user_id"
=>
$colonelUserIds
,
"create_time[>=]"
=>
$startTime
,
"create_time[<=]"
=>
$endTime
,
"is_refund"
=>
0
,
],
[]);
}
/**
* 获取order num
* @param $colonelUserIds
* @param $startTime
* @param $endTime
* @return \Api\PhpUtils\Mysql\MysqlBase
*/
public
function
getInviteOrderNum
(
$colonelUserIds
,
$startTime
,
$endTime
)
{
return
ColonelDistributorInviteOrderNum
::
select
([
"colonel_user_id"
,
"num"
,
"date"
],
[
"colonel_user_id"
=>
$colonelUserIds
,
"date[>=]"
=>
$startTime
,
"date[<=]"
=>
$endTime
,
],
[]);
}
/**
* 获取有效新用户信息
* @param $userIds
* @param $date
* @return array|mixed
* @throws InterfaceException
*/
public
function
getInviteNewUserList
(
$userIds
,
$date
)
{
$url
=
config
(
'interface'
,
'coupon.background.wx_invite_relation_list_by_user_ids'
);
if
(
empty
(
$url
))
{
throw
new
InterfaceException
([
'cus'
=>
0
]);
}
$res
=
HttpUtil
::
get
(
$url
,
[
"user_ids"
=>
$userIds
,
"date"
=>
$date
]);
if
(
!
empty
(
$res
[
"response"
][
"result"
]))
{
$res
=
array_column
(
$res
[
"response"
][
"result"
],
null
,
"user_id"
);
return
array_values
(
$res
);
}
return
[];
}
/**
* 给数据整理 colonel_distributor_pay_info_id
* @param $data
* @param string $type
* @return mixed
*/
public
function
addIdgenId
(
$data
,
$type
=
"goods"
)
{
$count
=
count
(
$data
);
$res
=
Idgen
::
get
(
appConfig
(
'idgen.partner'
),
appConfig
(
'idgen.key'
),
[],
[[
"type"
=>
$type
,
'number'
=>
00
,
"count"
=>
$count
]]);
$ids
=
$res
[
'id_datetime'
][
$type
]
??
[];
foreach
(
$data
as
$key
=>
$item
)
{
$data
[
$key
][
"colonel_distributor_pay_info_id"
]
=
$ids
[
$key
];
}
return
$data
;
}
/**
* 用户信息,获取昵称
* @param $userIds
* @return \Api\PhpUtils\Mysql\MysqlBase|array
*/
public
function
getUserList
(
$userIds
)
{
$list
=
UserWechatBind
::
select
([
"user_id"
,
"user_nick"
],
[
"user_id"
=>
$userIds
],
[]);
if
(
!
empty
(
$list
))
{
$list
=
array_column
(
$list
,
null
,
"user_id"
);
}
return
$list
;
}
/**
* 写入数据
* @param $data
* @return \Api\PhpUtils\Mysql\MysqlBase
*/
public
function
addColonelDistributorPayInfo
(
$data
)
{
return
ColonelDistributorPayInfo
::
save
(
$data
);
}
}
\ No newline at end of file
application/modules/Cli/controllers/Colonelwallet.php
0 → 100644
View file @
008d19fc
<?php
use
Api\PhpServices\Idgen\Idgen
;
use
Api\PhpUtils\Log\FileLog
;
use
App\Base\Cli
;
use
\App\Models\marketing\mysql\ColonelDistributorColonel
;
use
\App\Models\marketing\mysql\ColonelDistributorInviteOrder
;
use
\App\Models\marketing\mysql\ColonelDistributorConfig
;
use
\App\Models\marketing\mysql\ColonelDistributorInviteOrderNum
;
use
\App\Models\marketing\mysql\ColonelDistributorPayInfo
;
use
\App\Exception\custom\InterfaceException
;
use
Api\PhpUtils\Http\HttpUtil
;
use
\App\Models\user\mysql\UserWechatBind
;
/**
* php public/cli.php colonelwallet index
*/
class
ColonelwalletController
extends
Cli
{
public
function
indexAction
()
{
// $today = date("Y-m-d");
$yesterday
=
date
(
"Y-m-d"
,
strtotime
(
"-1 day"
));
$payInfoList
=
$this
->
getPayInfo
(
$yesterday
);
if
(
!
empty
(
$payInfoList
))
{
$res
=
$this
->
toWallet
(
$payInfoList
);
if
(
$res
)
{
$this
->
deductingInventory
(
$payInfoList
);
}
}
}
/**
* colonel_distributor_pay_info 数据
* @param $date
* @return array
*/
public
function
getPayInfo
(
$date
)
{
$list
=
ColonelDistributorPayInfo
::
select
(
"*"
,
[
"date"
=>
$date
],
[]);
$data
=
[];
if
(
!
empty
(
$list
))
{
foreach
(
$list
as
$item
)
{
//去重
$key
=
$item
[
"colonel_user_id"
]
.
$item
[
"date"
]
.
$item
[
"type"
]
.
$item
[
"finish_num"
];
$data
[
$key
]
=
$item
;
}
$data
=
array_values
(
$data
);
}
return
$data
;
}
/**
* 写入钱包
*/
public
function
toWallet
(
$payInfoList
)
{
$url
=
config
(
'interface'
,
'wallet.account.transfer'
);
if
(
empty
(
$url
))
{
throw
new
InterfaceException
([
'cus'
=>
0
]);
}
$data
=
[];
foreach
(
$payInfoList
as
$payInfo
)
{
if
(
$payInfo
[
"type"
]
==
ColonelDistributorPayInfo
::
TYPE_NEW_USER
)
{
$desc
=
"邀请新用户("
.
$payInfo
[
"invite_user_nick"
]
.
")完成下单奖励"
;
}
if
(
$payInfo
[
"type"
]
==
ColonelDistributorPayInfo
::
TYPE_FINISH_TARGET
)
{
$desc
=
"完成"
.
$payInfo
[
"finish_num"
]
.
"单用户下单奖励"
;
}
$tmp
=
[];
$tmp
[
"user_id"
]
=
$payInfo
[
"colonel_user_id"
];
$tmp
[
"service_name"
]
=
11
;
//服务名字,10生活圈优惠券,11营销活动
$tmp
[
"source_name"
]
=
1
;
//使用方名,1生活圈,2主端
$tmp
[
"third_order_id"
]
=
$payInfo
[
"colonel_distributor_pay_info_id"
];
$tmp
[
"third_order_id_type"
]
=
$payInfo
[
"type"
];
$tmp
[
"third_order_desc"
]
=
$desc
;
$tmp
[
"amount"
]
=
$payInfo
[
"reward"
];
$tmp
[
"extra"
]
=
$payInfo
;
$data
[]
=
$tmp
;
}
$res
=
HttpUtil
::
post
(
$url
,
[
"list"
=>
$data
]);
if
(
$res
[
'code'
]
==
0
&&
isset
(
$res
[
'response'
][
"result"
]))
{
$date
=
date
(
"Y-m-d H:i:s"
);
FileLog
::
info
(
"colonel_distributor_to_wallet"
,
$date
.
" 写入钱包成功"
);
return
true
;
}
else
{
$msg
=
json_encode
([
"list"
=>
$data
]);
FileLog
::
error
(
"colonel_distributor_to_wallet"
,
$msg
,
null
,
'bp-server@yidian-inc.com'
);
return
false
;
}
}
/**
* 资金池授予用户奖励
*/
public
function
deductingInventory
(
$payInfoList
)
{
$url
=
config
(
'interface'
,
'coupon.capitalpool.grant_user_amount'
);
if
(
empty
(
$url
))
{
throw
new
InterfaceException
([
'cus'
=>
0
]);
}
$data
[
"capital_pool_id"
]
=
2
;
foreach
(
$payInfoList
as
$payInfo
)
{
$tmp
=
[];
$tmp
[
"op"
]
=
200
;
//200:团长奖励
$tmp
[
"user_id"
]
=
$payInfo
[
"colonel_user_id"
];
$tmp
[
"amount"
]
=
$payInfo
[
"reward"
];
$data
[
"body"
][]
=
$tmp
;
}
$res
=
HttpUtil
::
post
(
$url
,
$data
);
if
(
$res
[
'code'
]
==
0
&&
isset
(
$res
[
'response'
][
"result"
]))
{
$date
=
date
(
"Y-m-d H:i:s"
);
FileLog
::
info
(
"colonel_distributor_deducting_inventory"
,
$date
.
" 资金池授予用户奖励成功"
);
return
true
;
}
else
{
$msg
=
json_encode
([
"list"
=>
$data
]);
FileLog
::
error
(
"colonel_distributor_deducting_inventory"
,
$msg
,
null
,
'bp-server@yidian-inc.com'
);
return
false
;
}
}
}
\ No newline at end of file
application/services/goods/GoodsService.php
View file @
008d19fc
...
...
@@ -1723,7 +1723,7 @@ class GoodsService
if
(
!
empty
(
$marketing
)
&&
$marketing
[
"marketing_type"
]
==
Marketing
::
MARKETING_TYPE_PINDAN
)
{
$marketingPindan
=
MarketingPindan
::
getRecord
([
"marketing_id"
=>
$marketingId
]);
if
(
!
empty
(
$marketingPindan
))
{
$rowCount
=
MarketingPindan
::
save
([
"participate_number
"
=>
$marketingPindan
[
"participate_number"
]
+
$num
]
$rowCount
=
MarketingPindan
::
save
([
"participate_number
[+]"
=>
$num
]
,
[
"marketing_pindan_id"
=>
$marketingPindan
[
"marketing_pindan_id"
]]);
if
(
$rowCount
<=
0
)
{
GoodsSku
::
rollback
();
...
...
application/services/marketing/PindanActivityInviteOrderService.php
View file @
008d19fc
...
...
@@ -32,9 +32,18 @@ class PindanActivityInviteOrderService
return
true
;
}
$hour
=
date
(
"H"
);
if
(
$hour
<
10
&&
$hour
>
0
)
{
$date
=
date
(
"Y-m-d"
,
strtotime
(
"-1 day"
));
}
elseif
(
$hour
>
16
)
{
$date
=
date
(
"Y-m-d"
);
}
else
{
$date
=
date
(
"Y-m-d"
);
}
$inviteOrderNumData
=
[
"colonel_user_id"
=>
$params
[
"colonel_user_id"
],
"date"
=>
date
(
"Y-m-d"
)
,
"date"
=>
$date
,
];
$inviteOrderNum
=
ColonelDistributorInviteOrderNum
::
selectMaster
(
"*"
,
$inviteOrderNumData
,
[]);
...
...
@@ -73,9 +82,17 @@ class PindanActivityInviteOrderService
"order_id"
=>
$orderId
,
];
$hour
=
date
(
"H"
);
if
(
$hour
<
10
&&
$hour
>
0
)
{
$date
=
date
(
"Y-m-d"
,
strtotime
(
"-1 day"
));
}
elseif
(
$hour
>
16
)
{
$date
=
date
(
"Y-m-d"
);
}
else
{
$date
=
date
(
"Y-m-d"
);
}
$inviteOrderNumData
=
[
"colonel_user_id"
=>
$inviteOrder
[
0
][
"colonel_user_id"
],
"date"
=>
date
(
"Y-m-d"
)
,
"date"
=>
$date
,
];
ColonelDistributorInviteOrder
::
beginTransaction
();
...
...
daemon/Colonelorder.php
0 → 100644
View file @
008d19fc
<?php
namespace
Daemon
;
use
Api\PhpServices\Daemon\DaemonServiceInterface
;
use
Api\PhpServices\Idgen\Idgen
;
use
Api\PhpUtils\Log\FileLog
;
use
\App\Models\marketing\mysql\ColonelDistributorColonel
;
use
\App\Models\marketing\mysql\ColonelDistributorInviteOrder
;
use
\App\Models\marketing\mysql\ColonelDistributorConfig
;
use
\App\Models\marketing\mysql\ColonelDistributorInviteOrderNum
;
use
\App\Models\marketing\mysql\ColonelDistributorPayInfo
;
use
\App\Exception\custom\InterfaceException
;
use
Api\PhpUtils\Http\HttpUtil
;
use
\App\Models\user\mysql\UserWechatBind
;
class
Colonelorder
implements
DaemonServiceInterface
{
public
function
run
()
{
//只在10:01执行逻辑
if
(
date
(
'H'
)
!=
10
||
date
(
'i'
)
!=
1
)
{
sleep
(
5
);
return
false
;
}
$userIdList
=
$this
->
getColonelUserIds
();
ColonelDistributorPayInfo
::
beginTransaction
();
if
(
!
empty
(
$userIdList
))
{
$userIdCount
=
count
(
$userIdList
);
//每次100个用户
$length
=
1
;
$start
=
(
int
)
ceil
(
$userIdCount
/
$length
);
$insertData
=
[];
for
(
$i
=
0
;
$i
<
$start
;)
{
$userIds
=
array_slice
(
$userIdList
,
$i
,
$length
);
$today
=
date
(
"Y-m-d"
);
$yesterday
=
date
(
"Y-m-d"
,
strtotime
(
"-1 day"
));
$startTime
=
$yesterday
.
" 16:00:00"
;
$endTime
=
$today
.
" 10:00:00"
;
$colonelConfig
=
$this
->
getColonelConfig
(
$yesterday
);
if
(
!
empty
(
$colonelConfig
[
"data"
]))
{
$configList
=
json_decode
(
$colonelConfig
[
"data"
],
true
);
//完成目标单数
$inviteOrderNumList
=
$this
->
getInviteOrderNum
(
$userIds
,
$yesterday
,
$today
);
foreach
(
$inviteOrderNumList
as
$orderNum
)
{
foreach
(
$configList
as
$config
)
{
if
(
!
empty
(
$orderNum
[
"num"
])
&&
$orderNum
[
"num"
]
>=
$config
[
"assess_order_num"
])
{
$payInfo
=
[
"colonel_user_id"
=>
$orderNum
[
"colonel_user_id"
],
"date"
=>
$yesterday
,
"type"
=>
ColonelDistributorPayInfo
::
TYPE_FINISH_TARGET
,
"reward"
=>
$config
[
"reward_amount"
]
*
100
,
"finish_num"
=>
$config
[
"assess_order_num"
],
"invite_user_id"
=>
0
,
"invite_user_nick"
=>
""
,
];
$insertData
[]
=
$payInfo
;
}
}
}
//新用户奖励
$inviteNewUserList
=
$this
->
getInviteNewUserList
(
$userIds
,
$today
);
if
(
!
empty
(
$inviteNewUserList
))
{
$colonelUserIds
=
array_column
(
$inviteNewUserList
,
"user_id"
);
$userNickList
=
$this
->
getUserList
(
$colonelUserIds
);
foreach
(
$inviteNewUserList
as
$newUser
)
{
$payInfo
=
[
"colonel_user_id"
=>
$newUser
[
"inviter_user_id"
],
"date"
=>
$yesterday
,
"type"
=>
ColonelDistributorPayInfo
::
TYPE_NEW_USER
,
"reward"
=>
5
*
100
,
"finish_num"
=>
1
,
"invite_user_id"
=>
$newUser
[
"user_id"
],
"invite_user_nick"
=>
empty
(
$userNickList
[
$newUser
[
"user_id"
]][
"user_nick"
])
?
""
:
$userNickList
[
$newUser
[
"user_id"
]][
"user_nick"
],
];
$insertData
[]
=
$payInfo
;
}
}
}
$i
=
$i
+
$length
;
}
if
(
!
empty
(
$insertData
))
{
$data
=
$this
->
addIdgenId
(
$insertData
);
$res
=
$this
->
addColonelDistributorPayInfo
(
$data
);
if
(
$res
===
false
)
{
ColonelDistributorPayInfo
::
rollback
();
FileLog
::
info
(
"add_colonel_distributor_pay_info"
,
sprintf
(
"写入错误参数 %s"
,
json_encode
(
$data
)));
}
}
}
if
(
!
ColonelDistributorPayInfo
::
commit
())
{
ColonelDistributorPayInfo
::
rollback
();
}
sleep
(
60
);
}
/**
* 团长任务配置
* @param $yesterday
* @return \Api\PhpUtils\Mysql\MysqlBase
*/
public
function
getColonelConfig
(
$yesterday
)
{
$type
=
empty
(
$params
[
"type"
])
?
ColonelDistributorConfig
::
TYPE_COLONEL
:
$params
[
"type"
];
$config
=
ColonelDistributorConfig
::
getRecord
([
"date"
=>
$yesterday
,
"type"
=>
$type
]);
if
(
empty
(
$config
))
{
$config
=
ColonelDistributorConfig
::
getRecord
([
"date[<=]"
=>
$yesterday
,
"ORDER"
=>
[
"date"
=>
"DESC"
],
"LIMIT"
=>
1
]);
}
return
$config
;
}
/**
* 团长user_id
* @return array
*/
public
function
getColonelUserIds
()
{
$colonelRes
=
ColonelDistributorColonel
::
select
([
"user_id"
],
[
"LIMIT"
=>
10000000
]);
$userIds
=
[];
if
(
!
empty
(
$colonelRes
))
{
$userIds
=
array_column
(
$colonelRes
,
"user_id"
);
}
return
$userIds
;
}
public
function
getInviteOrder
(
$colonelUserIds
,
$startTime
,
$endTime
)
{
return
ColonelDistributorInviteOrder
::
select
([
"colonel_user_id"
,
"user_id"
,
"is_refund"
,
"create_time"
],
[
"colonel_user_id"
=>
$colonelUserIds
,
"create_time[>=]"
=>
$startTime
,
"create_time[<=]"
=>
$endTime
,
"is_refund"
=>
0
,
],
[]);
}
/**
* 获取order num
* @param $colonelUserIds
* @param $startTime
* @param $endTime
* @return \Api\PhpUtils\Mysql\MysqlBase
*/
public
function
getInviteOrderNum
(
$colonelUserIds
,
$startTime
,
$endTime
)
{
return
ColonelDistributorInviteOrderNum
::
select
([
"colonel_user_id"
,
"num"
,
"date"
],
[
"colonel_user_id"
=>
$colonelUserIds
,
"date[>=]"
=>
$startTime
,
"date[<=]"
=>
$endTime
,
],
[]);
}
/**
* 获取有效新用户信息
* @param $userIds
* @param $date
* @return array|mixed
* @throws InterfaceException
*/
public
function
getInviteNewUserList
(
$userIds
,
$date
)
{
$url
=
config
(
'interface'
,
'coupon.background.wx_invite_relation_list_by_user_ids'
);
if
(
empty
(
$url
))
{
throw
new
InterfaceException
([
'cus'
=>
0
]);
}
$res
=
HttpUtil
::
get
(
$url
,
[
"user_ids"
=>
$userIds
,
"date"
=>
$date
]);
if
(
!
empty
(
$res
[
"response"
][
"result"
]))
{
$res
=
array_column
(
$res
[
"response"
][
"result"
],
null
,
"user_id"
);
return
array_values
(
$res
);
}
return
[];
}
/**
* 给数据整理 colonel_distributor_pay_info_id
* @param $data
* @param string $type
* @return mixed
*/
public
function
addIdgenId
(
$data
,
$type
=
"goods"
)
{
$count
=
count
(
$data
);
$res
=
Idgen
::
get
(
appConfig
(
'idgen.partner'
),
appConfig
(
'idgen.key'
),
[],
[[
"type"
=>
$type
,
'number'
=>
00
,
"count"
=>
$count
]]);
$ids
=
$res
[
'id_datetime'
][
$type
]
??
[];
foreach
(
$data
as
$key
=>
$item
)
{
$data
[
$key
][
"colonel_distributor_pay_info_id"
]
=
$ids
[
$key
];
}
return
$data
;
}
/**
* 用户信息,获取昵称
* @param $userIds
* @return \Api\PhpUtils\Mysql\MysqlBase|array
*/
public
function
getUserList
(
$userIds
)
{
$list
=
UserWechatBind
::
select
([
"user_id"
,
"user_nick"
],
[
"user_id"
=>
$userIds
],
[]);
if
(
!
empty
(
$list
))
{
$list
=
array_column
(
$list
,
null
,
"user_id"
);
}
return
$list
;
}
/**
* 写入数据
* @param $data
* @return \Api\PhpUtils\Mysql\MysqlBase
*/
public
function
addColonelDistributorPayInfo
(
$data
)
{
return
ColonelDistributorPayInfo
::
save
(
$data
);
}
}
\ No newline at end of file
daemon/Colonelwallet.php
0 → 100644
View file @
008d19fc
<?php
namespace
Daemon
;
use
Api\PhpServices\Daemon\DaemonServiceInterface
;
use
Api\PhpUtils\Log\FileLog
;
use
\App\Models\marketing\mysql\ColonelDistributorPayInfo
;
use
\App\Exception\custom\InterfaceException
;
use
Api\PhpUtils\Http\HttpUtil
;
class
Colonelorder
implements
DaemonServiceInterface
{
public
function
run
()
{
//只在10:01执行逻辑
if
(
date
(
'H'
)
!=
10
||
date
(
'i'
)
!=
5
)
{
sleep
(
5
);
return
false
;
}
$yesterday
=
date
(
"Y-m-d"
,
strtotime
(
"-1 day"
));
$payInfoList
=
$this
->
getPayInfo
(
$yesterday
);
if
(
!
empty
(
$payInfoList
))
{
$res
=
$this
->
toWallet
(
$payInfoList
);
if
(
$res
)
{
$this
->
deductingInventory
(
$payInfoList
);
}
}
}
/**
* colonel_distributor_pay_info 数据
* @param $date
* @return array
*/
public
function
getPayInfo
(
$date
)
{
$list
=
ColonelDistributorPayInfo
::
select
(
"*"
,
[
"date"
=>
$date
],
[]);
$data
=
[];
if
(
!
empty
(
$list
))
{
foreach
(
$list
as
$item
)
{
//去重
$key
=
$item
[
"colonel_user_id"
]
.
$item
[
"date"
]
.
$item
[
"type"
]
.
$item
[
"finish_num"
];
$data
[
$key
]
=
$item
;
}
$data
=
array_values
(
$data
);
}
return
$data
;
}
/**
* 写入钱包
*/
public
function
toWallet
(
$payInfoList
)
{
$url
=
config
(
'interface'
,
'wallet.account.transfer'
);
if
(
empty
(
$url
))
{
throw
new
InterfaceException
([
'cus'
=>
0
]);
}
$data
=
[];
foreach
(
$payInfoList
as
$payInfo
)
{
if
(
$payInfo
[
"type"
]
==
ColonelDistributorPayInfo
::
TYPE_NEW_USER
)
{
$desc
=
"邀请新用户("
.
$payInfo
[
"invite_user_nick"
]
.
")完成下单奖励"
;
}
if
(
$payInfo
[
"type"
]
==
ColonelDistributorPayInfo
::
TYPE_FINISH_TARGET
)
{
$desc
=
"完成"
.
$payInfo
[
"finish_num"
]
.
"单用户下单奖励"
;
}
$tmp
=
[];
$tmp
[
"user_id"
]
=
$payInfo
[
"colonel_user_id"
];
$tmp
[
"service_name"
]
=
11
;
//服务名字,10生活圈优惠券,11营销活动
$tmp
[
"source_name"
]
=
1
;
//使用方名,1生活圈,2主端
$tmp
[
"third_order_id"
]
=
$payInfo
[
"colonel_distributor_pay_info_id"
];
$tmp
[
"third_order_id_type"
]
=
$payInfo
[
"type"
];
$tmp
[
"third_order_desc"
]
=
$desc
;
$tmp
[
"amount"
]
=
$payInfo
[
"reward"
];
$tmp
[
"extra"
]
=
$payInfo
;
$data
[]
=
$tmp
;
}
$res
=
HttpUtil
::
post
(
$url
,
[
"list"
=>
$data
]);
if
(
$res
[
'code'
]
==
0
&&
isset
(
$res
[
'response'
][
"result"
]))
{
$date
=
date
(
"Y-m-d H:i:s"
);
FileLog
::
info
(
"colonel_distributor_to_wallet"
,
$date
.
" 写入钱包成功"
);
return
true
;
}
else
{
$msg
=
json_encode
([
"list"
=>
$data
]);
FileLog
::
error
(
"colonel_distributor_to_wallet"
,
$msg
,
null
,
'bp-server@yidian-inc.com'
);
return
false
;
}
}
/**
* 资金池授予用户奖励
*/
public
function
deductingInventory
(
$payInfoList
)
{
$url
=
config
(
'interface'
,
'coupon.capitalpool.grant_user_amount'
);
if
(
empty
(
$url
))
{
throw
new
InterfaceException
([
'cus'
=>
0
]);
}
$data
[
"capital_pool_id"
]
=
2
;
foreach
(
$payInfoList
as
$payInfo
)
{
$tmp
=
[];
$tmp
[
"op"
]
=
200
;
//200:团长奖励
$tmp
[
"user_id"
]
=
$payInfo
[
"colonel_user_id"
];
$tmp
[
"amount"
]
=
$payInfo
[
"reward"
];
$data
[
"body"
][]
=
$tmp
;
}
$res
=
HttpUtil
::
post
(
$url
,
$data
);
if
(
$res
[
'code'
]
==
0
&&
isset
(
$res
[
'response'
][
"result"
]))
{
$date
=
date
(
"Y-m-d H:i:s"
);
FileLog
::
info
(
"colonel_distributor_deducting_inventory"
,
$date
.
" 资金池授予用户奖励成功"
);
return
true
;
}
else
{
$msg
=
json_encode
([
"list"
=>
$data
]);
FileLog
::
error
(
"colonel_distributor_deducting_inventory"
,
$msg
,
null
,
'bp-server@yidian-inc.com'
);
return
false
;
}
}
}
\ 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