enterprise.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package db
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/caixw/lib.go/conv"
  6. log "github.com/sirupsen/logrus"
  7. "gorm.io/gorm"
  8. "time"
  9. "youngee_m_api/model/gorm_model"
  10. "youngee_m_api/util"
  11. )
  12. //企业ID查找
  13. func GetEnterpriseByEnterpriseID(ctx context.Context, EnterpriseID string) (*gorm_model.Enterprise, error) {
  14. db := GetReadDB(ctx)
  15. enterprise := gorm_model.Enterprise{}
  16. err := db.Where("enterprise_id = ?", EnterpriseID).First(&enterprise).Error
  17. if err != nil {
  18. if err == gorm.ErrRecordNotFound {
  19. return nil, nil
  20. } else {
  21. return nil, err
  22. }
  23. }
  24. return &enterprise, nil
  25. }
  26. // 支付-修改企业账户余额
  27. func UpdateEnterpriseBalance(ctx context.Context, EnterpriseID string, balance float64, availableBalance float64, frozenBalance float64) (*float64, error) {
  28. db := GetReadDB(ctx)
  29. err := db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).
  30. Updates(map[string]interface{}{"balance": gorm.Expr("balance + ?", balance), "available_balance": gorm.Expr("available_balance + ?", availableBalance), "frozen_balance": gorm.Expr("frozen_balance + ?", frozenBalance)}).Error
  31. if err != nil {
  32. return nil, err
  33. }
  34. enterprise := gorm_model.Enterprise{}
  35. err = db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).Scan(&enterprise).Error
  36. if err != nil {
  37. return nil, err
  38. }
  39. return &enterprise.Balance, nil
  40. }
  41. func MakeRechargeId(ctx context.Context, EnterpriseID string) string {
  42. db := GetReadDB(ctx)
  43. // 1、年月日
  44. year := time.Now().Year()
  45. month := time.Now().Month()
  46. day := time.Now().Day()
  47. yearData, _ := util.GetDayNum("year", year)
  48. monthData, _ := util.GetDayNum("month", int(month))
  49. dayData, _ := util.GetDayNum("day", day)
  50. sum := 0
  51. sum += dayData + monthData
  52. leap := 0
  53. if (yearData%400 == 0) || ((yearData%4 == 0) && (yearData%100 != 0)) {
  54. leap = 1
  55. }
  56. if (leap == 1) && (monthData > 2) {
  57. sum += 1
  58. }
  59. last := ""
  60. rechargeIdPrefix := "8" + EnterpriseID[len(EnterpriseID)-2:] + conv.MustString(sum, "")
  61. var rechargeIdLast string
  62. err := db.Model(gorm_model.YounggeeRechargeRecord{}).Select("recharge_id").Where("recharge_id like ?", rechargeIdPrefix+"%").
  63. Last(&rechargeIdLast).Error
  64. if err != nil {
  65. last = "0"
  66. } else {
  67. last = rechargeIdLast[len(rechargeIdLast)-2:]
  68. }
  69. var lastInt int
  70. lastInt = conv.MustInt(last, 0)
  71. if lastInt+1 < 10 {
  72. last = "0" + conv.MustString(conv.MustInt(last, 0)+1, "")
  73. } else {
  74. last = conv.MustString(conv.MustInt(last, 0)+1, "")
  75. }
  76. return rechargeIdPrefix + last
  77. }
  78. // RechargeAmount 在线充值
  79. func RechargeAmount(ctx context.Context, EnterpriseID string, Amount float64, phone string) error {
  80. db := GetReadDB(ctx)
  81. fmt.Println("Amount前:", Amount)
  82. err := db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).
  83. Updates(map[string]interface{}{"balance": gorm.Expr("balance + ?", Amount), "available_balance": gorm.Expr("available_balance + ?", Amount)}).Error
  84. if err != nil {
  85. return err
  86. }
  87. rechargeId := MakeRechargeId(ctx, EnterpriseID)
  88. err = db.Model(gorm_model.YounggeeRechargeRecord{}).Create(&gorm_model.YounggeeRechargeRecord{
  89. RechargeID: rechargeId,
  90. RechargeAmount: Amount,
  91. EnterpriseID: EnterpriseID,
  92. Status: 2,
  93. InvoiceStatus: 2,
  94. CommitAt: time.Now(),
  95. RechargeMethod: 3,
  96. TransferVoucherUrl: "--",
  97. Phone: phone,
  98. ConfirmAt: time.Now(),
  99. }).Error
  100. if err != nil {
  101. return err
  102. }
  103. return nil
  104. }
  105. // TransferToPublic 对公转账
  106. func TransferToPublic(ctx context.Context, Amount float64, EnterpriseID string, transferVoucherUrl string) error {
  107. phone := GetPhoneByEnterpriseID(ctx, EnterpriseID)
  108. db := GetReadDB(ctx)
  109. rechargeId := MakeRechargeId(ctx, EnterpriseID)
  110. fmt.Println("Amount:", Amount)
  111. err := db.Model(gorm_model.YounggeeRechargeRecord{}).Create(&gorm_model.YounggeeRechargeRecord{
  112. RechargeID: rechargeId,
  113. RechargeAmount: Amount,
  114. EnterpriseID: EnterpriseID,
  115. Status: 1,
  116. InvoiceStatus: 1,
  117. CommitAt: time.Now(),
  118. Phone: phone,
  119. RechargeMethod: 1,
  120. TransferVoucherUrl: transferVoucherUrl,
  121. ConfirmAt: time.Now(),
  122. }).Error
  123. if err != nil {
  124. return err
  125. }
  126. db1 := GetReadDB(ctx)
  127. err = db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", EnterpriseID).Updates(
  128. map[string]interface{}{"recharging": gorm.Expr("recharging + ?", Amount)}).Error
  129. if err != nil {
  130. log.Println("[TransferToPublic] recharging modify failed:", err)
  131. return err
  132. }
  133. return nil
  134. }