层级分类、一级分类(商品分类)接口、二级分类(商品列表)接口、三级分类(商品详情)接口


一、层级分类

例子1:

data=[
    {"cat_id":3,"name":"青浦","parent_id":1},
    {"cat_id": 2, "name": "张江", "parent_id": 4},
    {"cat_id":4,"name":"浦东","parent_id":1},
    {"cat_id":5, "name": "北京", "parent_id": 0},
    {"cat_id":6, "name": "昌平", "parent_id": 5},
    {"cat_id": 1, "name": "上海", "parent_id": 0},
]

res = []
def get_son(data,level = 0 ,parent_id = 0):
    for item in data:
        if item['parent_id'] == parent_id:
            item['level'] = level
            res.append(item)
            get_son(data,level+1,parent_id=item['cat_id'])
    return res

t=get_son(data)

for i in t:
    print(i['level']*"-",i['name'])


# 结果
'''
上海
-浦东
--张江
-青浦
北京
-昌平
'''

例子2:

data=[
{"cat_id":3,"name":"青浦","parent_id":1},
{"cat_id": 2, "name": "张江", "parent_id": 4},
{"cat_id":4,"name":"浦东","parent_id":1},
{"cat_id":5, "name": "北京", "parent_id": 0},
{"cat_id":6, "name": "昌平", "parent_id": 5},
{"cat_id": 1, "name": "上海", "parent_id": 0},
]

def get_tree(data):
lists= []
tree = {}
for i in data:
tree[i["cat_id"]] = i
for item in data:
if item['parent_id'] == 0:
lists.append(tree[item['cat_id']])
else:
if "child" not in tree[item["parent_id"]]:
tree[item['parent_id']]['child'] = []
tree[item['parent_id']]['child'].append(tree[item['cat_id']])
print(lists)
return lists

print(get_tree(data)) # 和print(lists) 结果一样



结果
[{'cat_id': 5, 'name': '北京', 'parent_id': 0, 'child': [{'cat_id': 6, 'name': '昌平', 'parent_id': 5}]}, 
{'cat_id': 1, 'name': '上海', 'parent_id': 0, 'child': [{'cat_id': 3, 'name': '青浦', 'parent_id': 1},
{'cat_id': 4, 'name': '浦东', 'parent_id': 1, 'child': [
{'cat_id': 2, 'name': '张江', 'parent_id': 4}
]}]}]

 

例子3

data1 = [{"cat_id": 1, "name": "上海", "parent_id": 0,
          "child":[{"cat_id":4,"name":"浦东","parent_id":1,"child":[{"cat_id": 2, "name": "张江", "parent_id": 4},]}]
          },
         ]

for item in data1:
    print('一级分类',item['name'])
    for item1 in item['child']:
        print('二级分类',item1['name'])

二、navicate中的表

导入向导 、导出向导时都选择csv文件

 

 如果是导入txt的时候。用ultraedit工具打开别人给你的txt,看看他到底是用什么样的符号做列的区分。

三、一级分类接口

刚进来的时候左上角,‘所有分类'和所有的一级分类 --》保存再categories里面
2 又下角,如果是默写‘所有分类'标签高亮,显示所有的非一级分类,如果是左上角的其他标签高亮,那右下角就显示,这个分类的儿子分类---》儿子保存再categorieslist,谁的儿子,由高亮的决定,---》 categoryId

 

 

cate页面

cate.js文件

  wx.request({
      url: app.globalData.new_urls + 'category/all',
      method:"POST",
      success: function (res) {
        var categories = [{ cat_id: 0, category_name: "所有分类" }];
        console.log(res)
        wx.hideLoading();
        for (var i = 0; i < res.data.data.length; i++) {
          if (res.data.data[i].level == 0) {
            categories.push(res.data.data[i]);
          }
        }
        
        that.setData({
          categories: categories,
          activeCategoryId: 0
        });
        that.getGoodsList(0);
      }
    })
  },
  //categoryId=1
  //获取2级分类获取的值的categorylist
  getGoodsList: function (categoryId) {
    if (categoryId == 0) {
      categoryId = "";
    }
    var that = this;
    wx.request({ url: app.globalData.new_urls + 'category/all', method: "POST", success: function (res) { var categorieslist = []; for (var i = 0; i < res.data.data.length; i++) {
          if (categoryId != '') {
            //res.data.data[i].parent_id=categoryId=1
            if (res.data.data[i].parent_id == categoryId) {
              categorieslist.push(res.data.data[i]);
            }
          } else {
            //categorieslist.push(res.data.data[i]);
            if (res.data.data[i].parent_id != 0) {
              categorieslist.push(res.data.data[i]);
            }
          }
        }
        
        that.setData({
          categorieslist: categorieslist,
        });
      }
    })
  },

cate.wxml文件

<view class="container">
  <view class="type-container-boxx">
    <view class="type-container">
      <view wx:for-items="{{categories}}" wx:key="id" class="type-box" bindtap="tabClick" id="{{item.cat_id}}">
        <view class="type-navbar-item {{activeCategoryId == item.cat_id ? 'type-item-on' : ''}}">
          {{item.category_name}}
        </view>
      </view>
    </view>
    <view class="type-list">
      <view class="swiper-container">
        <swiper class="swiper_box" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" bindchange="swiperchange">
          <block wx:for="{{banners}}" wx:key="id">
            <swiper-item>
              <image bindtap="toDetailsTap" data-id="{{item.id}}" src="{{item.image_url}}" class="slide-image" mode="widthFix" />
            </swiper-item>
          </block>
        </swiper>
        <view class="dots">
          <block wx:for="{{banners}}" wx:key="unique">
            <view class="dot{{index == swiperCurrent ? ' active' : ''}}"></view>
          </block>
        </view>
      </view>
      <view  class="type-menu">
        <view class="type-level-box" wx:for-items="{{categorieslist}}" wx:key="id">
          <view id="{{item.cat_id}}" class="type-level-item " bindtap="levelClick" data-id="{{item.cat_id}}">
            <image class="type-img" src="{{item.image_url}}"></image>
            <text>{{item.category_name}}</text>
          </view>
        </view>
      </view>
    </view>
  </view>
</view>

后端

 

 

四、二级分类接口

cate-list页面

cate-list.js文件

var app = getApp()
Page({
  data: {

  },

  toDetailsTap: function (e) {
    wx.navigateTo({
      url: "/pages/goods-detail/goods-detail?id=" + e.currentTarget.dataset.id
    })
  },
  onLoad: function (e) {
    wx.showLoading();
    var that = this;
    if (app.globalData.iphone == true) { that.setData({ iphone: 'iphone' }) }
    wx.request({ url: app.globalData.new_urls + 'goods/list', method:"POST", data: { category_id: e.id, },
      success: function (res) {
        wx.hideLoading();
        that.setData({
          goods: [],
          loadingMoreHidden: true
        });
        var goods = [];
        if (res.data.code != 200 || res.data.data.length == 0) {
          that.setData({
            loadingMoreHidden: false,
          });
          return;
        }
        console.log(res.data.data)
        for (var i = 0; i < res.data.data.length; i++) {
          goods.push(res.data.data[i]);
        }
       
        that.setData({
          goods: goods,
        });
      }
    })
  }

})

cate-list.wxml文件

<navigation id='Navigation' show-icon="{{true}}" title="分类列表" show-title="{{true}}" class=""></navigation>
<view class="container {{iphone}}">
  <view class="goods-container">
    <view class="goods-box" wx:for-items="{{goods}}" wx:key="{{index}}" bindtap="toDetailsTap" data-id="{{item.product_id}}">
      <view class="img-box">
        <image src="{{item.image_url}}" class="image" mode="widthFix" lazy-load="true" />
        <view class="goods-characteristic">
          <text>{{item.intor}}</text>
        </view>
      </view>
      <view class="goods-title">{{item.name}}</view>
      <view style='display:flex;'>
        <view class="goods-price">Ұ{{item.price}}</view>
        <view class="goods-price-naver">已售{{item.buy_count}}</view>
      </view>
    </view>
  </view>
  <view hidden="{{loadingMoreHidden ? true : false}}" class="no-more-goods">
    <image src="/images/empty_goods.png" class="no-order-img"></image>
    <view class="text">还没有商品呢</view>
  </view>
</view>

后端

List方法写在goods文件中,也可以不写在

 

 

 

五、三级分类(商品详情页面)

1、看首页index的wxml

 

 2、看 good-detail

 

 

后端

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM