package shanghu import ( "duoduo/apis/shanghu/models" "duoduo/models/shanghu" "duoduo/tools" "duoduo/tools/app" "encoding/base64" "encoding/json" "errors" "github.com/gin-gonic/gin" "github.com/skip2/go-qrcode" "strconv" "time" ) func DrawLog(c *gin.Context) { var inData models.ClientDrawLogRequest var sqlData shanghu.ClientActiveDrawLog var outData []models.ClientDrawLogReply 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 } sqlData.ClientOpenID = inData.ClientOpenID activeDrawLogList, count, err := sqlData.GetClientActiveDrawLogListByOpenId(pageSize, pageIndex) if err != nil { app.Error(c, 500, err, err.Error()) return } for _, v := range activeDrawLogList { //查询商品名称 var drawProduct shanghu.MerchantActiveDrawProduct var drawLog models.ClientDrawLogReply drawProduct.ID = v.DrawProductID drawProductInfo, err := drawProduct.GetDrawProductById() if err != nil { app.Error(c, 500, err, err.Error()) return } drawLog.DrawProductName = drawProductInfo.DrawProductName drawLog.IsPrize = v.IsPrize drawLog.Id = v.ID outData = append(outData, drawLog) } app.PageOK(c, outData, count, pageIndex, pageSize, app.Success) } func DrawLogVerificationCode(c *gin.Context) { var inData models.DrawLogVerificationCodeRequest var outData models.DrawLogVerificationCodeReply var sqlData shanghu.ClientActiveDrawLog err := c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.DrawProductID = inData.DrawLogId drawLog, err := sqlData.GetClientActiveDrawLogListById() if err != nil { app.Error(c, 500, err, err.Error()) return } if drawLog.IsPrize == models.NotWon { app.Error(c, 500, errors.New("不需要兑奖"), "不需要兑奖") return } outData.Key = "DRAW" + tools.MD5(strconv.FormatInt(inData.DrawLogId, 10)+"zhangkun429@") outData.DrawLogId = inData.DrawLogId str, err := json.Marshal(&outData) if err != nil { app.Error(c, 500, err, err.Error()) return } qr, err := qrcode.Encode(string(str), qrcode.High, 200) if err != nil { app.Error(c, 500, err, err.Error()) return } encodedData := base64.StdEncoding.EncodeToString(qr) app.OK(c, encodedData, app.Success) } func DrawCancel(c *gin.Context) { var inData models.DrawCancelRequest var sqlData shanghu.ClientActiveDrawLog err := c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } key := "DRAW" + tools.MD5(strconv.FormatInt(inData.DrawLogId, 10)+"zhangkun429@") if key != inData.Key { app.Error(c, 500, errors.New("数据错误"), "数据错误") return } sqlData.ID = inData.DrawLogId drawLog, err := sqlData.GetClientActiveDrawLogListById() if err != nil { app.Error(c, 500, err, err.Error()) return } if drawLog.IsPrize != models.NotClaimed { app.Error(c, 500, errors.New("不允许兑奖"), "不允许兑奖") return } else { err = drawLog.UpdateDrawPrize() if err != nil { app.Error(c, 500, err, err.Error()) return } } app.OK(c, nil, app.Success) } func DrawCancelInfo(c *gin.Context) { var inData models.DrawCancelInfoRequest var sqlData shanghu.ClientActiveDrawLog var activeConfigSql shanghu.MerchantActiveConfig var drawProductSql shanghu.MerchantActiveDrawProduct var outData models.DrawCancelInfoReply err := c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } key := "DRAW" + tools.MD5(strconv.FormatInt(inData.DrawLogId, 10)+"zhangkun429@") if key != inData.Key { app.Error(c, 500, errors.New("数据错误"), "数据错误") return } sqlData.ID = inData.DrawLogId drawLog, err := sqlData.GetClientActiveDrawLogListById() if err != nil { app.Error(c, 500, err, err.Error()) return } if drawLog.IsPrize != 2 { app.Error(c, 500, errors.New("未中奖或已兑奖"), "未中奖或已兑奖") return } activeConfigSql.ID = drawLog.ActiveConfigID activeInfo, err := activeConfigSql.GetConfigInfoById() if err != nil { app.Error(c, 500, err, err.Error()) return } drawProductSql.ID = drawLog.DrawProductID drawProduct, err := drawProductSql.GetDrawProductById() if err != nil { app.Error(c, 500, err, err.Error()) return } outData.DrawUrl = drawProduct.DrawUrl outData.DrawProductName = drawProduct.DrawProductName outData.ActiveConfigName = activeInfo.ActiveName outData.DrawLogId = inData.DrawLogId outData.DrawTime = drawLog.CreatedAt.Format(time.DateTime) app.OK(c, outData, app.Success) }