resourceManageService.go 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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, producMap map[string]interface{}) ([]*resourcesCenter.ResourceBalance, error) {
  32. now := time.Now().Format("2006-01-02")
  33. now1 := time.Now()
  34. currentYear, currentMonth, _ := now1.Date()
  35. currentLocation := now1.Location()
  36. firstOfMonth := time.Date(currentYear, currentMonth, 1, 0, 0, 0, 0, currentLocation)
  37. lastOfMonth := firstOfMonth.AddDate(0, 1, -1)
  38. endTime := lastOfMonth.Format("2006-01-02")
  39. orm := entity.Engine.NewSession()
  40. var accountBalanceArr []*entity.AccountBalance
  41. dataList := make([]*resourcesCenter.ResourceBalance, 0)
  42. var err error
  43. if producMap[in.ResourceType] != nil {
  44. err = orm.Table("account_resources").Select("ANY_VALUE(id) as id,ANY_VALUE(name) as name,resourceType,ANY_VALUE(spec)").
  45. Where("accountId = ? and ( ( endTime =? and vipTime>=?) or (endTime >=? and (vipTime = '' or vipTime is NULL )) ) and resourceType=? ", in.AccountId, endTime, time.Now().Format("2006-01-02"), endTime, in.ResourceType).GroupBy("resourceType").Find(&accountBalanceArr)
  46. } else {
  47. err = orm.Table("account_resources").Select("ANY_VALUE(id) as id,ANY_VALUE(name) as name,resourceType,ANY_VALUE(spec)").
  48. Where("accountId = ? and endTime >= ? and resourceType like ?", in.AccountId, now, "%字段包%").GroupBy("resourceType").Find(&accountBalanceArr)
  49. }
  50. if err != nil {
  51. return dataList, err
  52. }
  53. for _, v := range accountBalanceArr {
  54. now1 := time.Now()
  55. currentYear, currentMonth, _ := now1.Date()
  56. currentLocation := now1.Location()
  57. firstOfMonth := time.Date(currentYear, currentMonth, 1, 0, 0, 0, 0, currentLocation)
  58. lastOfMonth := firstOfMonth.AddDate(0, 1, -1)
  59. endTime := lastOfMonth.Format("2006-01-02")
  60. startTime := firstOfMonth.Format("2006-01-02")
  61. //统计30内到期数量
  62. b := false
  63. var err error
  64. var number int64
  65. c := int64(0)
  66. //统计总数量
  67. isOk := false
  68. number1 := int64(0)
  69. number2 := int64(0)
  70. number3 := int64(0)
  71. if producMap[v.ResourceType] != nil {
  72. numberList := []map[string]int64{}
  73. //分别查询每种剩余数量
  74. err = orm.Table("account_resources").Select("sourceType,sum(number) as number").
  75. Where("accountId = ? and resourceType = ? and "+
  76. "((endTime <= ? and endTime>=? and vipTime>=?) or (endTime <= ? and endTime>=? and (vipTime = '' or vipTime is NULL )))",
  77. in.AccountId, v.ResourceType, endTime, startTime, time.Now().Format("2006-01-02"), endTime, startTime).GroupBy("sourceType").Find(&numberList)
  78. for _, v := range numberList {
  79. sourceType := v["sourceType"]
  80. switch sourceType {
  81. case 1:
  82. number1 = v["number"]
  83. case 2:
  84. number2 = v["number"]
  85. case 3:
  86. number3 = v["number"]
  87. }
  88. }
  89. number = number1 + number2 + number3
  90. } else {
  91. var c int64
  92. b, err = orm.Table("account_resources").Select("sum(number) as number").
  93. Where("accountId = ? and resourceType = ? and endTime >= ? and endTime <= ?",
  94. in.AccountId, v.ResourceType, now, endTime).Get(&c)
  95. isOk, err = orm.Table("account_resources").Select("sum(number) as number").
  96. Where("accountId = ? and resourceType = ? and endTime >= ?", in.AccountId, v.ResourceType, now).Get(&number)
  97. }
  98. if !b && err != nil && !isOk {
  99. return dataList, err
  100. }
  101. dataList = append(dataList, &resourcesCenter.ResourceBalance{
  102. Number: number,
  103. Spec: v.Spec,
  104. ThirtyNum: c,
  105. Number1: number1,
  106. Number2: number2,
  107. Number3: number3,
  108. })
  109. }
  110. return dataList, nil
  111. }
  112. // 查询流水账
  113. func (service *ResourceManageService) FindConsumeRecord(in *resourcesCenter.RecordReq) ([]*resourcesCenter.ConsumeRecord, int64, error) {
  114. orm := entity.Engine.NewSession()
  115. var recordArr []*entity.ConsumeRecord
  116. dataList := make([]*resourcesCenter.ConsumeRecord, 0)
  117. var count int64
  118. var err error
  119. if in.ResourceType == "" {
  120. in.ResourceType = "字段包"
  121. }
  122. switch in.State {
  123. case 0:
  124. if in.QueryTime != "" {
  125. count, err = orm.Table("consume_record").
  126. Where("accountId = ? and userId = ? and userType = 0 and resourceType like ? and DATE_FORMAT( createTime, '%Y-%m' ) = ?", in.AccountId, in.UserId, "%"+in.ResourceType+"%", in.QueryTime).
  127. Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
  128. } else {
  129. count, err = orm.Table("consume_record").
  130. Where("accountId = ? and userId = ? and userType = 0 and resourceType like ? ", in.AccountId, in.UserId, "%"+in.ResourceType+"%").
  131. Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
  132. }
  133. case 1:
  134. if in.QueryTime != "" {
  135. count, err = orm.Table("consume_record").
  136. Where("accountId = ? and userType = 1 and resourceType like ? and DATE_FORMAT( createTime, '%Y-%m' ) = ?", in.AccountId, "%"+in.ResourceType+"%", in.QueryTime).
  137. Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
  138. } else {
  139. count, err = orm.Table("consume_record").
  140. Where("accountId = ? and userType = 1 and resourceType like ? ", in.AccountId, "%"+in.ResourceType+"%").
  141. Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
  142. }
  143. case 2:
  144. if in.QueryTime != "" {
  145. count, err = orm.Table("consume_record").
  146. Where("accountId = ? and userType>0 and resourceType like ? and DATE_FORMAT( createTime, '%Y-%m' ) = ?", in.AccountId, "%"+in.ResourceType+"%", in.QueryTime).
  147. Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
  148. } else {
  149. count, err = orm.Table("consume_record").
  150. Where("accountId = ? and userType>0 and resourceType like ? ", in.AccountId, "%"+in.ResourceType+"%").
  151. Limit(int(in.PageSize), (int(in.Page)-1)*int(in.PageSize)).OrderBy("id desc").FindAndCount(&recordArr)
  152. }
  153. }
  154. if err != nil && count == 0 {
  155. return dataList, 0, err
  156. }
  157. for _, v := range recordArr {
  158. dataList = append(dataList, &resourcesCenter.ConsumeRecord{
  159. Name: v.Name,
  160. ResourceType: v.ResourceType,
  161. Number: v.Number,
  162. CreateTime: v.CreateTime,
  163. UserType: v.UserType,
  164. DeductionNumb: v.DeductionNumb,
  165. Remarks: v.Remarks,
  166. })
  167. }
  168. return dataList, count, nil
  169. }