From 510a62fb852027665d0d3a77ca0e742e4ab8ae23 Mon Sep 17 00:00:00 2001 From: li Date: Tue, 26 Apr 2022 14:28:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E7=AD=BE=E5=88=B0=E9=A2=86=E7=A7=AF?= =?UTF-8?q?=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/game_card.go | 68 +- controller/order.go | 5 - controller/user.go | 222 ++++++ lib/utils/csttime.go | 6 +- model/autogenerated_task.go | 1487 +++++++++++++++++++++++++++++++++++ model/autogenerated_user.go | 180 +++++ model/config.go | 57 +- model/model_test.go | 108 +++ model/share_card.go | 2 +- model/task.go | 66 ++ model/user.go | 31 +- model/user_vm.go | 1 + router/router_app.go | 6 +- 13 files changed, 2176 insertions(+), 63 deletions(-) create mode 100644 model/autogenerated_task.go create mode 100644 model/task.go diff --git a/controller/game_card.go b/controller/game_card.go index f872539..b859eb8 100644 --- a/controller/game_card.go +++ b/controller/game_card.go @@ -715,6 +715,7 @@ func PushWXPayRefundNotice(c *gin.Context) { //if err != nil { // logger.Error(err) //} + mchID := "1609877389" mchAPIv3Key := "DeovoMingHuiRengTianTang45675123" // 商户APIv3密钥 mchCertificateSerialNumber := "7540301D8FD52CCF7D6267DCF7CD2BC0AB467EFF" // 商户证书序列号 @@ -745,41 +746,46 @@ func PushWXPayRefundNotice(c *gin.Context) { // 处理通知内容 //fmt.Println(notifyReq.Summary) //fmt.Println(transaction.TransactionId) - // + //transactionJson, _ := json.Marshal(transaction) //fmt.Println("transactionJson:", string(transactionJson)) - // //notifyReqJson, _ := json.Marshal(notifyReq) //fmt.Println("notifyReqJson:", string(notifyReqJson)) - - plaintext := new(WxPayRefundPlaintext) - err = json.Unmarshal([]byte(notifyReq.Resource.Plaintext), plaintext) - if err != nil { - logger.Error("unmarshal plaintext err:", err) - return - } - - openMemberRecord := new(model.UserOpenMemberRecord) - - err = model.NewUserOpenMemberRecordQuerySet(model.DB).OpenNoEq(plaintext.OutTradeNo).One(openMemberRecord) - if err != nil { - logger.Error("user open member record err:", err) - return - } - fundRecord := &model.FundRecord{ - Uid: openMemberRecord.Uid, - FundType: model.FundTypeExpressFeeRefund, - Amount: int64(plaintext.Amount.Refund) * (-1), - TransactionId: plaintext.TransactionId, - OutTradeNo: plaintext.OutTradeNo, - RefundId: plaintext.RefundId, - Status: 2, - Remark: "邮费退款", - } - err = model.DB.Create(fundRecord).Error - if err != nil { - logger.Error("create fund record err:", err) - return + if notifyReq.EventType == "REFUND.SUCCESS" { + plaintext := new(WxPayRefundPlaintext) + err = json.Unmarshal([]byte(notifyReq.Resource.Plaintext), plaintext) + if err != nil { + logger.Error("unmarshal plaintext err:", err) + return + } + count, err := model.NewFundRecordQuerySet(model.DB).RefundIdEq(plaintext.RefundId).Count() + if err != nil { + logger.Error("count refund id err:", err) + return + } + if count == 0 { + openMemberRecord := new(model.UserOpenMemberRecord) + err = model.NewUserOpenMemberRecordQuerySet(model.DB).OpenNoEq(plaintext.OutTradeNo).One(openMemberRecord) + if err != nil { + logger.Error("user open member record err:", err) + return + } + fundRecord := &model.FundRecord{ + Uid: openMemberRecord.Uid, + FundType: model.FundTypeExpressFeeRefund, + Amount: int64(plaintext.Amount.Refund) * (-1), + TransactionId: plaintext.TransactionId, + OutTradeNo: plaintext.OutTradeNo, + RefundId: plaintext.RefundId, + Status: 2, + Remark: "邮费退款", + } + err = model.DB.Create(fundRecord).Error + if err != nil { + logger.Error("create fund record err:", err) + return + } + } } RespNotice(c, "SUCCESS", "成功") diff --git a/controller/order.go b/controller/order.go index e23238d..7b01ce2 100644 --- a/controller/order.go +++ b/controller/order.go @@ -290,11 +290,6 @@ func RentCardOrderCreate(c *gin.Context) { return } - //if req.DeliveryType == 1 { - //} - reqJson, _ := json.Marshal(&req) - fmt.Println("reqJson:", string(reqJson)) - // 邮费 orderSn := model.GetOrderSn() diff --git a/controller/user.go b/controller/user.go index a591549..2510baf 100644 --- a/controller/user.go +++ b/controller/user.go @@ -7,6 +7,7 @@ import ( "github.com/gin-gonic/gin" "mh-server/lib/auth" "mh-server/lib/status" + "mh-server/lib/utils" "mh-server/lib/wxpay" "mh-server/model" "time" @@ -746,6 +747,227 @@ func MemberConfigList(c *gin.Context) { RespOK(c, resp) } +func UserAttendance(c *gin.Context) { + uc := auth.GetCurrentUser(c) + if uc == nil { + RespJson(c, status.Unauthorized, nil) + return + } + + //model.NewUserAttendanceRecordQuerySet() + todayZero := utils.TodayZeroDateFormat() + recordExist, err := model.QueryRecordExist( + fmt.Sprintf("SELECT * FROM user_attendance_record WHERE attendance_date = '%s' AND uid=%d", todayZero, uc.Uid)) + if err != nil { + logger.Error("record exist err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + if recordExist { + logger.Error("user consecutive") + RespJson(c, status.InternalServerError, nil) + return + } + + configInfo, err := model.AttendanceVmConfigInfo() + if err != nil { + logger.Error("attendance vm config info err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + attendanceTime := time.Now() + record := &model.UserAttendanceRecord{ + Uid: uc.Uid, + AttendanceTime: attendanceTime, + Vm: configInfo.VmDay1, + AttendanceDate: todayZero, + } + + var userAttendance model.UserAttendance + err = model.NewUserAttendanceQuerySet(model.DB).UidEq(uc.Uid).One(&userAttendance) + if err != nil && err != model.RecordNotFound { + logger.Error("user attendance err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + if err == model.RecordNotFound { + userAttendance = model.UserAttendance{ + Uid: uc.Uid, + LatestTime: attendanceTime, + ConsecutiveDays: 1, + IndexDay: 1, + } + err = model.DB.Create(&userAttendance).Error + if err != nil { + logger.Error("create user attendance err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + err = record.Add(model.VmEventAttendance, "连续签到获取积分") + if err != nil { + logger.Error("add user attendance record err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + RespOK(c, nil) + return + } + + var attendanceRecord model.UserAttendanceRecord + err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).OrderDescByID().Limit(1).One(&attendanceRecord) + if err != nil && err != model.RecordNotFound { + logger.Error(" user attendance record err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + if attendanceRecord.AttendanceDate == "" || attendanceRecord.AttendanceDate != utils.TodayZeroAddDaysDateFormat(-1) { + err = record.Add(model.VmEventAttendance, "连续签到获取积分") + if err != nil { + logger.Error("add user attendance record err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + _, err = model.NewUserAttendanceQuerySet(model.DB).UidEq(uc.Uid).GetUpdater().SetConsecutiveDays(1). + SetIndexDay(1).SetLatestTime(time.Now()).UpdateNum() + if err != nil { + logger.Error("update user attendance err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + RespOK(c, nil) + return + } + + userAttendance.ConsecutiveDays += 1 + userAttendance.IndexDay = userAttendance.ConsecutiveDays % 7 + if userAttendance.IndexDay == 0 { + userAttendance.IndexDay = 7 + } + + record.Vm = configInfo.Vm(userAttendance.ConsecutiveDays) + err = record.Add(model.VmEventAttendance, "连续签到获取积分") + if err != nil { + logger.Error("add user attendance record err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + _, err = model.NewUserAttendanceQuerySet(model.DB).UidEq(uc.Uid).GetUpdater().SetConsecutiveDays(userAttendance.ConsecutiveDays). + SetIndexDay(userAttendance.IndexDay).SetLatestTime(time.Now()).UpdateNum() + if err != nil { + logger.Error("update user attendance err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + RespOK(c, nil) + return +} + +func UserAttendanceDetail(c *gin.Context) { + uc := auth.GetCurrentUser(c) + if uc == nil { + RespJson(c, status.Unauthorized, nil) + return + //uc = &auth.UserClaims{Uid: 51141053} + } + list := make([]model.AttendanceInfo, 0, 7) + + configInfo, err := model.AttendanceVmConfigInfo() + if err != nil { + logger.Error("attendance vm config info err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + todayZero := utils.TodayZeroDateFormat() + //var attendanceRecord model.UserAttendanceRecord + //err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).AttendanceDateEq(utils.TodayZeroAddDaysDateFormat(-1)).One(&attendanceRecord) + //if err != nil && err != model.RecordNotFound { + // logger.Error("user attendance record err:") + // RespJson(c, status.InternalServerError, nil) + // return + //} + recordExist, err := model.QueryRecordExist( + fmt.Sprintf("SELECT * FROM user_attendance_record WHERE attendance_date in ('%s','%s') AND uid=%d", utils.TodayZeroAddDaysDateFormat(-1), todayZero, uc.Uid)) + if err != nil { + logger.Error("record exist err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + if !recordExist { + for i := 0; i < 7; i++ { + info := model.AttendanceInfo{ + IndexDay: uint32(i) + 1, + Date: utils.TodayZeroAddDaysDateFormat(i), + State: 1, + Vm: configInfo.Vm(uint32(i) + 1), + } + list = append(list, info) + } + ret := map[string]interface{}{ + "list": list, + "is_attendance": 1, + } + RespOK(c, ret) + return + } + + var attendanceRecord model.UserAttendanceRecord + //err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).AttendanceDateEq(todayZero).One(&attendanceRecord) + err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).OrderDescByID().Limit(1).One(&attendanceRecord) + if err != nil && err != model.RecordNotFound { + logger.Error("user attendance record err:") + RespJson(c, status.InternalServerError, nil) + return + } + var userAttendance model.UserAttendance + err = model.NewUserAttendanceQuerySet(model.DB).UidEq(uc.Uid).One(&userAttendance) + if err != nil && err != model.RecordNotFound { + logger.Error("user attendance record err:") + RespJson(c, status.InternalServerError, nil) + return + } + + attendanceDays := int(userAttendance.ConsecutiveDays % 7) + if attendanceDays == 0 && attendanceRecord.AttendanceDate == todayZero { + attendanceDays = 7 + } + //attendanceDays += 1 + days := attendanceDays + for i := 0; i < 7; i++ { + state := uint32(1) + if attendanceDays > 0 { + state = 2 + } + info := model.AttendanceInfo{ + IndexDay: uint32(i) + 1, + //Date: utils.TodayZeroAddDaysDateFormat((-1) * (7 - i)), + //Date: utils.TodayZeroAddDaysDateFormat(i + 1 - days), + Date: utils.TodayZeroAddDaysDateFormat(i - days), + State: state, + Vm: configInfo.Vm(uint32(i) + 1), + } + + list = append(list, info) + attendanceDays-- + } + + isAttendance := 1 + if attendanceRecord.AttendanceDate == todayZero { + isAttendance = 2 + } + ret := map[string]interface{}{ + "list": list, + "is_attendance": isAttendance, + } + RespOK(c, ret) + return +} + // 升级 1-黄金会员 2-白金会员 3-黑金会员 // 开通会员 // 升级会员 diff --git a/lib/utils/csttime.go b/lib/utils/csttime.go index f5aa59c..9bd7304 100644 --- a/lib/utils/csttime.go +++ b/lib/utils/csttime.go @@ -11,7 +11,7 @@ const ( DateFormat = "2006-01-02" ) -func TodayZeroFormat() string { +func TodayZeroTimeFormat() string { return TodayZero().Format(TimeFormat) } @@ -35,6 +35,10 @@ func TodayZeroAddDays(days int) time.Time { return TodayZero().AddDate(0, 0, days) } +func TodayZeroAddDaysDateFormat(days int) string { + return TodayZero().AddDate(0, 0, days).Format(DateFormat) +} + func YesterdayZero() time.Time { return TodayZeroAddDays(-1) } diff --git a/model/autogenerated_task.go b/model/autogenerated_task.go new file mode 100644 index 0000000..7ce805b --- /dev/null +++ b/model/autogenerated_task.go @@ -0,0 +1,1487 @@ +// 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 UserAttendanceQuerySet + +// UserAttendanceQuerySet is an queryset type for UserAttendance +type UserAttendanceQuerySet struct { + db *gorm.DB +} + +// NewUserAttendanceQuerySet constructs new UserAttendanceQuerySet +func NewUserAttendanceQuerySet(db *gorm.DB) UserAttendanceQuerySet { + return UserAttendanceQuerySet{ + db: db.Model(&UserAttendance{}), + } +} + +func (qs UserAttendanceQuerySet) w(db *gorm.DB) UserAttendanceQuerySet { + return NewUserAttendanceQuerySet(db) +} + +func (qs UserAttendanceQuerySet) Select(fields ...UserAttendanceDBSchemaField) UserAttendanceQuerySet { + 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 *UserAttendance) Create(db *gorm.DB) error { + return db.Create(o).Error +} + +// Delete is an autogenerated method +// nolint: dupl +func (o *UserAttendance) Delete(db *gorm.DB) error { + return db.Delete(o).Error +} + +// All is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) All(ret *[]UserAttendance) error { + return qs.db.Find(ret).Error +} + +// ConsecutiveDaysEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) ConsecutiveDaysEq(consecutiveDays uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("consecutive_days = ?", consecutiveDays)) +} + +// ConsecutiveDaysGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) ConsecutiveDaysGt(consecutiveDays uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("consecutive_days > ?", consecutiveDays)) +} + +// ConsecutiveDaysGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) ConsecutiveDaysGte(consecutiveDays uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("consecutive_days >= ?", consecutiveDays)) +} + +// ConsecutiveDaysIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) ConsecutiveDaysIn(consecutiveDays ...uint32) UserAttendanceQuerySet { + if len(consecutiveDays) == 0 { + qs.db.AddError(errors.New("must at least pass one consecutiveDays in ConsecutiveDaysIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("consecutive_days IN (?)", consecutiveDays)) +} + +// ConsecutiveDaysLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) ConsecutiveDaysLt(consecutiveDays uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("consecutive_days < ?", consecutiveDays)) +} + +// ConsecutiveDaysLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) ConsecutiveDaysLte(consecutiveDays uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("consecutive_days <= ?", consecutiveDays)) +} + +// ConsecutiveDaysNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) ConsecutiveDaysNe(consecutiveDays uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("consecutive_days != ?", consecutiveDays)) +} + +// ConsecutiveDaysNotIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) ConsecutiveDaysNotIn(consecutiveDays ...uint32) UserAttendanceQuerySet { + if len(consecutiveDays) == 0 { + qs.db.AddError(errors.New("must at least pass one consecutiveDays in ConsecutiveDaysNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("consecutive_days NOT IN (?)", consecutiveDays)) +} + +// Count is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) Count() (int, error) { + var count int + err := qs.db.Count(&count).Error + return count, err +} + +// CreatedAtEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) CreatedAtEq(createdAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("created_at = ?", createdAt)) +} + +// CreatedAtGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) CreatedAtGt(createdAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("created_at > ?", createdAt)) +} + +// CreatedAtGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) CreatedAtGte(createdAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("created_at >= ?", createdAt)) +} + +// CreatedAtLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) CreatedAtLt(createdAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("created_at < ?", createdAt)) +} + +// CreatedAtLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) CreatedAtLte(createdAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("created_at <= ?", createdAt)) +} + +// CreatedAtNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) CreatedAtNe(createdAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("created_at != ?", createdAt)) +} + +// Delete is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) Delete() error { + return qs.db.Delete(UserAttendance{}).Error +} + +// DeleteNum is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) DeleteNum() (int64, error) { + db := qs.db.Delete(UserAttendance{}) + return db.RowsAffected, db.Error +} + +// DeleteNumUnscoped is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) DeleteNumUnscoped() (int64, error) { + db := qs.db.Unscoped().Delete(UserAttendance{}) + return db.RowsAffected, db.Error +} + +// DeletedAtEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) DeletedAtEq(deletedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("deleted_at = ?", deletedAt)) +} + +// DeletedAtGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) DeletedAtGt(deletedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("deleted_at > ?", deletedAt)) +} + +// DeletedAtGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) DeletedAtGte(deletedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("deleted_at >= ?", deletedAt)) +} + +// DeletedAtIsNotNull is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) DeletedAtIsNotNull() UserAttendanceQuerySet { + return qs.w(qs.db.Where("deleted_at IS NOT NULL")) +} + +// DeletedAtIsNull is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) DeletedAtIsNull() UserAttendanceQuerySet { + return qs.w(qs.db.Where("deleted_at IS NULL")) +} + +// DeletedAtLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) DeletedAtLt(deletedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("deleted_at < ?", deletedAt)) +} + +// DeletedAtLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) DeletedAtLte(deletedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("deleted_at <= ?", deletedAt)) +} + +// DeletedAtNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) DeletedAtNe(deletedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("deleted_at != ?", deletedAt)) +} + +// GetDB is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) GetDB() *gorm.DB { + return qs.db +} + +// GetUpdater is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) GetUpdater() UserAttendanceUpdater { + return NewUserAttendanceUpdater(qs.db) +} + +// IDEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IDEq(ID uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("id = ?", ID)) +} + +// IDGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IDGt(ID uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("id > ?", ID)) +} + +// IDGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IDGte(ID uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("id >= ?", ID)) +} + +// IDIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IDIn(ID ...uint32) UserAttendanceQuerySet { + 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 UserAttendanceQuerySet) IDLt(ID uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("id < ?", ID)) +} + +// IDLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IDLte(ID uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("id <= ?", ID)) +} + +// IDNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IDNe(ID uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("id != ?", ID)) +} + +// IDNotIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IDNotIn(ID ...uint32) UserAttendanceQuerySet { + 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)) +} + +// IndexDayEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IndexDayEq(indexDay uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("index_day = ?", indexDay)) +} + +// IndexDayGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IndexDayGt(indexDay uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("index_day > ?", indexDay)) +} + +// IndexDayGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IndexDayGte(indexDay uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("index_day >= ?", indexDay)) +} + +// IndexDayIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IndexDayIn(indexDay ...uint32) UserAttendanceQuerySet { + if len(indexDay) == 0 { + qs.db.AddError(errors.New("must at least pass one indexDay in IndexDayIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("index_day IN (?)", indexDay)) +} + +// IndexDayLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IndexDayLt(indexDay uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("index_day < ?", indexDay)) +} + +// IndexDayLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IndexDayLte(indexDay uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("index_day <= ?", indexDay)) +} + +// IndexDayNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IndexDayNe(indexDay uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("index_day != ?", indexDay)) +} + +// IndexDayNotIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) IndexDayNotIn(indexDay ...uint32) UserAttendanceQuerySet { + if len(indexDay) == 0 { + qs.db.AddError(errors.New("must at least pass one indexDay in IndexDayNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("index_day NOT IN (?)", indexDay)) +} + +// LatestTimeEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) LatestTimeEq(latestTime time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("latest_time = ?", latestTime)) +} + +// LatestTimeGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) LatestTimeGt(latestTime time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("latest_time > ?", latestTime)) +} + +// LatestTimeGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) LatestTimeGte(latestTime time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("latest_time >= ?", latestTime)) +} + +// LatestTimeLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) LatestTimeLt(latestTime time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("latest_time < ?", latestTime)) +} + +// LatestTimeLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) LatestTimeLte(latestTime time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("latest_time <= ?", latestTime)) +} + +// LatestTimeNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) LatestTimeNe(latestTime time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("latest_time != ?", latestTime)) +} + +// Limit is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) Limit(limit int) UserAttendanceQuerySet { + return qs.w(qs.db.Limit(limit)) +} + +// Offset is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) Offset(offset int) UserAttendanceQuerySet { + return qs.w(qs.db.Offset(offset)) +} + +// One is used to retrieve one result. It returns gorm.ErrRecordNotFound +// if nothing was fetched +func (qs UserAttendanceQuerySet) One(ret *UserAttendance) error { + return qs.db.First(ret).Error +} + +// OrderAscByConsecutiveDays is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderAscByConsecutiveDays() UserAttendanceQuerySet { + return qs.w(qs.db.Order("consecutive_days ASC")) +} + +// OrderAscByCreatedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderAscByCreatedAt() UserAttendanceQuerySet { + return qs.w(qs.db.Order("created_at ASC")) +} + +// OrderAscByDeletedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderAscByDeletedAt() UserAttendanceQuerySet { + return qs.w(qs.db.Order("deleted_at ASC")) +} + +// OrderAscByID is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderAscByID() UserAttendanceQuerySet { + return qs.w(qs.db.Order("id ASC")) +} + +// OrderAscByIndexDay is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderAscByIndexDay() UserAttendanceQuerySet { + return qs.w(qs.db.Order("index_day ASC")) +} + +// OrderAscByLatestTime is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderAscByLatestTime() UserAttendanceQuerySet { + return qs.w(qs.db.Order("latest_time ASC")) +} + +// OrderAscByUid is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderAscByUid() UserAttendanceQuerySet { + return qs.w(qs.db.Order("uid ASC")) +} + +// OrderAscByUpdatedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderAscByUpdatedAt() UserAttendanceQuerySet { + return qs.w(qs.db.Order("updated_at ASC")) +} + +// OrderDescByConsecutiveDays is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderDescByConsecutiveDays() UserAttendanceQuerySet { + return qs.w(qs.db.Order("consecutive_days DESC")) +} + +// OrderDescByCreatedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderDescByCreatedAt() UserAttendanceQuerySet { + return qs.w(qs.db.Order("created_at DESC")) +} + +// OrderDescByDeletedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderDescByDeletedAt() UserAttendanceQuerySet { + return qs.w(qs.db.Order("deleted_at DESC")) +} + +// OrderDescByID is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderDescByID() UserAttendanceQuerySet { + return qs.w(qs.db.Order("id DESC")) +} + +// OrderDescByIndexDay is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderDescByIndexDay() UserAttendanceQuerySet { + return qs.w(qs.db.Order("index_day DESC")) +} + +// OrderDescByLatestTime is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderDescByLatestTime() UserAttendanceQuerySet { + return qs.w(qs.db.Order("latest_time DESC")) +} + +// OrderDescByUid is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderDescByUid() UserAttendanceQuerySet { + return qs.w(qs.db.Order("uid DESC")) +} + +// OrderDescByUpdatedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) OrderDescByUpdatedAt() UserAttendanceQuerySet { + return qs.w(qs.db.Order("updated_at DESC")) +} + +// UidEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UidEq(uid uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("uid = ?", uid)) +} + +// UidGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UidGt(uid uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("uid > ?", uid)) +} + +// UidGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UidGte(uid uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("uid >= ?", uid)) +} + +// UidIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UidIn(uid ...uint32) UserAttendanceQuerySet { + if len(uid) == 0 { + qs.db.AddError(errors.New("must at least pass one uid in UidIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("uid IN (?)", uid)) +} + +// UidLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UidLt(uid uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("uid < ?", uid)) +} + +// UidLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UidLte(uid uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("uid <= ?", uid)) +} + +// UidNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UidNe(uid uint32) UserAttendanceQuerySet { + return qs.w(qs.db.Where("uid != ?", uid)) +} + +// UidNotIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UidNotIn(uid ...uint32) UserAttendanceQuerySet { + if len(uid) == 0 { + qs.db.AddError(errors.New("must at least pass one uid in UidNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("uid NOT IN (?)", uid)) +} + +// UpdatedAtEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UpdatedAtEq(updatedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("updated_at = ?", updatedAt)) +} + +// UpdatedAtGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UpdatedAtGt(updatedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("updated_at > ?", updatedAt)) +} + +// UpdatedAtGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UpdatedAtGte(updatedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("updated_at >= ?", updatedAt)) +} + +// UpdatedAtLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UpdatedAtLt(updatedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("updated_at < ?", updatedAt)) +} + +// UpdatedAtLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UpdatedAtLte(updatedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("updated_at <= ?", updatedAt)) +} + +// UpdatedAtNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceQuerySet) UpdatedAtNe(updatedAt time.Time) UserAttendanceQuerySet { + return qs.w(qs.db.Where("updated_at != ?", updatedAt)) +} + +// SetConsecutiveDays is an autogenerated method +// nolint: dupl +func (u UserAttendanceUpdater) SetConsecutiveDays(consecutiveDays uint32) UserAttendanceUpdater { + u.fields[string(UserAttendanceDBSchema.ConsecutiveDays)] = consecutiveDays + return u +} + +// SetCreatedAt is an autogenerated method +// nolint: dupl +func (u UserAttendanceUpdater) SetCreatedAt(createdAt time.Time) UserAttendanceUpdater { + u.fields[string(UserAttendanceDBSchema.CreatedAt)] = createdAt + return u +} + +// SetDeletedAt is an autogenerated method +// nolint: dupl +func (u UserAttendanceUpdater) SetDeletedAt(deletedAt *time.Time) UserAttendanceUpdater { + u.fields[string(UserAttendanceDBSchema.DeletedAt)] = deletedAt + return u +} + +// SetID is an autogenerated method +// nolint: dupl +func (u UserAttendanceUpdater) SetID(ID uint32) UserAttendanceUpdater { + u.fields[string(UserAttendanceDBSchema.ID)] = ID + return u +} + +// SetIndexDay is an autogenerated method +// nolint: dupl +func (u UserAttendanceUpdater) SetIndexDay(indexDay uint32) UserAttendanceUpdater { + u.fields[string(UserAttendanceDBSchema.IndexDay)] = indexDay + return u +} + +// SetLatestTime is an autogenerated method +// nolint: dupl +func (u UserAttendanceUpdater) SetLatestTime(latestTime time.Time) UserAttendanceUpdater { + u.fields[string(UserAttendanceDBSchema.LatestTime)] = latestTime + return u +} + +// SetUid is an autogenerated method +// nolint: dupl +func (u UserAttendanceUpdater) SetUid(uid uint32) UserAttendanceUpdater { + u.fields[string(UserAttendanceDBSchema.Uid)] = uid + return u +} + +// SetUpdatedAt is an autogenerated method +// nolint: dupl +func (u UserAttendanceUpdater) SetUpdatedAt(updatedAt time.Time) UserAttendanceUpdater { + u.fields[string(UserAttendanceDBSchema.UpdatedAt)] = updatedAt + return u +} + +// Update is an autogenerated method +// nolint: dupl +func (u UserAttendanceUpdater) Update() error { + return u.db.Updates(u.fields).Error +} + +// UpdateNum is an autogenerated method +// nolint: dupl +func (u UserAttendanceUpdater) UpdateNum() (int64, error) { + db := u.db.Updates(u.fields) + return db.RowsAffected, db.Error +} + +// ===== END of query set UserAttendanceQuerySet + +// ===== BEGIN of UserAttendance modifiers + +// UserAttendanceDBSchemaField describes database schema field. It requires for method 'Update' +type UserAttendanceDBSchemaField string + +// String method returns string representation of field. +// nolint: dupl +func (f UserAttendanceDBSchemaField) String() string { + return string(f) +} + +// UserAttendanceDBSchema stores db field names of UserAttendance +var UserAttendanceDBSchema = struct { + ID UserAttendanceDBSchemaField + CreatedAt UserAttendanceDBSchemaField + UpdatedAt UserAttendanceDBSchemaField + DeletedAt UserAttendanceDBSchemaField + Uid UserAttendanceDBSchemaField + LatestTime UserAttendanceDBSchemaField + ConsecutiveDays UserAttendanceDBSchemaField + IndexDay UserAttendanceDBSchemaField +}{ + + ID: UserAttendanceDBSchemaField("id"), + CreatedAt: UserAttendanceDBSchemaField("created_at"), + UpdatedAt: UserAttendanceDBSchemaField("updated_at"), + DeletedAt: UserAttendanceDBSchemaField("deleted_at"), + Uid: UserAttendanceDBSchemaField("uid"), + LatestTime: UserAttendanceDBSchemaField("latest_time"), + ConsecutiveDays: UserAttendanceDBSchemaField("consecutive_days"), + IndexDay: UserAttendanceDBSchemaField("index_day"), +} + +// Update updates UserAttendance fields by primary key +// nolint: dupl +func (o *UserAttendance) Update(db *gorm.DB, fields ...UserAttendanceDBSchemaField) error { + dbNameToFieldName := map[string]interface{}{ + "id": o.ID, + "created_at": o.CreatedAt, + "updated_at": o.UpdatedAt, + "deleted_at": o.DeletedAt, + "uid": o.Uid, + "latest_time": o.LatestTime, + "consecutive_days": o.ConsecutiveDays, + "index_day": o.IndexDay, + } + 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 UserAttendance %v fields %v: %s", + o, fields, err) + } + + return nil +} + +// UserAttendanceUpdater is an UserAttendance updates manager +type UserAttendanceUpdater struct { + fields map[string]interface{} + db *gorm.DB +} + +// NewUserAttendanceUpdater creates new UserAttendance updater +// nolint: dupl +func NewUserAttendanceUpdater(db *gorm.DB) UserAttendanceUpdater { + return UserAttendanceUpdater{ + fields: map[string]interface{}{}, + db: db.Model(&UserAttendance{}), + } +} + +// ===== END of UserAttendance modifiers + +// ===== BEGIN of query set UserAttendanceRecordQuerySet + +// UserAttendanceRecordQuerySet is an queryset type for UserAttendanceRecord +type UserAttendanceRecordQuerySet struct { + db *gorm.DB +} + +// NewUserAttendanceRecordQuerySet constructs new UserAttendanceRecordQuerySet +func NewUserAttendanceRecordQuerySet(db *gorm.DB) UserAttendanceRecordQuerySet { + return UserAttendanceRecordQuerySet{ + db: db.Model(&UserAttendanceRecord{}), + } +} + +func (qs UserAttendanceRecordQuerySet) w(db *gorm.DB) UserAttendanceRecordQuerySet { + return NewUserAttendanceRecordQuerySet(db) +} + +func (qs UserAttendanceRecordQuerySet) Select(fields ...UserAttendanceRecordDBSchemaField) UserAttendanceRecordQuerySet { + 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 *UserAttendanceRecord) Create(db *gorm.DB) error { + return db.Create(o).Error +} + +// Delete is an autogenerated method +// nolint: dupl +func (o *UserAttendanceRecord) Delete(db *gorm.DB) error { + return db.Delete(o).Error +} + +// All is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) All(ret *[]UserAttendanceRecord) error { + return qs.db.Find(ret).Error +} + +// AttendanceDateEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceDateEq(attendanceDate string) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_date = ?", attendanceDate)) +} + +// AttendanceDateGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceDateGt(attendanceDate string) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_date > ?", attendanceDate)) +} + +// AttendanceDateGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceDateGte(attendanceDate string) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_date >= ?", attendanceDate)) +} + +// AttendanceDateIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceDateIn(attendanceDate ...string) UserAttendanceRecordQuerySet { + if len(attendanceDate) == 0 { + qs.db.AddError(errors.New("must at least pass one attendanceDate in AttendanceDateIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("attendance_date IN (?)", attendanceDate)) +} + +// AttendanceDateLike is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceDateLike(attendanceDate string) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_date LIKE ?", attendanceDate)) +} + +// AttendanceDateLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceDateLt(attendanceDate string) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_date < ?", attendanceDate)) +} + +// AttendanceDateLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceDateLte(attendanceDate string) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_date <= ?", attendanceDate)) +} + +// AttendanceDateNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceDateNe(attendanceDate string) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_date != ?", attendanceDate)) +} + +// AttendanceDateNotIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceDateNotIn(attendanceDate ...string) UserAttendanceRecordQuerySet { + if len(attendanceDate) == 0 { + qs.db.AddError(errors.New("must at least pass one attendanceDate in AttendanceDateNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("attendance_date NOT IN (?)", attendanceDate)) +} + +// AttendanceDateNotlike is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceDateNotlike(attendanceDate string) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_date NOT LIKE ?", attendanceDate)) +} + +// AttendanceTimeEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceTimeEq(attendanceTime time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_time = ?", attendanceTime)) +} + +// AttendanceTimeGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceTimeGt(attendanceTime time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_time > ?", attendanceTime)) +} + +// AttendanceTimeGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceTimeGte(attendanceTime time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_time >= ?", attendanceTime)) +} + +// AttendanceTimeLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceTimeLt(attendanceTime time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_time < ?", attendanceTime)) +} + +// AttendanceTimeLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceTimeLte(attendanceTime time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_time <= ?", attendanceTime)) +} + +// AttendanceTimeNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) AttendanceTimeNe(attendanceTime time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("attendance_time != ?", attendanceTime)) +} + +// Count is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) Count() (int, error) { + var count int + err := qs.db.Count(&count).Error + return count, err +} + +// CreatedAtEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) CreatedAtEq(createdAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("created_at = ?", createdAt)) +} + +// CreatedAtGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) CreatedAtGt(createdAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("created_at > ?", createdAt)) +} + +// CreatedAtGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) CreatedAtGte(createdAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("created_at >= ?", createdAt)) +} + +// CreatedAtLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) CreatedAtLt(createdAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("created_at < ?", createdAt)) +} + +// CreatedAtLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) CreatedAtLte(createdAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("created_at <= ?", createdAt)) +} + +// CreatedAtNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) CreatedAtNe(createdAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("created_at != ?", createdAt)) +} + +// Delete is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) Delete() error { + return qs.db.Delete(UserAttendanceRecord{}).Error +} + +// DeleteNum is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) DeleteNum() (int64, error) { + db := qs.db.Delete(UserAttendanceRecord{}) + return db.RowsAffected, db.Error +} + +// DeleteNumUnscoped is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) DeleteNumUnscoped() (int64, error) { + db := qs.db.Unscoped().Delete(UserAttendanceRecord{}) + return db.RowsAffected, db.Error +} + +// DeletedAtEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) DeletedAtEq(deletedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("deleted_at = ?", deletedAt)) +} + +// DeletedAtGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) DeletedAtGt(deletedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("deleted_at > ?", deletedAt)) +} + +// DeletedAtGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) DeletedAtGte(deletedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("deleted_at >= ?", deletedAt)) +} + +// DeletedAtIsNotNull is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) DeletedAtIsNotNull() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("deleted_at IS NOT NULL")) +} + +// DeletedAtIsNull is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) DeletedAtIsNull() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("deleted_at IS NULL")) +} + +// DeletedAtLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) DeletedAtLt(deletedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("deleted_at < ?", deletedAt)) +} + +// DeletedAtLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) DeletedAtLte(deletedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("deleted_at <= ?", deletedAt)) +} + +// DeletedAtNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) DeletedAtNe(deletedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("deleted_at != ?", deletedAt)) +} + +// GetDB is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) GetDB() *gorm.DB { + return qs.db +} + +// GetUpdater is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) GetUpdater() UserAttendanceRecordUpdater { + return NewUserAttendanceRecordUpdater(qs.db) +} + +// IDEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) IDEq(ID uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("id = ?", ID)) +} + +// IDGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) IDGt(ID uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("id > ?", ID)) +} + +// IDGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) IDGte(ID uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("id >= ?", ID)) +} + +// IDIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) IDIn(ID ...uint32) UserAttendanceRecordQuerySet { + 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 UserAttendanceRecordQuerySet) IDLt(ID uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("id < ?", ID)) +} + +// IDLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) IDLte(ID uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("id <= ?", ID)) +} + +// IDNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) IDNe(ID uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("id != ?", ID)) +} + +// IDNotIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) IDNotIn(ID ...uint32) UserAttendanceRecordQuerySet { + 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 UserAttendanceRecordQuerySet) Limit(limit int) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Limit(limit)) +} + +// Offset is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) Offset(offset int) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Offset(offset)) +} + +// One is used to retrieve one result. It returns gorm.ErrRecordNotFound +// if nothing was fetched +func (qs UserAttendanceRecordQuerySet) One(ret *UserAttendanceRecord) error { + return qs.db.First(ret).Error +} + +// OrderAscByAttendanceDate is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderAscByAttendanceDate() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("attendance_date ASC")) +} + +// OrderAscByAttendanceTime is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderAscByAttendanceTime() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("attendance_time ASC")) +} + +// OrderAscByCreatedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderAscByCreatedAt() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("created_at ASC")) +} + +// OrderAscByDeletedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderAscByDeletedAt() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("deleted_at ASC")) +} + +// OrderAscByID is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderAscByID() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("id ASC")) +} + +// OrderAscByUid is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderAscByUid() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("uid ASC")) +} + +// OrderAscByUpdatedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderAscByUpdatedAt() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("updated_at ASC")) +} + +// OrderAscByVm is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderAscByVm() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("vm ASC")) +} + +// OrderDescByAttendanceDate is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderDescByAttendanceDate() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("attendance_date DESC")) +} + +// OrderDescByAttendanceTime is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderDescByAttendanceTime() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("attendance_time DESC")) +} + +// OrderDescByCreatedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderDescByCreatedAt() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("created_at DESC")) +} + +// OrderDescByDeletedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderDescByDeletedAt() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("deleted_at DESC")) +} + +// OrderDescByID is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderDescByID() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("id DESC")) +} + +// OrderDescByUid is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderDescByUid() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("uid DESC")) +} + +// OrderDescByUpdatedAt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderDescByUpdatedAt() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("updated_at DESC")) +} + +// OrderDescByVm is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) OrderDescByVm() UserAttendanceRecordQuerySet { + return qs.w(qs.db.Order("vm DESC")) +} + +// UidEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UidEq(uid uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("uid = ?", uid)) +} + +// UidGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UidGt(uid uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("uid > ?", uid)) +} + +// UidGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UidGte(uid uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("uid >= ?", uid)) +} + +// UidIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UidIn(uid ...uint32) UserAttendanceRecordQuerySet { + if len(uid) == 0 { + qs.db.AddError(errors.New("must at least pass one uid in UidIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("uid IN (?)", uid)) +} + +// UidLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UidLt(uid uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("uid < ?", uid)) +} + +// UidLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UidLte(uid uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("uid <= ?", uid)) +} + +// UidNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UidNe(uid uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("uid != ?", uid)) +} + +// UidNotIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UidNotIn(uid ...uint32) UserAttendanceRecordQuerySet { + if len(uid) == 0 { + qs.db.AddError(errors.New("must at least pass one uid in UidNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("uid NOT IN (?)", uid)) +} + +// UpdatedAtEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UpdatedAtEq(updatedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("updated_at = ?", updatedAt)) +} + +// UpdatedAtGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UpdatedAtGt(updatedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("updated_at > ?", updatedAt)) +} + +// UpdatedAtGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UpdatedAtGte(updatedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("updated_at >= ?", updatedAt)) +} + +// UpdatedAtLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UpdatedAtLt(updatedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("updated_at < ?", updatedAt)) +} + +// UpdatedAtLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UpdatedAtLte(updatedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("updated_at <= ?", updatedAt)) +} + +// UpdatedAtNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) UpdatedAtNe(updatedAt time.Time) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("updated_at != ?", updatedAt)) +} + +// VmEq is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) VmEq(vm uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("vm = ?", vm)) +} + +// VmGt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) VmGt(vm uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("vm > ?", vm)) +} + +// VmGte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) VmGte(vm uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("vm >= ?", vm)) +} + +// VmIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) VmIn(vm ...uint32) UserAttendanceRecordQuerySet { + if len(vm) == 0 { + qs.db.AddError(errors.New("must at least pass one vm in VmIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("vm IN (?)", vm)) +} + +// VmLt is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) VmLt(vm uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("vm < ?", vm)) +} + +// VmLte is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) VmLte(vm uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("vm <= ?", vm)) +} + +// VmNe is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) VmNe(vm uint32) UserAttendanceRecordQuerySet { + return qs.w(qs.db.Where("vm != ?", vm)) +} + +// VmNotIn is an autogenerated method +// nolint: dupl +func (qs UserAttendanceRecordQuerySet) VmNotIn(vm ...uint32) UserAttendanceRecordQuerySet { + if len(vm) == 0 { + qs.db.AddError(errors.New("must at least pass one vm in VmNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("vm NOT IN (?)", vm)) +} + +// SetAttendanceDate is an autogenerated method +// nolint: dupl +func (u UserAttendanceRecordUpdater) SetAttendanceDate(attendanceDate string) UserAttendanceRecordUpdater { + u.fields[string(UserAttendanceRecordDBSchema.AttendanceDate)] = attendanceDate + return u +} + +// SetAttendanceTime is an autogenerated method +// nolint: dupl +func (u UserAttendanceRecordUpdater) SetAttendanceTime(attendanceTime time.Time) UserAttendanceRecordUpdater { + u.fields[string(UserAttendanceRecordDBSchema.AttendanceTime)] = attendanceTime + return u +} + +// SetCreatedAt is an autogenerated method +// nolint: dupl +func (u UserAttendanceRecordUpdater) SetCreatedAt(createdAt time.Time) UserAttendanceRecordUpdater { + u.fields[string(UserAttendanceRecordDBSchema.CreatedAt)] = createdAt + return u +} + +// SetDeletedAt is an autogenerated method +// nolint: dupl +func (u UserAttendanceRecordUpdater) SetDeletedAt(deletedAt *time.Time) UserAttendanceRecordUpdater { + u.fields[string(UserAttendanceRecordDBSchema.DeletedAt)] = deletedAt + return u +} + +// SetID is an autogenerated method +// nolint: dupl +func (u UserAttendanceRecordUpdater) SetID(ID uint32) UserAttendanceRecordUpdater { + u.fields[string(UserAttendanceRecordDBSchema.ID)] = ID + return u +} + +// SetUid is an autogenerated method +// nolint: dupl +func (u UserAttendanceRecordUpdater) SetUid(uid uint32) UserAttendanceRecordUpdater { + u.fields[string(UserAttendanceRecordDBSchema.Uid)] = uid + return u +} + +// SetUpdatedAt is an autogenerated method +// nolint: dupl +func (u UserAttendanceRecordUpdater) SetUpdatedAt(updatedAt time.Time) UserAttendanceRecordUpdater { + u.fields[string(UserAttendanceRecordDBSchema.UpdatedAt)] = updatedAt + return u +} + +// SetVm is an autogenerated method +// nolint: dupl +func (u UserAttendanceRecordUpdater) SetVm(vm uint32) UserAttendanceRecordUpdater { + u.fields[string(UserAttendanceRecordDBSchema.Vm)] = vm + return u +} + +// Update is an autogenerated method +// nolint: dupl +func (u UserAttendanceRecordUpdater) Update() error { + return u.db.Updates(u.fields).Error +} + +// UpdateNum is an autogenerated method +// nolint: dupl +func (u UserAttendanceRecordUpdater) UpdateNum() (int64, error) { + db := u.db.Updates(u.fields) + return db.RowsAffected, db.Error +} + +// ===== END of query set UserAttendanceRecordQuerySet + +// ===== BEGIN of UserAttendanceRecord modifiers + +// UserAttendanceRecordDBSchemaField describes database schema field. It requires for method 'Update' +type UserAttendanceRecordDBSchemaField string + +// String method returns string representation of field. +// nolint: dupl +func (f UserAttendanceRecordDBSchemaField) String() string { + return string(f) +} + +// UserAttendanceRecordDBSchema stores db field names of UserAttendanceRecord +var UserAttendanceRecordDBSchema = struct { + ID UserAttendanceRecordDBSchemaField + CreatedAt UserAttendanceRecordDBSchemaField + UpdatedAt UserAttendanceRecordDBSchemaField + DeletedAt UserAttendanceRecordDBSchemaField + Uid UserAttendanceRecordDBSchemaField + AttendanceTime UserAttendanceRecordDBSchemaField + Vm UserAttendanceRecordDBSchemaField + AttendanceDate UserAttendanceRecordDBSchemaField +}{ + + ID: UserAttendanceRecordDBSchemaField("id"), + CreatedAt: UserAttendanceRecordDBSchemaField("created_at"), + UpdatedAt: UserAttendanceRecordDBSchemaField("updated_at"), + DeletedAt: UserAttendanceRecordDBSchemaField("deleted_at"), + Uid: UserAttendanceRecordDBSchemaField("uid"), + AttendanceTime: UserAttendanceRecordDBSchemaField("attendance_time"), + Vm: UserAttendanceRecordDBSchemaField("vm"), + AttendanceDate: UserAttendanceRecordDBSchemaField("attendance_date"), +} + +// Update updates UserAttendanceRecord fields by primary key +// nolint: dupl +func (o *UserAttendanceRecord) Update(db *gorm.DB, fields ...UserAttendanceRecordDBSchemaField) error { + dbNameToFieldName := map[string]interface{}{ + "id": o.ID, + "created_at": o.CreatedAt, + "updated_at": o.UpdatedAt, + "deleted_at": o.DeletedAt, + "uid": o.Uid, + "attendance_time": o.AttendanceTime, + "vm": o.Vm, + "attendance_date": o.AttendanceDate, + } + 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 UserAttendanceRecord %v fields %v: %s", + o, fields, err) + } + + return nil +} + +// UserAttendanceRecordUpdater is an UserAttendanceRecord updates manager +type UserAttendanceRecordUpdater struct { + fields map[string]interface{} + db *gorm.DB +} + +// NewUserAttendanceRecordUpdater creates new UserAttendanceRecord updater +// nolint: dupl +func NewUserAttendanceRecordUpdater(db *gorm.DB) UserAttendanceRecordUpdater { + return UserAttendanceRecordUpdater{ + fields: map[string]interface{}{}, + db: db.Model(&UserAttendanceRecord{}), + } +} + +// ===== END of UserAttendanceRecord modifiers + +// ===== END of all query sets diff --git a/model/autogenerated_user.go b/model/autogenerated_user.go index d19021f..476b0d0 100644 --- a/model/autogenerated_user.go +++ b/model/autogenerated_user.go @@ -1919,6 +1919,18 @@ func (qs FundRecordQuerySet) OrderAscByOutTradeNo() FundRecordQuerySet { return qs.w(qs.db.Order("out_trade_no ASC")) } +// OrderAscByRefundId is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) OrderAscByRefundId() FundRecordQuerySet { + return qs.w(qs.db.Order("refund_id ASC")) +} + +// OrderAscByRemark is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) OrderAscByRemark() FundRecordQuerySet { + return qs.w(qs.db.Order("remark ASC")) +} + // OrderAscByStatus is an autogenerated method // nolint: dupl func (qs FundRecordQuerySet) OrderAscByStatus() FundRecordQuerySet { @@ -1979,6 +1991,18 @@ func (qs FundRecordQuerySet) OrderDescByOutTradeNo() FundRecordQuerySet { return qs.w(qs.db.Order("out_trade_no DESC")) } +// OrderDescByRefundId is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) OrderDescByRefundId() FundRecordQuerySet { + return qs.w(qs.db.Order("refund_id DESC")) +} + +// OrderDescByRemark is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) OrderDescByRemark() FundRecordQuerySet { + return qs.w(qs.db.Order("remark DESC")) +} + // OrderDescByStatus is an autogenerated method // nolint: dupl func (qs FundRecordQuerySet) OrderDescByStatus() FundRecordQuerySet { @@ -2071,6 +2095,142 @@ func (qs FundRecordQuerySet) OutTradeNoNotlike(outTradeNo string) FundRecordQuer return qs.w(qs.db.Where("out_trade_no NOT LIKE ?", outTradeNo)) } +// RefundIdEq is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RefundIdEq(refundId string) FundRecordQuerySet { + return qs.w(qs.db.Where("refund_id = ?", refundId)) +} + +// RefundIdGt is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RefundIdGt(refundId string) FundRecordQuerySet { + return qs.w(qs.db.Where("refund_id > ?", refundId)) +} + +// RefundIdGte is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RefundIdGte(refundId string) FundRecordQuerySet { + return qs.w(qs.db.Where("refund_id >= ?", refundId)) +} + +// RefundIdIn is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RefundIdIn(refundId ...string) FundRecordQuerySet { + if len(refundId) == 0 { + qs.db.AddError(errors.New("must at least pass one refundId in RefundIdIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("refund_id IN (?)", refundId)) +} + +// RefundIdLike is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RefundIdLike(refundId string) FundRecordQuerySet { + return qs.w(qs.db.Where("refund_id LIKE ?", refundId)) +} + +// RefundIdLt is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RefundIdLt(refundId string) FundRecordQuerySet { + return qs.w(qs.db.Where("refund_id < ?", refundId)) +} + +// RefundIdLte is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RefundIdLte(refundId string) FundRecordQuerySet { + return qs.w(qs.db.Where("refund_id <= ?", refundId)) +} + +// RefundIdNe is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RefundIdNe(refundId string) FundRecordQuerySet { + return qs.w(qs.db.Where("refund_id != ?", refundId)) +} + +// RefundIdNotIn is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RefundIdNotIn(refundId ...string) FundRecordQuerySet { + if len(refundId) == 0 { + qs.db.AddError(errors.New("must at least pass one refundId in RefundIdNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("refund_id NOT IN (?)", refundId)) +} + +// RefundIdNotlike is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RefundIdNotlike(refundId string) FundRecordQuerySet { + return qs.w(qs.db.Where("refund_id NOT LIKE ?", refundId)) +} + +// RemarkEq is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RemarkEq(remark string) FundRecordQuerySet { + return qs.w(qs.db.Where("remark = ?", remark)) +} + +// RemarkGt is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RemarkGt(remark string) FundRecordQuerySet { + return qs.w(qs.db.Where("remark > ?", remark)) +} + +// RemarkGte is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RemarkGte(remark string) FundRecordQuerySet { + return qs.w(qs.db.Where("remark >= ?", remark)) +} + +// RemarkIn is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RemarkIn(remark ...string) FundRecordQuerySet { + if len(remark) == 0 { + qs.db.AddError(errors.New("must at least pass one remark in RemarkIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("remark IN (?)", remark)) +} + +// RemarkLike is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RemarkLike(remark string) FundRecordQuerySet { + return qs.w(qs.db.Where("remark LIKE ?", remark)) +} + +// RemarkLt is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RemarkLt(remark string) FundRecordQuerySet { + return qs.w(qs.db.Where("remark < ?", remark)) +} + +// RemarkLte is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RemarkLte(remark string) FundRecordQuerySet { + return qs.w(qs.db.Where("remark <= ?", remark)) +} + +// RemarkNe is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RemarkNe(remark string) FundRecordQuerySet { + return qs.w(qs.db.Where("remark != ?", remark)) +} + +// RemarkNotIn is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RemarkNotIn(remark ...string) FundRecordQuerySet { + if len(remark) == 0 { + qs.db.AddError(errors.New("must at least pass one remark in RemarkNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("remark NOT IN (?)", remark)) +} + +// RemarkNotlike is an autogenerated method +// nolint: dupl +func (qs FundRecordQuerySet) RemarkNotlike(remark string) FundRecordQuerySet { + return qs.w(qs.db.Where("remark NOT LIKE ?", remark)) +} + // StatusEq is an autogenerated method // nolint: dupl func (qs FundRecordQuerySet) StatusEq(status uint32) FundRecordQuerySet { @@ -2329,6 +2489,20 @@ func (u FundRecordUpdater) SetOutTradeNo(outTradeNo string) FundRecordUpdater { return u } +// SetRefundId is an autogenerated method +// nolint: dupl +func (u FundRecordUpdater) SetRefundId(refundId string) FundRecordUpdater { + u.fields[string(FundRecordDBSchema.RefundId)] = refundId + return u +} + +// SetRemark is an autogenerated method +// nolint: dupl +func (u FundRecordUpdater) SetRemark(remark string) FundRecordUpdater { + u.fields[string(FundRecordDBSchema.Remark)] = remark + return u +} + // SetStatus is an autogenerated method // nolint: dupl func (u FundRecordUpdater) SetStatus(status uint32) FundRecordUpdater { @@ -2394,7 +2568,9 @@ var FundRecordDBSchema = struct { Amount FundRecordDBSchemaField TransactionId FundRecordDBSchemaField OutTradeNo FundRecordDBSchemaField + RefundId FundRecordDBSchemaField Status FundRecordDBSchemaField + Remark FundRecordDBSchemaField }{ ID: FundRecordDBSchemaField("id"), @@ -2406,7 +2582,9 @@ var FundRecordDBSchema = struct { Amount: FundRecordDBSchemaField("amount"), TransactionId: FundRecordDBSchemaField("transaction_id"), OutTradeNo: FundRecordDBSchemaField("out_trade_no"), + RefundId: FundRecordDBSchemaField("refund_id"), Status: FundRecordDBSchemaField("status"), + Remark: FundRecordDBSchemaField("remark"), } // Update updates FundRecord fields by primary key @@ -2422,7 +2600,9 @@ func (o *FundRecord) Update(db *gorm.DB, fields ...FundRecordDBSchemaField) erro "amount": o.Amount, "transaction_id": o.TransactionId, "out_trade_no": o.OutTradeNo, + "refund_id": o.RefundId, "status": o.Status, + "remark": o.Remark, } u := map[string]interface{}{} for _, f := range fields { diff --git a/model/config.go b/model/config.go index 3276e3c..770bd4b 100644 --- a/model/config.go +++ b/model/config.go @@ -27,9 +27,10 @@ type PayConfig struct { } const ( - ConfigNamePay = "pay_config" // 支付配置 - ConfigNameMember = "member_config" // 会员配置 - ConfigNameMemberVm = "member_vm_config" // 会员积分配置 + ConfigNamePay = "pay_config" // 支付配置 + ConfigNameMember = "member_config" // 会员配置 + ConfigNameMemberVm = "member_vm_config" // 会员积分配置 + ConfigNameAttendanceVm = "attendance_vm_config" // 签到积分配置 ) func PayConfigInfo() (*PayConfig, error) { @@ -135,6 +136,56 @@ func GetMemberVmConfig(level uint32) (*MemberVmConfig, error) { return nil, errors.New("level err") } +type AttendanceVmConfig struct { + VmDay1 uint32 `json:"vm_day_1"` + VmDay2 uint32 `json:"vm_day_2"` + VmDay3 uint32 `json:"vm_day_3"` + VmDay4 uint32 `json:"vm_day_4"` + VmDay5 uint32 `json:"vm_day_5"` + VmDay6 uint32 `json:"vm_day_6"` + VmDay7 uint32 `json:"vm_day_7"` +} + +func AttendanceVmConfigInfo() (*AttendanceVmConfig, error) { + attendanceConfig := new(AttendanceVmConfig) + var configAllocation Config + err := NewConfigQuerySet(DB).NameEq(ConfigNameAttendanceVm).One(&configAllocation) + if err != nil { + logger.Error("err:", err) + return attendanceConfig, err + } + + err = json.Unmarshal([]byte(configAllocation.Value), attendanceConfig) + if err != nil { + logger.Error("err:", err) + return attendanceConfig, err + } + + return attendanceConfig, nil +} + +func (m *AttendanceVmConfig) Vm(days uint32) uint32 { + vm := uint32(0) + switch days % 7 { + case 1: + vm = m.VmDay1 + case 2: + vm = m.VmDay2 + case 3: + vm = m.VmDay3 + case 4: + vm = m.VmDay4 + case 5: + vm = m.VmDay5 + case 6: + vm = m.VmDay6 + case 0: + vm = m.VmDay7 + } + + return vm +} + //type ConfigInterface interface { // Encode() string //} diff --git a/model/model_test.go b/model/model_test.go index e499fdb..f0beda5 100644 --- a/model/model_test.go +++ b/model/model_test.go @@ -4,6 +4,9 @@ import ( "crypto/sha512" "encoding/json" "fmt" + "mh-server/lib/auth" + "mh-server/lib/utils" + //"github.com/andreburgaud/crypt2go/ecb" //"github.com/andreburgaud/crypt2go/padding" "github.com/codinl/go-logger" @@ -124,6 +127,8 @@ func InitTestDB() { &GameCard{}, &FundRecord{}, &User{}, + &UserAttendance{}, + &UserAttendanceRecord{}, ) fmt.Println("DB init success") @@ -988,5 +993,108 @@ func TestTimeZeroData(t *testing.T) { } func TestWxPayDecode(t *testing.T) { + config := AttendanceVmConfig{ + VmDay1: 2, + VmDay2: 4, + VmDay3: 6, + VmDay4: 8, + VmDay5: 10, + VmDay6: 12, + VmDay7: 14, + } + marshal, _ := json.Marshal(&config) + + fmt.Println("config:", string(marshal)) +} + +func TestAtt(t *testing.T) { + InitTestDB() + DB = DBDev + + UserAttendanceDays() +} + +func UserAttendanceDays() { + uc := &auth.UserClaims{Uid: 31871993} + list := make([]AttendanceInfo, 0, 7) + todayZero := utils.TodayZeroDateFormat() + configInfo, err := AttendanceVmConfigInfo() + if err != nil { + logger.Error("attendance vm config info err:", err) + //RespJson(c, status.InternalServerError, nil) + return + } + + var attendanceRecord UserAttendanceRecord + err = NewUserAttendanceRecordQuerySet(DB).UidEq(uc.Uid).AttendanceDateEq(todayZero).One(&attendanceRecord) + if err != nil && err != RecordNotFound { + logger.Error("user attendance record err:") + //RespJson(c, status.InternalServerError, nil) + return + } + + if err == RecordNotFound { + for i := 0; i < 7; i++ { + info := AttendanceInfo{ + IndexDay: uint32(i) + 1, + Date: utils.TodayZeroAddDaysDateFormat((-1) * (7 - i)), + State: 1, + Vm: configInfo.Vm(uint32(i) + 1), + } + list = append(list, info) + } + ret := map[string]interface{}{ + "list": list, + "is_attendance": 1, + } + retJson, _ := json.Marshal(&ret) + fmt.Println("ret:", string(retJson)) + //RespOK(c, ret) + return + } + + var userAttendance UserAttendance + err = NewUserAttendanceQuerySet(DB).UidEq(uc.Uid).One(&userAttendance) + if err != nil && err != RecordNotFound { + logger.Error("user attendance record err:") + //RespJson(c, status.InternalServerError, nil) + return + } + + attendanceDays := int(userAttendance.ConsecutiveDays % 7) + if attendanceDays == 0 { + attendanceDays = 7 + } + days := attendanceDays + fmt.Println("--------attendanceDays:", attendanceDays) + for i := 0; i < 7; i++ { + state := uint32(1) + if attendanceDays > 0 { + state = 2 + } + fmt.Println("attendanceDays:", attendanceDays) + info := AttendanceInfo{ + IndexDay: uint32(i) + 1, + //Date: utils.TodayZeroAddDaysDateFormat((-1) * (7 - i)), + Date: utils.TodayZeroAddDaysDateFormat(i + 1 - days), + State: state, + Vm: configInfo.Vm(uint32(i) + 1), + } + + list = append(list, info) + attendanceDays-- + } + + isAttendance := 1 + if attendanceRecord.AttendanceDate == todayZero { + isAttendance = 2 + } + ret := map[string]interface{}{ + "list": list, + "is_attendance": isAttendance, + } + + retJson, _ := json.Marshal(&ret) + fmt.Println("ret:", string(retJson)) } diff --git a/model/share_card.go b/model/share_card.go index 9bfeeb7..5efd13c 100644 --- a/model/share_card.go +++ b/model/share_card.go @@ -671,7 +671,7 @@ func (m *ShareCardRetrieveCreateReq) RetrieveCreate() (*ShareCardRetrieve, error return nil, err } //gameIds := make([]uint64, 0) - //for i, _ := range userShareCards { + //for i, _ := range user{ // gameIds = append(gameIds, uint64(userShareCards[i].GameCardId)) //} //// TODO 共享卡半年收回 测试上线修改 diff --git a/model/task.go b/model/task.go new file mode 100644 index 0000000..1383aae --- /dev/null +++ b/model/task.go @@ -0,0 +1,66 @@ +package model + +import ( + "github.com/codinl/go-logger" + "time" +) + +//go:generate goqueryset -in task.go + +// gen:qs +//type Task struct { +// Model +// +// Name string `json:"name" gorm:"comment:'任务名称'"` +// NameKey string `json:"name_key" gorm:"comment:'任务名称key'"` +// TaskType string `json:"task_type" gorm:"comment:'任务类型(1 活跃任务 2 日常任务 3 新手任务)'"` // 任务类型 +// IsOnline bool `json:"is_online" gorm:"comment:'是否上线(1 上线 2 不上线)'"` // 是否上线 +// Sort uint32 `json:"sort" gorm:"comment:'排序'"` // 排序 +//} + +// gen:qs +type UserAttendance struct { + Model + + Uid uint32 `json:"uid" gorm:"index"` + LatestTime time.Time `json:"latest_time" gorm:"index"` + ConsecutiveDays uint32 `json:"consecutive_days" gorm:"index"` + IndexDay uint32 `json:"index_day"` + // user_attendance +} + +// gen:qs +type UserAttendanceRecord struct { + Model + + Uid uint32 `json:"uid" gorm:"index"` + AttendanceTime time.Time `json:"attendance_time"` + Vm uint32 `json:"vm"` + AttendanceDate string `json:"attendance_date" gorm:"index"` + // user_attendance_record +} + +func (m *UserAttendanceRecord) Add(event, describe string) error { + err := UserVmUpdate(m.Uid, int(m.Vm), event, describe) + if err != nil { + logger.Error("update user vm err:", err) + return err + } + + err = DB.Create(m).Error + if err != nil { + logger.Error("create user attendance record err:", err) + return err + } + + return nil +} + +type AttendanceInfo struct { + IndexDay uint32 `json:"index_day"` + Date string `json:"date"` + State uint32 `json:"state"` // 1-未签到 2-签到 + Vm uint32 `json:"vm"` +} + +// 2 4 6 8 10 12 14 diff --git a/model/user.go b/model/user.go index 19416b5..6dcbb33 100644 --- a/model/user.go +++ b/model/user.go @@ -109,9 +109,6 @@ type DepositRefundRecord struct { } const ( - FundTypeMemberFee = "member_fee" - FundTypeMemberDeposit = "member_deposit" - //FundTypeMemberGold = "member_gold" // 黄金会员 //FundTypeMemberPlatinum = "member_platinum" // 白金会员 //FundTypeMemberBlackGold = "member_black_gold" // 黑金会员 @@ -119,6 +116,8 @@ const ( //FundTypeMemberPlatinumDeposit = "member_platinum_deposit" // 白金会员押金 //FundTypeMemberBlackGoldDeposit = "member_black_gold_platinum" // 黑金会员押金 + FundTypeMemberFee = "member_fee" // 会员费 + FundTypeMemberDeposit = "member_deposit" // 押金 FundTypeExpressFee = "express_fee" // 邮费 FundTypeUpgradeMember = "upgrade_member" // 升级会员 FundTypeMemberExpireDelay = "member_expire_delay" // 滞纳金 @@ -129,14 +128,15 @@ const ( // gen:qs type FundRecord struct { Model - Uid uint32 `json:"uid"` - FundType string `json:"fund_type"` // -member_gold -member_platinum -member_black_gold + Uid uint32 `json:"uid" gorm:"index"` + FundType string `json:"fund_type" gorm:"index"` // -member_gold -member_platinum -member_black_gold Amount int64 `json:"amount"` - TransactionId string `json:"transaction_id"` // 支付单号 - OutTradeNo string `json:"out_trade_no"` - RefundId string `json:"refund_id"` - Status uint32 `json:"status"` // 1-待支付 2-已支付 3-已退款 - Remark string `json:"remark"` // 备注 + TransactionId string `json:"transaction_id" gorm:"index"` // 支付单号 + OutTradeNo string `json:"out_trade_no" gorm:"index"` + RefundId string `json:"refund_id" gorm:"index"` + PaymentNo string `json:"payment_no" gorm:"index"` // 付款单号 + Status uint32 `json:"status"` // 1-待支付 2-已支付 3-已退款 + Remark string `json:"remark"` // 备注 } // gen:qs @@ -337,16 +337,7 @@ func (m *UserOpenMemberRecord) ShareCardRetrieveRefund(outTradeNo string) error // logger.Error("err:", err) // return err //} - // - ////FundRecord{ - //// Uid: m.Uid, - //// FundType: FundTypeExpressFeeRefund, - //// Amount: int64(m.Order.PayPrice) * (-1), - //// TransactionId: "", - //// OutTradeNo: "", - //// Status: 0, - //// Remark: "", - ////} + return nil } diff --git a/model/user_vm.go b/model/user_vm.go index 56111f8..1eef96c 100644 --- a/model/user_vm.go +++ b/model/user_vm.go @@ -11,6 +11,7 @@ const ( VmEventOpenMember = "open_member" VmEventInvite1Member = "invite_1_member" VmEventInvite2Member = "invite_2_member" + VmEventAttendance = "attendance" ) // 用户积分 diff --git a/router/router_app.go b/router/router_app.go index eefca66..62298c5 100644 --- a/router/router_app.go +++ b/router/router_app.go @@ -71,6 +71,7 @@ func ConfigAppRouter(r gin.IRouter) { user := api.Group("user") { + user.Use(auth.UserAccessAuth) // user.POST("data", controller.UserData) // 用户数据 user.POST("user_info/upload", controller.UserInfoUpload) // 上传用户信息 @@ -84,8 +85,9 @@ func ConfigAppRouter(r gin.IRouter) { user.POST("refund_deposit_record", controller.UserDepositRefundRecordList) // 押金记录 user.POST("expire_delay", controller.UserMemberExpireDelayingInfo) // 滞纳金详情 user.POST("expire_delay_pay", controller.UserMemberExpireDelayingPay) // 滞纳金支付 - - user.POST("member_config", controller.MemberConfigList) // 开通会员配置 + user.POST("attendance", controller.UserAttendance) // 签到 + user.POST("attendance/detail", controller.UserAttendanceDetail) // 签到详情 + user.POST("member_config", controller.MemberConfigList) // 开通会员配置 user.POST("common_problem/list", controller.CommonProblemList) // 常见问题列表 //user.POST("service/wechat_id", controller.GetCustomerServiceWechatId) // 获取客服微信号