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" "github.com/shopspring/decimal" "strconv" "time" ) func CreateMerchantCard(c *gin.Context) { var inData models.CreateMerchantCardRequest var sqlData shanghu.MerchantCard err := c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.CreatedAt = time.Now() sqlData.UpdatedAt = time.Now() jsStr, err := json.Marshal(inData.CardProjectData) if err != nil { app.Error(c, 400, err, "包含项目不能为空") 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") if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.ActivityStartTime, err = tools.TimeToInt64(inData.ActivityStartTime, "2006-01-02") if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.Inventory, err = strconv.ParseInt(inData.Inventory, 10, 64) if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.MerchantCardTime, err = tools.TimeToInt64(inData.MerchantCardTime, "2006-01-02") if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.MerchantOpenID = inData.MerchantOpenID sqlData.Picture = inData.Picture sqlData.QuotaNum, err = strconv.ParseInt(inData.QuotaNum, 10, 64) if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.RebateRate, err = strconv.ParseInt(inData.RebateRate, 10, 64) if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.UseRule = inData.UseRule sqlData.MerchantCardName = inData.MerchantCardName _, err = sqlData.Create() if err != nil { app.Error(c, 500, err, err.Error()) return } app.OK(c, nil, app.Success) } func GetMerchantCard(c *gin.Context) { var inData models.GetMerchantCardRequest var outData models.GetMerchantCardReply var sqlData shanghu.MerchantCard var project []int64 err := c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.ID = inData.MerchantId merchantCard, err := sqlData.GetMerchantCard() if err != nil { app.Error(c, 500, err, err.Error()) return } err = json.Unmarshal([]byte(merchantCard.CardProjectData), &project) if err != nil { app.Error(c, 500, err, err.Error()) return } merchantCard.CardProjectData = "" for i := 0; i < len(project); i++ { var cardProject shanghu.MerchantCardProject cardProject.ID = project[i] projectInfo, err := cardProject.GetMerchantCardProject() if err != nil { app.Error(c, 500, err, err.Error()) return } merchantCard.CardProjectData = merchantCard.CardProjectData + projectInfo.ProjectName + "x1 " } outData.CardProjectData = merchantCard.CardProjectData outData.MerchantCardName = merchantCard.MerchantCardName outData.MerchantCardTime = time.Unix(merchantCard.MerchantCardTime, 0).Format("2006-01-02") outData.ActivityEndTime = time.Unix(merchantCard.ActivityEndTime, 0).Format("2006-01-02") outData.ActivityStartTime = time.Unix(merchantCard.ActivityStartTime, 0).Format("2006-01-02") outData.Picture = merchantCard.Picture outData.UseRule = merchantCard.UseRule outData.QuotaNum = merchantCard.QuotaNum outData.Inventory = merchantCard.Inventory outData.RebateRate = merchantCard.RebateRate outData.CardPrice = merchantCard.CardPrice app.OK(c, outData, app.Success) } func GetMerchantCanvasCard(c *gin.Context) { var inData models.GetMerchantCardRequest var outData models.GetMerchantCanvasCardReply var sqlData shanghu.MerchantCard var project []int64 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.MerchantId merchantCard, err := sqlData.GetMerchantCard() if err != nil { app.Error(c, 500, err, err.Error()) return } outData.Static.Background = "/images/背景.jpg" var swiperList []models.SwiperList var rightButton models.RightButton var swiper models.SwiperList swiper.ID = 0 swiper.URL = merchantCard.Picture swiperList = append(swiperList, swiper) //err = json.Unmarshal([]byte(merchantCard.Picture), &swiperList) //if err != nil { // fmt.Println("picture") // app.Error(c, 500, err, err.Error()) // return //} outData.Inventory = merchantCard.Inventory outData.SwiperList = swiperList rightButton.ImageURL = "/images/资源 24.png" outData.RightButton = append(outData.RightButton, rightButton) rightButton.ImageURL = "/images/资源 25.png" outData.RightButton = append(outData.RightButton, rightButton) rightButton.ImageURL = "/images/资源 26.png" outData.RightButton = append(outData.RightButton, rightButton) rightButton.ImageURL = "/images/资源 28.png" outData.RightButton = append(outData.RightButton, rightButton) var dataList models.DataList err = json.Unmarshal([]byte(merchantCard.CardProjectData), &project) if err != nil { fmt.Println("picture2") app.Error(c, 500, err, err.Error()) return } //merchantCard.CardProjectData = "" for i := 0; i < len(project); i++ { var cardProject shanghu.MerchantCardProject cardProject.ID = project[i] projectInfo, err := cardProject.GetMerchantCardProject() if err != nil { app.Error(c, 500, err, err.Error()) return } dataList.Name = projectInfo.ProjectName dataList.Count = 1 dataList.Price = projectInfo.ProjectUnitPrice outData.DataList = append(outData.DataList, dataList) } var buy models.BuyKnowList buy.Icon = "/images/资源 46.png" buy.Title = "有效期" buy.Text = "至" + tools.TimeToStr(merchantCard.MerchantCardTime) outData.BuyKnowList = append(outData.BuyKnowList, buy) buy.Icon = "/images/资源 48.png" buy.Title = "限购数量" buy.Text = "每位用户限购1张" outData.BuyKnowList = append(outData.BuyKnowList, buy) buy.Icon = "/images/资源 49.png" buy.Title = "使用规则" buy.Text = merchantCard.UseRule outData.BuyKnowList = append(outData.BuyKnowList, buy) var shopData models.ShopData var merchant shanghu.Merchant merchant.OpenId = merchantCard.MerchantOpenID merchantInfo, err := merchant.GetMerchant() if err != nil { app.Error(c, 500, err, err.Error()) return } shopData.Name = merchantInfo.MerchantName shopData.Address = merchantInfo.Address outData.ShopData = shopData outData.FenxiangShow = false outData.MerchantAmount, err = decimal.NewFromString(merchantCard.CardPrice) if err != nil { app.Error(c, 500, err, err.Error()) return } outData.MerchantOriginalAmount = outData.MerchantAmount.Add(decimal.NewFromInt(50)) var outQRData models.ClientCardQRReply 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, &outQRData) if err != nil { app.Error(c, 500, err, err.Error()) return } if outQRData.AccessToken == "" { app.Error(c, 500, err, "token error") return } url := "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + outQRData.AccessToken //1.原始码 不需要购买直接分享 ==原生码直接分享 //2.code 本人openid 需要购买才能分享 //3.空的 官方邀请码 //返回邀请码 if inData.Code == "原始码" { //可以分享 outData.IsShare = true outData.InvitationCode = "7jb6" } else { //查询购买记录,没有购买过不让分享 outData.IsShare = false } //点击购买的时候把code给进去把 原始码购买属于平台 qr.CheckPath = true qr.Page = "pages/home/home" qr.EnvVersion = "release" qr.Scene = "id-" + strconv.FormatInt(inData.MerchantId, 10) + "-c-" + inData.Code fmt.Println(qr.Scene) 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 } if getQR.Errcode != 0 { app.Error(c, 500, err, getQR.Errmsg) return } encoded := base64.StdEncoding.EncodeToString(reply) outData.Base64Img = encoded //err = json.Unmarshal([]byte(merchantCard.CardProjectData), &project) //if err != nil { // app.Error(c, 500, err, err.Error()) // return //} // //merchantCard.CardProjectData = "" //for i := 0; i < len(project); i++ { // var cardProject shanghu.MerchantCardProject // cardProject.ID = project[i] // projectInfo, err := cardProject.GetMerchantCardProject() // if err != nil { // app.Error(c, 500, err, err.Error()) // return // } // merchantCard.CardProjectData = merchantCard.CardProjectData + projectInfo.ProjectName + "x1 " //} app.OK(c, outData, app.Success) } func MerchantCardList(c *gin.Context) { var inData models.MerchantCardListRequest var sqlData shanghu.MerchantCard 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.MerchantOpenID = 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) } // c端获取卡信息 func MerchantClientCardList(c *gin.Context) { var inData models.MerchantCardListRequest var sqlData shanghu.MerchantCard var outData []models.MerchantCardListReply 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 } merchantCard, count, err := sqlData.ClientGetOpenIdList(pageSize, pageIndex, inData.TypeList) if err != nil { app.Error(c, 500, err, err.Error()) return } for i := 0; i < len(merchantCard); i++ { var reply models.MerchantCardListReply reply.RebateRate = merchantCard[i].RebateRate reply.ID = merchantCard[i].ID reply.QuotaNum = merchantCard[i].QuotaNum reply.MerchantCardName = merchantCard[i].MerchantCardName reply.CardPrice = merchantCard[i].CardPrice priceDec, err := decimal.NewFromString(merchantCard[i].CardPrice) if err != nil { app.Error(c, 500, err, err.Error()) return } reply.RebateAmount = priceDec.Mul(decimal.NewFromInt(merchantCard[i].RebateRate).Div(decimal.NewFromInt(100))).String() outData = append(outData, reply) } app.PageOK(c, outData, count, pageIndex, pageSize, app.Success) } func UpdateMerchantCard(c *gin.Context) { var inData models.UpdateMerchantCardRequest var sqlData shanghu.MerchantCard err := c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.ID = inData.ID sqlData.QuotaNum = inData.QuotaNum sqlData.UseRule = inData.UseRule sqlData.Picture = inData.Picture sqlData.Inventory = inData.Inventory sqlData.ActivityStartTime = inData.ActivityStartTime sqlData.ActivityEndTime = inData.ActivityEndTime err = sqlData.UpdateMerchantCard() if err != nil { app.Error(c, 400, err, err.Error()) return } app.OK(c, nil, app.Success) }