劲创营---任务项目
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 

126 lignes
3.9 KiB

  1. package svc
  2. import (
  3. "applet/app/comm/db"
  4. "applet/app/comm/md"
  5. "applet/app/comm/utils"
  6. "applet/app/comm/utils/logx"
  7. "github.com/gin-gonic/gin"
  8. "github.com/tidwall/gjson"
  9. )
  10. // UserProfileDashbord is 我的面板属性
  11. func UserProfileDashbord(c *gin.Context, uid string, r *md.UserProfileResponse, style string, earning string) error {
  12. result, err := statUserOrderMoney(c, uid)
  13. if err != nil {
  14. return err
  15. }
  16. for _, item := range gjson.Get(style, "list_style").Array() {
  17. switch item.Get("type").String() {
  18. case "earning":
  19. r.GridViews = append(r.GridViews, md.UserProfileResponseGridView{
  20. Name: item.Get("name").String(),
  21. Value: utils.Float64ToStr(utils.StrToFloat64(earning)),
  22. })
  23. case "todayIncome":
  24. // 今日预估
  25. r.GridViews = append(r.GridViews, md.UserProfileResponseGridView{
  26. Name: item.Get("name").String(),
  27. Value: utils.Float64ToStr(utils.StrToFloat64(result["today"])),
  28. })
  29. case "monthIncome":
  30. // 本月预估
  31. r.GridViews = append(r.GridViews, md.UserProfileResponseGridView{
  32. Name: item.Get("name").String(),
  33. Value: utils.Float64ToStr(utils.StrToFloat64(result["thisMonth"])),
  34. })
  35. case "lastMonthIncome":
  36. // 上月预估
  37. r.GridViews = append(r.GridViews, md.UserProfileResponseGridView{
  38. Name: item.Get("name").String(),
  39. Value: utils.Float64ToStr(utils.StrToFloat64(result["lastMonth"])),
  40. })
  41. case "lastMonthSettle":
  42. // 上月结算
  43. r.GridViews = append(r.GridViews, md.UserProfileResponseGridView{
  44. Name: item.Get("name").String(),
  45. Value: utils.Float64ToStr(utils.StrToFloat64(result["lastMonthSettle"])),
  46. })
  47. case "waitSettle":
  48. // 待结算
  49. r.GridViews = append(r.GridViews, md.UserProfileResponseGridView{
  50. Name: item.Get("name").String(),
  51. Value: utils.Float64ToStr(utils.StrToFloat64(result["waitSettle"])),
  52. })
  53. }
  54. }
  55. return nil
  56. }
  57. func statUserOrderMoney(c *gin.Context, uid string) (map[string]string, error) {
  58. result := make(map[string]string, 0)
  59. // 获取时间范围
  60. todayRange := utils.GetTimeRange("today")
  61. thisMonthRange := utils.GetTimeRange("current_month")
  62. lastMonthRange := utils.GetTimeRange("last_month")
  63. // 统计预估
  64. sqlTpl := `SELECT SUM(olr.amount) AS amount
  65. FROM ord_list_relate olr
  66. JOIN ord_list ol ON olr.oid = ol.ord_id
  67. WHERE olr.uid = ?
  68. AND olr.create_at >= ?
  69. AND olr.create_at < ? AND ol.state IN (0,1,2,3) AND ol.settle_at=0;
  70. `
  71. todayResult, err := db.QueryNativeString(MasterDb(c), sqlTpl, uid, todayRange["start"], todayRange["end"])
  72. if err != nil {
  73. _ = logx.Warn(err)
  74. result["today"] = "0.00"
  75. } else {
  76. result["today"] = todayResult[0]["amount"]
  77. }
  78. thisMonthResult, err := db.QueryNativeString(MasterDb(c), sqlTpl, uid, thisMonthRange["start"], thisMonthRange["end"])
  79. if err != nil {
  80. _ = logx.Warn(err)
  81. result["thisMonth"] = "0.00"
  82. } else {
  83. result["thisMonth"] = thisMonthResult[0]["amount"]
  84. }
  85. // 统计上月预估和结算
  86. sqlTpl2 := `SELECT SUM(IF(ol.state IN (0, 1, 2, 3) AND ol.settle_at = 0, olr.amount, 0)) AS amount,
  87. SUM(IF(ol.settle_at != 0, olr.amount, 0)) AS settle_amount
  88. FROM ord_list_relate olr
  89. JOIN ord_list ol ON olr.oid = ol.ord_id
  90. WHERE olr.uid = ?
  91. AND olr.create_at >= ?
  92. AND olr.create_at < ?
  93. `
  94. lastMonthResult, err := db.QueryNativeString(MasterDb(c), sqlTpl2, uid, lastMonthRange["start"], lastMonthRange["end"])
  95. if err != nil {
  96. _ = logx.Warn(err)
  97. result["lastMonth"] = "0.00"
  98. result["lastMonthSettle"] = "0.00"
  99. } else {
  100. result["lastMonth"] = lastMonthResult[0]["amount"]
  101. result["lastMonthSettle"] = lastMonthResult[0]["settle_amount"]
  102. }
  103. // 统计全部预估
  104. sqlTpl3 := `SELECT SUM(olr.amount) AS amount
  105. FROM ord_list_relate olr
  106. JOIN ord_list ol ON olr.oid = ol.ord_id
  107. WHERE olr.uid = ?
  108. AND ol.state IN (0,1,2,3) AND ol.settle_at=0;
  109. `
  110. waitResult, err := db.QueryNativeString(MasterDb(c), sqlTpl3, uid)
  111. if err != nil {
  112. _ = logx.Warn(err)
  113. result["waitSettle"] = "0.00"
  114. } else {
  115. result["waitSettle"] = waitResult[0]["amount"]
  116. }
  117. return result, nil
  118. }