enterprise.go 5.1 KB

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