<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');
}
}