golang实战项目-b2c电商平台项目(代码片段)

旧时星空 旧时星空     2022-12-24     179

关键词:

Golang实战项目-B2C电商平台项目(5)

实现商品上架

  • 本质是修改tb_item表中status=1
  • 之前在完成商品删除时已经在TbItemDao.go中编写了修改status值的函数,直接复用即可
  • 根据页面中内容,客户端给服务端发起请求后要求服务器端返回数据已经是EgoResult对应的json数据

在TbItemService中添加函数实现商品上架

//商品上架
func instockService(ids string) (e commons.EgoResult)
	count:=updStatusByIdsDao(strings.Split(ids,","),1)
	if count>0
		e.Status=200
	
	return

在TbItemController中添加函数,并修改Itemhandler()函数中内容

//商品上架
func instockController(w http.ResponseWriter, r *http.Request) 
	ids:=r.FormValue("ids")
	er:=instockService(ids)
	b,_:=json.Marshal(er)
	w.Header().Set("Content-Type","application/json;charset=utf-8")
	w.Write(b)

func ItemHandler() 
	commons.Router.HandleFunc("/showItem", showItemController)
	commons.Router.HandleFunc("/item/delete", delByIdsController)
	commons.Router.HandleFunc("/item/instock", instockController)

实现商品下架

  • 商品下架的本质是修改tb_item表中的status=2

在TbItemService.go中添加函数

//商品下架
func offStockService(ids string) (e commons.EgoResult)
	count:=updStatusByIdsDao(strings.Split(ids,","),2)
	if count>0
		e.Status=200
	
	return

在TbItemController.go中添加函数,并修改ItemController()函数内容

//商品下架
func offstockController(w http.ResponseWriter,r *http.Request)
	ids:=r.FormValue("ids")
	er:=offStockService(ids)
	b,_:=json.Marshal(er)
	w.Header().Set("Content-Type","application/json;charset=utf-8")
	w.Write(b)

新增商品之商品类目显示

新增商品是将需要选择该商品对应的类目即将该商品进行区分,类目区分由tree组件显示,即以树图的形式,每个节点代表一种商品类目

  • EasyUI Tree组件中每个节点属性如下,必须为这些名称,否则无法识别,所以需要在commons/EasyUI.go中新建一个结构体表示tree的节点
id:绑定节点的标识值。
text:显示的节点文本。
iconCls:显示的节点图标CSS类ID。
checked:该节点是否被选中。
state:节点状态,'open''closed'。
attributes:绑定该节点的自定义属性。
target:目标DOM对象。
  • Tree的state表示节点状态,如果节点是closed状态,节点将显示成文件夹的形式,可以打开这个节点,开始时EasyUI默认向服务器端发送当前节点的id.如果节点的状态是closed节点表示叶子节点,没有子节点
//tree
type EasyUITree struct 
	Id int `json:"id"`
	Text string `json:"text"`
	State string `json:"state"`

  • 在/item/cat/TbItemCatDao.go中添加新函数
/*
根据parent_id查询所有子类目
 */
func selByPid(pid int) (c []TbItemCat)
	rows,err:=commons.Dql("select * from tb_item_cat where parent_id=?",pid)
	if err!=nil
		fmt.Println(err)
		return nil
	
	c = make([]TbItemCat,0)
	for rows.Next()  
		var t TbItemCat
		rows.Scan(&t.Id,&t.ParentId,&t.Name,&t.Status,&t.SortOrder,&t.IsParent,&t.Created,&t.Updated)
		c= append(c,t)
	
	commons.CloseConn()
	return

  • 修改/item/cat/TbItemCat.go中结构体如下
//商品类目
type TbItemCat struct 
	Id        int
	ParentId  int
	Name      string
	Status    byte
	SortOrder int8
	IsParent  bool//此处由byte修改为bool
	Created   string
	Updated   string

  • 在/item/cat下新建TbItemCatController.go
import (
	"net/http"
	"strconv"
	"encoding/json"
	"commons"
)

func ItemCatHandler()
	commons.Router.HandleFunc("/item/cat/show",showItemCatController)


func showItemCatController(w http.ResponseWriter,r *http.Request)
	id:=r.FormValue("id")
	if id==""
		id="0"
	
	idInt,_:=strconv.Atoi(id)
	t:=showCatByPidService(idInt)
	b,_:=json.Marshal(t)
	w.Header().Set("Content-type","application/json;charset=utf-8")
	w.Write(b)

  • 在main.go中添加ItemCatHandler()函数的引用
import (
	"net/http"
	"html/template"
	"user"
	"commons"
	"github.com/gorilla/mux"
	"item"
	"item/cat"
)

//显示登录页面
func welcome(w http.ResponseWriter, r *http.Request) 
	t, _ := template.ParseFiles("view/login.html")
	t.Execute(w, nil)


//restful显示页面
func showPage(w http.ResponseWriter, r *http.Request) 
	vars := mux.Vars(r)
	t, _ := template.ParseFiles("view/" + vars["page"] + ".html")
	t.Execute(w, nil)

func main() 
	commons.Router.PathPrefix("/static").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
	commons.Router.HandleFunc("/", welcome)
	//满足/page/page格式的处理
	commons.Router.HandleFunc("/page/page", showPage)
	//用户
	user.UserHandler()
	//商品
	item.ItemHandler()
	//商品类目
	cat.ItemCatHandler()
	http.ListenAndServe(":80", commons.Router)

golang实战项目-b2c电商平台项目(代码片段)

Golang实战项目-B2C电商平台项目(5)实现商品上架本质是修改tb_item表中status=1之前在完成商品删除时已经在TbItemDao.go中编写了修改status值的函数,直接复用即可根据页面中内容,客户端给服务端发起请求后要求服务器端返回数据已... 查看详情

golang实战项目-b2c电商平台项目(代码片段)

Golang实战项目-B2C电商平台项目(4)多表查询正确显示叶子类目查询完商品信息后可以通过商品信息中Cid做为商品类目表的主键值进行查询页面中最终数据的效果和TbItem只差一个属性所以可以通过组合的形式实现typeTbItemChildstruct TbIt... 查看详情

golang实战项目-b2c电商平台项目(代码片段)

Golang实战项目-B2C电商平台项目(6)商品新增中上传图片商品新增中上传图片使用的是KindEditor的多文件上传组件.文件上传为异步上传方式.可以上传多个文件.当文件上传后要求服务器端返回数据格式如下.应该是map转换为json而不应... 查看详情

golang实战项目-b2c电商平台项目(代码片段)

Golang实战项目-B2C电商平台项目(7)商品新增商品新增时需要新增的是两个表的数据tb_item和tb_item_desc表(tb_item_param规格参数暂时不考虑),在本小节中只新增tb_item表中数据,下一小节新增商品描述新增成功后服务端返回EgoResult对应的json... 查看详情

golang实战项目-b2c电商平台项目(代码片段)

Golang实战项目-B2C电商平台项目(8)商品描述新增商品描述表(tb_item_desc)和商品表(tb_item)具有主外键关系,商品的主键也是商品描述的主键,使用工具函数生成的主键也当作商品描述表的主键商品描述中信息来源于页面中KindEditor的富文... 查看详情

golang实战项目-b2c电商平台(代码片段)

Golang实战项目-B2C电商平台(2)实现登录功能用户登录后判断帐号和密码是否正确,其中帐号可以是用户名、电话、邮箱.服务器端判断后返回EgoResult结构体对应的JSON数据,其中Status=200表示成功,成功后页面跳转到/index,Status只要不为... 查看详情

golang项目实战简明指南(代码片段)

原文地址开发环境搭建golang的开发环境搭建比较简单,由于是编译型语言,写好golang源码后,只需要执行gobuild就能将源码编译成对应平台(本文中默认为linux)上的可执行程序。本文不再赘述如何搭建golang开发环境,只说明下需要... 查看详情

golang项目实战简明指南(代码片段)

开发环境搭建golang的开发环境搭建比较简单,由于是编译型语言,写好golang源码后,只需要执行 gobuild 就能将源码编译成对应平台(本文中默认为linux)上的可执行程序。本文不再赘述如何搭建golang开发环境,只说... 查看详情

9-电商项目实战(代码片段)

1-电商项目分析报告;2-电商项目实战。导包及基础设置importreimportosimportglobimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfrompandasimportSeries,DataFrameimportseabornassnsfromsklearn.linear_modelimportLinearRe 查看详情

reactnative电商项目实战——1.创建项目(代码片段)

ReactNative简称RN是FaceBook发布的跨平台开发框架,它的设计理念是:使用ReactNative开发,既拥有Native的良好人机交互体验,又保留了React开发效率。一、为什么选择ReactNative在ReactNative发布的短短几年之内,已经有... 查看详情

reactnative电商项目实战——开篇(代码片段)

ReactNative简称RN是FaceBook发布的跨平台开发框架,它的设计理念是:使用ReactNative开发,既拥有Native的良好人机交互体验,又保留了React开发效率。RN技术已经非常成熟,我们没什么理由拒绝使用RN搭建一个完整的... 查看详情

[vue项目实战]电商系统项目初始化(代码片段)

电商系统项目概述电商项目基本业务概述电商后台管理系统的功能电商后台管理系统的开发模式(前后端分离)电商后台管理系统的技术选型1.前端项目技术栈2.后端技术栈前端项目初始化123通过`vueui`来初始化项目4.配置element... 查看详情

go实战|电商平台项目结构及配置文件初始化(代码片段)

文章目录1.必备环境与推荐软件1.1必备环境1.2推荐软件2.项目初始化3.配置文件初始化3.1config.ini3.2conf.go3.3main函数1.必备环境与推荐软件1.1必备环境mysqlredisgolang1.2推荐软件golandnavicatrunapi2.项目初始化创建项目创建文件夹项目结构mal... 查看详情

golang入门到项目实战|golang指向数组的指针(代码片段)

定义语法varptr[MAX]*int;表示数据里面的元素的类型是指针类型实例演示packagemainimport"fmt"constMAXint=3funcmain()a:=[]int1,3,5variintvarptr[MAX]*intfmt.Println(ptr)//这个打印出来的是[<nil><nil><nil>]fo 查看详情

java由浅入深开发企业级电商项目大牛实战开发电商后台项目实战视频教程

第1章课程介绍(实战本项目需具备Java,SSM,Linux等基础)本章详细介绍Java服务端课程的内容,然后还介绍下课程安排,最后会讲解一下高大上的架构是如何一步一步从一台服务器演变到高性能、高并发、高可用架构的过程并讲... 查看详情

golang入门到项目实战|golang函数(代码片段)

golang函数简介函数的go语言中的一级公民,我们把所有的功能单元都定义在函数中,可以重复使用。函数包含函数的名称、参数列表和返回值类型,这些构成了函数的签名(signature)。go语言中函数特性go语言... 查看详情

golang入门到项目实战|golang继承(代码片段)

golang本质上没有oop的概念,也没有继承的概念,但是可以通过结构体嵌套实现这个特性。例如packagemainimport"fmt"typeAnimalstructnamestringageintfunc(aAnimal)eat()fmt.Println("eat...")func(aAnimal)sleep()fmt.Println("sleep")typeDogstr... 查看详情

golang入门到项目实战|golang指针(代码片段)

Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。传递数据使用指针,而无需拷贝数据。类型指针不能进行偏移和运算。Go语言中的指针操作非常简单&#... 查看详情