package shanghu import ( "duoduo/apis/shanghu/models" "duoduo/models/shanghu" "duoduo/tools" "duoduo/tools/app" "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 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 } // result: { // // 背景 // static: { // background: "../../images/背景.jpg" // }, // // 轮播图 // swiperList: [{ // id: 0, // url: 'http://lingyang.shisanmiao.com/shanghuka/%E8%B5%84%E6%BA%90%2045.png' // }, { // id: 1, // url: 'http://lingyang.shisanmiao.com/shanghuka/%E8%B5%84%E6%BA%90%2045.png', // }], // // 按钮数据 // rightButton: [{ // imageUrl: '../../images/资源 24.png', // }, // { // imageUrl: '../../images/资源 25.png', // }, // { // imageUrl: '../../images/资源 26.png', // }, // { // imageUrl: '../../images/资源 28.png', // }, // ], // // 套餐内容 // dataList: [{ // name: '小份黄焖鸡小份黄焖鸡小份', // count: 3, // price: '60' // }, // { // name: '中份黄焖鸡小份黄焖鸡', // count: 3, // price: '70' // }, // { // name: '大份黄焖鸡小份黄焖鸡', // count: 3, // price: '80' // }, // // // ], // // // 购买须知 // buyKnowList: [{ // icon: '../../images/资源 46.png', // title: '有效期', // text: '至2021-0520 23:00' // }, // { // icon: '../../images/资源 47.png', // title: '使用时间', // text: '周一至周日10:00-23:00可用' // }, // { // icon: '../../images/资源 48.png', // title: '限购数量', // text: '每位用户限购1张' // }, // { // icon: '../../images/资源 49.png', // title: '使用规则', // text: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' // }, // ], // // // 使用门店 // shopData: { // imageUrl: '', // name: '黄焖鸡米饭(高新万达店)', // starRating: 4, // address: '地点:济南市高新区工业南路340号1层', // distance: '1.9km' // }, // // // 二维码变量 // base64Img: "", // // // 图片弹框 // fenxiangShow: false, // } outData.Static.Background = "/images/背景.jpg" var swiperList []models.SwiperList var rightButton models.RightButton err = json.Unmarshal([]byte(merchantCard.Picture), &swiperList) if err != nil { fmt.Println("picture") app.Error(c, 500, err, err.Error()) return } 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)) //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) }