维护用户销售统计——脚本

This commit is contained in:
wanyongkang
2020-11-25 13:22:00 +08:00
parent a0f9ad781d
commit 4277316661
2 changed files with 29 additions and 12 deletions

View File

@@ -5,7 +5,7 @@
* @Author: kangkang
* @Date: 2020-10-16 14:44:02
* @LastEditors: Please set LastEditors
* @LastEditTime: 2020-11-25 09:46:23
* @LastEditTime: 2020-11-25 13:10:11
*/
namespace app\manager\model;
@@ -217,4 +217,16 @@ class ProductOrder extends Model
->order('Id desc')
->fetchAll();
}
/**
* @description: 获取用户最后消费时间
* @param {*} //SELECT UserId,max(UpdateTime) from product_order group by UserId
* @return {*}
*/
public function getUserCostTime()
{
return $this->field('UserId,max(UpdateTime) as last_time')
->where(['OrderState' => ['in', ProductOrderEnum::$PayComplete]])
->fetchAll();
}
}

View File

@@ -7,7 +7,6 @@ use app\manager\model\FollowRecord;
use app\manager\model\ProductOrder;
use app\manager\model\User;
use enum\user\User as UserEnum;
use enum\order\ProductOrder as ProductOrderEnum;
$user_model = new User;
$product_order_model = new ProductOrder;
@@ -95,14 +94,20 @@ $user_model->updateOne(['Id' => ['in', $uncost_user_id_list]], ['follow_status'
$user_model->updateOne(['Id' => ['in', $uncost_overtime_user_id_list]], ['follow_status' => $user_enum::$FollowOverTimeNotBuy]);
$user_model->updateOne(['Id' => ['in', $cost_overtime_user_id_list]], ['follow_status' => $user_enum::$FollowOverTimeBuyReduce]);
//更新用户最后的支付时间
$all_user_list = $user_model->getList([], 'Id,pay_time');
foreach ($all_user_list as $user) {
$pay_time = $product_order_model->getNewOne('UpdateTime', ['UserId' => $user['Id'], 'OrderState' => ['in', ProductOrderEnum::$PayComplete]]);
if(!empty($pay_time['UpdateTime'])){
if($user['pay_time'] != $pay_time['UpdateTime']){
$user_model->updateOne(['Id'=>$user['Id']],['pay_time'=>$pay_time['UpdateTime']]);
}
}
}
//获取所有用户的最后支付时间
$all_last_cost = $product_order_model->getUserCostTime();
$user_last_cost_id = [];
$all_last_cost_list = [];
foreach ($all_last_costas as $info) {
$all_last_cost_list[$info['UserId']] = $info;
$user_last_cost_id[] = $info['UserId'];
}
//更新用户最后的支付时间
$all_user_list = $user_model->getList(['Id'=>['in',$user_last_cost_id]], 'Id,pay_time');
foreach($all_user_list as $info){
if($info['pay_time'] != $all_last_cost_list[$info['Id']]['last_time']){
$user_model->updateOne(['Id'=>$info['Id']],['pay_time'=>$all_last_cost_list[$info['Id']]['last_time']]);
}
}