k.zhang 1 год назад
Родитель
Сommit
3e5400e184

+ 36 - 0
apis/common/post.go

@@ -0,0 +1,36 @@
+package common
+
+import (
+	"bytes"
+	"fmt"
+	"io"
+	"net/http"
+)
+
+func Post(inputObj []byte, url string) ([]byte, error) {
+
+	fmt.Println(string(inputObj))
+	fmt.Println(url)
+	//数据转json
+	buffer := bytes.NewBuffer(inputObj)
+
+	request, err := http.NewRequest("POST", url, buffer)
+	if err != nil {
+
+		return nil, err
+	}
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
+	client := http.Client{}
+	//创建客户端
+	resp, err := client.Do(request) //发送请求
+	if err != nil {
+		return nil, err
+	}
+	respBytes, err := io.ReadAll(resp.Body)
+	if err != nil {
+		return nil, err
+	}
+
+	return respBytes, nil
+
+}

+ 3 - 0
apis/shanghu/base.go

@@ -21,5 +21,8 @@ func InitShangHuRouter(engine *gin.RouterGroup) {
 		v1.POST("/merchant/get", GetMerchant)                               //获取商户信息
 		v1.POST("/merchant/list", MerchantList)                             //获取商户列表
 		v1.POST("/merchant/update", UpdateMerchant)                         //更新商户信息
+		v1.POST("/client/card/list", ClientCardList)                        //客户端卡列表
+		v1.POST("/client/card/info", GetClientCard)                         //获取客户卡信息
+		v1.POST("/client/qr/get", GetClientCardQR)                          //获取二维码
 	}
 }

+ 131 - 0
apis/shanghu/client_card.go

@@ -1 +1,132 @@
 package shanghu
+
+import (
+	"duoduo/apis/common"
+	"duoduo/apis/pdd"
+	"duoduo/apis/shanghu/models"
+	"duoduo/models/shanghu"
+	"duoduo/tools"
+	"duoduo/tools/app"
+	"encoding/base64"
+	"encoding/json"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"strconv"
+)
+
+func ClientCardList(c *gin.Context) {
+	var inData models.ClientCardListRequest
+	var sqlData shanghu.MerchantClientCard
+
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	var pageSize = 10
+	var pageIndex = 1
+
+	if inData.PageSize != 0 {
+		pageSize = inData.PageSize
+	}
+	if inData.PageIndex != 0 {
+		pageIndex = inData.PageIndex
+	}
+	fmt.Println(inData.OpenId)
+	sqlData.OpenID = inData.OpenId
+
+	merchantCard, count, err := sqlData.GetOpenIdList(pageSize, pageIndex, inData.TypeList)
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+	app.PageOK(c, merchantCard, count, pageIndex, pageSize, app.Success)
+
+}
+
+func GetClientCard(c *gin.Context) {
+	var inData models.ClientCardRequest
+	var sqlData shanghu.MerchantClientCard
+
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+	sqlData.ID = inData.ClientCardId
+
+	clientCard, err := sqlData.GetMerchantCard()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	app.OK(c, clientCard, app.Success)
+
+}
+
+func GetClientCardQR(c *gin.Context) {
+	var inData models.ClientCardQRRequest
+	var sqlData shanghu.MerchantClientCard
+	var outData models.ClientCardQRReply
+	var qr models.QRRequest
+	var getQR models.GetQRRequest
+
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+	sqlData.ID = inData.MerchantCardId
+
+	val, err := pdd.DuoDuoGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx25357518f710b8ce&secret=83c7dca801a6c93fbfac3c91f57a4eb2")
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	err = tools.JsonUnmarshal(val, &outData)
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+	if outData.AccessToken == "" {
+		app.Error(c, 500, err, "token error")
+		return
+	}
+	url := "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + outData.AccessToken
+
+	qr.CheckPath = true
+	qr.Page = "pages/index/index"
+	qr.EnvVersion = "release"
+	qr.Scene = strconv.FormatInt(inData.MerchantCardId, 10)
+
+	data, err := json.Marshal(&qr)
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+	reply, err := common.Post(data, url)
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+	//err = json.Unmarshal(reply, &getQR)
+	//if err != nil {
+	//	app.Error(c, 500, err, err.Error())
+	//	return
+	//}
+
+	if getQR.Errcode != 0 {
+		app.Error(c, 500, err, getQR.Errmsg)
+		return
+	}
+
+	//fmt.Println(string(reply))
+
+	encoded := base64.StdEncoding.EncodeToString(reply)
+
+	app.OK(c, encoded, app.Success)
+
+}

+ 33 - 0
apis/shanghu/models/client.card.go

@@ -0,0 +1,33 @@
+package models
+
+type ClientCardListRequest struct {
+	OpenId    string `json:"open_id"`
+	PageSize  int    `json:"page_size"`
+	PageIndex int    `json:"page_index"`
+	TypeList  int    `json:"type_list"` //1-未开始 2-进行中 3-已结束
+}
+
+type ClientCardRequest struct {
+	ClientCardId int64 `json:"client_card_id"` //
+}
+
+type ClientCardQRRequest struct {
+	MerchantCardId int64 `json:"merchant_card_id"` //
+}
+
+type ClientCardQRReply struct {
+	AccessToken string `json:"access_token"`
+	ExpiresIn   int    `json:"expires_in"`
+}
+
+type QRRequest struct {
+	Page       string `json:"page"`
+	Scene      string `json:"scene"`
+	CheckPath  bool   `json:"check_path"`
+	EnvVersion string `json:"env_version"`
+}
+
+type GetQRRequest struct {
+	Errcode int    `json:"errcode"`
+	Errmsg  string `json:"errmsg"`
+}

+ 52 - 11
models/shanghu/client.card.go

@@ -1,24 +1,65 @@
 package shanghu
 
 import (
+	orm "duoduo/database"
 	"time"
 )
 
 // 用户买卡信息,用于判断用户买卡的上级分销人员,如果没有分销人员默认平台
 type MerchantClientCard struct {
-	ID               int64     `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"`       // 主键
-	MerchantCardID   int64     `gorm:"column:merchant_card_id;type:bigint(20)" json:"merchant_card_id"`      // 商户卡id
-	NumberUse        int       `gorm:"column:number_use;type:int(11)" json:"number_use"`                     // 使用次数
-	ClientInviteCode string    `gorm:"column:client_Invite_code;type:varchar(10)" json:"client_Invite_code"` // 买卡人邀请码,没邀请码默认使用官方的
-	MerchantCardTime int64     `gorm:"column:merchant_card_time;type:bigint(20)" json:"merchant_card_time"`  // 商户卡有效期
-	OpenID           string    `gorm:"column:open_id;type:varchar(255);NOT NULL" json:"open_id"`             // openid
-	CreateBy         int64     `gorm:"column:create_by;type:bigint(20)" json:"create_by"`                    // 创建者
-	UpdateBy         int64     `gorm:"column:update_by;type:bigint(20)" json:"update_by"`                    // 更新者
-	CreatedAt        time.Time `gorm:"column:created_at;type:datetime(3)" json:"created_at"`                 // 创建时间
-	UpdatedAt        time.Time `gorm:"column:updated_at;type:datetime(3)" json:"updated_at"`                 // 最后更新时间
-	DeletedAt        time.Time `gorm:"column:deleted_at;type:datetime(3)" json:"deleted_at"`                 // 删除时间
+	ID               int64     `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"`        // 主键
+	MerchantCardID   int64     `gorm:"column:merchant_card_id;type:bigint(20)" json:"merchant_card_id"`       // 商户卡id
+	TotalNumber      int       `gorm:"column:total_number;type:int(11)" json:"total_number"`                  // 总次数
+	MerchantCardName string    `gorm:"column:merchant_card_name;type:varchar(255)" json:"merchant_card_name"` // 商户卡名称
+	NumberUse        int       `gorm:"column:number_use;type:int(11)" json:"number_use"`                      // 使用次数
+	ClientInviteCode string    `gorm:"column:client_Invite_code;type:varchar(10)" json:"client_Invite_code"`  // 买卡人邀请码,没邀请码默认使用官方的
+	MerchantCardTime int64     `gorm:"column:merchant_card_time;type:bigint(20)" json:"merchant_card_time"`   // 商户卡有效期
+	OpenID           string    `gorm:"column:open_id;type:varchar(255);NOT NULL" json:"open_id"`              // openid
+	CreateBy         int64     `gorm:"column:create_by;type:bigint(20)" json:"create_by"`                     // 创建者
+	UpdateBy         int64     `gorm:"column:update_by;type:bigint(20)" json:"update_by"`                     // 更新者
+	CreatedAt        time.Time `gorm:"column:created_at;type:datetime(3)" json:"created_at"`                  // 创建时间
+	UpdatedAt        time.Time `gorm:"column:updated_at;type:datetime(3)" json:"updated_at"`                  // 最后更新时间
+	DeletedAt        time.Time `gorm:"column:deleted_at;type:datetime(3)" json:"deleted_at"`                  // 删除时间
 }
 
 func (m *MerchantClientCard) TableName() string {
 	return "merchant_client_card"
 }
+
+// list 接口使用
+func (m *MerchantClientCard) GetOpenIdList(pageSize int, pageIndex int, listType int) ([]MerchantClientCard, int, error) {
+	var doc []MerchantClientCard
+	timeNow := time.Now().Unix()
+
+	table := orm.ShMysql.Table(m.TableName())
+	if listType == 1 { //待使用
+		table = table.Where("merchant_card_time > ? and total_number < number_use", timeNow)
+	} else if listType == 2 { //已完成
+		table = table.Where("merchant_card_time > ? or total_number >= number_use", timeNow, timeNow)
+	} else if listType == 3 { //已过期
+		table = table.Where("merchant_card_time < ? and total_number < number_use", timeNow)
+	}
+	//if m.ActivityStartTime != 0
+
+	table = table.Where("open_id = ? ", m.OpenID)
+	var count int
+	if err := table.Select("*").Order("id desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Error; err != nil {
+		return nil, 0, err
+	}
+	table.Count(&count)
+	return doc, count, nil
+}
+
+func (m *MerchantClientCard) GetMerchantCard() (MerchantClientCard, error) {
+	var doc MerchantClientCard
+
+	table := orm.ShMysql.Table(m.TableName())
+	table = table.Where("id = ?  ", m.ID)
+
+	if err := table.Select("*").First(&doc).Error; err != nil {
+		return doc, err
+	}
+
+	return doc, nil
+
+}