resourceManageService.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package service
  2. import (
  3. "app.yhyue.com/moapp/jyResourcesCenter/entity"
  4. "app.yhyue.com/moapp/jyResourcesCenter/rpc/resourcesCenter"
  5. "time"
  6. )
  7. type ResourceManageService struct{}
  8. //查询用户资源权限
  9. func (service *ResourceManageService) FindResourcesAuth(data *resourcesCenter.ResourcesReq) ([]*resourcesCenter.ResourceBalance, error) {
  10. orm := entity.Engine.NewSession()
  11. var authArr []*entity.AccountBalance
  12. authList := make([]*resourcesCenter.ResourceBalance, 0)
  13. err := orm.Table("account_resources").Select("*").
  14. Where("accountId = ?", data.AccountId).Find(&authArr)
  15. if err != nil {
  16. return authList, err
  17. }
  18. for _, v := range authArr {
  19. rb := &resourcesCenter.ResourceBalance{
  20. Id: v.Id,
  21. Name: v.Name,
  22. ResourceType: v.ResourceType,
  23. Number: v.Number,
  24. Spec: v.Spec,
  25. }
  26. authList = append(authList, rb)
  27. }
  28. return authList, nil
  29. }
  30. //查询账户资源余额
  31. func (service *ResourceManageService) FindAccountBalance(in *resourcesCenter.ResourcesReq) ([]*resourcesCenter.ResourceBalance, error) {
  32. now := time.Now().Format("2006-01-02")
  33. now1 := time.Now()
  34. endTime := now1.AddDate(0, int(-now1.Month()+2), -now1.Day()).Format("2006-01-02")
  35. orm := entity.Engine.NewSession()
  36. var accountBalanceArr []*entity.AccountBalance
  37. dataList := make([]*resourcesCenter.ResourceBalance, 0)
  38. var err error
  39. if in.ResourceType == "附件下载包" {
  40. err = orm.Table("account_resources").Select("ANY_VALUE(id) as id,ANY_VALUE(name) as name,resourceType,ANY_VALUE(spec)").
  41. Where("accountId = ? and endTime =? and vipTime>?", in.AccountId, endTime, now).GroupBy("resourceType").Find(&accountBalanceArr)
  42. } else {
  43. err = orm.Table("account_resources").Select("ANY_VALUE(id) as id,ANY_VALUE(name) as name,resourceType,ANY_VALUE(spec)").
  44. Where("accountId = ? and endTime >= ?", in.AccountId, now).GroupBy("resourceType").Find(&accountBalanceArr)
  45. }
  46. if err != nil {
  47. return dataList, err
  48. }
  49. for _, v := range accountBalanceArr {
  50. oldTime := time.Now().AddDate(0, 0, 30).Format("2006-01-02")
  51. //统计30内到期数量
  52. b := false
  53. var err error
  54. var number int64
  55. c := int64(0)
  56. //统计总数量
  57. isOk := false;
  58. if v.ResourceType == "附件下载包" {
  59. isOk, err = orm.Table("account_resources").Select("sum(number) as number").
  60. Where("accountId = ? and resourceType = ? and endTime = ? and vipTime>=?", in.AccountId, v.ResourceType, endTime, now).Get(&number)
  61. } else {
  62. var c int64
  63. b, err = orm.Table("account_resources").Select("sum(number) as number").
  64. Where("accountId = ? and resourceType = ? and endTime >= ? and endTime <= ?",
  65. in.AccountId, v.ResourceType, now, oldTime).Get(&c)
  66. isOk, err = orm.Table("account_resources").Select("sum(number) as number").
  67. Where("accountId = ? and resourceType = ? and endTime >= ?", in.AccountId, v.ResourceType, now).Get(&number)
  68. }
  69. if !b && err != nil && !isOk {
  70. return dataList, err
  71. }
  72. dataList = append(dataList, &resourcesCenter.ResourceBalance{
  73. Id: v.Id,
  74. Name: v.Name,
  75. ResourceType: v.ResourceType,
  76. Number: number,
  77. Spec: v.Spec,
  78. ThirtyNum: c,
  79. })
  80. }
  81. return dataList, nil
  82. }
  83. //查询流水账
  84. func (service *ResourceManageService) FindConsumeRecord(in *resourcesCenter.RecordReq) ([]*resourcesCenter.ConsumeRecord, int64, error) {
  85. orm := entity.Engine.NewSession()
  86. var recordArr []*entity.ConsumeRecord
  87. dataList := make([]*resourcesCenter.ConsumeRecord, 0)
  88. var count int64
  89. var err error
  90. if in.ResourceType == "" {
  91. in.ResourceType = "字段包"
  92. } else {
  93. in.ResourceType = "附件下载包"
  94. }
  95. if in.State == 0 {
  96. if in.QueryTime!=""{
  97. count, err = orm.Table("consume_record").
  98. Where("accountId = ? and userId = ? and userType = 0 and resourceType like ? and DATE_FORMAT( createTime, '%Y-%m' ) = ?", in.AccountId, in.UserId, "%"+in.ResourceType+"%",in.QueryTime).
  99. Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
  100. }else{
  101. count, err = orm.Table("consume_record").
  102. Where("accountId = ? and userId = ? and userType = 0 and resourceType like ? ", in.AccountId, in.UserId, "%"+in.ResourceType+"%").
  103. Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
  104. }
  105. if err != nil && count == 0 {
  106. return dataList, 0, err
  107. }
  108. } else {
  109. if in.QueryTime!=""{
  110. count, err = orm.Table("consume_record").
  111. Where("accountId = ? and userType = 1 and resourceType like ? and DATE_FORMAT( createTime, '%Y-%m' ) = ?", in.AccountId, "%"+in.ResourceType+"%",in.QueryTime).
  112. Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
  113. }else{
  114. count, err = orm.Table("consume_record").
  115. Where("accountId = ? and userType = 1 and resourceType like ? ", in.AccountId, "%"+in.ResourceType+"%").
  116. Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
  117. }
  118. if err != nil && count == 0 {
  119. return dataList, 0, err
  120. }
  121. }
  122. for _, v := range recordArr {
  123. dataList = append(dataList, &resourcesCenter.ConsumeRecord{
  124. Id: v.Id,
  125. Name: v.Name,
  126. ResourceType: v.ResourceType,
  127. Number: v.Number,
  128. RuleId: v.RuleId,
  129. CreateTime: v.CreateTime,
  130. UserType: v.UserType,
  131. DeductionNumb: v.DeductionNumb,
  132. Remarks: v.Remarks,
  133. })
  134. }
  135. return dataList, count, nil
  136. }