1、续费和购买号码记录

This commit is contained in:
2025-10-10 10:01:40 +08:00
parent 9c826f4966
commit 996cd27fcb
5 changed files with 152 additions and 90 deletions

View File

@ -43,7 +43,7 @@ func (e SmsRenewalLog) GetPage(c *gin.Context) {
}
p := actions.GetPermissionFromContext(c)
list := make([]models.SmsRenewalLog, 0)
list := make([]dto.SmsRenewalLogResp, 0)
var count int64
err = s.GetPage(&req, p, &list, &count)

View File

@ -12,11 +12,14 @@ type SmsRenewalLog struct {
models.Model
PhoneId int `json:"phoneId" gorm:"type:bigint;comment:号码id"`
Phone string `json:"phone" gorm:"type:varchar(50);comment:号码"`
Type int `json:"type" gorm:"type:tinyint;comment:类型 0-长效 1-短效"`
Category int `json:"category" gorm:"type:tinyint;comment:类别 1-购买号码 2-续费号码"`
UserId int `json:"userId" gorm:"type:bigint;comment:用户id"`
Amount decimal.Decimal `json:"amount" gorm:"type:decimal(10,2);comment:扣费金额"`
BeforeTime time.Time `json:"beforeTime" gorm:"type:datetime;comment:续费前过期时间"`
Period int `json:"period" gorm:"type:int;comment:时间段"`
Username string `json:"username" gorm:"->"`
models.ModelTime
models.ControlBy
}

View File

@ -13,6 +13,8 @@ import (
type SmsRenewalLogGetPageReq struct {
dto.Pagination `search:"-"`
Type int64 `form:"type" search:"type:exact;column:type;table:sms_renewal_log" comment:"类型 0-长效 1-短效"`
Category int `form:"category" search:"type:exact;column:category;table:sms_renewal_log" comment:"类别 0-普通续费 1-号码补偿"`
UserName string `form:"userName" search:"-"`
SmsRenewalLogOrder
}
@ -108,3 +110,19 @@ type SmsRenewalLogDeleteReq struct {
func (s *SmsRenewalLogDeleteReq) GetId() interface{} {
return s.Ids
}
type SmsRenewalLogResp struct {
Id int `json:"id" comment:"主键id"` // 主键id
PhoneId int `json:"phoneId" comment:"号码id"`
Phone string `json:"phone" comment:"电话号码"`
Type int `json:"type" comment:"类型 0-长效 1-短效"`
Category int `json:"category" comment:"类别 1-购买 2-续期"`
UserId int `json:"userId" comment:"用户id"`
Amount decimal.Decimal `json:"amount" comment:"扣费金额"`
BeforeTime time.Time `json:"beforeTime" comment:"续费前过期时间"`
Period int `json:"period" comment:"时间(天)"`
CreatedAt time.Time `json:"createdAt" comment:"创建时间"`
// UpdatedAt time.Time `json:"updatedAt" comment:"更新时间"`
// DeletedAt time.Time `json:"deletedAt" comment:"删除时间"`
UserName string `json:"username" comment:"用户名"`
}

View File

@ -83,6 +83,11 @@ func (e *SmsPhone) CancelNumber(req *dto.SmsPhoneCancelNumberReq, userId int) in
if err != nil {
e.Log.Errorf("取消租赁后修改失败, %s", err)
}
if err1 := e.Orm.
Where("phone_id = ?", data.Id).Delete(&models.SmsRenewalLog{}).Error; err1 != nil {
e.Log.Errorf("更新短信号码续费日志失败, %s", err1)
}
} else {
e.Log.Errorf("取消租赁失败, %s", code)
return code
@ -393,6 +398,20 @@ func (e *SmsPhone) DoGetNumber(balanceService *MemberBalance, req *dto.GetNumber
}
}
log := models.SmsRenewalLog{}
log.PhoneId = smsPhone.Id
log.Phone = smsPhone.Phone
log.Type = smsPhone.Type
log.Category = 1
log.UserId = userId
log.Amount = price
log.BeforeTime = time.Now()
log.Period = req.Period * 30
if err := e.Orm.Save(&log).Error; err != nil {
e.Log.Errorf("保存短信续费日志失败,phone_id:%d, %s", smsPhone.Id, err)
}
return balance, smsPhone, statuscode.Success
}
@ -700,6 +719,8 @@ func (e *SmsPhone) calculateRenewalPrice(basePrice decimal.Decimal, platformCode
func (e *SmsPhone) createRenewalLog(phone models.SmsPhone, amount decimal.Decimal) models.SmsRenewalLog {
return models.SmsRenewalLog{
UserId: phone.UserId,
Phone: phone.Phone,
Category: 2,
PhoneId: phone.Id,
Type: phone.Type,
Amount: amount,

View File

@ -17,22 +17,42 @@ type SmsRenewalLog struct {
}
// GetPage 获取SmsRenewalLog列表
func (e *SmsRenewalLog) GetPage(c *dto.SmsRenewalLogGetPageReq, p *actions.DataPermission, list *[]models.SmsRenewalLog, count *int64) error {
func (e *SmsRenewalLog) GetPage(c *dto.SmsRenewalLogGetPageReq, p *actions.DataPermission, list *[]dto.SmsRenewalLogResp, count *int64) error {
var err error
var data models.SmsRenewalLog
err = e.Orm.Model(&data).
var datas []models.SmsRenewalLog
query := e.Orm.Model(&data).
Joins("left join sys_user on sys_user.user_id = sms_renewal_log.user_id").
Scopes(
cDto.MakeCondition(c.GetNeedSearch()),
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
actions.Permission(data.TableName(), p),
).
Find(list).Limit(-1).Offset(-1).
)
if c.UserName != "" {
query = query.Where("sys_user.username LIKE ?", "%"+c.UserName+"%")
}
err = query.Select("sms_renewal_log.*, sys_user.username").Find(&datas).Limit(-1).Offset(-1).
Count(count).Error
if err != nil {
e.Log.Errorf("SmsRenewalLogService GetPage error:%s \r\n", err)
return err
}
for _, v := range datas {
*list = append(*list, dto.SmsRenewalLogResp{
Id: v.Id,
UserId: v.UserId,
Category: v.Category,
Phone: v.Phone,
Amount: v.Amount,
BeforeTime: v.BeforeTime,
Period: v.Period,
CreatedAt: v.CreatedAt,
UserName: v.Username,
})
}
return nil
}