温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

thinkPHP如何实现交易详情查询功能

发布时间:2021-08-27 11:28:12 来源:亿速云 阅读:200 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关thinkPHP如何实现交易详情查询功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

具体如下:

交易详情

一般都是按月的,包含,交易日期,交易金额,交易状态(可有可无)
总交易额等等。
如果数据多的话,最好能够分页。
最好能够查询具体的哪一个商户。

1.模拟sql实现查询功能

SELECT a.id as user_id,a.username,b.name as store_name,c.id as order_id,c.price,c.paytime,c.sendtime,c.receivetime FROM sh_user a   LEFT JOIN sh_store b on a.id = b.user_id   LEFT JOIN sh_order c ON b.id = c.store_id   WHERE a.opener_id = 1 and a.`status` = 1 and c.status = 1 ORDER BY c.id desc; SELECT count(b.id) as count ,sum(c.price) as total_price FROM sh_user a   LEFT JOIN sh_store b on a.id = b.user_id   LEFT JOIN sh_order c ON b.id = c.store_id   WHERE a.opener_id = 1 and a.`status` = 1 and c.status = 1;

sql查询出来了,基本上就搞定了,剩下的就是用php,thinkphp实现这个查询功能,加入一些逻辑与条件。

// 商户交易 public function trade(){   if($type = $this->_request('type','trim')){    $s_year = $this->_request('s_year','trim');    $s_month = $this->_request('s_month','trim');    $s_user_id = $this->_request('s_user_id','trim,intval');    $this->assign('s_user_id',$s_user_id);    if($type == 'last'){ // 获取上一月     if($s_month==1){      $useYear = $s_year-1;      $useMonth = 12;     }else{      $useYear = $s_year;      $useMonth = $s_month-1;     }    }    if($type == 'next'){ // 获取下一月     if($s_month==12){      $useYear = $s_year+1;      $useMonth = 1;     }else{      $useYear = $s_year;      $useMonth = $s_month+1;     }    }    if ($type == 'selectuser'){     $useYear = $s_year;     $useMonth = $s_month;    }   }else{    // 获取当前年 月    $useYear = date('Y');     $useMonth = date('m');    }   $this->assign('s_year',$useYear);   $this->assign('s_month',$useMonth);   $b_time = strtotime($useYear.'-'.$useMonth.'-'.'1');   $e_time = strtotime($useYear.'-'.$useMonth.'-'.date('t',strtotime($b_time)).' 23:59:59');   if(isset($s_user_id) && $s_user_id > 0){    $where['a.id'] = $s_user_id;   }   $where['a.opener_id'] = $this->opener_id;   $where['a.status'] = 1; // 合法的用户   $where['c.status'] = 1; // 合法的订单   $where['c.paytime'] = array(array('gt',$b_time),array('lt',$e_time),'and');   $count_and_totalprice = M()->table('sh_user a')         ->join('sh_store b on a.id = b.user_id')         ->join('sh_order c on b.id = c.store_id')         ->where($where)         ->field('count(b.id) as count ,sum(c.price) as totalprice')         ->find();   $count  = $count_and_totalprice['count'];   $totalprice = $count_and_totalprice['totalprice'] ? $count_and_totalprice['totalprice'] : 0;   $Page  = new Page($count, 10);   $list  = M()->table('sh_user a')      ->join('sh_store b on a.id = b.user_id')      ->join('sh_order c on b.id = c.store_id')      ->where($where)      ->order('c.id desc')      ->limit($Page->firstRow.','.$Page->listRows)      ->field('a.id as user_id,a.username,b.name as store_name,c.id as order_id,c.price,c.paytime,c.sendtime,c.receivetime')      ->select();   foreach ($list as $k => $v) {    if($v['sendtime'] == 0 && $v['receivetime'] == 0){     $list[$k]['progress'] = '1'; // 已付款,待发货    }    if($v['sendtime'] > 0 && $v['receivetime'] == 0){     $list[$k]['progress'] = '2'; // 已发货,待签收    }    if($v['sendtime'] > 0 && $v['receivetime'] > 0){     $list[$k]['progress'] = '3'; // 交易完成    }   }   // 获取拓展员用户   $user_list = M('User')       ->where(array('opener_id'=>$this->opener_id))       ->field('id,username')       ->select();   $this->assign('user_list',$user_list);   $this->assign('totalprice',$totalprice);   $this->assign('page',$Page->show());   $this->assign('list', $list);   $this->display(); }

html部分

<include file="Public:head" title="交易详情" /> <style> .top {   background-color: #eee;   height: 50px;   line-height: 50px;   font-size: 18px;   border-bottom: #ddd 1px solid;   margin-bottom: -1px; } .list-group{   border: 1px solid #DDDDDD; } .list-group .list-group-item {   text-align: left;   line-height: 25px;   border: none;   background-color: #F9F9F9;   font-size: 14px; } #select-date {   padding: 0px 10px; } #select-date .date-txt {   font-size: 18px; } #total {   width: 140px;   height: 140px;   background-color: #EC6C00;   margin: auto; } #total .money-txt {   color: white;   padding-top: 10px; } #datalist {   margin-top: 30px; } #relief .form-control{   margin-top: 10px;   margin-bottom: 10px;   /*background-color: #FFCE42;*/ } .page{   margin-right: 10px;   margin-bottom: 20px; } .table th {   color: #C4C4C4; } .table tbody tr td+td+td {   color: #D3964F; } </style> <script type="text/javascript"> function lastMonth(){   todo('last'); } function nextMonth(){   todo('next'); } function selectUser(){   todo('selectuser'); } function todo(type){   var s_year = $('#s_year').val();   var s_month = $('#s_month').val();   var s_user_id = $('#s_user_id').val();   window.location.href="{sh::U('User/trade')}&s_year="+s_year+"&s_month="+s_month+"&s_user_id="+s_user_id+"&type="+type; } </script> <body>   <div data-example-id="list-group-btns" class="bs-example">     <div id="select-date">       <ul class="pager">         <li class="previous"><a onclick="lastMonth();"><span aria-hidden="true">&larr;</span> </a></li>         <span class="date-txt"><strong>{sh:$s_year}.{sh:$s_month}</strong>         <present name="paymentData"><span class="glyphicon glyphicon-ok-sign" aria-hidden="true"></span></present>         </span>         <input type="text" id="s_year" value="{sh:$s_year}" hidden="hidden">         <input type="text" id="s_month" value="{sh:$s_month}" hidden="hidden">         <li class="next"><a onclick="nextMonth();"><span aria-hidden="true">&rarr;</span></a></li>       </ul>     </div>     <div id="relief">       <select id="s_user_id" onchange="selectUser();" class="form-control btn-success">         <option value="">全部商户</option>         <volist name="user_list" id="vo">           <option value="{sh:$vo.id}" <eq name="vo.id" value="$s_user_id">selected="selected"</eq>>{sh:$vo.username}</option>         </volist>       </select>     </div>     <div id="total" class="img-circle">       <div class="text-center money-txt">         <h4>总交易金额</h4>         <h3>¥{sh:$totalprice}</h3>       </div>     </div>     <div id="datalist">       <table class="table table-striped">         <thead>           <tr>             <th>商户</th>             <th>日期</th>             <th>交易金额</th>             <!-- <th>状态</th> -->           </tr>         </thead>         <tbody>         <empty name="list"><tr><td class="text-center" colspan="4">暂无数据</td></tr></empty>         <volist name="list" id="vo">           <tr>             <td>{sh:$vo.username}</td>             <td>{sh:$vo.paytime|date="Y-m-d H:i",###}</td>             <td>{sh:$vo.price}</td>             <!-- <td>             <if condition="$vo.progress eq 1"><span class="text-primary">待发货</span>             <elseif condition="$vo.progress eq 2"/><span class="text-danger">待签收</span>             <elseif condition="$vo.progress eq 3"/><span class="text-success"><strong>已完成</strong></span>             </if>             </td> -->           </tr>         </volist>         </tbody>       </table>       <div class="page text-right">         {sh:$page}       </div>     </div> </body> </html>

效果,多看看别人的设计,多学学,最重要的就是界面展示,一切的数据都是基于几面展示,所以先确定好需要什么数据,然后获取他们。

thinkPHP如何实现交易详情查询功能

感谢各位的阅读!关于“thinkPHP如何实现交易详情查询功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI