From 4277316661783022aeec98f15c48ace3c402d5f2 Mon Sep 17 00:00:00 2001 From: wanyongkang <937888580@qq.com> Date: Wed, 25 Nov 2020 13:22:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=B4=E6=8A=A4=E7=94=A8=E6=88=B7=E9=94=80?= =?UTF-8?q?=E5=94=AE=E7=BB=9F=E8=AE=A1=E2=80=94=E2=80=94=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/manager/model/ProductOrder.php | 14 +++++++++++- script/auto_set_follow_status_script.php | 27 ++++++++++++++---------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/app/manager/model/ProductOrder.php b/app/manager/model/ProductOrder.php index 11ae495..25df763 100644 --- a/app/manager/model/ProductOrder.php +++ b/app/manager/model/ProductOrder.php @@ -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(); + } } diff --git a/script/auto_set_follow_status_script.php b/script/auto_set_follow_status_script.php index 85c409d..019439c 100644 --- a/script/auto_set_follow_status_script.php +++ b/script/auto_set_follow_status_script.php @@ -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']]); + } +} \ No newline at end of file