forked from free-lancers/electricity_bill_calc_service
enhance(charge):完成用户服务延期功能的测试。
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"electricity_bill_calc/global"
|
||||
"electricity_bill_calc/model"
|
||||
"electricity_bill_calc/repository"
|
||||
"electricity_bill_calc/utils"
|
||||
"time"
|
||||
|
||||
"xorm.io/builder"
|
||||
@@ -16,12 +17,25 @@ type _ChargeService struct{}
|
||||
var ChargeService _ChargeService
|
||||
|
||||
func (c _ChargeService) CreateChargeRecord(charge *model.UserCharge, extendWithIgnoreSettle bool) error {
|
||||
var seqs = make([]int64, 0)
|
||||
err := global.DBConn.Table(&model.UserCharge{}).Cols("seq").Find(&seqs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
maxSeq := utils.Reduce(seqs, 0, func(acc, elem int64) int64 {
|
||||
if elem > acc {
|
||||
return elem
|
||||
} else {
|
||||
return acc
|
||||
}
|
||||
})
|
||||
tx := global.DBConn.NewSession()
|
||||
defer tx.Close()
|
||||
if err := tx.Begin(); err != nil {
|
||||
return err
|
||||
}
|
||||
_, err := tx.Insert(charge)
|
||||
charge.Seq = maxSeq + 1
|
||||
_, err = tx.Insert(charge)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
@@ -121,9 +135,18 @@ func (c _ChargeService) CancelCharge(seq int64, uid string) error {
|
||||
tx.Rollback()
|
||||
return exceptions.NewNotFoundError("未找到匹配指定条件的计费记录。")
|
||||
}
|
||||
lastValidExpriation, err := repository.ChargeRepo.LastValidChargeTo(uid)
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
tx = global.DBConn.NewSession()
|
||||
defer tx.Close()
|
||||
if err := tx.Begin(); err != nil {
|
||||
return err
|
||||
}
|
||||
lastValidExpriation, err := repository.ChargeRepo.LastValidChargeTo(uid)
|
||||
if err != nil {
|
||||
return exceptions.NewNotFoundError("未找到最后合法的计费时间。")
|
||||
}
|
||||
err = c.updateUserExpiration(tx, uid, lastValidExpriation)
|
||||
|
Reference in New Issue
Block a user