Administrator vor 2 Jahren
Ursprung
Commit
30f9d568e2

+ 7 - 0
.idea/sqldialects.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="SqlDialectMappings">
+    <file url="file://$PROJECT_DIR$/data/dao/DetailDao.go" dialect="GenericSQL" />
+    <file url="PROJECT" dialect="MySQL" />
+  </component>
+</project>

+ 126 - 58
data/dao/DetailDao.go

@@ -152,64 +152,6 @@ B:
 
 	return detailVo, nil
 }
-func GetSkuByKey(key string, pageNum, pageSize int) (vo.BaseListVo, string, error) {
-	var sqlKey = "%" + key + "%"
-	var vo = vo.BaseListVo{}
-	var sku domain.GoodsSku
-	//查询tag
-	var tag domain.GoodsTag
-	var goods domain.Goods
-	r1, err := configs.Engine.Cols("id").Where("name like ?", sqlKey).Or("tag like ?", sqlKey).
-		//去重
-		Distinct("id").Rows(&tag)
-	var inTags = make([]int64, 0)
-	for r1.Next() {
-		r1.Scan(&tag)
-		inTags = append(inTags, tag.Id)
-	}
-
-	sess := configs.Engine.Cols("id").Distinct("id").Where("goods_name like ?", sqlKey)
-	for i := range inTags {
-		sess.Or("FIND_IN_SET(?,tag_ids)", inTags[i])
-	}
-	r2, err := sess.Rows(&goods)
-	if err != nil {
-		return vo, "商品查询错误", err
-	}
-	var goodsInTags = make([]int64, 0)
-	for r2.Next() {
-		r2.Scan(&goods)
-		goodsInTags = append(goodsInTags, goods.Id)
-	}
-
-	sess = configs.Engine.Where("sku_name like ?", sqlKey)
-	for i := range goodsInTags {
-		sess.Or("goods_id = ?", goodsInTags[i])
-	}
-	r3, err := sess.Desc("id").Limit(pageSize, (pageNum-1)*pageSize).Rows(&sku)
-
-	if err != nil {
-		return vo, "商品sku查询错误", err
-	}
-
-	var skus = make([]any, 0)
-	for r3.Next() {
-		r3.Scan(&sku)
-		skus = append(skus, sku)
-	}
-	cs := configs.Engine.Where("sku_name like ?", sqlKey)
-	for i := range goodsInTags {
-		cs.Or("goods_id = ?", goodsInTags[i])
-	}
-	count, err := cs.Distinct("id").Count("id")
-
-	vo.Total = int(count)
-	vo.List = skus
-	vo.PageNum = pageNum
-	vo.PageSize = pageSize
-	return vo, "", nil
-}
-
 func SelectSkuInfoBySkuId(skuId int64) (vo.DetailInfoVo, error) {
 	//根据skuid 获取GoodsId
 	var sku domain.GoodsSku
@@ -285,3 +227,129 @@ func SelectSkuInfoBySkuId(skuId int64) (vo.DetailInfoVo, error) {
 
 	return infoVo, nil
 }
+
+// 搜索==================
+
+func GetSkuByKey2(key string, pageNum, pageSize int) ([]domain.GoodsSku, int64, error) {
+	if pageNum == 0 {
+		pageNum = 1
+	}
+	if pageSize == 0 {
+		pageSize = 12
+	}
+
+	var sqlKey = "%" + key + "%"
+	arr := make([]domain.GoodsSku, 0)
+	if key == "" {
+		count, err := configs.Engine.Table("goods_sku").Desc("id").
+			Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr)
+		if err != nil {
+			return nil, 0, err
+		}
+		return arr, count, nil
+	}
+	//sql := `SELECT DISTINCT
+	//        s.id,
+	//        s.sku_image,
+	//        s.sku_name,
+	//        s.price,
+	//        s.historical_prices,
+	//        s.inventory_number,
+	//        s.commodity_area_id,
+	//        s.goods_id,
+	//        s.create_by,
+	//        s.create_time
+	//    FROM goods_sku s
+	//    LEFT JOIN goods g ON s.goods_id = g.id
+	//    LEFT JOIN goods_tag t ON FIND_IN_SET(t.id, g.tag_ids)
+	//    WHERE t.tag LIKE ?
+	//       OR g.goods_name LIKE ?
+	//       OR s.sku_name LIKE ?
+	//       OR t.id IS NULL
+	//	ORDER BY s.id DESC
+	//	LIMIT ? OFFSET ?
+	//`
+	//count, err := configs.Engine.SQL(sql, sqlKey, sqlKey, sqlKey, pageSize, (pageNum-1)*pageSize).FindAndCount(&arr)
+	count, err := configs.Engine.Table("goods_sku s").
+		Join("left", "goods g", "s.goods_id = g.id").
+		//Join("left", "goods_tag t", "FIND_IN_SET(t.id, g.tag_ids)").Desc("s.id").
+		Join("left", "(SELECT gt.tag as tag,g.id AS goods_id FROM goods g JOIN goods_tag gt ON FIND_IN_SET(gt.id, g.tag_ids)) AS t ", " g.id = t.goods_id").Desc("s.id").
+		Where("t.tag LIKE ? OR g.goods_name LIKE ? OR s.sku_name LIKE ?", sqlKey, sqlKey, sqlKey).
+		Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr)
+	if err != nil {
+		fmt.Println("sql语句错误", err)
+		return nil, 0, err
+	}
+	return arr, count, nil
+}
+
+func GetSkuByKey(key string, pageNum, pageSize int) ([]domain.GoodsSku, int64, error) {
+	var sqlKey = "%" + key + "%"
+	var sku domain.GoodsSku
+	var arr []domain.GoodsSku
+	//查询tag
+	var tag domain.GoodsTag
+	var goods domain.Goods
+
+	var inTags = make([]int64, 0)
+
+	//获取标签
+	targetRow, err := configs.Engine.Cols("id").Where("name like ?", sqlKey).Or("tag like ?", sqlKey).
+		//去重
+		Distinct("id").Rows(&tag)
+	for targetRow.Next() {
+		targetRow.Scan(&tag)
+		inTags = append(inTags, tag.Id)
+	}
+
+	//商品内名称查询
+	sess := configs.Engine.Cols("id").Distinct("id").Where("goods_name like ?", sqlKey)
+	for i := range inTags {
+		sess.Or("FIND_IN_SET(?,tag_ids)", inTags[i])
+	}
+	goodsRow, err := sess.Rows(&goods)
+	if err != nil {
+		return arr, 0, err
+	}
+	var goodsInTags = make([]int64, 0)
+	for goodsRow.Next() {
+		goodsRow.Scan(&goods)
+		goodsInTags = append(goodsInTags, goods.Id)
+	}
+
+	//最终sku查询
+	sess = configs.Engine.Where("sku_name like ?", sqlKey)
+	for i := range goodsInTags {
+		sess.Or("goods_id = ?", goodsInTags[i])
+	}
+	skuRow, err := sess.Desc("id").Limit(pageSize, (pageNum-1)*pageSize).Rows(&sku)
+	if err != nil {
+		return arr, 0, err
+	}
+
+	var skus = make([]any, 0)
+	for skuRow.Next() {
+		skuRow.Scan(&sku)
+		skus = append(skus, sku)
+	}
+
+	cs := configs.Engine.Where("sku_name like ?", sqlKey)
+	for i := range goodsInTags {
+		cs.Or("goods_id = ?", goodsInTags[i])
+	}
+	count, err := cs.Distinct("id").Count("id")
+
+	return arr, count, nil
+}
+
+func GetGoodsSkuList(goodsSku domain.GoodsSku, pageNum, pageSize int) ([]domain.GoodsSku, int64, error) {
+	var arr []domain.GoodsSku
+	Count, err := configs.Engine.Table("goods_sku").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsSku)
+	if err != nil {
+		return arr, 0, err
+	}
+	if err != nil {
+		return arr, 0, err
+	}
+	return arr, Count, nil
+}

+ 1 - 0
file/resources/css/detail.css

@@ -465,6 +465,7 @@
     height: 38px;
     font-size: 12px;
     text-align: left;
+
 }
 
 

+ 67 - 0
file/resources/css/index.css

@@ -719,6 +719,7 @@ body, html, div {
     margin-bottom: 10px;
     cursor: pointer;
 }
+
 .about-row-item:hover {
     color: #1a6adc;
 }
@@ -904,3 +905,69 @@ body, html {
     font-weight: bold;
 
 }
+
+/*todo 路由栏*/
+.router-jump-bar {
+    width: 100%;
+    background: white;
+}
+
+.router-bar {
+    text-align: left;
+    margin: 0 auto;
+    color: #333;
+    width: 1170px;
+    height: 50px;
+
+    display: flex;
+
+    align-items: center;
+}
+
+.router-bar .router-bar-list {
+    list-style: none;
+    margin: 0;
+    padding: 0;
+    font-size: 14px;
+
+    color: #888888;
+    font-weight: bold;
+
+    display: flex;
+    justify-content: left;
+    align-items: center;
+}
+
+.router-bar-list .router-bar-item {
+    cursor: pointer;
+    margin: 0 10px;
+    height: 20px;
+}
+
+.router-bar-list .router-bar-text {
+    cursor: pointer;
+    margin: 0 10px;
+    height: 20px;
+}
+
+.router-bar-list .router-bar-arrow {
+    margin: 0;
+    height: 20px;
+    user-select: none;
+}
+
+.router-bar-list .router-bar-item:hover {
+    /*    下划线*/
+    text-decoration: underline;
+}
+
+.router-bar-list .router-bar-item :nth-child(1) {
+    margin-left: 0;
+    color: red;
+}
+
+.router-bar-item :hover {
+    cursor: pointer;
+    color: #207cfb;
+    text-decoration: underline;
+}

+ 133 - 0
file/resources/css/search.css

@@ -0,0 +1,133 @@
+.search-result {
+    padding-top: 80px;
+    background-color: #f8f8f8;
+}
+.search-result .search-result-body {
+    padding-top: 30px;
+    width: 1170px;
+    margin: 0 auto;
+    text-align: left;
+}
+.search-result .search-result-body .search-result-title {
+    margin-top: 30px;
+    font-size: 30px;
+    font-weight: bold;
+}
+.search-result .search-result-body .search-total {
+    margin: 10px auto 16px;
+    font-size: 12px;
+    border-bottom: #d0d1d1;
+}
+.search-result .search-result-body .card-list {
+    display: flex;
+    align-items: center;
+    flex-wrap: wrap;
+    padding: 5px 0 0 0;
+    margin-top: 15px;
+    overflow: hidden;
+}
+.search-result .search-result-body .card-list div {
+    margin-right: 25px;
+    display: inline-block;
+}
+.search-result .search-result-body .card-list div:nth-child(6n) {
+    margin-right: 0;
+}
+.search-result .search-result-body .card-list div:nth-child(6n+1) {
+    margin-left: 5px;
+}
+.search-result .search-result-body .search-pagination {
+    margin-top: 30px;
+    display: flex;
+    justify-content: center;
+}
+
+
+
+
+.goods-sku-info {
+    display: block;
+    max-width: 170px;
+    margin: 0 25px 25px 0;
+    cursor: pointer;
+}
+
+.goods-sku-info .goods-img {
+    padding: 0;
+    margin: 0 0 12px 0;
+    overflow: hidden;
+    display: flex;
+    box-shadow: #dddddd 0 0 6px;
+    position: relative;
+}
+
+.goods-sku-info .goods-img img {
+    height: 228px;
+    width: 170px;
+}
+
+.goods-sku-info .goods-img img:hover {
+    z-index: 0;
+}
+
+.goods-sku-info .goods-img:hover::after {
+    opacity: 1;
+    box-shadow: rgba(100, 100, 100, 0.3) 0 0 8px 3px;
+}
+
+.goods-sku-info .goods-img::after {
+    content: "";
+    position: absolute;
+    width: 170px;
+    height: 228px;
+    box-sizing: border-box;
+    background: rgba(229, 229, 229, 0.2);
+    animation: enlarge 0.2s ease 0s 1 normal none running;
+    opacity: 0;
+    transition: all 0.3s ease 0s;
+}
+
+.goods-sku-info .goods-name {
+    height: 38px;
+    font-size: 12px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    display: -webkit-box;
+    -webkit-line-clamp: 2;
+    -webkit-box-orient: vertical;
+}
+
+.goods-sku-info .goods-price {
+    font-size: 16px;
+    margin: 5px 0;
+    font-weight: bold;
+}
+
+.goods-sku-info .goods-price::before {
+    content: "¥";
+}
+
+.goods-sku-info .goods--original-price {
+    display: inline-block;
+    text-decoration: line-through;
+    font-size: 12px;
+    margin: 0;
+    padding: 0;
+}
+
+.goods-sku-info .goods-discount-percentage {
+    display: inline-block;
+    font-size: 12px;
+    margin: 0 0 0 10px;
+    padding: 0 5px;
+    color: white;
+    background: rgb(223, 30, 28);
+}
+
+.goods-sku-info .goods-discount-percentage::before {
+    content: "-";
+}
+
+.goods-sku-info .goods-discount-percentage::after {
+    content: "%";
+}

+ 0 - 1
file/resources/js/Detail.js

@@ -75,7 +75,6 @@ function GetAreaById(areaId) {
 
 function RouterJumpId(id) {
     window.location.href = "?skuId=" + id
-
 }
 
 //TODO a

+ 92 - 4
file/resources/js/handler.js

@@ -5,14 +5,102 @@
 //      JumpRouter, getToken, setToken, GetUserInfo
 // }
 var loginState = false;
+var RouterLinkName = "routerLink";
+document.addEventListener('DOMContentLoaded', function () {
+    if (window.location.pathname === "/" || window.location.pathname === "") {
+        console.log("6666668")
+        sessionStorage.setItem(RouterLinkName, JSON.stringify([]))
+    }
+    RouterBarCreate()
+})
 
 //=======================链接跳转
-function JumpRouter(url, query) {
-    if (query) {
-        window.location.href = url + "?routerlink=" + query;
+function JumpRouter(url, name) {
+    //获取当前路径和请求参数
+    let path = window.location.href;
+    if (path.indexOf(window.location.host) !== -1) {
+        path = path.substring(path.indexOf(window.location.host) + window.location.host.length)
+    }
+    let title = name ? name : document.title;
+    if (path === '' || path === "/") {
+        sessionStorage.setItem(RouterLinkName, JSON.stringify([]))
+    }
+    //不存在 存储创建一个
+    if (!sessionStorage.getItem(RouterLinkName)) {
+        sessionStorage.setItem(RouterLinkName, JSON.stringify([path]))
     } else {
-        window.location.href = url
+        //存在则添加
+        let arr = JSON.parse(sessionStorage.getItem(RouterLinkName));
+        arr[arr.length] = {title, url: path}
+        sessionStorage.setItem(RouterLinkName, JSON.stringify(arr))
+    }
+
+    window.location.href = url;
+}
+
+function RouterBarJump(name, url) {
+    let routerLink = JSON.parse(sessionStorage.getItem(RouterLinkName))
+    let newArray = []
+    if (!routerLink) {
+        return
+    }
+    for (let i = 0; i < routerLink.length; i++) {
+        if (routerLink[i].title === name) {
+            break
+        } else {
+            newArray[i] = (routerLink[i])
+        }
     }
+    sessionStorage.setItem(RouterLinkName, JSON.stringify(newArray))
+
+    window.location.href = url;
+}
+
+function RouterBarCreate() {
+
+    let routerLink = JSON.parse(sessionStorage.getItem(RouterLinkName))
+    let ulEle = document.getElementById("router-bar-list");
+    if (!ulEle) {
+        return
+    }
+    ulEle.children = []
+    let rightArrowEle = document.createElement("li");
+    rightArrowEle.innerText = ">"
+    rightArrowEle.className = "router-bar-arrow"
+
+
+    let ele = document.createElement("li");
+    ele.innerText = '首页'
+    ele.className = "router-bar-item"
+    ele.addEventListener("click", function () {
+        RouterBarJump('首页', "/")
+    })
+    ulEle.appendChild(ele)
+    ulEle.appendChild(rightArrowEle)
+
+    if (routerLink) {
+        for (let i = 0; i < routerLink.length; i++) {
+            if (routerLink[i].url==="/"){
+                continue
+            }
+            let liEle = document.createElement("li");
+            liEle.innerText = routerLink[i].title
+            liEle.className = "router-bar-item"
+            liEle.addEventListener("click", function () {
+                RouterBarJump(routerLink[i].title, routerLink[i].url)
+            })
+            ulEle.appendChild(liEle)
+            let rae = document.createElement("li");
+            rae.innerText = ">"
+            rae.className = "router-bar-arrow"
+            ulEle.appendChild(rae)
+        }
+    }
+
+    let nowEle = document.createElement("li")
+    nowEle.innerText = document.title
+    nowEle.className = "router-bar-text"
+    ulEle.appendChild(nowEle)
 }
 
 function jumpClass(className) {

+ 11 - 5
file/static/detail.html

@@ -2,10 +2,9 @@
 <html lang="en">
 <head>
     <meta charset="UTF-8">
-    <title>详情</title>
+    <title>{{.sku.skuName}}</title>
     <link rel="stylesheet" href="/api/static//css/index.css">
     <link rel="stylesheet" href="/api/static/css/detail.css">
-    <script src="/api/static/js/handler.js"></script>
     <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
     <meta name="description" content="{{.goods.goodsName}} / {{.sku.skuName}}" />
 </head>
@@ -14,7 +13,13 @@
 {{template "NavigationBar.tmpl" .}}
 <div class="detail">
     <!--    路由地址栏-->
-    <RouterJumpBar v-model:nowRouterName="detailInfo.sku.skuName"/>
+<!--    <RouterJumpBar v-model:nowRouterName="detailInfo.sku.skuName"/>-->
+    <div class="router-jump-bar">
+        <div class="router-bar">
+            <ul class="router-bar-list" id="router-bar-list" >
+            </ul>
+        </div>
+    </div>
 
     <div class="goods-show">
         <div class="goods-show-info">
@@ -91,8 +96,9 @@
                         {{$goodsSku := .sku}}
                         {{range $sku := .skus}}
                         {{if eq $sku.commodityAreaId $goodsSku.commodityAreaId}}
+
                         <div class="info-left-select-param-btn"
-                             onclick="RouterJumpId({{$sku.id}})" areaId="{{$sku.commodityAreaId}}">
+                                                     onclick="RouterJumpId({{$sku.id}})" areaId="{{$sku.commodityAreaId}}">
                             <div class="ilspb-selector">
 
                                 <svg data-v-1f073385="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"
@@ -295,7 +301,7 @@
                                     <img src="{{.skuImage}}" alt="图片"/>
                                 </div>
                                 <div class="recommend-item-name">
-                                    {{ .skuName }} {{.id }}
+                                    {{ .skuName }}nihao 这个是正文
                                 </div>
                             </div>
                             {{end}}

+ 3 - 6
file/static/index.html

@@ -6,7 +6,6 @@
     <link rel="stylesheet" href="/api/static/css/index.css">
     <link rel="stylesheet" href="/api/static/css/carousel.css">
     <link rel="stylesheet" href="/api/static/css/home.css">
-    <script src="/api/static/js/handler.js"></script>
     <meta name="description"
           content="海外数字商城,为全球用户提供谷歌、苹果、脸书等购买服务,还有苹果、谷歌、steam礼品卡等购买渠道。在这里您还能进行steam代充、steam海外代充、steam钱包代充等,7*24小时为您提供满意的交易。">
 </head>
@@ -160,7 +159,7 @@
         <div class="gift-pack-content">
             {{range $package := .packageList}}
             <div class="content-item"
-                 onclick="JumpRouter('/detail/'+{{$package.shopAdviceCarousel.toId}},{{$package.shopAdviceCarousel.toType}})">
+                 onclick="JumpRouter('/detail?skuId={{$package.shopAdviceCarousel.toId}}', '首页')">
                 <div class="content-item-img">
                     <img src="{{$package.shopAdviceCarousel.imageUrl}}"/>
                 </div>
@@ -183,11 +182,9 @@
             {{end}}
         </div>
     </div>
-
     {{range $item := .list}}
     {{if ne $item nil}}
-
-    <div class="card" v-if="ShopHomeTopic">
+    <div class="card">
         <div class="card-header">
             <div class="card-title">
                 <span>    {{$item.topic.topicName}}</span>
@@ -205,7 +202,7 @@
             {{$itemLen := len $item.skus}}
             {{if ne $itemLen 0}}
             {{range $index, $sku := $item.skus}}
-            <div class="goods-info" index="{{$index}}" onclick="JumpRouter('/detail?skuId='+{{$sku.id}})">
+            <div class="goods-info" index="{{$index}}" onclick="JumpRouter('/detail?skuId={{$sku.id}}')">
                 <!--      //获取图片-->
                 <div class="goods-img"><img src="{{ $sku.skuImage }}" alt=""></div>
                 <div class="goods-name">{{$sku.skuName }}

+ 7 - 0
file/static/info.html

@@ -9,6 +9,13 @@
 <body>
 {{template "NavigationBar.tmpl" .}}
 <div class="page">
+    <div class="router-jump-bar">
+        <div class="router-bar">
+            <ul class="router-bar-list" id="router-bar-list" >
+            </ul>
+        </div>
+    </div>
+
     <div class="info-page">
         <div class="info-title">
             {{ .title }}

+ 58 - 0
file/static/search.html

@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>搜索-</title>
+    <link rel="stylesheet" href="/api/static/css/search.css">
+    <link rel="stylesheet" href="/api/static/css/index.css">
+</head>
+<body>
+{{template "NavigationBar.tmpl" .}}
+<div class="search-result">
+    <div class="search-result-body">
+        <div class="search-result-title">
+            <div class="search-result-title-text">搜索结果</div>
+        </div>
+
+        <div class="search-total">{{.count}}</div>
+
+        <div class="card-list">
+            {{range $i,$vo := .list}}
+            <div class="goods-sku-info" onclick="JumpRouter('/detail?skuId={{$vo.id}}')">
+                <div class="goods-img"><img src="{{.skuImage}}" alt=""></div>
+                <div class="goods-name">{{ .skuName }}</div>
+                <div class="goods-price">{{ .price }}</div>
+                {{if ne .historicalPrices .price }}
+                <div >
+                    <div class="goods--original-price">¥{{ .historicalPrices }}</div>
+                    <div class="goods-discount-percentage">{1{ discountPrice }}</div>
+                </div>
+                {{else}}
+                <div >
+                    <div class="goods--original-price">¥{{ .historicalPrices }}</div>
+                </div>
+                {{end}}
+            </div>
+            {{end}}
+        </div>
+        <!--      <el-pagination :current-article="vo.pageNum" :article-size="vo.pageSize" :total="vo.total"-->
+        <!--                     :article-sizes="[12, 24, 36, 48]" @size-change="GetSearch" @current-change="GetSearch"-->
+        <!--                     layout="total, sizes, prev, pager, next, jumper"></el-pagination>-->
+        <div class="search-pagination">
+            {{if gt .count 11}}
+            666
+            <el-pagination background
+                           @current-change="GetSearch"
+                           :current-page="vo.pageNum"
+                           :page-size="vo.pageSize"
+                           :hide-on-single-page="true"
+                           :total="vo.total"
+                           layout="prev, pager, next ">
+            </el-pagination>
+            {{end}}
+        </div>
+    </div>
+</div>
+{{template "BottomBar.tmpl" .}}
+</body>
+</html>

+ 3 - 3
file/static/topic.html

@@ -28,7 +28,7 @@
             <div class="anchor-arrow-body anchor-div" @click="setFirstItemIndex(firstItemIndex-1)"></div>
         </div>
         <div class="topic-anchor-body anchor-div">
-            {{range  $index, $type :=.types}}
+            {{range $index, $type :=.types}}
             <div class="topic-anchor-item" onclick="jumpClass('{{$index}}')">
                 <div class="anchor-item-body">
                     <div class="topic-anchor-item-img">
@@ -53,13 +53,13 @@
     <div class="topic-body">
 
         {{range $index, $type :=.types}}
-        <div class="topic-body-list" >
+        <div class="topic-body-list">
             <div class="topic-body-title to-class{{$index}}">
                 {{ .type.typeName }}
             </div>
             <div class="topic-body-items">
                 {{range .skuList}}
-                <div class="topic-body-item" onclick="JumpRouter('/detail?skuId='+{{.id}})">
+                <div class="topic-body-item" onclick="JumpRouter('/detail?skuId={{.id}}')">
                     <div class="topic-body-left">
                         <div class="topic-item-img">
                             <img src="{{.skuImage}}" alt="image">

+ 2 - 0
router/DetailRouter.go

@@ -76,3 +76,5 @@ func GetSearchByKey(c *gin.Context) {
 	c.JSON(200, CreateResultData(vo))
 	return
 }
+
+//搜索

+ 24 - 0
router/TestRouter.go

@@ -23,6 +23,7 @@ func TestRouth(engine *gin.RouterGroup) {
 		PushRouter(user, "GET", "/home", Home)
 		PushRouter(user, "GET", "/topic", Topic)
 		PushRouter(user, "GET", "/detail", Detail)
+		PushRouter(user, "GET", "/search", SearchPage)
 		PushRouter(user, "GET", "/info/:infoName", InfoPage)
 	}
 
@@ -164,6 +165,29 @@ func InfoPage(c *gin.Context) {
 
 }
 
+func SearchPage(c *gin.Context) {
+	key := c.Query("key")
+	pageNum := c.Query("pageNum")
+	pageSize := c.Query("pageSize")
+
+	fmt.Println("key:", key, "num:", pageNum, "size:", pageSize)
+	m := make(map[string]interface{})
+	arr, count, err := dao.GetSkuByKey2(key, cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(401, "未查询到结果"))
+		return
+	}
+	arrM := map[string]interface{}{
+		"list": arr,
+	}
+	list, err := json.Marshal(arrM)
+	fmt.Println("list:", string(list))
+	json.Unmarshal(list, &m)
+	m["count"] = count
+	fmt.Println("map:", m)
+	c.HTML(http.StatusOK, "search.html", m)
+}
+
 func GetUserId(c *gin.Context) int64 {
 	header := c.GetHeader("auth-sign")
 	if header == "" {