微信支付开发-后台统计工厂实现

news/2024/9/22 22:49:58/

一、数据库设计图

二、后端统计工厂逻辑

        1、统计父抽象类

                a、StatisticsHandle.php

        2、统计工厂通道类

                a、StatisticsFactory.php

        3、查询实现类

                a、答题统计(Answer.php)

三、后端统计工厂代码实现

        1、统计父抽象类(StatisticsHandle.php)

<?php
/*** 统计父抽象类* User: 龙哥·三年风水* Date: 2024/9/11* Time: 10:07*/
namespace Statistics;
abstract class StatisticsHandle
{/*** 获取统计列表* User: 龙哥·三年风水* Date: 2024/9/11* Time: 10:31* @ param $param 参数* @ return mixed*/protected abstract function getList($param);/*** 获取统计详情* User: 龙哥·三年风水* Date: 2024/9/11* Time: 10:31* @ param $id 编号* @ return mixed*/protected abstract function getInfo($id);/*** 导出统计信息* User: 龙哥·三年风水* Date: 2024/9/11* Time: 10:32* @ return mixed*/protected abstract function exportInfo($param);
}

        2、统计工厂通道类(StatisticsFactory.php)

<?php
/*** 统计工厂选择类* User: 龙哥·三年风水* Date: 2024/9/11* Time: 10:12*/
namespace Statistics;
use app\BaseError;
use Statistics\statistics\Answer;class StatisticsFactory
{protected static $instance = null;//缓存实例protected $channelType = 0;//通道类型/*** 初始化参数* @ param $types 类型选择*/public function __construct($channelType){$this->channelType = $channelType;}/*** 通道选择器* User: 龙哥·三年风水* Date: 2024/9/11* Time: 10:39* @ return null*/public function statisticsHandle(){switch ((int)$this->channelType){case 1: //可疑网址查询break;case 2: //银行卡查询break;case 3: //人员被骗风险查询break;case 4: //答题记录查询self::$instance = new Answer();break;default:self::$instance = null;throw new BaseError("未设置任何通道",50000,200);break;}return self::$instance;}
}

        3、答题统计查询实现(Answer.php)

<?php
/*** 答题记录查询控制* User: 龙哥·三年风水* Date: 2024/9/11* Time: 10:29*/
namespace Statistics\statistics;
use Statistics\StatisticsHandle;
use app\BaseError;
use app\model\anxun\shuziren\StatisticsAnswer as ASSAModel;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use Upload\UploadFactory;
class Answer extends StatisticsHandle
{//初始化使用的public function __construct(){}/*** 获取统计列表* User: 龙哥·三年风水* Date: 2024/9/11* Time: 10:31* @ return mixed*/public function getList($param){// TODO: Implement getList() method.$where = [];if(!empty($param['digitized_human_name']))$where[] = ['digitized_human_name','like','%'.$param['digitized_human_name'].'%'];if(!empty($param['involved_date']))$where[] = ['involved_date','=',$param['involved_date']];if(!empty($param['id_card']))$where[] = ['id_card','=',$param['id_card']];$resList = ASSAModel::getList($where,'id,digitized_human_name,correct_rate,error_rate,id_card,create_time',[$param['currentPage'], $param['currentSize']]);$list  =  $resList['info'];$res['list'] = $list;$res['meat'] = $resList['page'];return $res;}/*** 获取统计详情* User: 龙哥·三年风水* Date: 2024/9/11* Time: 10:31* @ return mixed*/public function getInfo($id){// TODO: Implement getInfo() method.$data = ASSAModel::dataFind(['id' => $id],'id,digitized_human_name,correct_rate,error_rate,id_card,create_time',true);return $data;}/*** 导出统计信息* User: 龙哥·三年风水* Date: 2024/9/11* Time: 10:32* @ return mixed*/public function exportInfo($param){// TODO: Implement exportInfo() method.$where = [];if(!empty($param['digitized_human_name']))$where[] = ['digitized_human_name','like','%'.$param['digitized_human_name'].'%'];if(!empty($param['involved_date']))$where[] = ['involved_date','=',$param['involved_date']];if(!empty($param['id_card']))$where[] = ['id_card','=',$param['id_card']];$list = ASSAModel::getAll($where,'digitized_human_name,correct_rate,error_rate,id_card,create_time','create_time DESC');if(!$list)throw new BaseError('暂无可导出',50000,200);// 处理标题$title = ['机器人名称', '正确题数', '错误题数','身份证号','参与时间'];$filename = '答题参与记录';$spreadsheet = new Spreadsheet();$spreadsheet->getDefaultStyle()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); //设置水平默认对齐方式$spreadsheet->getDefaultStyle()->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); //设置垂直默认对齐方式$sheet = $spreadsheet->getActiveSheet();$everyDay = date('Y-m-d', time()). '_' .uniqid();foreach ($title as $key => $value) {$sheet->setCellValueByColumnAndRow($key+1, 1, $value);}$row = 2;foreach ($list as $item) {$column = 1;foreach ($item as $k => $value) {$sheet->setCellValueByColumnAndRow($column, $row, $value);$column++;}$row++;}$savename = '/storage/'.$filename . '_' . $everyDay . '.xlsx';$object = date('Y-m-d',time()).'/' . $filename . '_' . $everyDay . '.xlsx';$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');$writer->save('.' . $savename);$UploadFactory = new UploadFactory();$uploadHandle = $UploadFactory->getUploadHandle();$res = $uploadHandle->uploadFile($object,'.' . $savename);$data['url'] = $res;$filePath = app()->getRuntimePath() . $savename;@unlink($filePath);return $data;}
}

http://www.ppmy.cn/news/1529043.html

相关文章

Java内存泄漏排查

内存泄漏排查 1. 堆内存快照导出2. 导入内存分析工具 1. 堆内存快照导出 获取 Java 进程 ID Windows&#xff1a;执行 jps 命令&#xff0c;或任务管理器查看&#xff0c;又或者执行 tasklist 命令。 注意&#xff1a;当有多个 Java 进程时&#xff0c;任务管理器或 tasklist |…

桶排序和计数排序(非比较排序算法)

桶排序 桶排序是一种基于分配的排序算法&#xff0c;特别适合用来排序均匀分布的数据。它的基本思想是将输入的数据分到有限数量的桶里&#xff0c;然后对每个桶内的数据分别进行排序&#xff0c;最后再将各个桶内的数据合并得到最终的排序结果。(通常用于浮点数&#xff0c;因…

vue 中属性值上变量和字符串怎么拼接

在Vue 3中&#xff0c;可以使用模板字面量&#xff08;template literals&#xff09;或者表达式绑定&#xff08;directives&#xff09;来实现属性值上变量和字符串的拼接。 例如&#xff0c;假设你有一个变量text和一个字符串hello&#xff0c;你可以这样拼接它们&#xff…

ubuntu20.04编译mesa

依赖 # drm git clone https://gitlab.freedesktop.org/mesa/drm.git meson builddir/ ninja -C builddir/ install# wayland git clone https://gitlab.freedesktop.org/wayland/wayland.git meson setup builddir -Ddocumentationfalse ninja -C builddir/ install编译 sud…

Linux 动静态库

目录 一.静态库 1.理解静态库 a.什么是静态库&#xff1f; b.创建静态库的理论&#xff1f; 2.打包静态库 3.静态库的使用方法 a.头文件找不着 b.链接报错——库函数文件找不着 4.将静态库文件写到系统目录下 a.直接拷贝 b.建立软链接 二.动态库 1.什么是动态库&am…

Cassava Network 获得 Anubi 基金会战略投资,加速构建 Web3 领先平台

Cassava Network 作为一个以 Web3 社交任务为核心的平台&#xff0c;近日获得了来自 Anubi 基金会的战略投资。这一投资标志着 Cassava 在推动其成为 Web3 最大流量入口的使命上迈出了重要的一步。 Anubi 基金会战略投资 Anubi 基金会专注于 Web3 生态系统的应用&#xff0c;…

2024年自学手册 网络安全(黑客技术)

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、…

【计算机网络篇】数据链路层 功能|组帧|流量控制与可靠传输机制

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 系列文章目录 【计算机网络篇】计算机网络概述 【计算机网络篇…