1、增加接口
This commit is contained in:
		| @ -106,5 +106,17 @@ func (e *MemberApi) CreateApi(userId int, user *models.MemberApi, retryCount int | |||||||
| 		return err | 		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 | 	return nil | ||||||
| } | } | ||||||
|  | |||||||
| @ -494,57 +494,75 @@ func (e SmsServices) AutoRenewal() error { | |||||||
| 	startTime := time.Now().Add(-24 * time.Hour) | 	startTime := time.Now().Add(-24 * time.Hour) | ||||||
| 	endTime := 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} | 	configService := SysConfig{Service: e.Service} | ||||||
| 	configResp := dto.GetSysConfigByKEYForServiceResp{} | 	mapDatas, _ := configService.GetMapByKeys([]string{"renew_number_premium_daisysms", "renew_number_premium_textverified"}) | ||||||
| 	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 |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	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 { | 	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 | 		return err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	for _, item := range datas { | 	for _, item := range datas { | ||||||
| 		renewLog := models.SmsRenewalLog{} | 		percent := decimal.NewFromInt(1) | ||||||
| 		renewLog.UserId = item.UserId | 		price := decimal.Zero | ||||||
| 		renewLog.PhoneId = item.Id |  | ||||||
| 		renewLog.Type = item.Type |  | ||||||
| 		renewLog.Amount = price |  | ||||||
| 		renewLog.BeforeTime = *item.ExpireTime |  | ||||||
| 		renewLog.Period = 30 |  | ||||||
|  |  | ||||||
| 		if err := e.Orm.Transaction(func(tx *gorm.DB) error { | 		if service, ok := serviceMap[item.PlatformCode+"_"+item.ServiceCode]; !ok { | ||||||
| 			db := tx.Exec("UPDATE member_balance set balance = balance - ? where user_id = ? and balance >= ?", price, item.UserId, price) | 			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 { | 				if ok && val.Cmp(decimal.Zero) > 0 { | ||||||
| 				return db.Error | 					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 { | 			renewLog := models.SmsRenewalLog{} | ||||||
| 				return errors.New("余额不足") | 			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 db.RowsAffected == 0 { | ||||||
| 			if err1 := tx.Model(data).Where("id =?", item.Id).Update("expire_time", newExpireTime).Error; err1 != nil { | 					return errors.New("余额不足") | ||||||
| 				return err1 | 				} | ||||||
|  |  | ||||||
|  | 				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() | 	textVerifiedService.SyncPrices() | ||||||
| 	return nil | 	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 | 	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 | // GetWithKey 根据Key获取SysConfig | ||||||
| func (e *SysConfig) GetWithKey(c *dto.SysConfigByKeyReq, resp *dto.GetSysConfigByKEYForServiceResp) error { | func (e *SysConfig) GetWithKey(c *dto.SysConfigByKeyReq, resp *dto.GetSysConfigByKEYForServiceResp) error { | ||||||
| 	var err error | 	var err error | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user