zoukankan      html  css  js  c++  java
  • 接口按月 按日查询数据

    环境php本地写接口

    1.PHP工具箱配置好相应的本地域名

    2.下载一个客户端postman

      1.按日查询.接口传过来  $page $uid  $time

    /*
    * 2019.10.15
    *订单统计
    * & 骑手的id
    * orderstatistics 按日查询
    * */
    public function orderstatistics(){
    $res = [];
    $param = input('');
    $page = input('page');
    $uid = $param['uid'];//骑手的id
    $time = $param['time'];//查询的时间
    $data = $this-> order -> statistics($uid,$time,$page);//获取订单的列表
    foreach ($data['data'] as $k=>&$v){
    // status = 1:已接单 2:取货中 3:已取消 4:配送中 5:已完成 6:已评价',
    switch ($v['status']){
    case 1: $v['status_name'] = '已接单';break;
    case 2: $v['status_name'] = '取货中';break;
    case 3: $v['status_name'] = '已取消';break;
    case 4: $v['status_name'] = '配送中';break;
    case 5: $v['status_name'] = '已完成';break;
    case 6: $v['status_name'] = '已评价';break;
    }
    $v['gettime'] = date('H:i',$v['gettime']);
    }

    //总收入 总的订单数
    if(!empty($data['data'])){
    $res['list'] = $data['data'];
    }else{
    $res['list'] = '暂无数据';
    }
    $res['money'] = $data['money'];
    $res['count'] = $data['count'];
    if($data !== false){
    $res['code'] = 1;
    $res['msg'] = '成功';
    //return json(date('t',1571068800));
    return json($res);
    }else{
    $res['code'] = 0;
    $res['msg'] = '失败';
    return json($res);
    }

    /* statistics
    * 订单统计
    * &uid 骑手的id
    * 1.按日查询
    * $time 查询的时间
    * $param page 页数
    */
    public function statistics($uid,$time,$page)
    {
    //1571068800 1571068800
    $res = [];
    $where =[];
    $where['ho.hid'] = $uid;
    $pageNum = 10; // 每页显示个数 10 个
    $page = $page ? $page : 1; //默认当前页1
    $limit = ($page - 1) * $pageNum;

    if(empty($time)){//第一次进来没有时间的时候
    //php获取今日开始时间戳和结束时间戳
    $beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));
    $endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
    $where['ho.jtime'] = [['gt',$beginToday],['lt',$endToday]];
    }else{//操作本页面的时候 传过来时间的时候
    $beginTime = strtotime($time);//传来的开始时间
    $endTime = $beginTime + (24*60*60 - 1);//传来的结束时间
    $where['ho.jtime'] = [['gt',$beginTime],['lt',$endTime]];
    }
    //gettime 预计送到时间
    $data = db('horseman_order ho')
    ->join('merchants_food_order o','o.id=ho.oid','left')
    ->join('merchants m','m.id=o.mid')
    ->where($where)
    -> limit($limit, $pageNum)
    ->field('ho.id,ho.oid,ho.address,ho.status,ho.earnings,m.name as mname,o.gettime')
    ->select();
    $res['data'] = $data;
    $count = db('horseman_order ho')->count();
    $res['count'] = $count;
    $money = db('horseman_order ho')
    ->where($where)
    //总收益 status = 1:已接单 2:取货中 3:已取消 4:配送中 5:已完成 6:已评价',
    ->where('ho.status','in','5,6')
    ->sum('earnings');
    $res['money'] = $money;
    return $res;
     }

    2.按月查询.接口传过来  $page $uid 
    /*
    * 2019.10.15
    *订单统计
    * & 骑手的id 按月查询
    * */
    public function monthstatistics(){
    $param = input('');
    $uid = $param['uid'];
    $data = $this ->order ->monthstatistics($uid);
    $res = [];
    if($data){
    $res['list'] = $data;
    $res['code'] = 1;
    $res['msg'] = '成功';
    }else{
    $res['list'] = '暂无数据';
    $res['code'] = 0;
    $res['msg'] = '失败';
    }
    return json($res);
    }

    /*
    * monthstatistics
    * uid 骑手的id
    * */
    public function monthstatistics($uid){
    //骑手的注册时间
    $ctime = db('horseman')->where('id',$uid)->value('ctime');
    $start_m = date("Y-m-d",$ctime);
    $end_m = date("Y-m-d",time());
    $date1 = explode('-',$start_m);
    $date2 = explode('-',$end_m);
    if($date1[1]<$date2[1]){ //判断月份大小,进行相应加或减
    $month_number= abs($date1[0] - $date2[0]) * 12 + abs($date1[1] - $date2[1]);
    }else{
    $month_number= abs($date1[0] - $date2[0]) * 12 - abs($date1[1] - $date2[1]);
    }
    //总的月份时间
    $months = [];
    for($i=0;$i<=$month_number;$i++)
    {
    $months[] .= date("Y-m", strtotime('-'. $i . 'months'));
    }
    //总收益 status = 1:已接单 2:取货中 3:已取消 4:配送中 5:已完成 6:已评价',
    $money = [];
    for($i=0;$i<=$month_number;$i++)
    {
    $money[] .= db('horseman_order')
    ->where(array('wtime'=>array(array('egt',strtotime(date("Y-m-01", strtotime(' -'. $i . 'month')))),array('elt',strtotime(date("Y-m-31", strtotime(' -'. $i . 'month')))))))
    ->where(['hid'=>$uid])
    ->where('status','in','5,6')
    ->sum('earnings');
    }
    $count = [];
    for($i=0;$i<=$month_number;$i++)
    {
    $count[] .= db('horseman_order')
    ->where(array('wtime'=>array(array('egt',strtotime(date("Y-m-01", strtotime(' -'. $i . 'month')))),array('elt',strtotime(date("Y-m-31", strtotime(' -'. $i . 'month')))))))
    ->where(['hid'=>$uid])
    ->where('status','in','5,6')
    ->count();
    }
    $res = [];
    foreach ($months as $k=>$v){
    $res[$k]['time'] = $v;
    $res[$k]['money'] = $money[$k];
    $res[$k]['count'] = $count[$k];
    }
    return $res;
    }

    返回的值

    1.按日返回值

    {

        "list": [               list  订单的列表

            {

                "id": 2,             骑手订单的 id

                "oid": 162,          商品订单的id

                "address": "山西省-朔州市",    送货的地址

                "status": 5,      状态值 1:已接单 2:取货中 3:已取消 4:配送中 5:已完成  6:已评价

                "earnings": "5.10",   订单收益

                "mname": "FPS店",   店铺名称

                "gettime": "08:00",  期望/预计送达

                "status_name": "已完成"   状态值的名称

            },

            {

                "id": 3,

                "oid": 230,

                "address": "安徽-阜阳",

                "status": 6,

                "earnings": "6.00",

                "mname": "FPS店",

                "gettime": "08:00",

                "status_name": "已评价"

            }

        ],

        "money": 11.1,    一天的收益

        "count": 5,       一天的订单数

        "code": 1,       1成功  0失败

        "msg": "成功"   

    }



    2.按月返回值

    {

        "list": [

            {

                "time": "2019-10",   //时间

                "money": "8",         //这个月的总收益

                "count": "3"          //这个月的总订单数

            },

            {

                "time": "2019-09",

                "money": "11.1",

                "count": "2"

            },

            {

                "time": "2019-08",

                "money": "7",

                "count": "2"

            },

            {

                "time": "2019-07",

                "money": "0",

                "count": "0"

            },

            {

                "time": "2019-06",

                "money": "0",

                "count": "0"

            },

            {

                "time": "2019-05",

                "money": "0",

                "count": "0"

            },

            {

                "time": "2019-04",

                "money": "0",

                "count": "0"

            }

        ],

        "code": 1,    1成功 0失败

        "msg": "成功"

    }

  • 相关阅读:
    POJ 1984
    剑指offer 7. 斐波那契数列 & leetcode 剑指 Offer 10- I. 斐波那契数列
    剑指offer 60. 把二叉树打印成多行
    数据库的范式(建表的原则)
    剑指offer 59. 按之字形顺序打印二叉树
    力扣142.环形链表II & 剑指offer 55. 链表中环的入口结点
    GET 和 POST 的区别
    理解Cookie和Session的区别及使用
    基本排序算法代码实现,以及使用场景推荐
    The Castle OpenJ_Bailian
  • 原文地址:https://www.cnblogs.com/wwlong/p/11686274.html
Copyright © 2011-2022 走看看