enterprise.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package db
  2. import (
  3. "context"
  4. "github.com/issue9/conv"
  5. "time"
  6. "youngee_b_api/model/gorm_model"
  7. "youngee_b_api/model/http_model"
  8. "youngee_b_api/util"
  9. "gorm.io/gorm"
  10. )
  11. func CreateEnterprise(ctx context.Context, newEnterprise gorm_model.Enterprise) (*int64, error) {
  12. db := GetReadDB(ctx)
  13. err := db.Create(&newEnterprise).Error
  14. if err != nil {
  15. return nil, err
  16. }
  17. return &newEnterprise.EnterpriseID, nil
  18. }
  19. //用户ID查找
  20. func GetEnterpriseByUID(ctx context.Context, userID int64) (*gorm_model.Enterprise, error) {
  21. db := GetReadDB(ctx)
  22. enterprise := gorm_model.Enterprise{}
  23. err := db.Where("user_id = ?", userID).First(&enterprise).Error
  24. if err != nil {
  25. if err == gorm.ErrRecordNotFound {
  26. return nil, nil
  27. } else {
  28. return nil, err
  29. }
  30. }
  31. return &enterprise, nil
  32. }
  33. //企业ID查找
  34. func GetEnterpriseByEnterpriseID(ctx context.Context, EnterpriseID int64) (*gorm_model.Enterprise, error) {
  35. db := GetReadDB(ctx)
  36. enterprise := gorm_model.Enterprise{}
  37. err := db.Where("enterprise_id = ?", EnterpriseID).First(&enterprise).Error
  38. if err != nil {
  39. if err == gorm.ErrRecordNotFound {
  40. return nil, nil
  41. } else {
  42. return nil, err
  43. }
  44. }
  45. return &enterprise, nil
  46. }
  47. // GetEnterpriseBalance 获取企业可用余额等信息
  48. func GetEnterpriseBalance(ctx context.Context, EnterpriseID int64) (*http_model.EnterpriseBalanceData, error) {
  49. db := GetReadDB(ctx)
  50. enterprise := gorm_model.Enterprise{}
  51. err := db.Where("enterprise_id = ?", EnterpriseID).First(&enterprise).Error
  52. if err != nil {
  53. if err == gorm.ErrRecordNotFound {
  54. return nil, nil
  55. } else {
  56. return nil, err
  57. }
  58. }
  59. res := &http_model.EnterpriseBalanceData{
  60. Balance: enterprise.Balance,
  61. FrozenBalance: enterprise.FrozenBalance,
  62. AvailableBalance: enterprise.AvailableBalance,
  63. }
  64. return res, nil
  65. }
  66. // 支付-修改企业账户余额
  67. func UpdateEnterpriseBalance(ctx context.Context, EnterpriseID int64, balance int64, availableBalance int64, frozenBalance int64) (*int64, error) {
  68. db := GetReadDB(ctx)
  69. err := db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).
  70. Updates(map[string]interface{}{"balance": gorm.Expr("balance + ?", balance), "available_balance": gorm.Expr("available_balance + ?", availableBalance), "frozen_balance": gorm.Expr("frozen_balance + ?", frozenBalance)}).Error
  71. if err != nil {
  72. return nil, err
  73. }
  74. enterprise := gorm_model.Enterprise{}
  75. err = db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).Scan(&enterprise).Error
  76. if err != nil {
  77. return nil, err
  78. }
  79. return &enterprise.Balance, nil
  80. }
  81. func RechargeAmount(ctx context.Context, EnterpriseID int64, Amount float64) error {
  82. db := GetReadDB(ctx)
  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. enterprise := gorm_model.Enterprise{}
  89. err = db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).Scan(&enterprise).Error
  90. if err != nil {
  91. return err
  92. }
  93. // 1、年月日
  94. year := time.Now().Year()
  95. month := time.Now().Month()
  96. day := time.Now().Day()
  97. yearData, _ := util.GetDayNum("year", year)
  98. monthData, _ := util.GetDayNum("month", int(month))
  99. dayData, _ := util.GetDayNum("day", day)
  100. sum := 0
  101. sum += dayData + monthData
  102. leap := 0
  103. if (yearData%400 == 0) || ((yearData%4 == 0) && (yearData%100 != 0)) {
  104. leap = 1
  105. }
  106. if (leap == 1) && (monthData > 2) {
  107. sum += 1
  108. }
  109. last := ""
  110. rechargeIdPrefix := "8" + conv.MustString(EnterpriseID)[len(conv.MustString(EnterpriseID))-2:] + conv.MustString(sum)
  111. var rechargeIdLast string
  112. err = db.Model(gorm_model.YounggeeRechargeRecord{}).Select("recharge_id").Where("recharge_id like ?", rechargeIdPrefix+"%").
  113. Last(&rechargeIdLast).Error
  114. if err != nil {
  115. last = "0"
  116. } else {
  117. last = rechargeIdLast[len(rechargeIdLast)-2:]
  118. }
  119. var lastInt int
  120. lastInt = conv.MustInt(last)
  121. if lastInt+1 < 10 {
  122. last = "0" + conv.MustString(conv.MustInt(last)+1)
  123. } else {
  124. last = conv.MustString(conv.MustInt(last) + 1)
  125. }
  126. err = db.Model(gorm_model.YounggeeRechargeRecord{}).Create(&gorm_model.YounggeeRechargeRecord{
  127. RechargeID: rechargeIdPrefix + last,
  128. RechargeAmount: Amount,
  129. EnterpriseID: EnterpriseID,
  130. Status: 1,
  131. InvoiceStatus: 1,
  132. CommitAt: time.Now(),
  133. RechargeMethod: 3,
  134. TransferVoucherUrl: "--",
  135. ConfirmAt: time.Now(),
  136. }).Error
  137. if err != nil {
  138. return err
  139. }
  140. return nil
  141. }