12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package dao
- import (
- "time"
- "youngee_b_api/app/entity"
- "youngee_b_api/app/vo"
- )
- type RechargeRecordDao struct{}
- func (d RechargeRecordDao) Insert(rechargeRecord *entity.RechargeRecord) error {
- err := Db.Debug().Model(entity.RechargeRecord{}).Omit("confirm_at").Create(rechargeRecord).Error
- if err != nil {
- return err
- }
- return nil
- }
- // 获取指定企业id的累计充值金额、充值确认中金额
- func (d RechargeRecordDao) GetRechargeAmount(enterpriseId string, status int64) (float64, error) {
- var totalAmount float64
- query := Db.Debug().Model(&entity.RechargeRecord{})
- err := query.Where("enterprise_id = ? AND status = ?", enterpriseId, status).Select("SUM(recharge_amount)").Scan(&totalAmount).Error
- if err != nil {
- return 0, err
- }
- return totalAmount, nil
- }
- // 获取指定企业id的充值记录
- func (d RechargeRecordDao) RechargeInfoList(param *vo.RechargeParam) ([]entity.RechargeRecord, int64, error) {
- rechargeRecords := []entity.RechargeRecord{}
- var total int64
- query := Db.Debug().Model(&entity.RechargeRecord{}).Where("enterprise_id = ? AND status = ?", param.EnterpriseId, param.RechargeState)
- query.Count(&total)
- query = query.Select("recharge_id, recharge_amount, transfer_voucher_url, recharge_method, commit_at, confirm_at, refuse_at, fail_reason, enterprise_id, sub_account_id")
- offset := (param.Page - 1) * param.PageSize
- var err error
- if param.RechargeState == 1 {
- err = query.Order("commit_at desc").Offset(offset).Limit(param.PageSize).Find(&rechargeRecords).Error
- } else if param.RechargeState == 2 {
- err = query.Order("confirm_at desc").Offset(offset).Limit(param.PageSize).Find(&rechargeRecords).Error
- } else if param.RechargeState == 3 {
- err = query.Order("refuse_at desc").Offset(offset).Limit(param.PageSize).Find(&rechargeRecords).Error
- }
- if err != nil {
- return nil, 0, err
- }
- return rechargeRecords, total, nil
- }
- // 更新充值状态
- func (d RechargeRecordDao) UpdateRechargeStatus(enterpriseId string, subAccountId int64, status int64, t time.Time) error {
- rechargeRecord := entity.RechargeRecord{
- Status: status,
- }
- if status == 2 {
- rechargeRecord.InvoiceStatus = 1
- rechargeRecord.ConfirmAt = t
- }
- if status == 3 {
- rechargeRecord.FailReason = "支付失败"
- rechargeRecord.RefuseAt = t
- }
- err = Db.Debug().Model(&entity.RechargeRecord{}).Where("enterprise_id = ? AND sub_account_id = ?", enterpriseId, subAccountId).Updates(rechargeRecord).Error
- if err != nil {
- return err
- }
- return nil
- }
- // 更新所有充值记录中微信支付超时的记录
- func (d RechargeRecordDao) UpdateRechargeFailedList() error {
- now := time.Now()
- err := Db.Debug().Model(&entity.RechargeRecord{}).Where("recharge_method = ? AND status = ? AND refuse_at < ?", 2, 1, now).
- Updates(map[string]interface{}{"status": 3, "fail_reason": "微信支付失败"}).Error
- if err != nil {
- return err
- }
- return nil
- }
|