user.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package controller
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "lims-extend/common"
  5. "lims-extend/model"
  6. "lims-extend/response"
  7. )
  8. func GetStatisticsData(userId string) (int64, int64, int64) {
  9. db := common.GetDB()
  10. //总发包数
  11. var totalSendCount int64
  12. db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
  13. Where("plan.creator_id = ?", userId).Count(&totalSendCount)
  14. //发包中总接包数
  15. var totalRecvCount int64
  16. db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
  17. Where("plan.creator_id = ? and task.state <> 3", userId).Count(&totalRecvCount)
  18. //发包中总完成数
  19. var totalFinishedCount int64
  20. db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
  21. Where("plan.creator_id = ? and task.state = 2", userId).Count(&totalFinishedCount)
  22. return totalSendCount, totalRecvCount, totalFinishedCount
  23. }
  24. func GetStatisticsInfoForAdmin(c *gin.Context) {
  25. userId := c.Params.ByName("userId")
  26. totalSendCount, totalRecvCount, totalFinishedCount := GetStatisticsData(userId)
  27. response.Success(c, gin.H{
  28. "totalSendCount": totalSendCount,
  29. "totalRecvCount": totalRecvCount,
  30. "totalFinishedCount": totalFinishedCount,
  31. }, "success")
  32. }
  33. func GetStatisticsInfoForSuperAdmin(c *gin.Context) {
  34. db := common.GetDB()
  35. var totalSendCount, totalRecvCount, totalFinishedCount int64
  36. db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
  37. Where("1 = 1 ").Count(&totalSendCount)
  38. db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
  39. Where("task.state <> 3").Count(&totalRecvCount)
  40. db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
  41. Where("task.state = 2").Count(&totalFinishedCount)
  42. response.Success(c, gin.H{
  43. "totalSendCount": totalSendCount,
  44. "totalRecvCount": totalRecvCount,
  45. "totalFinishedCount": totalFinishedCount,
  46. }, "success")
  47. }
  48. func GetStatisticsInfoForUser(c *gin.Context) {
  49. userId := c.Params.ByName("userId")
  50. db := common.GetDB()
  51. //待领取任务数
  52. var totalWaitingCount int64
  53. db.Model(&model.Task{}).
  54. Where("executor_id = ? and state = 3", userId).Count(&totalWaitingCount)
  55. //发包中总接包数
  56. var totalRecvCount int64
  57. db.Model(&model.Task{}).
  58. Where("executor_id = ? and task.state <> 3", userId).Count(&totalRecvCount)
  59. //发包中总完成数
  60. var totalFinishedCount int64
  61. db.Model(&model.Task{}).
  62. Where("executor_id= ? and task.state = 2", userId).Count(&totalFinishedCount)
  63. response.Success(c, gin.H{
  64. "totalWaitingCount": totalWaitingCount,
  65. "totalRecvCount": totalRecvCount,
  66. "totalFinishedCount": totalFinishedCount,
  67. }, "success")
  68. }
  69. func IsJoinedCompany(c *gin.Context) {
  70. db := common.GetDB()
  71. userId := c.Params.ByName("userId")
  72. var company2user model.Company2Users
  73. if err := db.Model(&model.Company2Users{}).Where("user_id = ?", userId).First(&company2user).Error; err != nil {
  74. // 状态3 是指没有提交过申请
  75. company2user.State = 3
  76. response.Success(c, gin.H{"res": company2user}, "未加入任何公司")
  77. return
  78. }
  79. var company model.Company
  80. db.Model(&model.Company{}).Where("id = ?", company2user.CompanyId).First(&company)
  81. type result struct {
  82. model.Company2Users
  83. CompanyName string `json:"company_name"`
  84. }
  85. res := result{
  86. Company2Users: company2user,
  87. CompanyName: company.Name,
  88. }
  89. response.Success(c, gin.H{"res": res}, "查询成功")
  90. }
  91. func GetCompanyOfUser(c *gin.Context) {
  92. db := common.GetDB()
  93. userId := c.Params.ByName("userId")
  94. var company2user model.Company2Users
  95. if err := db.Model(&model.Company2Users{}).Where("user_id = ? and state = 1", userId).First(&company2user).Error; err != nil {
  96. response.Fail(c, nil, "用户还未加入公司或申请未通过")
  97. return
  98. }
  99. companyId := company2user.CompanyId
  100. var company model.Company
  101. if err := db.Model(&model.Company{}).Where("id = ?", companyId).First(&company).Error; err != nil {
  102. response.Fail(c, nil, "数据库错误")
  103. return
  104. }
  105. response.Success(c, gin.H{"company": company}, "查询成功")
  106. }
  107. func GetUsers(c *gin.Context) {
  108. db := common.GetDB()
  109. type result struct {
  110. ID string `json:"id"`
  111. Username string `json:"username"`
  112. Identify int `json:"identify"`
  113. Tel string `json:"tel"`
  114. IsLogin string `json:"isLogin" gorm:"column:is_login"`
  115. Name string `json:"company_name"`
  116. }
  117. var res []result
  118. db.Raw("SELECT user.id,username,identify,tel,company.name,is_login " +
  119. "FROM `user` LEFT JOIN `company_users` ON `user`.id = `company_users`.user_id " +
  120. "LEFT JOIN company ON `company_users`.company_id = `company`.id " +
  121. "ORDER BY user.create_time").Find(&res)
  122. response.Success(c, gin.H{"users": res}, "查询成功")
  123. }
  124. func GetUserCompanyId(userId string) int {
  125. db := common.GetDB()
  126. var company2user model.Company2Users
  127. if err := db.Model(&model.Company2Users{}).Where("user_id = ? and state = 1", userId).First(&company2user).Error; err != nil {
  128. return -1
  129. }
  130. return company2user.CompanyId
  131. }