小程序分页

<wxs module="m1">
var sub = function (val, start, end) {
  
  if ( val == undefined|| val==''|| val==null) {
    return;
  }
  if (val.length > end) {
  return val.substring(start, end);
  } else {
    return val;
  }
}
module.exports.sub = sub;
</wxs>





<!-- 顶部搜索框 -->
<view class='page_row' bindtap="suo">
    <view class="search">
      <view class="df search_arr">
        <icon class="searchcion" size='16' type='search'></icon>
        <input class="sousuo" disabled placeholder="搜索" bindtap='search' />
      </view>
    </view>
  </view>



<!-- 电影分类展示 -->

<view class="page-section-spacing" wx:for="{{movieList}}" wx:key="{{index}}">
        <view class="d1-1" hover-class="none" hover-stop-propagation="false">
          <view class="d1-1-1">
            {{item.t_name}}
          </view> 
          <navigator url="/pages/more/more?t_id={{item.t_id}}">
            <view class="d1-1-2">
                更多
            </view> 
          </navigator> 
        </view>
        <scroll-view class="scroll-view_H" scroll-x="true"  style="width: 100%">

            <!-- 循环分类下面的所属内容 -->
            <navigator class="d1-2" wx:for="{{item.name}}" wx:for-index="key" wx:for-item="val" url="/pages/details/details?id={{val.id}}"  hover-class="none">
                    <view class="d1-2-1" hover-class="none" hover-stop-propagation="false">
                    <image class="" src="{{val.img}}" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror="" bindload="">          
                    </image>
                    </view>
                    <view class="d1-2-2">
                        {{m1.sub(val.name,0,5)}}
                    </view>
                    <view class="d1-2-3">
                        评分:{{val.mark}}
                    </view> 
            </navigator>

            <!-- 点击查看更多 -->
            <navigator class="d1-2" url="/pages/more/more?t_id={{item.t_id}}"  hover-class="none">
                <view class="d1-2-1" hover-class="none" hover-stop-propagation="false">
                   <image class="" src="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=4089411662,2762735499&fm=26&gp=0.jpg" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror="" bindload="">          
                   </image>
                </view>
                <view class="d1-2-2">
                    点击查看更多
                </view>
                <view class="d1-2-3">
                    点击查看更多
                </view> 
            </navigator> 
        </scroll-view>
</view>


            


.search{
    width: 98%;
  }
  .search_arr {
    border: 1px solid #d0d0d0;
    border-radius: 10rpx;
    margin-left: 20rpx;
  }
  .search_arr input{
    margin-left: 60rpx;
    height: 60rpx;
    border-radius: 5px;
  }
  .sousuo {
    padding-left: 38%;
    width: 15%;
    line-height: 150%;
    text-align: center;
  }
  .page_row{
    display: flex;
    flex-direction: row
  }
  .searchcion {
    margin: 10rpx 10rpx 10rpx 10rpx;
    position: absolute;
    margin-left:38%;
    z-index: 2;
    width: 15px;
    height: 15px;
    text-align: center;
   }


.page-section-spacing {
    margin-top: 60rpx;
}

.scroll-view_H {
    white-space: nowrap;
}

.d1-1 {
    width: 100%;
    height: 80rpx;
    /* background-color: burlywood; */
}

.d1-1-1 {
    width: 50%;
    height: 100%;
    /* background-color: orange; */
    float: left;
    font-size: 58rpx;
    line-height: 80rpx;
    font-weight: bold;
}

.d1-1-2 {
    width: 20%;
    height: 100%;
    /* background-color: orangered; */
    float: right;
    font-size: 40rpx;
    line-height: 80rpx;
    font-weight: bold;
    color: chartreuse;
}

.d1-2 {
    display: inline-block;
    width: 30%;
    height: 400rpx;
    /* background-color: blue; */
    margin-left: 3%;
    text-align: center;
}

.d1-2-1 {
    width: 100%;
    height: 70%;
    /* background-color: pink; */
}

.d1-2-2 {
    width: 100%;
    height: 15%;
    /* background-color: blue; */
}

.d1-2-3 {
    width: 100%;
    height: 15%;
    /* background-color: blueviolet; */
    font-size: 24rpx;
    line-height: 60rpx;
}

image {
    width: 100%;
    height: 100%;
}
/*
 * @Descripttion: 
 * @version: 
 * @Author: gj 1048551941@qq.com
 * @Date: 2021-06-03 14:31:26
 * @LastEditors: gj
 * @LastEditTime: 2021-06-04 13:55:11
 */
// pages/home/home.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        movieList: {},
        page: 1,
        last_page: 2
    },
    // 跳转到搜索页面
    suo: function() {
        wx.navigateTo({
            url: '../seek/seek'
        })
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        var page = this.data.page;
        wx.request({
            url: 'http://www.gj.com/Api/movie_list?page='.page, //开发者服务器接口地址",
            data: '', //请求的参数",
            method: 'GET',
            dataType: 'json', //如果设为json,会尝试对返回的数据做一次 JSON.parse
            success: res => {
                // console.log(res.data.last_page);
                this.setData({
                    movieList: res.data.data.data,
                    last_page: res.data.data.last_page
                })
            },
        });
    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {
        var new_page = this.data.page + 1;
        var last_page = this.data.last_page;
        if (new_page > last_page) {
            wx.showToast({
                title: '到底了,休息会,别刷了',
                icon: 'error',
                duration: 2000
            })
            return
        };
        if (new_page <= last_page) {
            wx.showToast({
                title: '正在加载',
                icon: 'loading',
                duration: 1000
            })
        };
        var that = this;
        var movieList = this.data.movieList;
        wx.request({
            url: 'http://www.gj.com/Api/movie_list?page=' + new_page, //开发者服务器接口地址",
            data: '', //请求的参数",
            method: 'GET',
            dataType: 'json', //如果设为json,会尝试对返回的数据做一次 JSON.parse
            success: res => {
                console.log(res.data.data.data);
                let last_data = res.data.data.data
                this.setData({
                    movieList: movieList.concat(last_data),
                    page: new_page
                })
            },
        });
    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    }
})
<?php
/*
 * @Descripttion: 
 * @version: 
 * @Author: gj 1048551941@qq.com
 * @Date: 2021-06-03 18:35:08
 * @LastEditors: gj
 * @LastEditTime: 2021-06-06 21:20:02
 */

namespace app\Api\controller;

use think\Controller;
use app\Api\model\Type as TypeModel;
use app\Api\model\Name as NameModel;
use app\Api\model\User as UserModel;
use think\Cache;
use think\cache\driver\Redis;

class Api extends Controller
{
    /**
     * @name: gj 1048551941@qq.com
     * @test: 小程序首页接口
     * @msg: 
     * @param {*}
     * @return {*}
     */    
    public function movieList($page)
    {
        // 把页数转为整数
        $pages = intval($page);
        // 实例化redis
        $redis = new Redis();
        // 先查看redis中有没有数据
        $data = $redis->get('data'.$pages);
        // 有 直接返回
        if (!empty($data)) {
            return json(['code'=>201,'msg'=>'查询成功','data'=>$data]);
        }
        // 没有 查找数据库
        $movieList = TypeModel::relation([
            'name'=>function($query){
                $query->limit(4);
            }])
            ->paginate(2);
            // 存入redis  1小时候过期
            $redis->set('data'.$pages, $movieList);
        return json(['code'=>200,'msg'=>'查询成功','data'=>$movieList]);
    }

    /**
     * @name: gj 1048551941@qq.com
     * @test: 查询某一分类下面的具体内容
     * @msg: 
     * @param {*} $t_id  分类ID
     * @return {*}
     */    
    public function getOneType($t_id)
    {
        $typeData = NameModel::where('t_id',$t_id)->select();
        return json(['code'=>200,'msg'=>'查询成功','data'=>$typeData]);
    }

    /**
     * @name: gj 1048551941@qq.com
     * @test: 搜索框实时搜索
     * @msg: 
     * @param {*}
     * @return {*}
     */    
    public function seek($seek)
    {
        if (empty($seek)) {
            return json(['code'=>400,'msg'=>'查询成功','data'=>'']);
        }
        $seekData = NameModel::with('Type')->where('name','like',"%".$seek."%")->select();
        return json(['code'=>200,'msg'=>'查询成功','data'=>$seekData]);
    }


    /**
     * @name: gj 1048551941@qq.com
     * @test: 详情页面
     * @msg: 
     * @param {*} $id
     * @return {*}
     */    
    public function oneDetails($id)
    {
        $oneData = NameModel::where('id',$id)->find();
        return json($oneData);
    }

     /**
      * @name: gj 1048551941@qq.com
      * @test: 小程序授权登录接口
      * @msg: 
      * @param {*}
      * @return {*}
      */
    public function login()
    {
        $redis = new Redis();
        // 接值
        $data = input();
        // return json($data);
;        $result = getWx($data);
        // 拼接需要添加搭配用户表的数据
        $addUser['session_key'] = $result['session_key'];
        $addUser['openid'] = $result['openid'];
        $addUser['name_nick']=$data['nickname'];
        $addUser['url'] = $data['url'];
        // return json($addUser);

        // 根据opecID 查看用户表是否有这个用户
        $userRes = UserModel::getOneUserData($addUser['openid']);
       if (!isset($userRes['u_id'])) {
           $addUserRes = UserModel::addUser($addUser);
        //    return $addUserRes;
       }
        //  生成token  返回小程序
       $token = md5($addUser['openid']);
        //  将token 存入缓存
        $redis->set($token, $userRes, 3600);
        return json(['code'=>200,'msg'=>'登录成功','data'=>$token,'data1'=>$userRes]);
    }


    /**
     * @name: gj 1048551941@qq.com
     * @test: 小程序判断登录接口
     * @msg: 
     * @param {*}
     * @return {*}
     */    
    public function one()
    {
        $redis = new Redis();
        $data = input();
        if (empty($data['token'])) {
            return json(['code'==400,'msg'=>'token为空','data'=>'']);
        }
        $token =  $redis->get($data['token']); 
        return json(['code'=>200,'msg'=>'登录成功','data'=>$token]);
    }


    public function listApi()
    {
        $data =  TypeModel::with('name')->select();
        return json($data);
    }
}
<?php
/*
 * @Descripttion: 
 * @version: 
 * @Author: gj 1048551941@qq.com
 * @Date: 2021-06-03 18:35:42
 * @LastEditors: gj
 * @LastEditTime: 2021-06-03 19:59:31
 */


namespace app\Api\model;

use think\Model;

class Type extends Model
{

    /**
     * @name: gj 1048551941@qq.com
     * @test: 模型关联name表
     * @msg: 
     * @param {*}
     * @return {*}
     */    
    public function name()
    {
        return $this->hasMany('name','t_id','t_id');
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值