// 获取最近的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 - 中文开源技术交流社区...相关推荐

  1. python列表去重效率_python面试题 - osc_yztbpii7的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.一行代码实现1--100之和 In [1]: sum(range(1,101)) Out[1]: 5050 1-100求和 2.如何在一个函数内部修改全局变量 a=520 deffun():glo ...

  2. mysql查询去重第一条_Mysql用法记录 - Ashley-OSCHINA的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.查询某个字段,在数据库不重复的条数(去重查询) select count(distinct item_uid) from supply_order; 查询 表 supply_order 中 ite ...

  3. java hashmap 去重_HashMap去重 - osc_sj1kgo4z的个人空间 - OSCHINA - 中文开源技术交流社区...

    package util; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import ...

  4. android 数组排重方法,js数组去重方法集合 - osc_779ncf3o的个人空间 - OSCHINA - 中文开源技术交流社区...

    //第一种方法,新建一个空数组,将原来的数组循环逐个与新数组的成员做比较,如果新数组没有该元素就push进来 var arr = ['a', 1, 1, 1, 2, 4, 4, 'b', 'c', ' ...

  5. 去重java_JAVA去重 - osc_ngi4bcdo的个人空间 - OSCHINA - 中文开源技术交流社区

    JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 ...

  6. c语言数组去重的函数,C语言之函数 - osc_wpg0dgym的个人空间 - OSCHINA - 中文开源技术交流社区...

    函数 对于初学C语言的人来说可能会问函数是什么?在这里我有一个通俗的解释:函数就是一个盒子,在这个盒子里面可以封装你想实现的功能,之后通过主函数进行调用即可 为什么要使用函数? 对于一个层序来说,模块 ...

  7. 界外篇:返回前端订单列表中的订单详情为null,如何去除,如何为空

    在写项目中,有时候我们返回给前端的数据为null,比如: 按照需求,有的需要这样写,但是有的就不需要, 一.那么如果为null,如何不显示这项呢? 办法如下: 第一种方法: 需要在实体类是哪个加一个注 ...

  8. ECShop 后台订单列表美化

    Ecshop后台订单列表鼠标放在订单号上面,自动显示所购买的订单商品列表,非常方便:如果订购商品多的话,版面不够显示,影响操作. 如何让商品列表更加美观,修改方法和效果截图如下: 打开admin/te ...

  9. 订单管理之获取订单表表列表数据

    获取订单表表列表数据 [订单数据是不能删除的,只能修改订单信息的状态] 接口分析 请求方式: GET /meiduo_admin/orders/?keyword=<搜索内容>&pa ...

最新文章

  1. java开发webservice的几种方式
  2. 【 C 】转移表(理论与实践)(实现一个简单的计算器)
  3. Linux 0.12内核的内存管理基础
  4. TypeScript void 和 undefined 的区别
  5. win7win10 配置wlan热点
  6. select count(*)底层究竟干了啥么?
  7. eSIM技术必将取代SIM卡 一文读懂eSIM技术优势!
  8. c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
  9. 性能测试系列:Jmeter使用记录
  10. CSRF——攻击与防御
  11. Oracle掌管权限和角色
  12. UG基本命令ug快捷键命令大全ug基本命令教程完整版
  13. 前端基础项目(一)学成在线网站静态网页,HTML+CSS,简单基础,附完整源码
  14. 如何采用SMW0存储模板和OLED操作Excel的方式生成Excel单据
  15. 集成银联支付-代付功能
  16. php jwplayer mp4,jwplayer6 和 php播放视频
  17. iOS 15:如何查找丢失或失窃的 iPhone,就算它已关机也可远程定位
  18. [BZOJ1050] [HAOI2006] 旅行comf (Kruskal, LCT)
  19. 干货!JVM 基础面试题总结(持续更新)
  20. Google瓦片地图URL

热门文章

  1. 空指针异常(Null Pointer Exception)如何避免!
  2. led显示屏P4安装方式功能详细介绍
  3. vs2010 'yasm' is not recognized as an internal or external command
  4. ASTM D2863: 塑料最低氧气浓度测试
  5. fieldset标签
  6. 计算机c类网络号,一个C类网络地址有多少个可分配的有效IP地址
  7. 基于热门旅游景点数据的爬取
  8. 关于Keil出现Browse Information of one or more files is not avaliable
  9. DigiCert SSL证书怎么样?
  10. Unity 3D入门——模型展示