123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- 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
- drawLog.ActiveId = v.ActiveConfigID
- drawLog.Url = drawProductInfo.DrawUrl
- drawLog.DrawTime = v.CreatedAt.Format(time.DateTime)
- 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.ID = inData.DrawLogId
- sqlData.ClientOpenID = inData.OpenId
- drawLog, err := sqlData.GetClientActiveDrawLogListByOpenIdAndId()
- 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 {
- drawLog.IsPrize = models.Claimed
- 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)
- }
|