Jelajahi Sumber

Merge branch 'develop' of k.zhang/duoduo into master

k.zhang 1 tahun lalu
induk
melakukan
38e52106b4

+ 1 - 0
apis/shanghu/base.go

@@ -33,5 +33,6 @@ func InitShangHuRouter(engine *gin.RouterGroup) {
 		v1.POST("/verification/code", GetVerificationCode)                  //核销码
 		v1.POST("/merchant/sale/list", GetMerchantPayTransList)             //销售记录
 		v1.POST("/merchant/cancel", CancelNumber)                           //核销
+		v1.POST("/merchant/update/whxy", UpdateMerchantCardWXYZ)            //xyz                               //更新坐标
 	}
 }

+ 99 - 5
apis/shanghu/merchant.card.go

@@ -1,9 +1,11 @@
 package shanghu
 
 import (
+	"context"
 	"duoduo/apis/common"
 	"duoduo/apis/pdd"
 	"duoduo/apis/shanghu/models"
+	"duoduo/conf"
 	"duoduo/models/shanghu"
 	"duoduo/tools"
 	"duoduo/tools/app"
@@ -12,6 +14,8 @@ import (
 	"errors"
 	"fmt"
 	"github.com/gin-gonic/gin"
+	"github.com/qiniu/go-sdk/v7/auth/qbox"
+	"github.com/qiniu/go-sdk/v7/storage"
 	"github.com/shopspring/decimal"
 	"strconv"
 	"time"
@@ -34,9 +38,6 @@ func CreateMerchantCard(c *gin.Context) {
 		return
 	}
 
-	//"json: cannot unmarshal string into Go struct field CreateMerchantCardRequest.inventory of type int64"
-	//"json: cannot unmarshal bool into Go struct field CreateMerchantCardRequest.merchant_card_time of type string"
-	//"json: cannot unmarshal string into Go struct field CreateMerchantCardRequest.inventory of type int64"
 	sqlData.CardProjectData = string(jsStr)
 	sqlData.CardPrice = inData.CardPrice
 	sqlData.ActivityEndTime, err = tools.TimeToInt64(inData.ActivityEndTime, "2006-01-02")
@@ -73,7 +74,13 @@ func CreateMerchantCard(c *gin.Context) {
 	}
 	sqlData.UseRule = inData.UseRule
 	sqlData.MerchantCardName = inData.MerchantCardName
-	sqlData.CancelNumber = inData.CancelNumber
+
+	sqlData.CancelNumber, err = strconv.Atoi(inData.CancelNumber)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+	sqlData.BackgroundImage = inData.BackgroundImage
 
 	_, err = sqlData.Create()
 	if err != nil {
@@ -131,6 +138,11 @@ func GetMerchantCard(c *gin.Context) {
 	outData.Inventory = merchantCard.Inventory
 	outData.RebateRate = merchantCard.RebateRate
 	outData.CardPrice = merchantCard.CardPrice
+	outData.X = merchantCard.X
+	outData.Y = merchantCard.Y
+	outData.W = merchantCard.W
+	outData.H = merchantCard.H
+	outData.BackgroundImage = merchantCard.BackgroundImage
 
 	app.OK(c, outData, app.Success)
 
@@ -144,7 +156,13 @@ func GetMerchantCanvasCard(c *gin.Context) {
 	var qr models.QRRequest
 	var getQR models.GetQRRequest
 
-	err := c.ShouldBindJSON(&inData)
+	confIni, err := conf.ConnIni()
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	err = c.ShouldBindJSON(&inData)
 	if err != nil {
 		app.Error(c, 400, err, err.Error())
 		return
@@ -322,6 +340,46 @@ func GetMerchantCanvasCard(c *gin.Context) {
 
 	outData.Base64Img = encoded
 
+	//上传二维码文件
+	timeUnixNano := time.Now().UnixNano() //单位纳秒
+	fileName := fmt.Sprintf("%d.jpg", timeUnixNano)
+
+	//七牛云上传图片
+	bucket := "imgxx"
+	key := "shanghuka/" + "erweima/" + time.Now().Format(time.DateOnly) + "/" + fileName
+
+	putPolicy := storage.PutPolicy{
+		Scope: bucket,
+	}
+
+	mac := qbox.NewMac(confIni.MustValue("ly-qn", "access_key"), confIni.MustValue("ly-qn", "secret_key"))
+	upToken := putPolicy.UploadToken(mac)
+
+	cfg := storage.Config{}
+	// 空间对应的机房
+	cfg.Zone = &storage.ZoneHuanan
+	// 是否使用https域名
+	cfg.UseHTTPS = false
+	// 上传是否使用CDN上传加速
+	cfg.UseCdnDomains = false
+
+	// 构建表单上传的对象
+	baseUploader := storage.NewBase64Uploader(&cfg)
+	ret := storage.PutRet{}
+	//data, err := base64.RawStdEncoding.DecodeString(inData.Pictures[i])
+	//if err != nil {
+	//	app.Error(c, 500, err, "上传图片失败")
+	//	return
+	//}
+
+	err = baseUploader.Put(context.Background(), &ret, upToken, key, []byte(encoded), nil)
+	if err != nil {
+		app.Error(c, 500, err, "上传图片失败")
+		return
+	}
+
+	outData.QRUrl = "http://lingyang.shisanmiao.com/" + key
+
 	//err = json.Unmarshal([]byte(merchantCard.CardProjectData), &project)
 	//if err != nil {
 	//	app.Error(c, 500, err, err.Error())
@@ -448,6 +506,42 @@ func UpdateMerchantCard(c *gin.Context) {
 	app.OK(c, nil, app.Success)
 }
 
+func UpdateMerchantCardWXYZ(c *gin.Context) {
+	var inData models.UpdateMerchantCardWHXYRequest
+	var sqlData shanghu.MerchantCard
+	var whxy []models.WHXYStr
+
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	//"json: cannot unmarshal number -0.33279827286174424 into Go struct field WHXYStr.rotate of type int"
+	err = json.Unmarshal([]byte(inData.Whxy), &whxy)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+	for i := 0; i < len(whxy); i++ {
+		if !whxy[i].Y.IsZero() {
+			sqlData.W = whxy[i].W.String()
+			sqlData.X = whxy[i].X.String()
+			sqlData.Y = whxy[i].Y.String()
+			sqlData.H = whxy[i].H.String()
+		}
+	}
+	sqlData.ID = inData.MerchantCardId
+
+	err = sqlData.UpdateMerchantWHXY()
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	app.OK(c, nil, app.Success)
+}
+
 // 核销次数
 func CancelNumber(c *gin.Context) {
 	var inData models.CancelCardRequest

+ 25 - 1
apis/shanghu/models/card.go

@@ -18,7 +18,8 @@ type CreateMerchantCardRequest struct {
 	UseRule           string  `json:"use_rule"`            // 使用规则
 	Picture           string  `json:"picture"`             // 图片
 	RebateRate        string  `json:"rebate_rate"`         // 佣金比例
-	CancelNumber      int     `json:"cancel_number"`       //核销次数
+	CancelNumber      string  `json:"cancel_number"`       //核销次数
+	BackgroundImage   string  `json:"background_image"`    //背景图
 }
 
 type GetMerchantCardRequest struct {
@@ -39,6 +40,12 @@ type GetMerchantCardReply struct {
 	UseRule           string `json:"use_rule"`            // 使用规则
 	Picture           string `json:"picture"`             // 图片
 	RebateRate        int64  `json:"rebate_rate"`
+	BackgroundImage   string `json:"background_image"` //背景图
+	W                 string `json:"w"`                // w
+	H                 string `json:"h"`                // h
+	X                 string `json:"x"`                // x
+	Y                 string `json:"y"`                // y
+
 }
 
 // 画布详情
@@ -56,6 +63,7 @@ type GetMerchantCanvasCardReply struct {
 	Inventory              int64           `json:"inventory"`
 	IsShare                bool            `json:"isShare"`
 	InvitationCode         string          `json:"invitationCode"`
+	QRUrl                  string          `json:"qrUrl"`
 }
 type Static struct {
 	Background string `json:"background"`
@@ -124,3 +132,19 @@ type UpdateMerchantCardRequest struct {
 	UseRule           string `json:"use_rule"`            // 使用规则
 	Picture           string `json:"picture"`             // 图片
 }
+
+type UpdateMerchantCardWHXYRequest struct {
+	Whxy           string `json:"whxy"` //坐标
+	MerchantCardId int64  `json:"merchant_card_id"`
+}
+
+type WHXYStr struct {
+	Type string          `json:"type"`
+	URL  string          `json:"url"`
+	Y    decimal.Decimal `json:"y,omitempty"`
+	X    decimal.Decimal `json:"x,omitempty"`
+	W    decimal.Decimal `json:"w,omitempty"`
+	H    decimal.Decimal `json:"h,omitempty"`
+	//Rotate   int             `json:"rotate,omitempty"`
+	//SourceID any `json:"sourceId,omitempty"`
+}

+ 27 - 7
models/shanghu/merchant_card.go

@@ -20,12 +20,17 @@ type MerchantCard struct {
 	UseRule           string    `gorm:"column:use_rule;type:varchar(255)" json:"use_rule"`                          // 使用规则
 	Picture           string    `gorm:"column:picture;type:varchar(255)" json:"picture"`                            // 图片
 	RebateRate        int64     `gorm:"column:rebate_rate;type:int(11)" json:"rebate_rate"`                         // 佣金比例
-	CancelNumber      int       `gorm:"column:cancel_number;type:int(11)" json:"cancel_number"`
-	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);default:null" json:"deleted_at"` // 删除时间
+	CancelNumber      int       `gorm:"column:cancel_number;type:int(11)" json:"cancel_number"`                     //
+	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);default:null" json:"deleted_at"`          // 删除时间
+	BackgroundImage   string    `gorm:"column:background_image;type:varchar(255)" json:"background_image"`          //背景图
+	W                 string    `gorm:"column:w;type:varchar(255);default:null" json:"w"`                           // w
+	H                 string    `gorm:"column:h;type:varchar(255);default:null" json:"h"`                           // h
+	X                 string    `gorm:"column:x;type:varchar(255);default:null" json:"x"`                           // x
+	Y                 string    `gorm:"column:y;type:varchar(255);default:null" json:"y"`                           // y
 }
 
 func (m *MerchantCard) TableName() string {
@@ -130,7 +135,22 @@ func (m *MerchantCard) UpdateMerchantCard() error {
 			"quota_num":           m.QuotaNum,
 			"use_rule":            m.UseRule,
 			"picture":             m.Picture,
-			"update_time":         tools.GetCurrntTimeStr()}).Error; err != nil {
+			"updated_at":          tools.GetCurrntTimeStr()}).Error; err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (m *MerchantCard) UpdateMerchantWHXY() error {
+
+	if err := orm.ShMysql.Table(m.TableName()).Model(&m).Where("id = ? ", m.ID).Updates(
+		map[string]interface{}{
+			"w":          m.W,
+			"h":          m.H,
+			"x":          m.X,
+			"y":          m.Y,
+			"updated_at": tools.GetCurrntTimeStr()}).Error; err != nil {
 		return err
 	}