Commit 4f15265b authored by pengfei's avatar pengfei

update 团长分销-奖励结算脚本

parent 5b271e60
...@@ -20,6 +20,12 @@ class ColonelDistributorColonel extends MysqlBase ...@@ -20,6 +20,12 @@ class ColonelDistributorColonel extends MysqlBase
const DEFAULT_COLUMN = ['colonel_id','user_id','take_place_id','phone','contact_name','colonel_source']; const DEFAULT_COLUMN = ['colonel_id','user_id','take_place_id','phone','contact_name','colonel_source'];
public static function getColonelUserIds()
{
$colonelUserData = ColonelDistributorColonel::select(['user_id']);
return array_column((array)$colonelUserData, 'user_id');
}
public static function getRecord(array $where, $column = '*') public static function getRecord(array $where, $column = '*')
{ {
return self::get($column, $where); return self::get($column, $where);
......
...@@ -18,6 +18,11 @@ class ColonelDistributorInviteOrderNum extends MysqlBase ...@@ -18,6 +18,11 @@ class ColonelDistributorInviteOrderNum extends MysqlBase
return self::get($columns, $where, $options); return self::get($columns, $where, $options);
} }
public static function getRecords(array $where, $column = '*')
{
return (array)self::select($column, $where);
}
public static function getRecordMaster($where, $columns = [], $options = []) public static function getRecordMaster($where, $columns = [], $options = [])
{ {
if (empty($columns)) { if (empty($columns)) {
......
...@@ -21,6 +21,11 @@ class ColonelDistributorPayInfo extends MysqlBase ...@@ -21,6 +21,11 @@ class ColonelDistributorPayInfo extends MysqlBase
self::TYPE_FINISH_TARGET => "完成目标单数", self::TYPE_FINISH_TARGET => "完成目标单数",
]; ];
public static function getRecords(array $where, $column = '*')
{
return (array)self::select($column, $where);
}
public static function getRecord($where, $columns = [], $options = []) public static function getRecord($where, $columns = [], $options = [])
{ {
if (empty($columns)) { if (empty($columns)) {
...@@ -44,7 +49,7 @@ class ColonelDistributorPayInfo extends MysqlBase ...@@ -44,7 +49,7 @@ class ColonelDistributorPayInfo extends MysqlBase
public static function updateRecord($columns, $where) public static function updateRecord($columns, $where)
{ {
return self::update($columns, $where); return (int)self::update($columns, $where);
} }
public static function save($data, $where = [], $options = []) public static function save($data, $where = [], $options = [])
......
<?php <?php
/**
* Created by PhpStorm.
* User: pengfei@yidian-inc.com
* Date: 2021/9/3 2:23 下午
*/
use App\Base\Job; use App\Base\Job;
use Api\PhpUtils\Log\FileLog; use Api\PhpUtils\Log\FileLog;
...@@ -8,12 +13,22 @@ use Api\PhpUtils\Http\HttpUtil; ...@@ -8,12 +13,22 @@ use Api\PhpUtils\Http\HttpUtil;
class ColonelwalletController extends Job class ColonelwalletController extends Job
{ {
const CAPITAL_POOL_ID = 2; // 资金池id
const CAPITAL_POOL_OP = 200; //200:团长奖励
const WALLET_SERVICE_NAME = 11; // 10生活圈优惠券,11营销活动
const WALLET_SOURCE_NAME = 1; //使用方名,1生活圈,2主端
/**
* Notes: 奖励结算脚本
* User: pengfei@yidian-inc.com
* Date: 2021/9/3 6:03 下午
* @throws InterfaceException
*/
public function indexAction() public function indexAction()
{ {
FileLog::info("colonel_distributor_wallet", '团长分销-奖励钱包脚本:start'); $this->loggerInfo('start');
$yesterday = date("Y-m-d", strtotime("-1 day")); $payInfoList = $this->getPayInfoList();
$payInfoList = $this->getPayInfo($yesterday); $this->loggerInfo('payInfoCount='.count($payInfoList));
FileLog::info("colonel_distributor_wallet", '团长分销-奖励钱包脚本:payInfoCount='.count($payInfoList));
if (!empty($payInfoList)) { if (!empty($payInfoList)) {
if ($this->deductingInventory($payInfoList)) { if ($this->deductingInventory($payInfoList)) {
if ($this->toWallet($payInfoList)) { if ($this->toWallet($payInfoList)) {
...@@ -21,115 +36,136 @@ class ColonelwalletController extends Job ...@@ -21,115 +36,136 @@ class ColonelwalletController extends Job
} }
} }
} }
FileLog::info("colonel_distributor_wallet", '团长分销-奖励钱包脚本:end'); $this->loggerInfo('end');
echo "success";
}
/**
* colonel_distributor_pay_info 数据
* @param $date
* @return array
*/
public function getPayInfo($date)
{
$list = ColonelDistributorPayInfo::select("*", ["date" => $date,'status' => ColonelDistributorPayInfo::STATUS_NOT_USE], []);
$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;
} }
/** /**
* 写入钱包 * Notes: 结算写入钱包
* User: pengfei@yidian-inc.com
* Date: 2021/9/3 6:04 下午
* @param $payInfoList
* @return bool
* @throws InterfaceException
*/ */
public function toWallet($payInfoList) private function toWallet($payInfoList): bool
{ {
$url = config('interface', 'wallet.account.transfer'); if (!$url = config('interface', 'wallet.account.transfer')) {
if (empty($url)) {
throw new InterfaceException(['cus' => 0]); throw new InterfaceException(['cus' => 0]);
} }
$data = []; $data = [];
foreach ($payInfoList as $payInfo) { 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 = [];
$tmp["user_id"] = $payInfo["colonel_user_id"]; $tmp["user_id"] = $payInfo["colonel_user_id"];
$tmp["service_name"] = 11; //服务名字,10生活圈优惠券,11营销活动 $tmp["service_name"] = self::WALLET_SERVICE_NAME;
$tmp["source_name"] = 1; //使用方名,1生活圈,2主端 $tmp["source_name"] = self::WALLET_SOURCE_NAME;
$tmp["third_order_id"] = $payInfo["colonel_distributor_pay_info_id"]; $tmp["third_order_id"] = $payInfo["colonel_distributor_pay_info_id"];
$tmp["third_order_id_type"] = $payInfo["type"]; $tmp["third_order_id_type"] = $payInfo["type"];
$tmp["third_order_desc"] = $desc; $tmp["third_order_desc"] = self::getThirdOrderDesc($payInfo);
$tmp["amount"] = $payInfo["reward"]; $tmp["amount"] = $payInfo["reward"];
$tmp["extra"] = $payInfo; $tmp["extra"] = $payInfo;
$data[] = $tmp; $data[] = $tmp;
} }
$res = HttpUtil::post($url, ["list" => $data]); $res = HttpUtil::post($url, ["list" => $data]);
if ($res['code'] == 0 && isset($res['response']["result"])) { if (!empty($res['response']["result"]) && $res['code'] == 0) {
$date = date("Y-m-d H:i:s"); $this->loggerInfo('写入钱包成功');
FileLog::info("colonel_distributor_to_wallet", $date." 写入钱包成功");
return true; return true;
} else { } else {
$msg = json_encode(["list" => $data]); $msg = json_encode(["list" => $data]);
FileLog::error("colonel_distributor_to_wallet", $msg, null, 'bp-server@yidian-inc.com'); $this->loggerError($msg);
return false; return false;
} }
} }
/** /**
* 资金池授予用户奖励 * Notes: 资金池授予用户奖励
* User: pengfei@yidian-inc.com
* Date: 2021/9/3 6:04 下午
* @param $payInfoList
* @return bool
* @throws InterfaceException
*/ */
public function deductingInventory($payInfoList) private function deductingInventory($payInfoList): bool
{ {
$url = config('interface', 'coupon.capitalpool.grant_user_amount'); if (!$url = config('interface', 'coupon.capitalpool.grant_user_amount')) {
if (empty($url)) {
throw new InterfaceException(['cus' => 0]); throw new InterfaceException(['cus' => 0]);
} }
$data["capital_pool_id"] = self::CAPITAL_POOL_ID;
$data["capital_pool_id"] = 2;
foreach ($payInfoList as $payInfo) { 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 = [];
$tmp["op"] = 200; //200:团长奖励 $tmp["op"] = self::CAPITAL_POOL_OP;
$tmp["user_id"] = $payInfo["colonel_user_id"]; $tmp["user_id"] = $payInfo["colonel_user_id"];
$tmp["amount"] = $payInfo["reward"]; $tmp["amount"] = $payInfo["reward"];
$tmp["third_order_id"] = $payInfo["colonel_distributor_pay_info_id"]; $tmp["third_order_id"] = $payInfo["colonel_distributor_pay_info_id"];
$tmp["third_order_id_type"] = $payInfo["type"]; $tmp["third_order_id_type"] = $payInfo["type"];
$tmp["third_order_desc"] = $desc; $tmp["third_order_desc"] = self::getThirdOrderDesc($payInfo);
$data["body"][] = $tmp; $data["body"][] = $tmp;
} }
$res = HttpUtil::post($url, $data, 100000, 3); $res = HttpUtil::post($url, $data, 100000, 3);
if ($res['code'] == 0 && isset($res['response']["result"])) { if ($res['code'] == 0 && isset($res['response']["result"])) {
$date = date("Y-m-d H:i:s"); $this->loggerInfo('资金池授予用户奖励成功,count='.count($payInfoList));
FileLog::info("colonel_distributor_deducting_inventory", $date." 资金池授予用户奖励成功");
return true; return true;
} else { } else {
$msg = json_encode(["list" => $data]); $msg = json_encode(["list" => $data]);
FileLog::error("colonel_distributor_deducting_inventory", $msg, null, 'bp-server@yidian-inc.com'); $this->loggerError("资金池授予用户奖励成功,$msg");
return false; return false;
} }
} }
private function getPayInfoList(): array
{
return ColonelDistributorPayInfo::getRecords(['status' => ColonelDistributorPayInfo::STATUS_NOT_USE]);
}
/**
* Notes: 获取描述信息
* User: pengfei@yidian-inc.com
* Date: 2021/9/3 6:10 下午
* @param $payInfo
* @return string
*/
private function getThirdOrderDesc($payInfo): string
{
$desc = '';
if ($payInfo["type"] == ColonelDistributorPayInfo::TYPE_NEW_USER) {
$desc = "邀请新用户(".$payInfo["invite_user_nick"].")完成下单奖励";
} elseif ($payInfo["type"] == ColonelDistributorPayInfo::TYPE_FINISH_TARGET) {
$desc = "完成".$payInfo["finish_num"]."单用户下单奖励";
}
return $desc;
}
/** /**
* 修改状态 * Notes: 修改状态
* User: pengfei@yidian-inc.com
* Date: 2021/9/3 6:09 下午
* @param array $payInfoIds
* @return bool
*/ */
public function handlePayInfoStatus(array $payInfoIds) private function handlePayInfoStatus(array $payInfoIds): bool
{ {
return ColonelDistributorPayInfo::updateRecord(['status' => ColonelDistributorPayInfo::STATUS_USE], ['pay_info_id' => $payInfoIds]); return ColonelDistributorPayInfo::updateRecord(['status' => ColonelDistributorPayInfo::STATUS_USE], ['pay_info_id' => $payInfoIds]);
} }
/**
* Notes: 记录 info 日志
* User: pengfei@yidian-inc.com
* Date: 2021/9/3 4:10 下午
* @param $log
*/
private function loggerInfo($log)
{
FileLog::error("colonel_distributor_wallet", 'colonel_distributor_wallet:'.$log, false, true);
}
/**
* Notes: 记录 error 日志
* User: pengfei@yidian-inc.com
* Date: 2021/9/3 4:10 下午
* @param $log
*/
private function loggerError($log)
{
FileLog::error("colonel_distributor_deducting_inventory", $log, null, 'bp-server@yidian-inc.com', true);
}
} }
...@@ -152,7 +152,30 @@ class PindanActivityColonelConfigService ...@@ -152,7 +152,30 @@ class PindanActivityColonelConfigService
$startTime = date("Y-m-d", strtotime("-1 day")).$hour; $startTime = date("Y-m-d", strtotime("-1 day")).$hour;
$endTime = date("Y-m-d").$hour; $endTime = date("Y-m-d").$hour;
} }
return ['start_time' => $startTime,'end_time' => $endTime]; return [
'start_time' => $startTime,
'end_time' => $endTime,
'date' => date('Y-m-d', strtotime($startTime))
];
}
/**
* Notes: 获取结算时间范围
* User: pengfei@yidian-inc.com
* Date: 2021/9/3 2:50 下午
* @return string[]
*/
public static function getSettlementTimeRange() : array
{
// 获取活动时间范围 例如当前时间(2021-09-03 12:00:00) 应结算时间为 2021-09-01:12:00:00 - 2021-09-02:12:00:00
$hour = ' '.self::ACTIVITY_DEFAULT_HOUR . ":00:00";
$startTime = date("Y-m-d", strtotime("-3 day")).$hour;
$endTime = date("Y-m-d", strtotime("-2 day")).$hour;
return [
'start_time' => $startTime,
'end_time' => $endTime,
'date' => date('Y-m-d', strtotime($startTime))
];
} }
} }
\ No newline at end of file
...@@ -15,14 +15,18 @@ class FileLog ...@@ -15,14 +15,18 @@ class FileLog
* @param string $signature 本条日志签名 * @param string $signature 本条日志签名
* @param string $detail_info 日志详细信息 * @param string $detail_info 日志详细信息
* @param bool $with_access_log * @param bool $with_access_log
* @param bool $is_output 是否输出
*/ */
public static function info($signature, $detail_info = '', $with_access_log = false) public static function info($signature, $detail_info = '', $with_access_log = false,$is_output = false)
{ {
$traceId = Tracer::getTraceId(); $traceId = Tracer::getTraceId();
$log = 'PHP User_info: [' . $signature . '] [traceId:'. $traceId .'] [detail info:] ' . $detail_info; $log = 'PHP User_info: [' . $signature . '] [traceId:'. $traceId .'] [detail info:] ' . $detail_info;
if ($with_access_log) { if ($with_access_log) {
$log .= ' [request info:] ' . self::accessLog(); $log .= ' [request info:] ' . self::accessLog();
} }
if ($is_output) {
echo $log.PHP_EOL;
}
error_log($log); error_log($log);
} }
...@@ -32,8 +36,9 @@ class FileLog ...@@ -32,8 +36,9 @@ class FileLog
* @param string $signature 本条日志签名 * @param string $signature 本条日志签名
* @param string $detail_info 日志详细信息 * @param string $detail_info 日志详细信息
* @param \Exception $exception 异常信息 * @param \Exception $exception 异常信息
* @param bool $is_output 是否输出
*/ */
public static function waring($signature, $detail_info = '', $exception = null) public static function waring($signature, $detail_info = '', $exception = null,$is_output = false)
{ {
$traceId = Tracer::getTraceId(); $traceId = Tracer::getTraceId();
$log = 'PHP User_warning: [' . $signature . '] [traceId:'. $traceId .'] [detail info:] ' . $detail_info . ' [request info:] ' . self::accessLog(); $log = 'PHP User_warning: [' . $signature . '] [traceId:'. $traceId .'] [detail info:] ' . $detail_info . ' [request info:] ' . self::accessLog();
...@@ -41,6 +46,9 @@ class FileLog ...@@ -41,6 +46,9 @@ class FileLog
$exception_info = 'In ' . $exception->getFile() . ' on line ' . $exception->getLine() . ' ' . $exception->getCode() . ': ' . $exception->getMessage(); $exception_info = 'In ' . $exception->getFile() . ' on line ' . $exception->getLine() . ' ' . $exception->getCode() . ': ' . $exception->getMessage();
$log .= ' [exception info: ]' . $exception_info; $log .= ' [exception info: ]' . $exception_info;
} }
if ($is_output) {
echo $log.PHP_EOL;
}
error_log($log); error_log($log);
} }
...@@ -51,8 +59,9 @@ class FileLog ...@@ -51,8 +59,9 @@ class FileLog
* @param string $detail_info 日志详细信息 * @param string $detail_info 日志详细信息
* @param \Exception $exception 异常信息 * @param \Exception $exception 异常信息
* @param array|string $mail_to 邮件接受者 * @param array|string $mail_to 邮件接受者
* @param bool $is_output 是否输出
*/ */
public static function error($signature, $detail_info = '', $exception = null, $mail_to = '') public static function error($signature, $detail_info = '', $exception = null, $mail_to = '',$is_output = false)
{ {
$traceId = Tracer::getTraceId(); $traceId = Tracer::getTraceId();
$log = 'PHP User_error: [' . $signature . '] [traceId:'. $traceId .'] [detail info:] ' . $detail_info . ' [request info:] ' . self::accessLog(); $log = 'PHP User_error: [' . $signature . '] [traceId:'. $traceId .'] [detail info:] ' . $detail_info . ' [request info:] ' . self::accessLog();
...@@ -81,6 +90,9 @@ class FileLog ...@@ -81,6 +90,9 @@ class FileLog
Email::sendMail('bp-noreply@yidian-inc.com', $mail, $subject, $body); Email::sendMail('bp-noreply@yidian-inc.com', $mail, $subject, $body);
} }
} }
if ($is_output) {
echo $log.PHP_EOL;
}
} }
public static function accessLog() public static function accessLog()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment