integralService.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package service
  2. import (
  3. "fmt"
  4. "log"
  5. "points_service/entity"
  6. "time"
  7. )
  8. type IntegralService struct{}
  9. //消耗积分流水
  10. func(service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (int,string) {
  11. orm := entity.Engine
  12. flow := entity.Flow{}
  13. flow.UserId = data.UserId
  14. flow.PointType = data.PointType
  15. flow.BusinessTypeId = data.BusinessTypeId
  16. flow.BusinessType = data.BusinessType
  17. flow.Point = data.Point
  18. flow.CreateTime = time.Now().Format("2006-01-02 15:04:05")
  19. flow.EndDate = data.EndDate
  20. flow.AppId = data.AppId
  21. //判断是否为消耗积分:false
  22. if !data.Sort {
  23. //查询积分余额是否充足
  24. balance := entity.Balance{}
  25. balance.UserId = data.UserId
  26. balance.AppId = data.AppId
  27. b,err := orm.Table("integral_balance").Select("countPoints").
  28. Where("userId = ? AND appId = ?",data.UserId,data.AppId).
  29. Get(&balance)
  30. if !b || err != nil {
  31. log.Printf("积分余额查询出错,userId:[%s],err:[%v]", data.UserId, err)
  32. return entity.ErrorCode,"积分余额不足"
  33. }
  34. if balance.CountPoints <data.Point {
  35. return entity.ErrorCode,"积分余额不足"
  36. }
  37. }
  38. af, err := orm.Table("integral_flow").Insert(&flow)
  39. if err != nil {
  40. log.Print("积分记录失败-积分增减类型:",data.Sort)
  41. return entity.ErrorCode,"积分记录失败"
  42. }
  43. if af >0 {
  44. log.Println("积分记录成功-积分增减类型:",data.Sort)
  45. return entity.SuccessCode,"积分记录成功"
  46. }
  47. return entity.SuccessCode,"积分记录成功"
  48. }
  49. //到期积分查询
  50. func(service *IntegralService) IntegralExpireCheckService(data entity.ExpireJSON) []entity.Flow {
  51. orm := entity.Engine
  52. var flow []entity.Flow
  53. var err error
  54. point := ""
  55. if data.PointType != 0 {
  56. point = "AND pointType = "+fmt.Sprint(data.PointType)+""
  57. }
  58. err = orm.Table("integral_flow").
  59. Select("id,pointType,SUM(point) AS point").
  60. Where("userId = ? AND appId = ? AND endDate < ? "+point+"", data.UserId,data.AppId,data.EndDate).
  61. GroupBy("pointType").
  62. Find(&flow)
  63. if err != nil {
  64. log.Println(err)
  65. return nil
  66. }
  67. return flow
  68. }
  69. //积分守护
  70. func(service *IntegralService) IntegralGuardService(data entity.ExpireJSON) []entity.Flow {
  71. orm := entity.Engine
  72. var flow []entity.Flow
  73. var err error
  74. point := ""
  75. if data.PointType != 0 {
  76. point = "AND pointType = "+fmt.Sprint(data.PointType)+""
  77. }
  78. err = orm.Table("integral_flow").
  79. Select("id,pointType,SUM(point) AS point").
  80. Where("userId = ? AND appId = ? AND endDate < ? "+point+"", data.UserId,data.AppId,data.EndDate).
  81. GroupBy("pointType").
  82. Find(&flow)
  83. if err != nil {
  84. log.Println(err)
  85. return nil
  86. }
  87. return flow
  88. }