三方接口

This commit is contained in:
wuchao 2024-06-17 16:29:39 +08:00
parent 79c642932c
commit 39cbe5a8ba
20 changed files with 342 additions and 5 deletions

View File

@ -4,4 +4,6 @@ const (
TOKEN_PRE = "player_token_"
TOKEN_Admin = "Admin_token_"
ADMIN_V1 = "/admin/api/v1"
FRONT_API_V1 = "/api/v1"
)

View File

@ -103,7 +103,7 @@ func GenRequest(c *gin.Context, request interface{}) (msgs []string, err error)
if c.Request.Method == "GET" || c.Request.Method == "DELETE" {
err = c.ShouldBindQuery(request)
} else {
err = c.ShouldBindJSON(request)
err = c.ShouldBind(request)
}
if err == nil {

View File

@ -0,0 +1 @@
package front

View File

@ -0,0 +1,12 @@
package front
import (
"github.com/gin-gonic/gin"
"qteam/app/http/controllers"
"qteam/app/services"
)
func VoucherList(c *gin.Context) {
code, data := services.VoucherList()
controllers.HandCodeRes(c, data, code)
}

View File

@ -0,0 +1 @@
package entities

View File

@ -0,0 +1 @@
package entities

View File

@ -0,0 +1,43 @@
package entities
import (
"qteam/app/models/brandmodel"
"qteam/app/models/productsmodel"
"qteam/config"
)
type VoucherListResponse struct {
MilkUrl string `json:"milkUrl"`
MilkList []MilkList `json:"milkList"`
MilkVoucherList []MilkVoucherList `json:"milkVoucherList"`
}
type MilkList struct {
BrandLogo string `json:"brandLogo"`
BrandFlag string `json:"brandFlag"`
}
func (this *MilkList) ResponseFromDb(in brandmodel.Brand) {
this.BrandFlag = in.Flag
this.BrandLogo = in.Logo
}
type MilkVoucherList struct {
BrandFlag string `json:"brandFlag"`
VoucherTitle string `json:"voucherTitle"`
VoucherUrl string `json:"voucherUrl"`
VoucherIcon string `json:"voucherIcon"`
VoucherAmount string `json:"voucherAmount"`
VoucherOriginalPrice string `json:"voucherOriginalPrice"`
VoucherStatus string `json:"voucherStatus"`
}
func (this *MilkVoucherList) ResponseFromDb(in productsmodel.MilkProductsList) {
this.BrandFlag = in.Flag
this.VoucherTitle = in.Name
this.VoucherUrl = config.GetConf().YouChu.MilkUrl + "?voucher_id=" + in.Id
this.VoucherIcon = in.MainImage
this.VoucherAmount = in.ShowPrice
this.VoucherOriginalPrice = in.Price
this.VoucherStatus = in.Status
}

View File

@ -1,7 +1,12 @@
package requestmapping
import "qteam/app/constants/common"
var FrontRequestMap = map[string]func() interface{}{
//"/v1/login": func() interface{} {
// return new(front.LoginRequest)
//},
// 奶茶专区代金券列表
common.FRONT_API_V1 + "/VoucherList": func() interface{} { return new(struct{}) },
}

View File

@ -4,7 +4,9 @@ package routes
* 配置路由
*/
import (
"qteam/app/constants/common"
"qteam/app/http/controllers"
"qteam/app/http/controllers/front"
"qteam/app/http/middlewares"
"qteam/app/http/trace"
"qteam/app/utils/metric"
@ -44,10 +46,10 @@ func RegisterRoute(router *gin.Engine) {
router.NoRoute(controllers.Error404)
//api版本
//v1 := router.Group("/v1", middlewares.ValidateRequest())
//{
//
//}
v1 := router.Group(common.FRONT_API_V1, middlewares.ValidateRequest())
{
v1.POST("/VoucherList", front.VoucherList)
}
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

View File

@ -0,0 +1,43 @@
package brandmodel
import (
"github.com/qit-team/snow-core/db"
"sync"
"time"
)
var (
once sync.Once
m *BrandModel
)
// 实体
type Brand struct {
Id int `xorm:"'id' int(10) pk autoincr"`
Logo string `xorm:"'logo' varchar(255)"`
Flag string `xorm:"'flag' varchar(50)"`
Name string `xorm:"'name' varchar(50)"`
State int `xorm:"'state' TINYINT"`
CreateTime time.Time `xorm:"'create_time' datetime"`
UpdateTime time.Time `xorm:"'update_time' datetime"`
Deleted time.Time `xorm:"'Deleted' datetime"`
}
// 表名
func (m *Brand) TableName() string {
return "Brand"
}
// 私有化防止被外部new
type BrandModel struct {
db.Model //组合基础Model集成基础Model的属性和方法
}
// 单例模式
func GetInstance() *BrandModel {
once.Do(func() {
m = new(BrandModel)
//m.DiName = "" //设置数据库实例连接默认db.SingletonMain
})
return m
}

View File

@ -0,0 +1,52 @@
package ordersmodel
import (
"github.com/qit-team/snow-core/db"
"sync"
"time"
)
var (
once sync.Once
m *OrdersModel
)
// 实体
type Orders struct {
Id string `xorm:"'id' UNSIGNED INT pk autoincr"`
OrderNo string `xorm:"'order_no' varchar(50)"`
UserId int `xorm:"'user_id' int(0)"`
YouchuUserId int `xorm:"'YouChu_User_id' int(11)"`
UserName string `xorm:"'user_name' varchar(11)"`
Mobile string `xorm:"'mobile' varchar(13)"`
ProductId int `xorm:"'product_id' int(0)"`
ProductName string `xorm:"'product_name' varchar(50)"`
Price string `xorm:"'price' decimal(10,2)"`
ActivityId string `xorm:"'activity_id' UNSIGNED INT"`
State string `xorm:"'state' UNSIGNED TINYINT"`
VoucherId int `xorm:"'voucher_id' int(0)"`
VoucherLink string `xorm:"'voucher_link' varchar(255)"`
CreateTime time.Time `xorm:"'create_time' datetime"`
UpdateTime time.Time `xorm:"'update_time' datetime"`
ExchangeTime time.Time `xorm:"'exchange_time' datetime"`
Deleted time.Time `xorm:"'Deleted' datetime"`
}
// 表名
func (m *Orders) TableName() string {
return "Orders"
}
// 私有化防止被外部new
type OrdersModel struct {
db.Model //组合基础Model集成基础Model的属性和方法
}
// 单例模式
func GetInstance() *OrdersModel {
once.Do(func() {
m = new(OrdersModel)
//m.DiName = "" //设置数据库实例连接默认db.SingletonMain
})
return m
}

View File

@ -0,0 +1,55 @@
package productsmodel
import (
"github.com/qit-team/snow-core/db"
"sync"
"time"
)
var (
once sync.Once
m *ProductsModel
)
// 实体
type Products struct {
Id string `xorm:"'id' UNSIGNED BIGINT pk autoincr"`
Name string `xorm:"'name' varchar(255)"`
MainImage string `xorm:"'main_image' varchar(255)"`
Brand string `xorm:"'brand' varchar(100)"`
BrandId int `xorm:"'brand_id' int(10)"`
Stock string `xorm:"'stock' UNSIGNED INT"`
ShowPrice string `xorm:"'show_price' decimal(10,2)"`
Price string `xorm:"'price' decimal(10,2)"`
Type string `xorm:"'type' UNSIGNED TINYINT"`
CreateTime time.Time `xorm:"'create_time' datetime"`
UpdateTime time.Time `xorm:"'update_time' datetime"`
Deleted time.Time `xorm:"'Deleted' datetime"`
Status string `xorm:"'status' UNSIGNED TINYINT"`
Description string `xorm:"'description' varchar(500)"`
ThirdProductId int `xorm:"'third_product_Id' int(0)"`
}
type MilkProductsList struct {
Products `xorm:"extends"`
Flag string `xorm:"'flag' varchar(50)"`
}
// 表名
func (m *Products) TableName() string {
return "Products"
}
// 私有化防止被外部new
type ProductsModel struct {
db.Model //组合基础Model集成基础Model的属性和方法
}
// 单例模式
func GetInstance() *ProductsModel {
once.Do(func() {
m = new(ProductsModel)
//m.DiName = "" //设置数据库实例连接默认db.SingletonMain
})
return m
}

View File

@ -0,0 +1,43 @@
package usersmodel
import (
"github.com/qit-team/snow-core/db"
"sync"
"time"
)
var (
once sync.Once
m *UsersModel
)
// 实体
type Users struct {
Id string `xorm:"'id' UNSIGNED INT pk autoincr"`
YouchuUserFlag int `xorm:"'YouChu_user_flag' int(10)"`
Name string `xorm:"'name' varchar(128)"`
Phone string `xorm:"'phone' char(11)"`
Status string `xorm:"'status' UNSIGNED TINYINT"`
CreateTime time.Time `xorm:"'create_time' datetime"`
UpdateTime time.Time `xorm:"'update_time' datetime"`
Deleted time.Time `xorm:"'Deleted' datetime"`
}
// 表名
func (m *Users) TableName() string {
return "Users"
}
// 私有化防止被外部new
type UsersModel struct {
db.Model //组合基础Model集成基础Model的属性和方法
}
// 单例模式
func GetInstance() *UsersModel {
once.Do(func() {
m = new(UsersModel)
//m.DiName = "" //设置数据库实例连接默认db.SingletonMain
})
return m
}

View File

@ -0,0 +1,10 @@
package services
import (
"qteam/app/models/brandmodel"
)
func MilkBrandList() (code int, brandData []brandmodel.Brand) {
err := brandmodel.GetInstance().GetDb().Where("state = ?", 1).Find(&brandData)
return handErr(err), brandData
}

View File

@ -0,0 +1,10 @@
package services
import "qteam/app/models/productsmodel"
func MilkProductList() (code int, productList []productsmodel.MilkProductsList) {
err := productsmodel.GetInstance().GetDb().Alias("a").
Join("INNER", "brand b", "a.brand_id = b.id").
Where("a.status = ?", 1).Find(&productList)
return handErr(err), productList
}

View File

@ -0,0 +1,34 @@
package services
import (
"github.com/ahmetb/go-linq/v3"
"qteam/app/http/entities"
"qteam/app/models/brandmodel"
"qteam/app/models/productsmodel"
"qteam/config"
)
func VoucherList() (code int, VoucherListResponse entities.VoucherListResponse) {
VoucherListResponse.MilkUrl = config.GetConf().YouChu.MilkUrl
var BrandData []brandmodel.Brand
var VoucherData []productsmodel.MilkProductsList
code, BrandData = MilkBrandList()
if BrandData != nil {
var MilkList []entities.MilkList
linq.From(BrandData).SelectT(func(in brandmodel.Brand) (d entities.MilkList) {
d.ResponseFromDb(in)
return
}).ToSlice(&MilkList)
VoucherListResponse.MilkList = MilkList
}
code, VoucherData = MilkProductList()
if VoucherData != nil {
var MilkVoucherList []entities.MilkVoucherList
linq.From(VoucherData).SelectT(func(in productsmodel.MilkProductsList) (d entities.MilkVoucherList) {
d.ResponseFromDb(in)
return
}).ToSlice(&MilkVoucherList)
VoucherListResponse.MilkVoucherList = MilkVoucherList
}
return
}

15
app/services/common.go Normal file
View File

@ -0,0 +1,15 @@
package services
import (
"qteam/app/constants/errorcode"
"qteam/app/utils"
)
func handErr(err error) int {
if err != nil {
utils.Log(nil, "sys err", err.Error())
return errorcode.SystemError
} else {
return errorcode.Success
}
}

View File

@ -36,6 +36,11 @@ type Config struct {
OpenApi OpenApi `toml:"OpenApi"`
Jwt Jwt `toml:"Jwt"`
AliOss AliOss `toml:"AliOss"`
YouChu YouChu `toml:"YouChu"`
}
type YouChu struct {
MilkUrl string
}
type AliOss struct {

1
go.mod
View File

@ -35,6 +35,7 @@ require (
github.com/KyleBanks/depth v1.2.1 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/ahmetb/go-linq/v3 v3.2.0 // indirect
github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 // indirect
github.com/alibabacloud-go/tea v1.1.17 // indirect
github.com/alibabacloud-go/tea-utils v1.4.4 // indirect

2
go.sum
View File

@ -61,6 +61,8 @@ github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
github.com/agiledragon/gomonkey/v2 v2.3.1 h1:k+UnUY0EMNYUFUAQVETGY9uUTxjMdnUkP0ARyJS1zzs=
github.com/agiledragon/gomonkey/v2 v2.3.1/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY=
github.com/ahmetb/go-linq/v3 v3.2.0 h1:BEuMfp+b59io8g5wYzNoFe9pWPalRklhlhbiU3hYZDE=
github.com/ahmetb/go-linq/v3 v3.2.0/go.mod h1:haQ3JfOeWK8HpVxMtHHEMPVgBKiYyQ+f1/kLZh/cj9U=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=