1、增加接口
This commit is contained in:
@ -106,5 +106,17 @@ func (e *MemberApi) CreateApi(userId int, user *models.MemberApi, retryCount int
|
||||
return err
|
||||
}
|
||||
|
||||
apiKey := fmt.Sprintf(rediskey.MemberApiKey, apiEntity.ApiKey)
|
||||
val, err := sonic.MarshalString(apiEntity)
|
||||
|
||||
if err != nil {
|
||||
e.Log.Errorf("用户api 初始化失败")
|
||||
return err
|
||||
}
|
||||
|
||||
if err := redishelper.DefaultRedis.SetString(apiKey, val); err != nil {
|
||||
e.Log.Errorf("用户api 初始化失败")
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -494,57 +494,75 @@ func (e SmsServices) AutoRenewal() error {
|
||||
startTime := time.Now().Add(-24 * time.Hour)
|
||||
endTime := time.Now().Add(24 * time.Hour)
|
||||
|
||||
smsServices := SmsServices{Service: e.Service}
|
||||
serviceMap := smsServices.GetMapAll()
|
||||
|
||||
configService := SysConfig{Service: e.Service}
|
||||
configResp := dto.GetSysConfigByKEYForServiceResp{}
|
||||
configService.GetWithKey(&dto.SysConfigByKeyReq{ConfigKey: "long_number_renew_deduction_standard"}, &configResp)
|
||||
|
||||
if configResp.ConfigValue == "" {
|
||||
e.Log.Errorf("获取续费价格失败")
|
||||
return nil
|
||||
}
|
||||
|
||||
price, _ := decimal.NewFromString(configResp.ConfigValue)
|
||||
if price.IsZero() {
|
||||
e.Log.Errorf("获取续费价格失败")
|
||||
return nil
|
||||
}
|
||||
mapDatas, _ := configService.GetMapByKeys([]string{"renew_number_premium_daisysms", "renew_number_premium_textverified"})
|
||||
|
||||
if err := e.Orm.Model(&models.SmsPhone{}).Where("auto_renewal =1 and type =1 and actived =2 and expire_time >=? and expire_time <?", startTime, endTime).Find(&datas).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, item := range datas {
|
||||
renewLog := models.SmsRenewalLog{}
|
||||
renewLog.UserId = item.UserId
|
||||
renewLog.PhoneId = item.Id
|
||||
renewLog.Type = item.Type
|
||||
renewLog.Amount = price
|
||||
renewLog.BeforeTime = *item.ExpireTime
|
||||
renewLog.Period = 30
|
||||
percent := decimal.NewFromInt(1)
|
||||
price := decimal.Zero
|
||||
|
||||
if err := e.Orm.Transaction(func(tx *gorm.DB) error {
|
||||
db := tx.Exec("UPDATE member_balance set balance = balance - ? where user_id = ? and balance >= ?", price, item.UserId, price)
|
||||
if service, ok := serviceMap[item.PlatformCode+"_"+item.ServiceCode]; !ok {
|
||||
continue
|
||||
} else {
|
||||
price = service.LongPrice
|
||||
switch {
|
||||
case item.PlatformCode == global.SmsPlatformDaisysms:
|
||||
p, ok := mapDatas["renew_number_premium_daisysms"]
|
||||
val, _ := decimal.NewFromString(p.ConfigValue)
|
||||
|
||||
if db.Error != nil {
|
||||
return db.Error
|
||||
if ok && val.Cmp(decimal.Zero) > 0 {
|
||||
per := decimal.NewFromInt(100).Add(val)
|
||||
percent = per.Div(decimal.NewFromInt(100)).Truncate(2)
|
||||
}
|
||||
case item.PlatformCode == global.SmsPlatformTextVerified:
|
||||
p, ok := mapDatas["renew_number_premium_textverified"]
|
||||
val, _ := decimal.NewFromString(p.ConfigValue)
|
||||
|
||||
if ok && val.Cmp(decimal.Zero) > 0 {
|
||||
per := decimal.NewFromInt(100).Add(val)
|
||||
percent = per.Div(decimal.NewFromInt(100)).Truncate(2)
|
||||
}
|
||||
}
|
||||
|
||||
if db.RowsAffected == 0 {
|
||||
return errors.New("余额不足")
|
||||
}
|
||||
renewLog := models.SmsRenewalLog{}
|
||||
renewLog.UserId = item.UserId
|
||||
renewLog.PhoneId = item.Id
|
||||
renewLog.Type = item.Type
|
||||
renewLog.Amount = price.Mul(percent).Truncate(2)
|
||||
renewLog.BeforeTime = *item.ExpireTime
|
||||
renewLog.Period = 30
|
||||
|
||||
if err1 := tx.Create(&renewLog).Error; err1 != nil {
|
||||
if err := e.Orm.Transaction(func(tx *gorm.DB) error {
|
||||
db := tx.Exec("UPDATE member_balance set balance = balance - ? where user_id = ? and balance >= ?", price, item.UserId, price)
|
||||
|
||||
return errors.New("创建续费日志失败")
|
||||
}
|
||||
if db.Error != nil {
|
||||
return db.Error
|
||||
}
|
||||
|
||||
newExpireTime := item.ExpireTime.AddDate(0, 0, 30)
|
||||
if err1 := tx.Model(data).Where("id =?", item.Id).Update("expire_time", newExpireTime).Error; err1 != nil {
|
||||
return err1
|
||||
if db.RowsAffected == 0 {
|
||||
return errors.New("余额不足")
|
||||
}
|
||||
|
||||
if err1 := tx.Create(&renewLog).Error; err1 != nil {
|
||||
|
||||
return errors.New("创建续费日志失败")
|
||||
}
|
||||
|
||||
newExpireTime := item.ExpireTime.AddDate(0, 0, 30)
|
||||
if err1 := tx.Model(data).Where("id =?", item.Id).Update("expire_time", newExpireTime).Error; err1 != nil {
|
||||
return err1
|
||||
}
|
||||
return nil
|
||||
}); err != nil {
|
||||
e.Log.Errorf("自动续期失败:%s", err.Error())
|
||||
}
|
||||
return nil
|
||||
}); err != nil {
|
||||
e.Log.Errorf("自动续期失败:%s", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -306,3 +306,21 @@ func (e *SmsServices) SyncPrices() error {
|
||||
textVerifiedService.SyncPrices()
|
||||
return nil
|
||||
}
|
||||
|
||||
// 获取服务map
|
||||
// map key ={platformCode}_{serviceCode}
|
||||
func (e *SmsServices) GetMapAll() map[string]models.SmsServices {
|
||||
var datas []models.SmsServices
|
||||
|
||||
if err := e.Orm.Model(&models.SmsServices{}).Find(&datas).Error; err != nil {
|
||||
e.Log.Errorf("SmsServicesService GetMapAll error:%s \r\n", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
mapServices := make(map[string]models.SmsServices)
|
||||
for _, item := range datas {
|
||||
mapServices[item.PlatformCode+"_"+item.Code] = item
|
||||
}
|
||||
|
||||
return mapServices
|
||||
}
|
||||
|
||||
@ -162,6 +162,22 @@ func (e *SysConfig) Remove(d *dto.SysConfigDeleteReq) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *SysConfig) GetMapByKeys(keys []string) (map[string]dto.GetSysConfigByKEYForServiceResp, error) {
|
||||
listData := make([]dto.GetSysConfigByKEYForServiceResp, 0)
|
||||
err := e.GetWithKeyForList(keys, &listData)
|
||||
result := make(map[string]dto.GetSysConfigByKEYForServiceResp)
|
||||
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
for _, v := range listData {
|
||||
result[v.ConfigKey] = v
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// GetWithKey 根据Key获取SysConfig
|
||||
func (e *SysConfig) GetWithKey(c *dto.SysConfigByKeyReq, resp *dto.GetSysConfigByKEYForServiceResp) error {
|
||||
var err error
|
||||
|
||||
Reference in New Issue
Block a user