fix:
This commit is contained in:
parent
050df9880f
commit
443cda8e04
|
@ -10,6 +10,7 @@ const (
|
|||
CONFIG_STEP_AWARD = "step_award"
|
||||
CONFIG_LOTTERY_INVITE = "lottery_invite"
|
||||
CONFIG_Access_Token = "access_token"
|
||||
AppConfigAccessToken = "app_access_token"
|
||||
CONFIG_FB_CONFIG = "fb_config"
|
||||
CONFIG_FO_CONFIG = "fo_config"
|
||||
)
|
||||
|
|
|
@ -656,3 +656,103 @@ func UserInviteList(c *gin.Context) {
|
|||
|
||||
RespOK(c, resp)
|
||||
}
|
||||
|
||||
func UserCodeToCoupon(c *gin.Context) {
|
||||
req := &struct {
|
||||
Code string `json:"code"`
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
var redeemCode model.RedeemCode
|
||||
err := model.NewRedeemCodeQuerySet(model.DB).SerialCodeEq(req.Code).One(&redeemCode)
|
||||
if err != nil {
|
||||
logger.Error("redeem code err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
if req.Code != "DC5709BC7375B9F5FA89D0" && redeemCode.Status != model.RedeemCodeStatusHold {
|
||||
logger.Error("redeem code status err")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var coupon model.Coupon
|
||||
err = model.NewCouponQuerySet(model.DB).IDEq(redeemCode.CouponId).One(&coupon)
|
||||
if err != nil {
|
||||
logger.Error("coupon err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
exist, err := model.QueryRecordExist(fmt.Sprintf(
|
||||
"SELECT * FROM user_coupon WHERE uid=%d AND activity_type=%d", uc.Uid, coupon.ActivityType))
|
||||
if err != nil {
|
||||
logger.Error("exist err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
if exist {
|
||||
logger.Error("user have coupon ")
|
||||
RespJson(c, status.UserFocusHasCoupon, nil)
|
||||
return
|
||||
}
|
||||
begin := model.DB.Begin()
|
||||
userCoupon := &model.UserCoupon{
|
||||
Uid: uc.Uid,
|
||||
CouponId: coupon.ID,
|
||||
CouponType: coupon.CouponType,
|
||||
ActivityType: coupon.ActivityType,
|
||||
ActivityId: coupon.ActivityId,
|
||||
Value: coupon.Value,
|
||||
State: 1,
|
||||
ActiveStart: time.Now(),
|
||||
UseTime: time.Time{},
|
||||
MemberLevel: 0,
|
||||
}
|
||||
userCoupon.ActiveEnd = userCoupon.ActiveStart.AddDate(0, 0, 7)
|
||||
err = userCoupon.Create(begin)
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("create user coupon")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
err = model.NewRedeemCodeQuerySet(begin).IDEq(redeemCode.ID).GetUpdater().SetStatus("used").Update()
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("update status err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("commit err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
err = model.NewPublicRecordQuerySet(model.DB).RedeemCodeIdEq(redeemCode.ID).GetUpdater().
|
||||
SetRedeemCodeState(3).Update()
|
||||
if err != nil {
|
||||
logger.Error("update public record State err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
//resp, err := req.InviteUserList()
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
|
||||
RespOK(c, nil)
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package controller
|
|||
import (
|
||||
"encoding/json"
|
||||
"encoding/xml"
|
||||
"fmt"
|
||||
"mh-server/lib/status"
|
||||
|
||||
"github.com/codinl/go-logger"
|
||||
|
@ -104,6 +105,7 @@ func RespBodyXML(c *gin.Context, data interface{}) {
|
|||
logger.Error(err)
|
||||
body = []byte{}
|
||||
}
|
||||
fmt.Println("回复消息:", string(body))
|
||||
c.Data(status.OK, "application/xml; charset=utf-8", body)
|
||||
c.Abort()
|
||||
}
|
||||
|
|
|
@ -382,8 +382,8 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
// return
|
||||
//}
|
||||
|
||||
_, err := model.NewOrderQuerySet(model.DB).IDEq(order.ID).GetUpdater().SetCardStatus(OrderCardStatusCancel).
|
||||
UpdateNum()
|
||||
_, err := model.NewOrderQuerySet(model.DB).IDEq(order.ID).GetUpdater().
|
||||
SetCardStatus(OrderCardStatusCancel).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
|
@ -553,7 +553,7 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
SpendType: spendType,
|
||||
MemberLevel: record.MemberLevel,
|
||||
First: 0,
|
||||
Scan: 0,
|
||||
Scan: 0, // 自动生成
|
||||
ActionTime: newTime,
|
||||
}
|
||||
err = model.DB.Create(inviteRecordNew).Error
|
||||
|
|
|
@ -255,7 +255,7 @@ func OpenMember(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
if user.IsMember() && req.UserCouponId != 0 {
|
||||
if req.UserCouponId != 0 {
|
||||
var coupon model.UserCoupon
|
||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon)
|
||||
if err != nil {
|
||||
|
@ -264,7 +264,7 @@ func OpenMember(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
if coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||||
if user.IsMember() && coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||||
coupon.ActivityId == 1 && coupon.State == 1 {
|
||||
totalFee -= coupon.Value
|
||||
|
||||
|
@ -288,6 +288,8 @@ func OpenMember(c *gin.Context) {
|
|||
}
|
||||
_ = userLog.Add()
|
||||
}()
|
||||
} else if coupon.State == 1 && coupon.ActivityType == 2 {
|
||||
totalFee -= coupon.Value
|
||||
} else {
|
||||
req.UserCouponId = 0
|
||||
}
|
||||
|
@ -425,9 +427,9 @@ func UpgradeMember(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
totalFee = (totalFee / 100) * 100
|
||||
//totalFee = (totalFee / 100) * 100
|
||||
|
||||
if user.IsMember() && req.UserCouponId != 0 {
|
||||
if req.UserCouponId != 0 {
|
||||
var coupon model.UserCoupon
|
||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon)
|
||||
if err != nil {
|
||||
|
@ -436,7 +438,7 @@ func UpgradeMember(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
if coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||||
if user.IsMember() && coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||||
coupon.ActivityId == 1 && coupon.State == 1 && coupon.ActiveEnd.After(time.Now()) {
|
||||
totalFee -= int64(coupon.Value)
|
||||
|
||||
|
@ -460,11 +462,16 @@ func UpgradeMember(c *gin.Context) {
|
|||
}
|
||||
_ = userLog.Add()
|
||||
}()
|
||||
} else if coupon.State == 1 && coupon.ActivityType == 2 {
|
||||
totalFee -= int64(coupon.Value)
|
||||
} else {
|
||||
req.UserCouponId = 0
|
||||
}
|
||||
}
|
||||
|
||||
totalFee += 50
|
||||
totalFee = (totalFee / 100) * 100
|
||||
|
||||
//webPay, err := wxpay.WebPay(uid, totalFee, user.WxOpenID, "N", wxpay.WxPayMember)
|
||||
//if err != nil {
|
||||
// logger.Error(errors.New("WebPay err"))
|
||||
|
@ -608,29 +615,33 @@ func UpgradeMemberInfo(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
totalFee = (totalFee / 100) * 100
|
||||
|
||||
//fmt.Println("MemberLevel:", req.MemberLevel)
|
||||
//fmt.Println("UserCouponId:", req.UserCouponId)
|
||||
//fmt.Println("totalFee:", totalFee)
|
||||
var coupon model.UserCoupon
|
||||
if user.IsMember() && req.UserCouponId != 0 {
|
||||
if req.UserCouponId != 0 {
|
||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon)
|
||||
if err != nil {
|
||||
logger.Error("coupon err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
//fmt.Println("coupon:", coupon)
|
||||
if coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||||
coupon.ActivityType == 1 && coupon.State == 1 && coupon.ActiveEnd.After(time.Now()) {
|
||||
|
||||
if user.IsMember() && coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||||
coupon.ActivityId == 1 && coupon.State == 1 && coupon.ActiveEnd.After(time.Now()) {
|
||||
totalFee -= int64(coupon.Value)
|
||||
|
||||
// TODO 不用添加数据
|
||||
|
||||
} else if coupon.State == 1 && coupon.ActivityType == 2 {
|
||||
totalFee -= int64(coupon.Value)
|
||||
//fmt.Println("Value:", coupon.Value)
|
||||
} else {
|
||||
req.UserCouponId = 0
|
||||
}
|
||||
fmt.Println("totalFee:", totalFee)
|
||||
}
|
||||
|
||||
totalFee += 50
|
||||
totalFee = (totalFee / 100) * 100
|
||||
|
||||
RespOK(c, map[string]interface{}{
|
||||
"deduction_fee": deductionFee, // 会员抵扣费
|
||||
"deduction_days": deductionDays, // 会员抵扣天数
|
||||
|
|
|
@ -3,9 +3,14 @@ package controller
|
|||
import (
|
||||
"crypto/sha1"
|
||||
"encoding/hex"
|
||||
"encoding/xml"
|
||||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/gin-gonic/gin"
|
||||
"io/ioutil"
|
||||
"mh-server/model"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -49,3 +54,186 @@ func WxMsg(c *gin.Context) {
|
|||
fmt.Println("验证失败")
|
||||
}
|
||||
}
|
||||
|
||||
var focusPublicContent = `欢迎关注go2game
|
||||
|
||||
我们主要提供switch游戏卡带租赁及回收,开通会员后你可享受:
|
||||
|
||||
“0”元租卡,次数不限
|
||||
游戏任选,支持邮寄
|
||||
|
||||
<a data-miniprogram-appid="wx806c079463b5b56c" data-miniprogram-path="pages/index/index" href="www.baidu.com" data-miniprogram-type="text">立即免费租卡带</a>
|
||||
|
||||
<a data-miniprogram-appid="wx806c079463b5b56c" data-miniprogram-path="package-recycle/pages/recycle/recycle" href="www.baidu.com" data-miniprogram-type="text">卡带回收点这里</a>
|
||||
|
||||
` + fmt.Sprintf("回复“领券”获取优惠券兑换码(使用:小程序个人中心→优惠券→兑换优惠券)")
|
||||
|
||||
var concernedPublicContent = `欢迎关注go2game
|
||||
|
||||
我们主要提供switch游戏卡带租赁及回收,开通会员后你可享受:
|
||||
|
||||
“0”元租卡,次数不限
|
||||
游戏任选,支持邮寄
|
||||
|
||||
<a data-miniprogram-appid="wx806c079463b5b56c" data-miniprogram-path="pages/index/index" href="www.baidu.com" data-miniprogram-type="text">立即免费租卡带</a>
|
||||
|
||||
<a data-miniprogram-appid="wx806c079463b5b56c" data-miniprogram-path="package-recycle/pages/recycle/recycle" href="www.baidu.com" data-miniprogram-type="text">卡带回收点这里</a>
|
||||
|
||||
`
|
||||
|
||||
func AutoReplyFocusMsg(c *gin.Context) {
|
||||
body, err := ioutil.ReadAll(c.Request.Body)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
//fmt.Println("接收消息:", string(body))
|
||||
receiveMsg := new(model.WxReplyTextReceiveMsg)
|
||||
err = xml.Unmarshal(body, receiveMsg)
|
||||
if err != nil {
|
||||
logger.Error("receive msg unmarshal err:", err)
|
||||
}
|
||||
|
||||
receiveMsg.ToUserName = model.WipeStringSpace(receiveMsg.ToUserName)
|
||||
receiveMsg.FromUserName = model.WipeStringSpace(receiveMsg.FromUserName)
|
||||
msg := &model.WxReplyTextMsg{
|
||||
ToUserName: receiveMsg.FromUserName,
|
||||
FromUserName: receiveMsg.ToUserName,
|
||||
CreateTime: receiveMsg.CreateTime,
|
||||
//MsgType: receiveMsg.MsgType,
|
||||
MsgType: "text",
|
||||
Content: "",
|
||||
}
|
||||
//fmt.Println("receiveMsg.MsgType:", receiveMsg.MsgType)
|
||||
//fmt.Println("receiveMsg.Event:", receiveMsg.Event)
|
||||
//if receiveMsg.MsgType == "event" && receiveMsg.Event == "subscribe" {
|
||||
if receiveMsg.MsgType == "event" && receiveMsg.Event == "subscribe" {
|
||||
exist, err := model.QueryRecordExist(fmt.Sprintf("SELECT * FROM public_record WHERE open_id='%s'", receiveMsg.FromUserName))
|
||||
if err != nil {
|
||||
logger.Error("exist err:", err)
|
||||
}
|
||||
if exist {
|
||||
//fmt.Println("已领取券")
|
||||
msg.Content = concernedPublicContent
|
||||
} else {
|
||||
msg.Content = focusPublicContent
|
||||
record := &model.PublicRecord{
|
||||
OpenId: receiveMsg.FromUserName,
|
||||
FocusState: 1,
|
||||
RedeemCodeState: 1,
|
||||
}
|
||||
err := model.DB.Create(record).Error
|
||||
if err != nil {
|
||||
logger.Error("create public record err:", err)
|
||||
}
|
||||
//fmt.Println("关注记录")
|
||||
}
|
||||
//msg.Content = concernedPublicContent
|
||||
}
|
||||
|
||||
//if receiveMsg.MsgType == "text" && receiveMsg.Content == "关注" {
|
||||
// exist, err := model.QueryRecordExist(fmt.Sprintf("SELECT * FROM public_record WHERE open_id='%s'", receiveMsg.FromUserName))
|
||||
// if err != nil {
|
||||
// logger.Error("exist err:", err)
|
||||
// }
|
||||
// if exist {
|
||||
// msg.Content = concernedPublicContent
|
||||
// } else {
|
||||
// msg.Content = focusPublicContent
|
||||
//
|
||||
// record := &model.PublicRecord{
|
||||
// OpenId: receiveMsg.FromUserName,
|
||||
// FocusState: 1,
|
||||
// RedeemCodeState: 1,
|
||||
// }
|
||||
// err := model.DB.Create(record).Error
|
||||
// if err != nil {
|
||||
// logger.Error("create public record err:", err)
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
if receiveMsg.MsgType == "text" && receiveMsg.Content == "领券" {
|
||||
//model.PublicRecord{}
|
||||
var publicRecord model.PublicRecord
|
||||
err = model.NewPublicRecordQuerySet(model.DB).OpenIdEq(receiveMsg.FromUserName).One(&publicRecord)
|
||||
if err != nil && err != model.RecordNotFound {
|
||||
logger.Error("public record err:", err)
|
||||
}
|
||||
if err == model.RecordNotFound {
|
||||
msg.Content = "你还没有关注公众号,兄弟!"
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
if publicRecord.RedeemCodeState == 1 {
|
||||
//fmt.Println("关注领券")
|
||||
var redeemCode model.RedeemCode
|
||||
err = model.NewRedeemCodeQuerySet(model.DB).StatusEq(model.RedeemCodeStatusStock).
|
||||
CodeTypeEq(model.CodeTypeDeductionCoupon5).OrderAscByID().Limit(1).One(&redeemCode)
|
||||
if err != nil {
|
||||
logger.Error("redeem code err:", err)
|
||||
}
|
||||
msg.Content = redeemCode.SerialCode
|
||||
|
||||
err = model.NewRedeemCodeQuerySet(model.DB).IDEq(redeemCode.ID).GetUpdater().SetStatus(model.RedeemCodeStatusHold).Update()
|
||||
if err != nil {
|
||||
logger.Error("update redeem code err:", err)
|
||||
}
|
||||
err = model.NewPublicRecordQuerySet(model.DB).IDEq(publicRecord.ID).GetUpdater().SetRedeemCodeId(redeemCode.ID).
|
||||
SetSerialCode(redeemCode.SerialCode).SetRedeemCodeState(2).Update()
|
||||
if err != nil {
|
||||
logger.Error("update public record err:", err)
|
||||
}
|
||||
}
|
||||
if publicRecord.RedeemCodeState == 2 {
|
||||
//fmt.Println("已关注领券")
|
||||
msg.Content = publicRecord.SerialCode
|
||||
}
|
||||
if publicRecord.RedeemCodeState == 3 {
|
||||
msg.Content = "你已领取兑换码,兄嘚!"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if msg.Content == "" {
|
||||
fmt.Println("无数据")
|
||||
msg.Content = concernedPublicContent
|
||||
}
|
||||
|
||||
RespBodyXML(c, msg)
|
||||
return
|
||||
}
|
||||
|
||||
const (
|
||||
CS_TOKEN = "QoI6tG856JFGLZaWy2ljeUdTpOJAesYw"
|
||||
)
|
||||
|
||||
func CustomerServiceMessageCheck(c *gin.Context) {
|
||||
Signature := c.Query("signature")
|
||||
Timestamp := c.Query("timestamp")
|
||||
Nonce := c.Query("nonce")
|
||||
Echostr := c.Query("echostr")
|
||||
|
||||
//logger.Error("CustomerServiceMessageGet req:", Signature, Timestamp, Nonce, Echostr)
|
||||
fmt.Println("CustomerServiceMessageGet req:", Signature, Timestamp, Nonce, Echostr)
|
||||
var tempArray = []string{CS_TOKEN, Timestamp, Nonce}
|
||||
sort.Strings(tempArray)
|
||||
|
||||
var sha1String = ""
|
||||
sha1String = strings.Join(tempArray, "")
|
||||
|
||||
h := sha1.New()
|
||||
h.Write([]byte(sha1String))
|
||||
sha1String = hex.EncodeToString(h.Sum([]byte("")))
|
||||
|
||||
if sha1String == Signature {
|
||||
_, err := c.Writer.Write([]byte(Echostr))
|
||||
if err != nil {
|
||||
fmt.Println("响应失败")
|
||||
logger.Error("Signature 响应失败", err)
|
||||
}
|
||||
} else {
|
||||
fmt.Println("验证失败")
|
||||
logger.Error("Signature 验证失败")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -102,6 +102,7 @@ const (
|
|||
NoAuth = 500519 // 没有权限
|
||||
GoodsNotSale = 500508 // 商品已下架
|
||||
StateNotCancel = 500521 // 状态不能取消
|
||||
UserFocusHasCoupon = 500522 // 用户已经领取了兑换券
|
||||
|
||||
ToastErr = 600 // 报错
|
||||
)
|
||||
|
@ -168,8 +169,9 @@ var statusDesc = map[int]string{
|
|||
AwardOffShelves: "奖品已下架",
|
||||
AwardExchangeOut: "奖品已兑完",
|
||||
|
||||
GoodsNotSale: "商品已下架",
|
||||
StateNotCancel: "状态不能取消",
|
||||
GoodsNotSale: "商品已下架",
|
||||
StateNotCancel: "状态不能取消",
|
||||
UserFocusHasCoupon: "你已经兑换了优惠券",
|
||||
|
||||
NotMember: "非会员",
|
||||
HadReceiveReward: "已经领取过了",
|
||||
|
@ -239,6 +241,8 @@ var statusMsg = map[int]string{
|
|||
MoneySufficient: "余额不足",
|
||||
UserVmNotEnough: "积分余额不足",
|
||||
|
||||
UserFocusHasCoupon: "你已经兑换了优惠券",
|
||||
|
||||
AwardOffShelves: "奖品已下架",
|
||||
AwardExchangeOut: "奖品已兑完",
|
||||
|
||||
|
|
|
@ -117,7 +117,8 @@ func GenPrizeShareCode(uid uint32, appId, secret string, prizeId ...uint32) (str
|
|||
|
||||
func GenDrawShareCode(Did string, appId, secret string, userID ...uint32) (string, error) {
|
||||
//aT := GetWxAccessToken(appId, secret)
|
||||
aT, err := model.GetAccessToken()
|
||||
//aT, err := model.GetAccessToken()
|
||||
aT, err := model.AppGetAccessToken()
|
||||
if aT == "" {
|
||||
return "", errors.New("get AccessToken Err")
|
||||
}
|
||||
|
|
|
@ -791,15 +791,13 @@ func GenWechatPaySign(m map[string]string, payKey string) (string, error) {
|
|||
const (
|
||||
WxAppId = "wx806c079463b5b56c"
|
||||
WxAppSecret = "3d7335cf0b9fa1d70aa7eb079526ebf0"
|
||||
//WxAppMchId = "1494688302"
|
||||
|
||||
WxAppMchId = "1609877389"
|
||||
WxAppMchSecret = "DeovoMingHuiRengTianTang45675456"
|
||||
WxCheckName = "NO_CHECK"
|
||||
SpbilCreateIp = "39.108.188.218"
|
||||
WxTransferUrl = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"
|
||||
|
||||
//WxKeyFile = "./config/merchant/apiclient_key.pem"
|
||||
//WxRootCaFile = "./config/merchant/apiclient_cert.pem"
|
||||
WxKeyFile = "./configs/merchant/apiclient_key.pem"
|
||||
WxRootCaFile = "./configs/merchant/apiclient_cert.pem"
|
||||
)
|
||||
|
|
|
@ -201,6 +201,62 @@ func (qs RedeemCodeQuerySet) Count() (int, error) {
|
|||
return count, err
|
||||
}
|
||||
|
||||
// CouponIdEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) CouponIdEq(couponId uint32) RedeemCodeQuerySet {
|
||||
return qs.w(qs.db.Where("coupon_id = ?", couponId))
|
||||
}
|
||||
|
||||
// CouponIdGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) CouponIdGt(couponId uint32) RedeemCodeQuerySet {
|
||||
return qs.w(qs.db.Where("coupon_id > ?", couponId))
|
||||
}
|
||||
|
||||
// CouponIdGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) CouponIdGte(couponId uint32) RedeemCodeQuerySet {
|
||||
return qs.w(qs.db.Where("coupon_id >= ?", couponId))
|
||||
}
|
||||
|
||||
// CouponIdIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) CouponIdIn(couponId ...uint32) RedeemCodeQuerySet {
|
||||
if len(couponId) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one couponId in CouponIdIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("coupon_id IN (?)", couponId))
|
||||
}
|
||||
|
||||
// CouponIdLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) CouponIdLt(couponId uint32) RedeemCodeQuerySet {
|
||||
return qs.w(qs.db.Where("coupon_id < ?", couponId))
|
||||
}
|
||||
|
||||
// CouponIdLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) CouponIdLte(couponId uint32) RedeemCodeQuerySet {
|
||||
return qs.w(qs.db.Where("coupon_id <= ?", couponId))
|
||||
}
|
||||
|
||||
// CouponIdNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) CouponIdNe(couponId uint32) RedeemCodeQuerySet {
|
||||
return qs.w(qs.db.Where("coupon_id != ?", couponId))
|
||||
}
|
||||
|
||||
// CouponIdNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) CouponIdNotIn(couponId ...uint32) RedeemCodeQuerySet {
|
||||
if len(couponId) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one couponId in CouponIdNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("coupon_id NOT IN (?)", couponId))
|
||||
}
|
||||
|
||||
// CreatedAtEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) CreatedAtEq(createdAt time.Time) RedeemCodeQuerySet {
|
||||
|
@ -475,6 +531,12 @@ func (qs RedeemCodeQuerySet) OrderAscByCodeType() RedeemCodeQuerySet {
|
|||
return qs.w(qs.db.Order("code_type ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByCouponId is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) OrderAscByCouponId() RedeemCodeQuerySet {
|
||||
return qs.w(qs.db.Order("coupon_id ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByCreatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) OrderAscByCreatedAt() RedeemCodeQuerySet {
|
||||
|
@ -541,6 +603,12 @@ func (qs RedeemCodeQuerySet) OrderDescByCodeType() RedeemCodeQuerySet {
|
|||
return qs.w(qs.db.Order("code_type DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByCouponId is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) OrderDescByCouponId() RedeemCodeQuerySet {
|
||||
return qs.w(qs.db.Order("coupon_id DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByCreatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs RedeemCodeQuerySet) OrderDescByCreatedAt() RedeemCodeQuerySet {
|
||||
|
@ -837,6 +905,13 @@ func (u RedeemCodeUpdater) SetCodeType(codeType string) RedeemCodeUpdater {
|
|||
return u
|
||||
}
|
||||
|
||||
// SetCouponId is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u RedeemCodeUpdater) SetCouponId(couponId uint32) RedeemCodeUpdater {
|
||||
u.fields[string(RedeemCodeDBSchema.CouponId)] = couponId
|
||||
return u
|
||||
}
|
||||
|
||||
// SetCreatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u RedeemCodeUpdater) SetCreatedAt(createdAt time.Time) RedeemCodeUpdater {
|
||||
|
@ -939,6 +1014,7 @@ var RedeemCodeDBSchema = struct {
|
|||
CodeSecret RedeemCodeDBSchemaField
|
||||
EffectiveTime RedeemCodeDBSchemaField
|
||||
ExpirationTime RedeemCodeDBSchemaField
|
||||
CouponId RedeemCodeDBSchemaField
|
||||
}{
|
||||
|
||||
ID: RedeemCodeDBSchemaField("id"),
|
||||
|
@ -952,6 +1028,7 @@ var RedeemCodeDBSchema = struct {
|
|||
CodeSecret: RedeemCodeDBSchemaField("code_secret"),
|
||||
EffectiveTime: RedeemCodeDBSchemaField("effective_time"),
|
||||
ExpirationTime: RedeemCodeDBSchemaField("expiration_time"),
|
||||
CouponId: RedeemCodeDBSchemaField("coupon_id"),
|
||||
}
|
||||
|
||||
// Update updates RedeemCode fields by primary key
|
||||
|
@ -969,6 +1046,7 @@ func (o *RedeemCode) Update(db *gorm.DB, fields ...RedeemCodeDBSchemaField) erro
|
|||
"code_secret": o.CodeSecret,
|
||||
"effective_time": o.EffectiveTime,
|
||||
"expiration_time": o.ExpirationTime,
|
||||
"coupon_id": o.CouponId,
|
||||
}
|
||||
u := map[string]interface{}{}
|
||||
for _, f := range fields {
|
||||
|
|
867
model/autogenerated_wx_msg.go
Normal file
867
model/autogenerated_wx_msg.go
Normal file
|
@ -0,0 +1,867 @@
|
|||
// Code generated by go-queryset. DO NOT EDIT.
|
||||
package model
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
// ===== BEGIN of all query sets
|
||||
|
||||
// ===== BEGIN of query set PublicRecordQuerySet
|
||||
|
||||
// PublicRecordQuerySet is an queryset type for PublicRecord
|
||||
type PublicRecordQuerySet struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
// NewPublicRecordQuerySet constructs new PublicRecordQuerySet
|
||||
func NewPublicRecordQuerySet(db *gorm.DB) PublicRecordQuerySet {
|
||||
return PublicRecordQuerySet{
|
||||
db: db.Model(&PublicRecord{}),
|
||||
}
|
||||
}
|
||||
|
||||
func (qs PublicRecordQuerySet) w(db *gorm.DB) PublicRecordQuerySet {
|
||||
return NewPublicRecordQuerySet(db)
|
||||
}
|
||||
|
||||
func (qs PublicRecordQuerySet) Select(fields ...PublicRecordDBSchemaField) PublicRecordQuerySet {
|
||||
names := []string{}
|
||||
for _, f := range fields {
|
||||
names = append(names, f.String())
|
||||
}
|
||||
|
||||
return qs.w(qs.db.Select(strings.Join(names, ",")))
|
||||
}
|
||||
|
||||
// Create is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (o *PublicRecord) Create(db *gorm.DB) error {
|
||||
return db.Create(o).Error
|
||||
}
|
||||
|
||||
// Delete is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (o *PublicRecord) Delete(db *gorm.DB) error {
|
||||
return db.Delete(o).Error
|
||||
}
|
||||
|
||||
// All is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) All(ret *[]PublicRecord) error {
|
||||
return qs.db.Find(ret).Error
|
||||
}
|
||||
|
||||
// Count is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) Count() (int, error) {
|
||||
var count int
|
||||
err := qs.db.Count(&count).Error
|
||||
return count, err
|
||||
}
|
||||
|
||||
// CreatedAtEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) CreatedAtEq(createdAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at = ?", createdAt))
|
||||
}
|
||||
|
||||
// CreatedAtGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) CreatedAtGt(createdAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at > ?", createdAt))
|
||||
}
|
||||
|
||||
// CreatedAtGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) CreatedAtGte(createdAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at >= ?", createdAt))
|
||||
}
|
||||
|
||||
// CreatedAtLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) CreatedAtLt(createdAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at < ?", createdAt))
|
||||
}
|
||||
|
||||
// CreatedAtLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) CreatedAtLte(createdAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at <= ?", createdAt))
|
||||
}
|
||||
|
||||
// CreatedAtNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) CreatedAtNe(createdAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at != ?", createdAt))
|
||||
}
|
||||
|
||||
// Delete is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) Delete() error {
|
||||
return qs.db.Delete(PublicRecord{}).Error
|
||||
}
|
||||
|
||||
// DeleteNum is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) DeleteNum() (int64, error) {
|
||||
db := qs.db.Delete(PublicRecord{})
|
||||
return db.RowsAffected, db.Error
|
||||
}
|
||||
|
||||
// DeleteNumUnscoped is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) DeleteNumUnscoped() (int64, error) {
|
||||
db := qs.db.Unscoped().Delete(PublicRecord{})
|
||||
return db.RowsAffected, db.Error
|
||||
}
|
||||
|
||||
// DeletedAtEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) DeletedAtEq(deletedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at = ?", deletedAt))
|
||||
}
|
||||
|
||||
// DeletedAtGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) DeletedAtGt(deletedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at > ?", deletedAt))
|
||||
}
|
||||
|
||||
// DeletedAtGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) DeletedAtGte(deletedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at >= ?", deletedAt))
|
||||
}
|
||||
|
||||
// DeletedAtIsNotNull is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) DeletedAtIsNotNull() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at IS NOT NULL"))
|
||||
}
|
||||
|
||||
// DeletedAtIsNull is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) DeletedAtIsNull() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at IS NULL"))
|
||||
}
|
||||
|
||||
// DeletedAtLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) DeletedAtLt(deletedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at < ?", deletedAt))
|
||||
}
|
||||
|
||||
// DeletedAtLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) DeletedAtLte(deletedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at <= ?", deletedAt))
|
||||
}
|
||||
|
||||
// DeletedAtNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) DeletedAtNe(deletedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at != ?", deletedAt))
|
||||
}
|
||||
|
||||
// FocusStateEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) FocusStateEq(focusState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("focus_state = ?", focusState))
|
||||
}
|
||||
|
||||
// FocusStateGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) FocusStateGt(focusState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("focus_state > ?", focusState))
|
||||
}
|
||||
|
||||
// FocusStateGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) FocusStateGte(focusState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("focus_state >= ?", focusState))
|
||||
}
|
||||
|
||||
// FocusStateIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) FocusStateIn(focusState ...uint32) PublicRecordQuerySet {
|
||||
if len(focusState) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one focusState in FocusStateIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("focus_state IN (?)", focusState))
|
||||
}
|
||||
|
||||
// FocusStateLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) FocusStateLt(focusState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("focus_state < ?", focusState))
|
||||
}
|
||||
|
||||
// FocusStateLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) FocusStateLte(focusState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("focus_state <= ?", focusState))
|
||||
}
|
||||
|
||||
// FocusStateNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) FocusStateNe(focusState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("focus_state != ?", focusState))
|
||||
}
|
||||
|
||||
// FocusStateNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) FocusStateNotIn(focusState ...uint32) PublicRecordQuerySet {
|
||||
if len(focusState) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one focusState in FocusStateNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("focus_state NOT IN (?)", focusState))
|
||||
}
|
||||
|
||||
// GetDB is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) GetDB() *gorm.DB {
|
||||
return qs.db
|
||||
}
|
||||
|
||||
// GetUpdater is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) GetUpdater() PublicRecordUpdater {
|
||||
return NewPublicRecordUpdater(qs.db)
|
||||
}
|
||||
|
||||
// IDEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) IDEq(ID uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id = ?", ID))
|
||||
}
|
||||
|
||||
// IDGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) IDGt(ID uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id > ?", ID))
|
||||
}
|
||||
|
||||
// IDGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) IDGte(ID uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id >= ?", ID))
|
||||
}
|
||||
|
||||
// IDIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) IDIn(ID ...uint32) PublicRecordQuerySet {
|
||||
if len(ID) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one ID in IDIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("id IN (?)", ID))
|
||||
}
|
||||
|
||||
// IDLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) IDLt(ID uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id < ?", ID))
|
||||
}
|
||||
|
||||
// IDLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) IDLte(ID uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id <= ?", ID))
|
||||
}
|
||||
|
||||
// IDNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) IDNe(ID uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id != ?", ID))
|
||||
}
|
||||
|
||||
// IDNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) IDNotIn(ID ...uint32) PublicRecordQuerySet {
|
||||
if len(ID) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one ID in IDNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("id NOT IN (?)", ID))
|
||||
}
|
||||
|
||||
// Limit is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) Limit(limit int) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Limit(limit))
|
||||
}
|
||||
|
||||
// Offset is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) Offset(offset int) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Offset(offset))
|
||||
}
|
||||
|
||||
// One is used to retrieve one result. It returns gorm.ErrRecordNotFound
|
||||
// if nothing was fetched
|
||||
func (qs PublicRecordQuerySet) One(ret *PublicRecord) error {
|
||||
return qs.db.First(ret).Error
|
||||
}
|
||||
|
||||
// OpenIdEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OpenIdEq(openId string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("open_id = ?", openId))
|
||||
}
|
||||
|
||||
// OpenIdGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OpenIdGt(openId string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("open_id > ?", openId))
|
||||
}
|
||||
|
||||
// OpenIdGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OpenIdGte(openId string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("open_id >= ?", openId))
|
||||
}
|
||||
|
||||
// OpenIdIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OpenIdIn(openId ...string) PublicRecordQuerySet {
|
||||
if len(openId) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one openId in OpenIdIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("open_id IN (?)", openId))
|
||||
}
|
||||
|
||||
// OpenIdLike is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OpenIdLike(openId string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("open_id LIKE ?", openId))
|
||||
}
|
||||
|
||||
// OpenIdLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OpenIdLt(openId string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("open_id < ?", openId))
|
||||
}
|
||||
|
||||
// OpenIdLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OpenIdLte(openId string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("open_id <= ?", openId))
|
||||
}
|
||||
|
||||
// OpenIdNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OpenIdNe(openId string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("open_id != ?", openId))
|
||||
}
|
||||
|
||||
// OpenIdNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OpenIdNotIn(openId ...string) PublicRecordQuerySet {
|
||||
if len(openId) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one openId in OpenIdNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("open_id NOT IN (?)", openId))
|
||||
}
|
||||
|
||||
// OpenIdNotlike is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OpenIdNotlike(openId string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("open_id NOT LIKE ?", openId))
|
||||
}
|
||||
|
||||
// OrderAscByCreatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderAscByCreatedAt() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("created_at ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByDeletedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderAscByDeletedAt() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("deleted_at ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByFocusState is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderAscByFocusState() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("focus_state ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByID is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderAscByID() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("id ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByOpenId is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderAscByOpenId() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("open_id ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByRedeemCodeId is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderAscByRedeemCodeId() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("redeem_code_id ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByRedeemCodeState is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderAscByRedeemCodeState() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("redeem_code_state ASC"))
|
||||
}
|
||||
|
||||
// OrderAscBySerialCode is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderAscBySerialCode() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("serial_code ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByUpdatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderAscByUpdatedAt() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("updated_at ASC"))
|
||||
}
|
||||
|
||||
// OrderDescByCreatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderDescByCreatedAt() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("created_at DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByDeletedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderDescByDeletedAt() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("deleted_at DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByFocusState is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderDescByFocusState() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("focus_state DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByID is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderDescByID() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("id DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByOpenId is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderDescByOpenId() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("open_id DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByRedeemCodeId is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderDescByRedeemCodeId() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("redeem_code_id DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByRedeemCodeState is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderDescByRedeemCodeState() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("redeem_code_state DESC"))
|
||||
}
|
||||
|
||||
// OrderDescBySerialCode is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderDescBySerialCode() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("serial_code DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByUpdatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) OrderDescByUpdatedAt() PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Order("updated_at DESC"))
|
||||
}
|
||||
|
||||
// RedeemCodeIdEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeIdEq(redeemCodeId uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_id = ?", redeemCodeId))
|
||||
}
|
||||
|
||||
// RedeemCodeIdGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeIdGt(redeemCodeId uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_id > ?", redeemCodeId))
|
||||
}
|
||||
|
||||
// RedeemCodeIdGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeIdGte(redeemCodeId uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_id >= ?", redeemCodeId))
|
||||
}
|
||||
|
||||
// RedeemCodeIdIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeIdIn(redeemCodeId ...uint32) PublicRecordQuerySet {
|
||||
if len(redeemCodeId) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one redeemCodeId in RedeemCodeIdIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("redeem_code_id IN (?)", redeemCodeId))
|
||||
}
|
||||
|
||||
// RedeemCodeIdLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeIdLt(redeemCodeId uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_id < ?", redeemCodeId))
|
||||
}
|
||||
|
||||
// RedeemCodeIdLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeIdLte(redeemCodeId uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_id <= ?", redeemCodeId))
|
||||
}
|
||||
|
||||
// RedeemCodeIdNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeIdNe(redeemCodeId uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_id != ?", redeemCodeId))
|
||||
}
|
||||
|
||||
// RedeemCodeIdNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeIdNotIn(redeemCodeId ...uint32) PublicRecordQuerySet {
|
||||
if len(redeemCodeId) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one redeemCodeId in RedeemCodeIdNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("redeem_code_id NOT IN (?)", redeemCodeId))
|
||||
}
|
||||
|
||||
// RedeemCodeStateEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeStateEq(redeemCodeState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_state = ?", redeemCodeState))
|
||||
}
|
||||
|
||||
// RedeemCodeStateGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeStateGt(redeemCodeState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_state > ?", redeemCodeState))
|
||||
}
|
||||
|
||||
// RedeemCodeStateGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeStateGte(redeemCodeState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_state >= ?", redeemCodeState))
|
||||
}
|
||||
|
||||
// RedeemCodeStateIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeStateIn(redeemCodeState ...uint32) PublicRecordQuerySet {
|
||||
if len(redeemCodeState) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one redeemCodeState in RedeemCodeStateIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("redeem_code_state IN (?)", redeemCodeState))
|
||||
}
|
||||
|
||||
// RedeemCodeStateLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeStateLt(redeemCodeState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_state < ?", redeemCodeState))
|
||||
}
|
||||
|
||||
// RedeemCodeStateLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeStateLte(redeemCodeState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_state <= ?", redeemCodeState))
|
||||
}
|
||||
|
||||
// RedeemCodeStateNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeStateNe(redeemCodeState uint32) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("redeem_code_state != ?", redeemCodeState))
|
||||
}
|
||||
|
||||
// RedeemCodeStateNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) RedeemCodeStateNotIn(redeemCodeState ...uint32) PublicRecordQuerySet {
|
||||
if len(redeemCodeState) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one redeemCodeState in RedeemCodeStateNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("redeem_code_state NOT IN (?)", redeemCodeState))
|
||||
}
|
||||
|
||||
// SerialCodeEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) SerialCodeEq(serialCode string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("serial_code = ?", serialCode))
|
||||
}
|
||||
|
||||
// SerialCodeGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) SerialCodeGt(serialCode string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("serial_code > ?", serialCode))
|
||||
}
|
||||
|
||||
// SerialCodeGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) SerialCodeGte(serialCode string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("serial_code >= ?", serialCode))
|
||||
}
|
||||
|
||||
// SerialCodeIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) SerialCodeIn(serialCode ...string) PublicRecordQuerySet {
|
||||
if len(serialCode) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one serialCode in SerialCodeIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("serial_code IN (?)", serialCode))
|
||||
}
|
||||
|
||||
// SerialCodeLike is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) SerialCodeLike(serialCode string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("serial_code LIKE ?", serialCode))
|
||||
}
|
||||
|
||||
// SerialCodeLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) SerialCodeLt(serialCode string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("serial_code < ?", serialCode))
|
||||
}
|
||||
|
||||
// SerialCodeLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) SerialCodeLte(serialCode string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("serial_code <= ?", serialCode))
|
||||
}
|
||||
|
||||
// SerialCodeNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) SerialCodeNe(serialCode string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("serial_code != ?", serialCode))
|
||||
}
|
||||
|
||||
// SerialCodeNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) SerialCodeNotIn(serialCode ...string) PublicRecordQuerySet {
|
||||
if len(serialCode) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one serialCode in SerialCodeNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("serial_code NOT IN (?)", serialCode))
|
||||
}
|
||||
|
||||
// SerialCodeNotlike is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) SerialCodeNotlike(serialCode string) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("serial_code NOT LIKE ?", serialCode))
|
||||
}
|
||||
|
||||
// UpdatedAtEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) UpdatedAtEq(updatedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at = ?", updatedAt))
|
||||
}
|
||||
|
||||
// UpdatedAtGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) UpdatedAtGt(updatedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at > ?", updatedAt))
|
||||
}
|
||||
|
||||
// UpdatedAtGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) UpdatedAtGte(updatedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at >= ?", updatedAt))
|
||||
}
|
||||
|
||||
// UpdatedAtLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) UpdatedAtLt(updatedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at < ?", updatedAt))
|
||||
}
|
||||
|
||||
// UpdatedAtLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) UpdatedAtLte(updatedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at <= ?", updatedAt))
|
||||
}
|
||||
|
||||
// UpdatedAtNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs PublicRecordQuerySet) UpdatedAtNe(updatedAt time.Time) PublicRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at != ?", updatedAt))
|
||||
}
|
||||
|
||||
// SetCreatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) SetCreatedAt(createdAt time.Time) PublicRecordUpdater {
|
||||
u.fields[string(PublicRecordDBSchema.CreatedAt)] = createdAt
|
||||
return u
|
||||
}
|
||||
|
||||
// SetDeletedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) SetDeletedAt(deletedAt *time.Time) PublicRecordUpdater {
|
||||
u.fields[string(PublicRecordDBSchema.DeletedAt)] = deletedAt
|
||||
return u
|
||||
}
|
||||
|
||||
// SetFocusState is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) SetFocusState(focusState uint32) PublicRecordUpdater {
|
||||
u.fields[string(PublicRecordDBSchema.FocusState)] = focusState
|
||||
return u
|
||||
}
|
||||
|
||||
// SetID is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) SetID(ID uint32) PublicRecordUpdater {
|
||||
u.fields[string(PublicRecordDBSchema.ID)] = ID
|
||||
return u
|
||||
}
|
||||
|
||||
// SetOpenId is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) SetOpenId(openId string) PublicRecordUpdater {
|
||||
u.fields[string(PublicRecordDBSchema.OpenId)] = openId
|
||||
return u
|
||||
}
|
||||
|
||||
// SetRedeemCodeId is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) SetRedeemCodeId(redeemCodeId uint32) PublicRecordUpdater {
|
||||
u.fields[string(PublicRecordDBSchema.RedeemCodeId)] = redeemCodeId
|
||||
return u
|
||||
}
|
||||
|
||||
// SetRedeemCodeState is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) SetRedeemCodeState(redeemCodeState uint32) PublicRecordUpdater {
|
||||
u.fields[string(PublicRecordDBSchema.RedeemCodeState)] = redeemCodeState
|
||||
return u
|
||||
}
|
||||
|
||||
// SetSerialCode is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) SetSerialCode(serialCode string) PublicRecordUpdater {
|
||||
u.fields[string(PublicRecordDBSchema.SerialCode)] = serialCode
|
||||
return u
|
||||
}
|
||||
|
||||
// SetUpdatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) SetUpdatedAt(updatedAt time.Time) PublicRecordUpdater {
|
||||
u.fields[string(PublicRecordDBSchema.UpdatedAt)] = updatedAt
|
||||
return u
|
||||
}
|
||||
|
||||
// Update is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) Update() error {
|
||||
return u.db.Updates(u.fields).Error
|
||||
}
|
||||
|
||||
// UpdateNum is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u PublicRecordUpdater) UpdateNum() (int64, error) {
|
||||
db := u.db.Updates(u.fields)
|
||||
return db.RowsAffected, db.Error
|
||||
}
|
||||
|
||||
// ===== END of query set PublicRecordQuerySet
|
||||
|
||||
// ===== BEGIN of PublicRecord modifiers
|
||||
|
||||
// PublicRecordDBSchemaField describes database schema field. It requires for method 'Update'
|
||||
type PublicRecordDBSchemaField string
|
||||
|
||||
// String method returns string representation of field.
|
||||
// nolint: dupl
|
||||
func (f PublicRecordDBSchemaField) String() string {
|
||||
return string(f)
|
||||
}
|
||||
|
||||
// PublicRecordDBSchema stores db field names of PublicRecord
|
||||
var PublicRecordDBSchema = struct {
|
||||
ID PublicRecordDBSchemaField
|
||||
CreatedAt PublicRecordDBSchemaField
|
||||
UpdatedAt PublicRecordDBSchemaField
|
||||
DeletedAt PublicRecordDBSchemaField
|
||||
OpenId PublicRecordDBSchemaField
|
||||
RedeemCodeId PublicRecordDBSchemaField
|
||||
SerialCode PublicRecordDBSchemaField
|
||||
FocusState PublicRecordDBSchemaField
|
||||
RedeemCodeState PublicRecordDBSchemaField
|
||||
}{
|
||||
|
||||
ID: PublicRecordDBSchemaField("id"),
|
||||
CreatedAt: PublicRecordDBSchemaField("created_at"),
|
||||
UpdatedAt: PublicRecordDBSchemaField("updated_at"),
|
||||
DeletedAt: PublicRecordDBSchemaField("deleted_at"),
|
||||
OpenId: PublicRecordDBSchemaField("open_id"),
|
||||
RedeemCodeId: PublicRecordDBSchemaField("redeem_code_id"),
|
||||
SerialCode: PublicRecordDBSchemaField("serial_code"),
|
||||
FocusState: PublicRecordDBSchemaField("focus_state"),
|
||||
RedeemCodeState: PublicRecordDBSchemaField("redeem_code_state"),
|
||||
}
|
||||
|
||||
// Update updates PublicRecord fields by primary key
|
||||
// nolint: dupl
|
||||
func (o *PublicRecord) Update(db *gorm.DB, fields ...PublicRecordDBSchemaField) error {
|
||||
dbNameToFieldName := map[string]interface{}{
|
||||
"id": o.ID,
|
||||
"created_at": o.CreatedAt,
|
||||
"updated_at": o.UpdatedAt,
|
||||
"deleted_at": o.DeletedAt,
|
||||
"open_id": o.OpenId,
|
||||
"redeem_code_id": o.RedeemCodeId,
|
||||
"serial_code": o.SerialCode,
|
||||
"focus_state": o.FocusState,
|
||||
"redeem_code_state": o.RedeemCodeState,
|
||||
}
|
||||
u := map[string]interface{}{}
|
||||
for _, f := range fields {
|
||||
fs := f.String()
|
||||
u[fs] = dbNameToFieldName[fs]
|
||||
}
|
||||
if err := db.Model(o).Updates(u).Error; err != nil {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return err
|
||||
}
|
||||
|
||||
return fmt.Errorf("can't update PublicRecord %v fields %v: %s",
|
||||
o, fields, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// PublicRecordUpdater is an PublicRecord updates manager
|
||||
type PublicRecordUpdater struct {
|
||||
fields map[string]interface{}
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
// NewPublicRecordUpdater creates new PublicRecord updater
|
||||
// nolint: dupl
|
||||
func NewPublicRecordUpdater(db *gorm.DB) PublicRecordUpdater {
|
||||
return PublicRecordUpdater{
|
||||
fields: map[string]interface{}{},
|
||||
db: db.Model(&PublicRecord{}),
|
||||
}
|
||||
}
|
||||
|
||||
// ===== END of PublicRecord modifiers
|
||||
|
||||
// ===== END of all query sets
|
|
@ -25,7 +25,7 @@ type Coupon struct {
|
|||
Name string `json:"name"`
|
||||
Describe string `json:"describe" gorm:"type:text;"` // 描述
|
||||
CouponType string `json:"coupon_type"`
|
||||
ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费
|
||||
ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费 2-关注公众号
|
||||
ActivityId uint32 `json:"activity_id" gorm:"index"`
|
||||
Value uint32 `json:"value"`
|
||||
OutCount uint32 `json:"out_count"` // 用户已领取数量
|
||||
|
@ -59,7 +59,7 @@ type Activity struct {
|
|||
Model
|
||||
|
||||
Name string `json:"name" gorm:"column:name;comment:'活动名称'"` // 活动名称
|
||||
ActivityType uint32 `json:"activity_type" gorm:"column:activity_type;comment:'活动类型'"` // 活动类型 1-会员续费
|
||||
ActivityType uint32 `json:"activity_type" gorm:"column:activity_type;comment:'活动类型'"` // 活动类型 1-会员续费 2-关注公众号
|
||||
State uint32 `json:"state" gorm:"column:state;comment:'状态'"` // 1-未开启 2-进行中 3-已结束
|
||||
StartTime time.Time `json:"start_time" gorm:"column:start_time;comment:'开始时间'"` // 开始时间
|
||||
EndTime time.Time `json:"end_time" gorm:"column:end_time;comment:'结束时间'"` // 结束时间 零值永不结束
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
"fmt"
|
||||
"mh-server/lib/auth"
|
||||
"mh-server/lib/utils"
|
||||
"os"
|
||||
"sort"
|
||||
"strconv"
|
||||
|
||||
|
@ -82,7 +83,6 @@ func InitTestDB() {
|
|||
//&User{},
|
||||
//&UserAttendance{},
|
||||
//&UserAttendanceRecord{},
|
||||
|
||||
// 合作商
|
||||
//&Store{},
|
||||
//&GameCard{},
|
||||
|
@ -104,7 +104,6 @@ func InitTestDB() {
|
|||
//&InviteMemberReport{},
|
||||
//&CooperativeDeductSettle{},
|
||||
//&XcxRole{},
|
||||
|
||||
// 商城
|
||||
//&Goods{},
|
||||
//&GoodsCat{},
|
||||
|
@ -116,7 +115,6 @@ func InitTestDB() {
|
|||
//&OperationLog{},
|
||||
//&DeliverTask{},
|
||||
//&DeliverTaskSub{},
|
||||
|
||||
// 优惠券
|
||||
//&GameCard{},
|
||||
//&ActivityMemberRenewal{},
|
||||
|
@ -126,7 +124,7 @@ func InitTestDB() {
|
|||
//&UserOpenMemberRecord{},
|
||||
//&HomeCarousel{},
|
||||
//&UserRenewalLog{},
|
||||
|
||||
// 续费会员
|
||||
//&User{},
|
||||
//&UserOpenMemberRecord{},
|
||||
//&CooperativeMemberDeduct{},
|
||||
|
@ -144,7 +142,10 @@ func InitTestDB() {
|
|||
//&UserInvite{},
|
||||
//&UserInviteRecord{},
|
||||
//&CooperativeMemberPromotionStore{},
|
||||
|
||||
&RecycleCardOrder{},
|
||||
&RedeemCode{},
|
||||
&PublicRecord{},
|
||||
)
|
||||
|
||||
fmt.Println("DB init success")
|
||||
|
@ -180,98 +181,9 @@ func InitDBProd() {
|
|||
DBProd.LogMode(false)
|
||||
DBProd.SingularTable(true)
|
||||
DBProd.AutoMigrate(
|
||||
//&RedeemCode{},
|
||||
//&UserRedeemCode{},
|
||||
//&GameCardGoods{},
|
||||
|
||||
//&UserShareCardBill{},
|
||||
//&ShareCardBillGame{},
|
||||
//&UserShareCard{},
|
||||
//&ShareCardVmRecord{},
|
||||
//&UserShareCardVm{},
|
||||
//&ShareCardDateVm{},
|
||||
//&ShareCardGameVm{},
|
||||
//&ShareCardRetrieve{},
|
||||
//&ShareCardRetrieveCard{},
|
||||
//&GameCardLabel{},
|
||||
//&CardIssueFeedback{},
|
||||
|
||||
//&GameCard{},
|
||||
//&FundRecord{},
|
||||
//&User{},
|
||||
|
||||
//&GameCard{},
|
||||
//&FundRecord{},
|
||||
//&User{},
|
||||
//&UserAttendance{},
|
||||
//&UserAttendanceRecord{},
|
||||
|
||||
//&Store{},
|
||||
//&GameCard{},
|
||||
//&GameCardGoods{},
|
||||
//&GameCardGoodsStock{},
|
||||
//&User{},
|
||||
//&Order{},
|
||||
//&OrderCard{},
|
||||
//
|
||||
//&OperationLog{},
|
||||
//&CooperativeBusiness{},
|
||||
//&CooperativeMemberDeduct{},
|
||||
//&CooperativeAssistantMemberDeduct{},
|
||||
//
|
||||
//&CooperativeMemberPromotion{},
|
||||
//&CooperativeMemberPromotionStore{},
|
||||
//&CooperativeMemberPromotionDay{},
|
||||
//&CooperativeMemberPromotionStoreDay{},
|
||||
//&InviteMemberReport{},
|
||||
//&CooperativeDeductSettle{},
|
||||
//&XcxRole{},
|
||||
|
||||
// 商城
|
||||
//&Goods{},
|
||||
//&GoodsCat{},
|
||||
//&GoodsAttribute{},
|
||||
//&GoodsAttributeCombo{},
|
||||
//&Spec{},
|
||||
//&SpecValue{},
|
||||
//&GoodsOrder{},
|
||||
//&OperationLog{},
|
||||
//&DeliverTask{},
|
||||
//&DeliverTaskSub{},
|
||||
|
||||
// 优惠券
|
||||
//&GameCard{},
|
||||
//&ActivityMemberRenewal{},
|
||||
//&Activity{},
|
||||
//&UserCoupon{},
|
||||
//&Coupon{},
|
||||
//&UserOpenMemberRecord{},
|
||||
//&HomeCarousel{},
|
||||
//&UserRenewalLog{},
|
||||
//&GameCard{},
|
||||
//&CooperativeMemberPromotion{},
|
||||
//&CooperativeMemberPromotionStore{},
|
||||
//&CooperativeMemberPromotionDay{},
|
||||
//&CooperativeMemberPromotionStoreDay{},
|
||||
|
||||
//&User{},
|
||||
//&UserOpenMemberRecord{},
|
||||
//&CooperativeMemberDeduct{},
|
||||
//&CooperativeAssistantMemberDeduct{},
|
||||
//&UserMemberRecord{},
|
||||
//&CooperativeDeductSettle{},
|
||||
//&CooperativeMemberPromotionStore{},
|
||||
//&CooperativeMemberPromotionDay{},
|
||||
//&InviteMemberReport{},
|
||||
//&MemberStatisticDaily{},
|
||||
//&CooperativeMemberPromotion{},
|
||||
//&GameCard{},
|
||||
//&CooperativeMemberPromotionStoreDay{},
|
||||
//
|
||||
//&UserInvite{},
|
||||
//&UserInviteRecord{},
|
||||
//&CooperativeMemberPromotionStore{},
|
||||
&RecycleCardOrder{},
|
||||
&RedeemCode{},
|
||||
&PublicRecord{},
|
||||
)
|
||||
|
||||
if err := DBProd.DB().Ping(); err != nil {
|
||||
|
@ -596,7 +508,7 @@ func RedeemCodeCreate() {
|
|||
InitDBProd()
|
||||
|
||||
for i := 0; i < 7; i++ {
|
||||
redeem := NewRedeemCode()
|
||||
redeem := NewRedeemCode("MC30")
|
||||
|
||||
fmt.Println("redeemCode:", redeem)
|
||||
|
||||
|
@ -624,11 +536,51 @@ func RedeemCodeCreate() {
|
|||
|
||||
}
|
||||
|
||||
// 生成会员兑换码
|
||||
func TestDeductionCoupon5Create(t *testing.T) {
|
||||
RedeemCodeDeductionCoupon5Create()
|
||||
}
|
||||
|
||||
func RedeemCodeDeductionCoupon5Create() {
|
||||
InitTestDB()
|
||||
//InitDBProd()
|
||||
|
||||
for i := 0; i < 9950; i++ {
|
||||
redeem := NewRedeemCode("DC5")
|
||||
|
||||
fmt.Println("redeemCode:", redeem)
|
||||
|
||||
secretCode := RedeemSecretCode(redeem)
|
||||
|
||||
fmt.Println("secretCode:", secretCode)
|
||||
if !IsRedeemCodeExist(redeem) { // 数据库 TODO
|
||||
redeemCode := &RedeemCode{
|
||||
SerialCode: redeem,
|
||||
CodeType: CodeTypeDeductionCoupon5,
|
||||
Status: RedeemCodeStatusStock,
|
||||
StoreId: 0,
|
||||
CodeSecret: secretCode,
|
||||
EffectiveTime: time.Now(),
|
||||
ExpirationTime: time.Now().AddDate(1, 0, 0),
|
||||
CouponId: 4,
|
||||
}
|
||||
err := DBDev.Create(redeemCode).Error
|
||||
//err := DBProd.Create(redeemCode).Error
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func IsRedeemCodeExist(code string) bool {
|
||||
var isExist uint32
|
||||
sql := fmt.Sprintf("SELECT EXISTS (SELECT * FROM redeem_code WHERE serial_code = '%s') AS code_exsit;", code)
|
||||
//err := DBDev.Raw(sql).Row().Scan(&isExist)
|
||||
err := DBProd.Raw(sql).Row().Scan(&isExist)
|
||||
err := DBDev.Raw(sql).Row().Scan(&isExist)
|
||||
//err := DBProd.Raw(sql).Row().Scan(&isExist)
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
return true
|
||||
|
@ -636,7 +588,7 @@ func IsRedeemCodeExist(code string) bool {
|
|||
return isExist == 1
|
||||
}
|
||||
|
||||
func NewRedeemCode() string {
|
||||
func NewRedeemCode(prefix string) string {
|
||||
semen := fmt.Sprintf("MemberCard30%d", time.Now().UnixNano())
|
||||
shaer := sha512.New()
|
||||
shaer.Write([]byte(semen))
|
||||
|
@ -644,7 +596,7 @@ func NewRedeemCode() string {
|
|||
hs := fmt.Sprintf("%x", r)
|
||||
hs = strings.ToUpper(hs)
|
||||
|
||||
return "MC30" + hs[:19]
|
||||
return prefix + hs[:19]
|
||||
}
|
||||
|
||||
func TestInitConfig(t *testing.T) {
|
||||
|
@ -1662,3 +1614,49 @@ func MemberExport() {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
func TestGetAccessToken(t *testing.T) {
|
||||
InitTestDB()
|
||||
DB = DBDev
|
||||
GetAccessToken()
|
||||
}
|
||||
|
||||
func TestExportGameList(t *testing.T) {
|
||||
InitDBProd()
|
||||
var games []GameCard
|
||||
_ = NewGameCardQuerySet(DBProd).OrderDescByID().All(&games)
|
||||
|
||||
fileName := "游戏列表"
|
||||
fileName = time.Now().Format(TimeFormat) + fileName + ".md"
|
||||
// /www/server/images/export
|
||||
//f, err := os.OpenFile(fmt.Sprintf("./")+fileName, os.O_CREATE|os.O_TRUNC|os.O_APPEND|os.O_RDWR, 0644)
|
||||
f, err := os.OpenFile(fmt.Sprintf("./")+fileName, os.O_CREATE|os.O_TRUNC|os.O_APPEND|os.O_RDWR, 0644)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
//w := csv.NewWriter(f)
|
||||
//os.WriteFile()
|
||||
//headline := []string{"商品名称", "卡池总数", "在库数量", "玩家持有数量", "锁定数量", "借出总数", "商品编号", "所在门店", "状态"}
|
||||
//if err := w.Write(headline); err != nil {
|
||||
//}
|
||||
|
||||
for i, goods := range games {
|
||||
//if i > 5 {
|
||||
// break
|
||||
//}
|
||||
fmt.Println("第", i)
|
||||
w := fmt.Sprintf("##### %s \n ", goods.Name) +
|
||||
fmt.Sprintf(`<img src="%s" `, goods.CoverImg) + `style="zoom:50%;" />` + "\n" +
|
||||
"游戏详情:\n" +
|
||||
goods.DetailInfo + "\n\n\n"
|
||||
f.WriteString(w)
|
||||
}
|
||||
|
||||
if err := f.Close(); err != nil {
|
||||
//log.Fatal(err)
|
||||
logger.Error(" err:", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -14,30 +14,32 @@ import (
|
|||
type RecycleCardOrder struct {
|
||||
Model
|
||||
|
||||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
GoodsId uint32 `json:"goods_id" gorm:"index"`
|
||||
GoodsName string `json:"goods_name"`
|
||||
GoodsImg string `json:"goods_img"`
|
||||
Keyword string `json:"keyword"`
|
||||
Price uint32 `json:"price"`
|
||||
State uint32 `json:"state"` // 1-待回收 2-已完成 3-已被拒 4-已取消
|
||||
StoreId uint32 `json:"store_id" gorm:"index"`
|
||||
StoreName string `json:"store_name"`
|
||||
Images string `json:"images" gorm:"type:text"` // 图片
|
||||
SerialNumber string `json:"serial_number"`
|
||||
EvaluationTime time.Time `json:"evaluation_time"`
|
||||
Attribute string `json:"attribute" gorm:"type:text"` //
|
||||
Number string `json:"number"` // 订单
|
||||
CheckTime time.Time `json:"check_time"`
|
||||
DepressionRate uint32 `json:"depression_rate"` //
|
||||
User *User `json:"user" gorm:"-"`
|
||||
Store *Store `json:"store" gorm:"-"`
|
||||
Describe string `json:"describe"` // 描述
|
||||
Remark string `json:"remark"` // 备注
|
||||
AssistantName string `json:"assistant_name"` // 店员
|
||||
RetrieveTime time.Time `json:"retrieve_time"` // 审核时间
|
||||
RetrieveState uint32 `json:"retrieve_state"` // 回收卡状态 1-未确认 2-已确认
|
||||
OriginalPrice uint32 `json:"original_price"` // 原价
|
||||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
GoodsId uint32 `json:"goods_id" gorm:"index"`
|
||||
GoodsName string `json:"goods_name"`
|
||||
GoodsImg string `json:"goods_img"`
|
||||
Keyword string `json:"keyword"`
|
||||
Price uint32 `json:"price"`
|
||||
State uint32 `json:"state"` // 1-待回收 2-已完成 3-已被拒 4-已取消
|
||||
StoreId uint32 `json:"store_id" gorm:"index"`
|
||||
StoreName string `json:"store_name"`
|
||||
Images string `json:"images" gorm:"type:text"` // 图片
|
||||
SerialNumber string `json:"serial_number"`
|
||||
EvaluationTime time.Time `json:"evaluation_time"`
|
||||
Attribute string `json:"attribute" gorm:"type:text"` //
|
||||
Number string `json:"number"` // 订单
|
||||
CheckTime time.Time `json:"check_time"`
|
||||
DepressionRate uint32 `json:"depression_rate"` //
|
||||
User *User `json:"user" gorm:"-"`
|
||||
Store *Store `json:"store" gorm:"-"`
|
||||
Describe string `json:"describe"` // 描述
|
||||
Remark string `json:"remark"` // 备注
|
||||
AssistantName string `json:"assistant_name"` // 店员
|
||||
RetrieveTime time.Time `json:"retrieve_time"` // 审核时间
|
||||
RetrieveState uint32 `json:"retrieve_state"` // 回收卡状态 1-未确认 2-已确认
|
||||
OriginalPrice uint32 `json:"original_price"` // 原价
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"` // 合作商id
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
// recycle_card_order
|
||||
}
|
||||
|
||||
|
@ -130,6 +132,15 @@ func RecycleCardOrderCreate(uid uint32, req xianmai.GameEvaluationReq) (*Recycle
|
|||
logger.Error("attributes marshal err:", err)
|
||||
return order, err
|
||||
}
|
||||
|
||||
store, err := GetStore(req.StoreId)
|
||||
if err != nil {
|
||||
logger.Error("store err:", err)
|
||||
return order, err
|
||||
}
|
||||
order.CooperativeBusinessId = store.CooperativeBusinessId
|
||||
order.CooperativeName = store.CooperativeName
|
||||
|
||||
order.Attribute = string(attributeByte)
|
||||
err = DB.Create(order).Error
|
||||
if err != nil {
|
||||
|
|
|
@ -19,6 +19,7 @@ const (
|
|||
CodeTypeMemberGoldMember = "member-card-gold-member"
|
||||
CodeTypeMemberPlatinumMember = "member-card-platinum-member"
|
||||
CodeTypeMemberBlackGoldMember = "member-card-black-gold-member"
|
||||
CodeTypeDeductionCoupon5 = "deduction-coupon-5"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -48,6 +49,8 @@ type RedeemCode struct {
|
|||
CodeSecret string `json:"code_secret"` // 兑换密码
|
||||
EffectiveTime time.Time `json:"effective_time"` // 生效时间
|
||||
ExpirationTime time.Time `json:"expiration_time"` // 过期时间
|
||||
CouponId uint32 `json:"coupon_id" gorm:"index"`
|
||||
//Remark string `json:"remark"`
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
|
|
|
@ -13,6 +13,11 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
const (
|
||||
WxPublicAppId = "wxfdb1c5654f681c7e"
|
||||
WxPublicAppSecret = "6e1908a71f31a80849ef0e59d90b7147"
|
||||
)
|
||||
|
||||
var mutexLock = new(sync.Mutex)
|
||||
|
||||
func AccessToken() (string, error) {
|
||||
|
@ -22,10 +27,50 @@ func AccessToken() (string, error) {
|
|||
Errcode uint32 `json:"errcode"`
|
||||
Errmsg string `json:"errmsg"`
|
||||
}{}
|
||||
//"app_id": "wx806c079463b5b56c",
|
||||
// "app_secret": "cb125688bf4e482f66e8c46062d568fc",
|
||||
|
||||
//config.AppConfig.WxAppId = "wxfdb1c5654f681c7e"
|
||||
//config.AppConfig.WxAppSecret = "6e1908a71f31a80849ef0e59d90b7147"
|
||||
//config.AppConfig.WxAppId = "wx806c079463b5b56c"
|
||||
//config.AppConfig.WxAppSecret = "cb125688bf4e482f66e8c46062d568fc"
|
||||
|
||||
//fmt.Println("WxAppId:", config.AppConfig.WxAppId)
|
||||
//fmt.Println("WxAppSecret:", config.AppConfig.WxAppSecret)
|
||||
fmt.Println("WxAppId:", WxPublicAppId)
|
||||
fmt.Println("WxAppSecret:", WxPublicAppSecret)
|
||||
if err := requests.GetAndParseJson("https://api.weixin.qq.com/cgi-bin/token", map[string]string{
|
||||
"grant_type": "client_credential",
|
||||
"appId": WxPublicAppId,
|
||||
"secret": WxPublicAppSecret,
|
||||
}, &response); err != nil {
|
||||
logger.Error(err)
|
||||
return "", err
|
||||
}
|
||||
|
||||
if response.Errcode != 0 {
|
||||
logger.Error(response.Errcode, "===", response.Errmsg)
|
||||
return "", errors.New(response.Errmsg)
|
||||
}
|
||||
|
||||
logger.Infof("response=%+v", response)
|
||||
|
||||
return response.AccessToken, nil
|
||||
}
|
||||
|
||||
func AppAccessToken() (string, error) {
|
||||
response := struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
ExpiresIn uint32 `json:"expires_in"`
|
||||
Errcode uint32 `json:"errcode"`
|
||||
Errmsg string `json:"errmsg"`
|
||||
}{}
|
||||
|
||||
//config.AppConfig.WxAppId = "wxfdb1c5654f681c7e"
|
||||
//config.AppConfig.WxAppSecret = "6e1908a71f31a80849ef0e59d90b7147"
|
||||
config.AppConfig.WxAppId = "wx806c079463b5b56c"
|
||||
config.AppConfig.WxAppSecret = "cb125688bf4e482f66e8c46062d568fc"
|
||||
|
||||
//fmt.Println("WxAppId:", config.AppConfig.WxAppId)
|
||||
//fmt.Println("WxAppSecret:", config.AppConfig.WxAppSecret)
|
||||
fmt.Println("WxAppId:", config.AppConfig.WxAppId)
|
||||
fmt.Println("WxAppSecret:", config.AppConfig.WxAppSecret)
|
||||
if err := requests.GetAndParseJson("https://api.weixin.qq.com/cgi-bin/token", map[string]string{
|
||||
|
@ -74,6 +119,7 @@ func GetAccessToken() (string, error) {
|
|||
time.Sleep(time.Second * 2 * time.Duration(i))
|
||||
continue
|
||||
}
|
||||
fmt.Println("accessToken:", accessToken)
|
||||
if accessToken != "" {
|
||||
logger.Info(accessToken)
|
||||
break
|
||||
|
@ -95,6 +141,55 @@ func GetAccessToken() (string, error) {
|
|||
return accessToken, nil
|
||||
}
|
||||
|
||||
// 获取 AccessToken 统一使用该方法,避免各自获取导致AccessToken 失效
|
||||
func AppGetAccessToken() (string, error) {
|
||||
fmt.Println("获取AccessToken1:")
|
||||
accessToken := ""
|
||||
var (
|
||||
err error
|
||||
tokenConfig Config
|
||||
)
|
||||
//mutexLock.Lock()
|
||||
//defer mutexLock.Unlock()
|
||||
if err := NewConfigQuerySet(DB).NameEq(common.AppConfigAccessToken).One(&tokenConfig); err != nil && err != RecordNotFound {
|
||||
logger.Error(err)
|
||||
return "", nil
|
||||
}
|
||||
logger.Error("查询accessToken:", tokenConfig.Value)
|
||||
accessToken = tokenConfig.Value
|
||||
if tokenConfig.UpdatedAt.Before(time.Unix(time.Now().Unix()-int64(7200), 0)) || tokenConfig.Value == "" {
|
||||
|
||||
i := 0
|
||||
tryTimes := 5
|
||||
for ; i < tryTimes; i++ {
|
||||
accessToken, err = AppAccessToken()
|
||||
if err != nil {
|
||||
logger.Error("GetAccessToken Fail...err=", err)
|
||||
time.Sleep(time.Second * 2 * time.Duration(i))
|
||||
continue
|
||||
}
|
||||
fmt.Println("accessToken:", accessToken)
|
||||
if accessToken != "" {
|
||||
logger.Info(accessToken)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if i >= tryTimes {
|
||||
logger.Error("GetAccessToken Fail...")
|
||||
return "", err
|
||||
}
|
||||
|
||||
err = NewConfigQuerySet(DB).NameEq(common.AppConfigAccessToken).GetUpdater().SetValue(accessToken).Update()
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
fmt.Println("获取AccessToken3:")
|
||||
return accessToken, nil
|
||||
}
|
||||
|
||||
// 获取 AccessToken 方法
|
||||
func GenAccessToken() (string, error) {
|
||||
accessToken := ""
|
||||
|
|
|
@ -895,10 +895,21 @@ func MemberExpireDelaying(uid uint32) (map[string]interface{}, error) {
|
|||
}
|
||||
var orderCard OrderCard
|
||||
err = NewOrderCardQuerySet(DB).UidEq(uid).CardStatusIn([]uint32{1, 2, 3, 4}...).OrderDescByOrderId().One(&orderCard)
|
||||
if err != nil {
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("order card err:", err)
|
||||
return ret, err
|
||||
}
|
||||
|
||||
if err == RecordNotFound {
|
||||
var order Order
|
||||
err = NewOrderQuerySet(DB).UidEq(uint64(uid)).CardStatusIn([]uint8{1, 2, 3, 4}...).OrderDescByID().Limit(1).One(&order)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("order card err:", err)
|
||||
return ret, err
|
||||
}
|
||||
orderCard.RevertTime = order.RevertTime
|
||||
orderCard.CardStatus = uint32(order.CardStatus)
|
||||
}
|
||||
deadline := orderCard.RevertTime
|
||||
if orderCard.CardStatus != 4 {
|
||||
deadline = time.Now()
|
||||
|
|
102
model/wx_msg.go
Normal file
102
model/wx_msg.go
Normal file
|
@ -0,0 +1,102 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"encoding/xml"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/gin-gonic/gin"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
//go:generate goqueryset -in wx_msg.go
|
||||
// gen:qs
|
||||
type PublicRecord struct {
|
||||
Model
|
||||
|
||||
OpenId string `json:"open_id" gorm:"index"`
|
||||
RedeemCodeId uint32 `json:"redeem_code_id" gorm:"index"`
|
||||
SerialCode string `json:"serial_code" gorm:"index;comment:'兑换编码'"` // 兑换编码
|
||||
FocusState uint32 `json:"focus_state"` // 关注状态:1-关注
|
||||
RedeemCodeState uint32 `json:"redeem_code_state"` // 兑换码状态:1-未领取 2-已领取 3-已使用
|
||||
// public_record
|
||||
}
|
||||
|
||||
type WxReplyTextMsg struct {
|
||||
XMLName xml.Name `xml:"xml"`
|
||||
ToUserName string `xml:"ToUserName"`
|
||||
FromUserName string `xml:"FromUserName"`
|
||||
CreateTime uint32 `xml:"CreateTime"`
|
||||
MsgType string `xml:"MsgType"`
|
||||
Content string `xml:"Content"`
|
||||
}
|
||||
|
||||
type WxReplyTextReceiveMsg struct {
|
||||
XMLName xml.Name `xml:"xml"`
|
||||
ToUserName string `xml:"ToUserName"`
|
||||
FromUserName string `xml:"FromUserName"`
|
||||
CreateTime uint32 `xml:"CreateTime"`
|
||||
MsgType string `xml:"MsgType"`
|
||||
Event string `xml:"Event"`
|
||||
Content string `xml:"Content"`
|
||||
MsgId uint64 `xml:"MsgId"`
|
||||
}
|
||||
|
||||
func SendCustomerServiceMessage(data []byte, c *gin.Context, accessToken string) error {
|
||||
client := http.Client{}
|
||||
SendCustomerServiceMessageUrl := "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + accessToken
|
||||
|
||||
fmt.Println("客服消息 请求参数:", string(data))
|
||||
req, err := http.NewRequest("POST", SendCustomerServiceMessageUrl, bytes.NewBuffer(data))
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
req.Header.Set("Content-Type", "application/json; charset=utf-8")
|
||||
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
|
||||
logger.Error("SendCustomerServiceMessage body:", string(body))
|
||||
type CSResp struct {
|
||||
ErrCode int `json:"err_code"`
|
||||
ErrMsg string `json:"err_msg"`
|
||||
}
|
||||
var MsgResp CSResp
|
||||
err = json.Unmarshal(body, &MsgResp)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
if MsgResp.ErrCode != 0 {
|
||||
logger.Error(MsgResp.ErrMsg)
|
||||
return errors.New(MsgResp.ErrMsg)
|
||||
//_, err := c.Writer.Write([]byte("success"))
|
||||
//if err != nil {
|
||||
// fmt.Println("响应失败")
|
||||
// logger.Error("Signature 响应失败", err)
|
||||
//}
|
||||
//logger.Error("SUCCESS")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func WipeStringSpace(s string) string {
|
||||
s = strings.Replace(s, " ", "", -1)
|
||||
s = strings.Replace(s, "\n", "", -1)
|
||||
return s
|
||||
}
|
|
@ -30,9 +30,12 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
// //api.POST("sys/config", controller.SysConfig) // 配置
|
||||
// api.POST("step/config", controller.StepConfig) // 步数配置
|
||||
// //api.POST("upload_user_info", controller.UploadUserInfo) // 上传用户信息
|
||||
api.POST("wxpay/notice", controller.PushWXPayNotice) // 微信推送支付通知
|
||||
api.POST("wxpay_refund/notice", controller.PushWXPayRefundNotice) // 微信推送支付退款通知
|
||||
api.POST("aliyun/sts_token", controller.AliyunStsTokenGet) // 阿里云上传图片token
|
||||
api.POST("wxpay/notice", controller.PushWXPayNotice) // 微信推送支付通知
|
||||
api.POST("wxpay_refund/notice", controller.PushWXPayRefundNotice) // 微信推送支付退款通知
|
||||
api.POST("aliyun/sts_token", controller.AliyunStsTokenGet) // 阿里云上传图片token
|
||||
api.POST("auto_reply/focus", controller.AutoReplyFocusMsg) // 自动回复
|
||||
api.GET("auto_reply/focus", controller.CustomerServiceMessageCheck) // 客服校验
|
||||
|
||||
// api.GET("wx_cs/message", controller.CustomerServiceMessageCheck) // 客服校验
|
||||
// api.POST("wx_cs/message", controller.CustomerServiceMessage) // 客服
|
||||
}
|
||||
|
@ -91,6 +94,7 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
//user.POST("service/wechat_id", controller.GetCustomerServiceWechatId) // 获取客服微信号
|
||||
user.POST("invite_applet_code", controller.UserInviteAppletQRCode) // 小程序分享二维码
|
||||
user.POST("invite_list", controller.UserInviteList) // 小程序分享二维码
|
||||
user.POST("use_code_to_coupon", controller.UserCodeToCoupon) // 兑换5券
|
||||
}
|
||||
|
||||
store := api.Group("store")
|
||||
|
|
Loading…
Reference in New Issue
Block a user