PHP脚本示例

ops/2025/2/22 16:50:16/
php">/*** @desc 清理产品商品无效数据* @param Input $input* php think goods -m Clear -a clearGoods --endTime='2020-01-01' -vvv* @return void* @author 陈龙* @date 2024-04-02 9:45*/public function clearGoods(Input $input){$options = $input->getOptions();$start_time = microtime(true);$clearTime = strtotime($options['endTime'] ?? '') ?: strtotime(date('2020-01-01'));$where = ['completetime' => ['<', $clearTime],'retread_time' => ['<', $clearTime]];$data = Goods::where($where)->column('goods_spu');$this->output->writeln(Goods::getLastSql());$data = array_unique($data);$dataCount = count($data);$limit = 1000;$totalPage = ceil($dataCount / $limit);$this->output->writeln("总数据量:{$dataCount}");$this->output->writeln("每次查询:{$limit}");$this->output->writeln("总页数:{$totalPage}");if (empty($dataCount)) {$this->output->writeln('查无数据');return;}for ($pageNo = 1; $pageNo <= $totalPage; $pageNo++) {$this->output->info("第 {$pageNo} 页");$spus = array_slice($data, ($pageNo - 1) * $limit, $limit);$this->output->writeln('开始处理数据');$result = ClearService::instance()->dealClearGoods($spus);$message = $result['message'] ?? ($result['messages'] ?? '');$this->_showMsg($message);$this->output->info("第 {$pageNo} 页处理完成");}$this->output->writeln("执行时间:" . (microtime(true) - $start_time));}
php">    /*** @desc 消息提示抽离* @param array|string $message 消息内容* @return void* @author 陈龙* @date 2020/11/20 14:47:09*/private function _showMsg($message){if (is_array($message)) {foreach ($message as $key => $value) {$this->output->writeln("{$key}:" . (is_array($value) ? json_encode($value) : $value));}} else {$this->output->writeln($message);}}
php">    public function dealClearGoods($goods_spus){if (empty($goods_spus)) return back(0, "SPU为空");//1.根据spu查出所有sku,看近90天是否有库存,有销量$skus_arr = DevGoodsSku::where(['goods_spu' => ['IN', $goods_spus]])->column('goods_sku');//有库存的skus$stock_break_skus = $this->checkStockBySkus($skus_arr);//有销量的skus$sale_break_skus = $this->checkSalesBySkus($skus_arr);$all_break_skus = sep_unique_str(array_merge($stock_break_skus, $sale_break_skus));//获取需要剔除的spu$need_break_spus = DevGoodsSku::where(['goods_sku' => ['IN', $all_break_skus]])->group('goods_spu')->column('goods_spu');$this->output->writeln("需要剔除的spu总数:".count($need_break_spus));//去除后需要更新的skus$need_up_spus = array_diff($goods_spus, $need_break_spus);$this->output->writeln("需要更新的spu总数:".count($need_up_spus));//开始更新数据$this->updateIsClear($need_up_spus,1);return back(1, '执行完成');}

http://www.ppmy.cn/ops/160549.html

相关文章

Springboot中分析SQL性能的两种方式

SQL性能分析的两种方式: 功能介绍 记录 SQL 执行时间&#xff0c;超过阈值会进行警告打印完整的 SQL 语句&#xff0c;便于调试和优化适用于开发和测试环境&#xff0c;生产环境建议关闭 实现方式: 方式一:使用 MyBatis-Plus 性能分析插件 首先需要在MyBatis-Plus配置类中配…

虚拟机的运行命令

虚拟机的运行命令通常取决于使用的虚拟化软件。以下是一些常用的虚拟机软件及其运行命令示例&#xff1a; VMware Workstation&#xff1a; vmrun -T ws start "C:\path\to\virtual_machine.vmx"VirtualBox&#xff1a; VBoxManage startvm "virtual_machine…

【python】解析自动化脚本文件并按照=测试周期=存储记录

【python】连接Jira获取token以及jira对象 【python】解析自动化脚本文件并按照测试周期存储记录 【python】向Jira推送自动化用例执行成功 【python】向Jira测试计划下&#xff0c;附件中增加html测试报告 将已编写的自动化测试用例按照jira号解析出来&#xff0c;并按照测试计…

鸿蒙-验证码输入框的几种实现方式-上

文章目录 效果图、优缺点多TextInput多 TextCanvas 绘制 多个 TextInput 拼接放置四个输入框焦点移动输入时向后移动输入完成回调删除时向前移动 防止点击总结 最近在做应用鸿蒙化&#xff0c;说白了就是把原来Android、iOS的代码重新用ArkTS写一遍&#xff0c;我负责基础建设和…

Linux自学day24-进程和线程2

一 进程结束 这段代码的主要功能是创建一个子进程&#xff0c;子进程休眠 10 秒后以退出状态码 10 结束&#xff0c;父进程等待子进程结束并回收其资源&#xff0c;同时根据子进程的退出状态输出相应的信息。 int main(int argc, const char **argv) {// 定义一个 pid_t 类…

回溯算法:非递减子序列子集,这题的去重并不是通解!!!!

一、题目 二、分析 这道题是有重复元素的&#xff0c;我们需要做到单层去重。可以参考以下链接 回溯算法&#xff1a;子集2-CSDN博客但是&#xff0c;以往的去重我们都是利用used数组和对输入的数组进行排序才做到的&#xff0c;这道题要求我们求子序列&#xff0c;我们是无法…

Mac OS JAVA_HOME设置

个人博客地址&#xff1a;Mac OS JAVA_HOME设置 | 一张假钞的真实世界 在MacOS上使用DMG文件安装了Jdk8 之后&#xff0c;在默认路径下找不到JDK的HOME路径&#xff1a; $ which java /usr/bin/java $ ls -l /usr/bin/java lrwxr-xr-x 1 root wheel 74 12 6 2015 /usr/b…

工业大数据实验室解决方案

一、项目目的 建成产教深度融合的高水平专业化工业大数据实践实训基地&#xff1b; 培养技术扎实、工程实践能力强的工业大数据人才&#xff1b; 赋能院校建设“双师型”创新师资队伍&#xff1b; 校企深度合作&#xff0c;促进教育、人才、科技、产业等要素双向流动&#x…