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