|
@@ -30,7 +30,7 @@ func (s *Server) SignInfo(c *gin.Context) {
|
|
|
// 获取本月签到记录
|
|
// 获取本月签到记录
|
|
|
month := time.Now().Format("2006-01")
|
|
month := time.Now().Format("2006-01")
|
|
|
var monthSigns []entity.DtUserSign
|
|
var monthSigns []entity.DtUserSign
|
|
|
- db.Where("user_id = ? AND sign_date LIKE ?", userId, month+"%").
|
|
|
|
|
|
|
+ db.Where("user_id = ? AND month = ?", userId, month).
|
|
|
Order("sign_date ASC").
|
|
Order("sign_date ASC").
|
|
|
Find(&monthSigns)
|
|
Find(&monthSigns)
|
|
|
|
|
|
|
@@ -40,27 +40,11 @@ func (s *Server) SignInfo(c *gin.Context) {
|
|
|
signDates = append(signDates, sign.SignDate)
|
|
signDates = append(signDates, sign.SignDate)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 获取签到配置
|
|
|
|
|
- var signConfigs []entity.DtUserSign
|
|
|
|
|
- db.Model(&entity.DtUserSign{}).
|
|
|
|
|
- Select("DISTINCT day, reward").
|
|
|
|
|
- Where("day > 0").
|
|
|
|
|
- Order("day ASC").
|
|
|
|
|
- Limit(7).
|
|
|
|
|
- Find(&signConfigs)
|
|
|
|
|
-
|
|
|
|
|
// 构建奖励配置
|
|
// 构建奖励配置
|
|
|
rewards := make([]gin.H, 0)
|
|
rewards := make([]gin.H, 0)
|
|
|
- for i := 1; i <= 7; i++ {
|
|
|
|
|
- reward := 0.0
|
|
|
|
|
- for _, config := range signConfigs {
|
|
|
|
|
- if config.Day == i {
|
|
|
|
|
- reward = config.Reward
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ for i, reward := range entity.SignRewardConfig {
|
|
|
rewards = append(rewards, gin.H{
|
|
rewards = append(rewards, gin.H{
|
|
|
- "day": i,
|
|
|
|
|
|
|
+ "day": i + 1,
|
|
|
"reward": reward,
|
|
"reward": reward,
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
@@ -82,6 +66,7 @@ func (s *Server) SignDo(c *gin.Context) {
|
|
|
|
|
|
|
|
// 检查今日是否已签到
|
|
// 检查今日是否已签到
|
|
|
today := time.Now().Format("2006-01-02")
|
|
today := time.Now().Format("2006-01-02")
|
|
|
|
|
+ month := time.Now().Format("2006-01")
|
|
|
var existSign entity.DtUserSign
|
|
var existSign entity.DtUserSign
|
|
|
if err := db.Where("user_id = ? AND sign_date = ?", userId, today).First(&existSign).Error; err == nil {
|
|
if err := db.Where("user_id = ? AND sign_date = ?", userId, today).First(&existSign).Error; err == nil {
|
|
|
ctx.Fail("already_signed")
|
|
ctx.Fail("already_signed")
|
|
@@ -109,40 +94,20 @@ func (s *Server) SignDo(c *gin.Context) {
|
|
|
continuousDays = user.ContinuousSignDays + 1
|
|
continuousDays = user.ContinuousSignDays + 1
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 根据连续天数获取奖励(7天循环)
|
|
|
|
|
- day := ((continuousDays - 1) % 7) + 1
|
|
|
|
|
- reward := 0.0
|
|
|
|
|
-
|
|
|
|
|
- // 从配置获取奖励
|
|
|
|
|
- var config entity.DtConfig
|
|
|
|
|
- if err := db.Where("`group` = ? AND `key` = ?", "sign", "rewards").First(&config).Error; err == nil {
|
|
|
|
|
- // 可以解析JSON配置获取每天奖励
|
|
|
|
|
- // 这里简化处理,使用默认值
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 默认奖励配置
|
|
|
|
|
- defaultRewards := map[int]float64{
|
|
|
|
|
- 1: 0.1,
|
|
|
|
|
- 2: 0.2,
|
|
|
|
|
- 3: 0.3,
|
|
|
|
|
- 4: 0.5,
|
|
|
|
|
- 5: 0.8,
|
|
|
|
|
- 6: 1.0,
|
|
|
|
|
- 7: 2.0,
|
|
|
|
|
- }
|
|
|
|
|
- if r, ok := defaultRewards[day]; ok {
|
|
|
|
|
- reward = r
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 根据连续天数获取奖励(8天循环)
|
|
|
|
|
+ dayIndex := (continuousDays - 1) % len(entity.SignRewardConfig)
|
|
|
|
|
+ reward := entity.SignRewardConfig[dayIndex]
|
|
|
|
|
|
|
|
// 开启事务
|
|
// 开启事务
|
|
|
tx := db.Begin()
|
|
tx := db.Begin()
|
|
|
|
|
|
|
|
// 创建签到记录
|
|
// 创建签到记录
|
|
|
sign := &entity.DtUserSign{
|
|
sign := &entity.DtUserSign{
|
|
|
- UserId: userId,
|
|
|
|
|
- SignDate: today,
|
|
|
|
|
- Day: day,
|
|
|
|
|
- Reward: reward,
|
|
|
|
|
|
|
+ UserId: userId,
|
|
|
|
|
+ SignDate: today,
|
|
|
|
|
+ SignDay: continuousDays,
|
|
|
|
|
+ RewardAmount: reward,
|
|
|
|
|
+ Month: month,
|
|
|
}
|
|
}
|
|
|
if err := tx.Create(sign).Error; err != nil {
|
|
if err := tx.Create(sign).Error; err != nil {
|
|
|
tx.Rollback()
|
|
tx.Rollback()
|
|
@@ -164,11 +129,11 @@ func (s *Server) SignDo(c *gin.Context) {
|
|
|
|
|
|
|
|
// 记录余额变动
|
|
// 记录余额变动
|
|
|
balanceLog := &entity.DtBalanceLog{
|
|
balanceLog := &entity.DtBalanceLog{
|
|
|
- UserId: userId,
|
|
|
|
|
- Type: entity.BalanceLogTypeSign,
|
|
|
|
|
- Amount: reward,
|
|
|
|
|
- Balance: user.Balance + reward,
|
|
|
|
|
- Description: "签到奖励",
|
|
|
|
|
|
|
+ UserId: userId,
|
|
|
|
|
+ Type: entity.BalanceLogTypeSignReward,
|
|
|
|
|
+ Amount: reward,
|
|
|
|
|
+ AfterBalance: user.Balance + reward,
|
|
|
|
|
+ Remark: "签到奖励",
|
|
|
}
|
|
}
|
|
|
if err := tx.Create(balanceLog).Error; err != nil {
|
|
if err := tx.Create(balanceLog).Error; err != nil {
|
|
|
tx.Rollback()
|
|
tx.Rollback()
|