Jelajahi Sumber

增加游客获取商城商品详情(三级商城)接口

zhou.xiaoning 4 tahun lalu
induk
melakukan
4009e2d6ee
6 mengubah file dengan 215 tambahan dan 12 penghapusan
  1. 40 0
      controllers/hsby/hsby.go
  2. 48 0
      docs/docs.go
  3. 48 0
      docs/swagger.json
  4. 31 0
      docs/swagger.yaml
  5. 46 12
      models/hsby.go
  6. 2 0
      routers/router.go

+ 40 - 0
controllers/hsby/hsby.go

@@ -1222,6 +1222,46 @@ func QueryHsbyMarketGoodses(c *gin.Context) {
 	}
 }
 
+// QueryHsbyVisitorMarketGoodsDetailReq 查询游客三级市场(商城)商品信息详情请求参数
+type QueryHsbyVisitorMarketGoodsDetailReq struct {
+	GoodsID int `form:"goodsID" binding:"required"`
+}
+
+// QueryHsbyVisitorMarketGoodsDetail 查询游客三级市场(商城)商品信息详情
+// @Summary 查询游客三级市场(商城)商品信息详情
+// @Description 说明:使用于未登录状态查询商城商品详情,登录后请使用QueryHsbyMarketGoodsDetail接口进行查询。
+// @Produce json
+// @Security ApiKeyAuth
+// @Param goodsID query int true "商品ID"
+// @Success 200 {object} models.HsbyMarketGoodsDetail
+// @Failure 500 {object} app.Response
+// @Router /HSBY/QueryHsbyVisitorMarketGoodsDetail [get]
+// @Tags 定制【海商报业】
+func QueryHsbyVisitorMarketGoodsDetail(c *gin.Context) {
+	appG := app.Gin{C: c}
+
+	// 获取请求参数
+	var req QueryHsbyVisitorMarketGoodsDetailReq
+	if err := appG.C.ShouldBindQuery(&req); err != nil {
+		logger.GetLogger().Errorf("QueryHsbyVisitorMarketGoodsDetail failed: %s", err.Error())
+		appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
+		return
+	}
+
+	// 获取数据
+	detail, err := models.GetHsbyMarketGoodsDetailByVisitor(req.GoodsID)
+	if err != nil {
+		// 查询失败
+		logger.GetLogger().Errorf("QueryHsbyVisitorMarketGoodsDetail failed: %s", err.Error())
+		appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
+		return
+	}
+
+	// 查询成功返回
+	logger.GetLogger().Debugln("QueryHsbyVisitorMarketGoodsDetail successed: %v", detail)
+	appG.Response(http.StatusOK, e.SUCCESS, detail)
+}
+
 // QueryHsbyMarketGoodsDetailReq 查询三级市场(商城)商品信息详情请求参数
 type QueryHsbyMarketGoodsDetailReq struct {
 	OrderID   int `form:"orderID" binding:"required"`

+ 48 - 0
docs/docs.go

@@ -2713,6 +2713,46 @@ var doc = `{
                 }
             }
         },
+        "/HSBY/QueryHsbyVisitorMarketGoodsDetail": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "description": "说明:使用于未登录状态查询商城商品详情,登录后请使用QueryHsbyMarketGoodsDetail接口进行查询。",
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "定制【海商报业】"
+                ],
+                "summary": "查询游客三级市场(商城)商品信息详情",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "商品ID",
+                        "name": "goodsID",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/models.HsbyMarketGoodsDetail"
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/HSBY/QueryHsbyVisitorMarketGoodses": {
             "get": {
                 "security": [
@@ -9058,6 +9098,10 @@ var doc = `{
                     "description": "商品名称",
                     "type": "string"
                 },
+                "goodsprice": {
+                    "description": "商品价格",
+                    "type": "number"
+                },
                 "hascoupon": {
                     "description": "是否可用优惠卷",
                     "type": "boolean"
@@ -9174,6 +9218,10 @@ var doc = `{
                     "description": "商品名称",
                     "type": "string"
                 },
+                "goodsprice": {
+                    "description": "商品价格",
+                    "type": "number"
+                },
                 "hotindex": {
                     "description": "景点热度",
                     "type": "integer"

+ 48 - 0
docs/swagger.json

@@ -2697,6 +2697,46 @@
                 }
             }
         },
+        "/HSBY/QueryHsbyVisitorMarketGoodsDetail": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "description": "说明:使用于未登录状态查询商城商品详情,登录后请使用QueryHsbyMarketGoodsDetail接口进行查询。",
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "定制【海商报业】"
+                ],
+                "summary": "查询游客三级市场(商城)商品信息详情",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "商品ID",
+                        "name": "goodsID",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/models.HsbyMarketGoodsDetail"
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/HSBY/QueryHsbyVisitorMarketGoodses": {
             "get": {
                 "security": [
@@ -9042,6 +9082,10 @@
                     "description": "商品名称",
                     "type": "string"
                 },
+                "goodsprice": {
+                    "description": "商品价格",
+                    "type": "number"
+                },
                 "hascoupon": {
                     "description": "是否可用优惠卷",
                     "type": "boolean"
@@ -9158,6 +9202,10 @@
                     "description": "商品名称",
                     "type": "string"
                 },
+                "goodsprice": {
+                    "description": "商品价格",
+                    "type": "number"
+                },
                 "hotindex": {
                     "description": "景点热度",
                     "type": "integer"

+ 31 - 0
docs/swagger.yaml

@@ -3333,6 +3333,9 @@ definitions:
       goodsname:
         description: 商品名称
         type: string
+      goodsprice:
+        description: 商品价格
+        type: number
       hascoupon:
         description: 是否可用优惠卷
         type: boolean
@@ -3423,6 +3426,9 @@ definitions:
       goodsname:
         description: 商品名称
         type: string
+      goodsprice:
+        description: 商品价格
+        type: number
       hotindex:
         description: 景点热度
         type: integer
@@ -8118,6 +8124,31 @@ paths:
       summary: 查询热卖商品列表(二级市场挂牌点选)
       tags:
       - 定制【海商报业】
+  /HSBY/QueryHsbyVisitorMarketGoodsDetail:
+    get:
+      description: 说明:使用于未登录状态查询商城商品详情,登录后请使用QueryHsbyMarketGoodsDetail接口进行查询。
+      parameters:
+      - description: 商品ID
+        in: query
+        name: goodsID
+        required: true
+        type: integer
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/models.HsbyMarketGoodsDetail'
+        "500":
+          description: Internal Server Error
+          schema:
+            $ref: '#/definitions/app.Response'
+      security:
+      - ApiKeyAuth: []
+      summary: 查询游客三级市场(商城)商品信息详情
+      tags:
+      - 定制【海商报业】
   /HSBY/QueryHsbyVisitorMarketGoodses:
     get:
       description: 说明:使用于未登录状态查询商城商品列表,登录后请使用QueryHsbyMarketGoodses接口进行查询。

+ 46 - 12
models/hsby.go

@@ -1539,10 +1539,11 @@ type HsbyMarketGoods struct {
 	Quoteminunit int64   `json:"quoteminunit"  xorm:"'QUOTEMINUNIT'"`              // 行情最小变动单位 [整数,报价小数位一起使用]
 	Agreeunit    float64 `json:"agreeunit"  xorm:"'AGREEUNIT'"`                    // 合约单位
 
-	Hotindex   int32  `json:"hotindex"  xorm:"'HOTINDEX'"`     // 景点热度
-	Videourls  string `json:"videourls"  xorm:"'VIDEOURLS'"`   // 介绍视频[多张用逗号分隔]
-	Picurls    string `json:"picurls"  xorm:"'PICURLS'"`       // 介绍图片[多张用逗号分隔]
-	Categoryid int32  `json:"categoryid"  xorm:"'CATEGORYID'"` // 类别ID(WRCATEGORY)
+	Hotindex   int32   `json:"hotindex"  xorm:"'HOTINDEX'"`     // 景点热度
+	Videourls  string  `json:"videourls"  xorm:"'VIDEOURLS'"`   // 介绍视频[多张用逗号分隔]
+	Picurls    string  `json:"picurls"  xorm:"'PICURLS'"`       // 介绍图片[多张用逗号分隔]
+	Categoryid int32   `json:"categoryid"  xorm:"'CATEGORYID'"` // 类别ID(WRCATEGORY)
+	Goodsprice float64 `json:"goodsprice"  xorm:"'GOODSPRICE'"` // 商品价格
 
 	Currency     string `json:"currency" xorm:"'CURRENCY'"`         // 货币
 	Currencysign string `json:"currencysign" xorm:"'CURRENCYSIGN'"` // 货币符号
@@ -1564,7 +1565,7 @@ func GetHsbyMarketGoodsesByVisitor(marketIDs string, categoryID int, goodsIDs st
 	session := engine.Table("GOODS G").
 		Select(`'1' ORDERIDSTR, 2 ACCOUNTID, 0 BUYORSELL, 
 				G.GOODSID, G.MARKETID, G.GOODSCODE, G.GOODSNAME, G.DECIMALPLACE, G.QUOTEMINUNIT, G.AGREEUNIT, 
-				GX.HOTINDEX, GX.PICURLS, GX.CATEGORYID, GX.GOODSDESC, 
+				GX.HOTINDEX, GX.PICURLS, GX.CATEGORYID, GX.GOODSDESC, GX.GOODSPRICE, 
 				E.ENUMDICNAME CURRENCY, E.PARAM2 CURRENCYSIGN, 
 				M.TRADEMODE`).
 		Join("LEFT", "HSBY_GOODSEX GX", "GX.GOODSID = G.GOODSID").
@@ -1620,7 +1621,7 @@ func GetHsbyMarketGoodses(marketIDs string, accountID, categoryID int, goodsIDs
 	session := engine.Table("TRADE_ORDERDETAIL T").
 		Select(`to_char(T.ORDERID) ORDERIDSTR, T.*, 
 				G.GOODSCODE, G.GOODSNAME, G.DECIMALPLACE, G.QUOTEMINUNIT, G.AGREEUNIT, 
-				GX.HOTINDEX, GX.PICURLS, GX.CATEGORYID, GX.GOODSDESC, 
+				GX.HOTINDEX, GX.PICURLS, GX.CATEGORYID, GX.GOODSDESC, GX.GOODSPRICE, 
 				E.ENUMDICNAME CURRENCY, E.PARAM2 CURRENCYSIGN, 
 				M.TRADEMODE, 
 				U.CUSTOMERNAME`).
@@ -1779,11 +1780,12 @@ type HsbyMarketGoodsDetail struct {
 	Quoteminunit int64   `json:"quoteminunit"  xorm:"'QUOTEMINUNIT'"`              // 行情最小变动单位 [整数,报价小数位一起使用]
 	Agreeunit    float64 `json:"agreeunit"  xorm:"'AGREEUNIT'"`                    // 合约单位
 
-	Hotindex   int32  `json:"hotindex"  xorm:"'HOTINDEX'"`     // 景点热度
-	Videourls  string `json:"videourls"  xorm:"'VIDEOURLS'"`   // 介绍视频[多张用逗号分隔]
-	Picurls    string `json:"picurls"  xorm:"'PICURLS'"`       // 介绍图片[多张用逗号分隔]
-	Categoryid int32  `json:"categoryid"  xorm:"'CATEGORYID'"` // 类别ID(WRCATEGORY)
-	Goodsdesc  string `json:"goodsdesc"  xorm:"'GOODSDESC'"`   // 商品详情
+	Hotindex   int32   `json:"hotindex"  xorm:"'HOTINDEX'"`     // 景点热度
+	Videourls  string  `json:"videourls"  xorm:"'VIDEOURLS'"`   // 介绍视频[多张用逗号分隔]
+	Picurls    string  `json:"picurls"  xorm:"'PICURLS'"`       // 介绍图片[多张用逗号分隔]
+	Categoryid int32   `json:"categoryid"  xorm:"'CATEGORYID'"` // 类别ID(WRCATEGORY)
+	Goodsdesc  string  `json:"goodsdesc"  xorm:"'GOODSDESC'"`   // 商品详情
+	Goodsprice float64 `json:"goodsprice"  xorm:"'GOODSPRICE'"` // 商品价格
 
 	Currency     string `json:"currency" xorm:"'CURRENCY'"`         // 货币
 	Currencysign string `json:"currencysign" xorm:"'CURRENCYSIGN'"` // 货币符号
@@ -1802,6 +1804,38 @@ type HsbyMarketGoodsDetail struct {
 	Buymaxqty int `json:"buymaxqty"  xorm:"'-'"` // 购买上限 [71] - 0为不限
 }
 
+// GetHsbyMarketGoodsDetailByVisitor 游客获取商城商品详情(三级商城)
+func GetHsbyMarketGoodsDetailByVisitor(goodsID int) (*HsbyMarketGoodsDetail, error) {
+	engine := db.GetEngine()
+
+	orders := make([]HsbyMarketGoodsDetail, 0)
+	// 游客商城商品以商品表为主表
+	session := engine.Table("GOODS G").
+		Select(`'1' ORDERIDSTR, 1 ACCOUNTID, 1 BUYORSELL, 1 ORDERQTY, 
+				G.GOODSCODE, G.GOODSNAME, G.DECIMALPLACE, G.QUOTEMINUNIT, G.AGREEUNIT, G.MARKETID, G.GOODSID, 
+				GX.HOTINDEX, GX.VIDEOURLS, GX.PICURLS, GX.CATEGORYID, GX.GOODSDESC, GX.GOODSPRICE, 
+				E.ENUMDICNAME CURRENCY, E.PARAM2 CURRENCYSIGN, 
+				M.TRADEMODE, 
+				H.VENDORNAME, H.VENDORATTR, H.VENDORPHONE`).
+		Join("LEFT", "HSBY_GOODSEX GX", "GX.GOODSID = G.GOODSID").
+		Join("LEFT", "ENUMDICITEM E", "E.ENUMITEMNAME = G.CURRENCYID and E.ENUMDICCODE = 'currency'").
+		Join("LEFT", "MARKET M", "M.MARKETID = G.MARKETID").
+		Join("LEFT", "HSBY_SUPPLIERINFO H", "H.VENDORID = GX.VENDORID").
+		Where("G.GOODSID = ?", goodsID)
+	if err := session.Find(&orders); err != nil {
+		return nil, err
+	}
+	// 无目标商品
+	if len(orders) == 0 {
+		return nil, nil
+	}
+	hsbyMarketGoodsDetail := orders[0]
+	// 最小交易手数在上层进行设置,这里暂设置为1
+	hsbyMarketGoodsDetail.LotSize = 1
+
+	return &hsbyMarketGoodsDetail, nil
+}
+
 // GetHsbyMarketGoodsDetail 获取商城商品详情(三级商城)
 func GetHsbyMarketGoodsDetail(orderID, accountID int) (*HsbyMarketGoodsDetail, error) {
 	engine := db.GetEngine()
@@ -1811,7 +1845,7 @@ func GetHsbyMarketGoodsDetail(orderID, accountID int) (*HsbyMarketGoodsDetail, e
 	session := engine.Table("TRADE_ORDERDETAIL T").
 		Select(`to_char(T.ORDERID) ORDERIDSTR, T.*, 
 				G.GOODSCODE, G.GOODSNAME, G.DECIMALPLACE, G.QUOTEMINUNIT, G.AGREEUNIT, 
-				GX.HOTINDEX, GX.VIDEOURLS, GX.PICURLS, GX.CATEGORYID, GX.GOODSDESC, 
+				GX.HOTINDEX, GX.VIDEOURLS, GX.PICURLS, GX.CATEGORYID, GX.GOODSDESC, GX.GOODSPRICE, 
 				E.ENUMDICNAME CURRENCY, E.PARAM2 CURRENCYSIGN, 
 				M.TRADEMODE, 
 				H.VENDORNAME, H.VENDORATTR, H.VENDORPHONE, 

+ 2 - 0
routers/router.go

@@ -285,6 +285,8 @@ func InitRouter() *gin.Engine {
 		hsbyR.GET("/QueryHsbyVisitorMarketGoodses", hsby.QueryHsbyVisitorMarketGoodses)
 		// 查询特卖商品列表(三级商城)
 		hsbyR.GET("/QueryHsbyMarketGoodses", hsby.QueryHsbyMarketGoodses)
+		// 查询游客三级市场(商城)商品信息详情
+		hsbyR.GET("/QueryHsbyVisitorMarketGoodsDetail", hsby.QueryHsbyVisitorMarketGoodsDetail)
 		// 查询三级市场(商城)商品信息详情
 		hsbyR.GET("/QueryHsbyMarketGoodsDetail", hsby.QueryHsbyMarketGoodsDetail)
 		// 我的优惠卷查询