php订单列表去重,PHP订单造假 - osc_lt2jwwhb的个人空间 - OSCHINA - 中文开源技术交流社区...
// 获取最近的1天的订单数据,昵称,时间。
public function getNearestOrder()
{
// 获取真实订单
$service_order = M('service_order');
$service_order_list = $service_order->where(['first_pay_time' => ['gt', strtotime(date('Y-m-d'))]])->order('id desc')->select();
$user = M('user');
$true_tmp = [];
foreach ($service_order_list as $k => &$v) {
$tmp = [];
$user_info = $user->where(['id' => $v['uid']])->find();
$tmp['nickname'] = Func::encryptName2($user_info['nickname']);
$tmp['pay_time'] = DateHelper::timeTran(date('Y-m-d H:i', $v['first_pay_time']));
$tmp['time'] = $v['first_pay_time'];
$true_tmp[] = $tmp;
}
// 获取Redis中的数据
$redis = Red::create();
$order_redis_key = C('APP_ID') . ':nearest_order_data:' . date('Y-m-d');
$order_redis_data = $redis->get($order_redis_key);
if (!$order_redis_data) {
// TODO 造假
$user = M('user');
$out_tmp = [];
$user_nickname_arr = $user->order('rand()')->limit(100)->getField('nickname', true);
for ($i = 0; $i < 10; $i++) {
$nickname = $this->getNickName($user_nickname_arr);
$fake_order = $this->getFakeOrder($nickname);
$out_tmp[] = $fake_order;
}
// 合并
foreach ($true_tmp as $k => $v) {
array_unshift($out_tmp, $v);
}
// 去重
$out_tmp = Func::arrayUnique($out_tmp);
// 排序
$order_column = array_column($out_tmp, 'time');
array_multisort($order_column, SORT_DESC, SORT_NUMERIC, $out_tmp);
// 存储redis
$redis->set($order_redis_key, json_encode($out_tmp), 86400);
} else {
// 从redis抽取
$order_redis_data = json_decode($order_redis_data, true);
$out_tmp = [];
// 重置数据
foreach ($order_redis_data as $ok => $ov) {
$tmp = [];
$tmp['nickname'] = $ov['nickname'];
$tmp['pay_time'] = DateHelper::timeTran(date('Y-m-d H:i', $ov['time']));
$tmp['time'] = $ov['time'];
$out_tmp[] = $tmp;
}
// 合并真实订单
foreach ($true_tmp as $k => $v) {
array_unshift($out_tmp, $v);
}
// 去重
$out_tmp = Func::arrayUnique($out_tmp);
// 排序
$order_column = array_column($out_tmp, 'time');
array_multisort($order_column, SORT_DESC, SORT_NUMERIC, $out_tmp);
// 超过10分钟没有下单,造假一个订单
if (time() - $out_tmp[0]['time'] > 600 && date('H') < 19) { // 再造一个假数据
$user = M('user');
$user_nickname_arr = $user->order('rand()')->limit(100)->getField('nickname', true);
$nickname = $this->getNickName($user_nickname_arr);
$fake_order = $this->getFakeOrder($nickname,60);
array_unshift($out_tmp, $fake_order);
}
// 存储redis
$redis->set($order_redis_key, json_encode($out_tmp), 86400);
}
$this->json->S($out_tmp);
}
protected function getFakeOrder($nickname,$duration = 3600)
{
$time = time() - mt_rand(0, $duration);
$tmp['nickname'] = $nickname;
$tmp['pay_time'] = DateHelper::timeTran(date('Y-m-d H:i', $time));
$tmp['time'] = $time;
return $tmp;
}
protected function getNickName($user_nickname_arr)
{
$head_pos = mt_rand(0, count($user_nickname_arr) - 1);
$tail_pos = mt_rand(0, count($user_nickname_arr) - 1);
$nickname = $user_nickname_arr[$head_pos] . $user_nickname_arr[$tail_pos];
$nickname = Func::encryptName2($nickname);
return $nickname;
}
模拟昵称,随机时间,数组合并,数组去重,数组排序。
php订单列表去重,PHP订单造假 - osc_lt2jwwhb的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐
- python列表去重效率_python面试题 - osc_yztbpii7的个人空间 - OSCHINA - 中文开源技术交流社区...
1.一行代码实现1--100之和 In [1]: sum(range(1,101)) Out[1]: 5050 1-100求和 2.如何在一个函数内部修改全局变量 a=520 deffun():glo ...
- mysql查询去重第一条_Mysql用法记录 - Ashley-OSCHINA的个人空间 - OSCHINA - 中文开源技术交流社区...
1.查询某个字段,在数据库不重复的条数(去重查询) select count(distinct item_uid) from supply_order; 查询 表 supply_order 中 ite ...
- java hashmap 去重_HashMap去重 - osc_sj1kgo4z的个人空间 - OSCHINA - 中文开源技术交流社区...
package util; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import ...
- android 数组排重方法,js数组去重方法集合 - osc_779ncf3o的个人空间 - OSCHINA - 中文开源技术交流社区...
//第一种方法,新建一个空数组,将原来的数组循环逐个与新数组的成员做比较,如果新数组没有该元素就push进来 var arr = ['a', 1, 1, 1, 2, 4, 4, 'b', 'c', ' ...
- 去重java_JAVA去重 - osc_ngi4bcdo的个人空间 - OSCHINA - 中文开源技术交流社区
JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 ...
- c语言数组去重的函数,C语言之函数 - osc_wpg0dgym的个人空间 - OSCHINA - 中文开源技术交流社区...
函数 对于初学C语言的人来说可能会问函数是什么?在这里我有一个通俗的解释:函数就是一个盒子,在这个盒子里面可以封装你想实现的功能,之后通过主函数进行调用即可 为什么要使用函数? 对于一个层序来说,模块 ...
- 界外篇:返回前端订单列表中的订单详情为null,如何去除,如何为空
在写项目中,有时候我们返回给前端的数据为null,比如: 按照需求,有的需要这样写,但是有的就不需要, 一.那么如果为null,如何不显示这项呢? 办法如下: 第一种方法: 需要在实体类是哪个加一个注 ...
- ECShop 后台订单列表美化
Ecshop后台订单列表鼠标放在订单号上面,自动显示所购买的订单商品列表,非常方便:如果订购商品多的话,版面不够显示,影响操作. 如何让商品列表更加美观,修改方法和效果截图如下: 打开admin/te ...
- 订单管理之获取订单表表列表数据
获取订单表表列表数据 [订单数据是不能删除的,只能修改订单信息的状态] 接口分析 请求方式: GET /meiduo_admin/orders/?keyword=<搜索内容>&pa ...
最新文章
- java开发webservice的几种方式
- 【 C 】转移表(理论与实践)(实现一个简单的计算器)
- Linux 0.12内核的内存管理基础
- TypeScript void 和 undefined 的区别
- win7win10 配置wlan热点
- select count(*)底层究竟干了啥么?
- eSIM技术必将取代SIM卡 一文读懂eSIM技术优势!
- c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
- 性能测试系列:Jmeter使用记录
- CSRF——攻击与防御
- Oracle掌管权限和角色
- UG基本命令ug快捷键命令大全ug基本命令教程完整版
- 前端基础项目(一)学成在线网站静态网页,HTML+CSS,简单基础,附完整源码
- 如何采用SMW0存储模板和OLED操作Excel的方式生成Excel单据
- 集成银联支付-代付功能
- php jwplayer mp4,jwplayer6 和 php播放视频
- iOS 15:如何查找丢失或失窃的 iPhone,就算它已关机也可远程定位
- [BZOJ1050] [HAOI2006] 旅行comf (Kruskal, LCT)
- 干货!JVM 基础面试题总结(持续更新)
- Google瓦片地图URL
热门文章
- 空指针异常(Null Pointer Exception)如何避免!
- led显示屏P4安装方式功能详细介绍
- vs2010 'yasm' is not recognized as an internal or external command
- ASTM D2863: 塑料最低氧气浓度测试
- fieldset标签
- 计算机c类网络号,一个C类网络地址有多少个可分配的有效IP地址
- 基于热门旅游景点数据的爬取
- 关于Keil出现Browse Information of one or more files is not avaliable
- DigiCert SSL证书怎么样?
- Unity 3D入门——模型展示