Browse Source

完成公司数据统计功能

bigcat 2 years ago
parent
commit
94433cbdc1
4 changed files with 75 additions and 3 deletions
  1. 27 0
      controller/company.go
  2. 44 3
      controller/user.go
  3. 1 0
      model/company.go
  4. 3 0
      router.go

+ 27 - 0
controller/company.go

@@ -149,6 +149,7 @@ func AcceptCompanyCreateRequest(c *gin.Context) {
 		LogoUrl:        request.LogoUrl,
 		CertificateUrl: request.CertificateUrl,
 		CreatorId:      request.CreatorId,
+		CreatorName:    request.CreatorName,
 		CreatedAt:      model.Time{},
 		UpdatedAt:      model.Time{},
 	}
@@ -352,5 +353,31 @@ func ConfirmRejectInfo(c *gin.Context) {
 		response.Fail(c, nil, "该用户不在被拒绝列表中,无法撤回申请")
 		return
 	}
+	if err := db.Model(&model.Company2Users{}).Where("user_id = ? and state = 2", userId).Delete(&request).Error; err != nil {
+		response.Fail(c, nil, "数据库错误,未成功撤回申请")
+		return
+	}
 	response.Success(c, nil, "加入公司的申请已被撤回,您可再次申请加入公司")
 }
+
+func GetCompanyStatisticsList(c *gin.Context) {
+	var companies []model.Company
+	db := common.GetDB()
+	db.Model(&model.Company{}).Find(&companies)
+	type result struct {
+		model.Company
+		TotalSendCount     int64 `json:"totalSendCount"`
+		TotalRecvCount     int64 `json:"totalRecvCount"`
+		TotalFinishedCount int64 `json:"totalFinishedCount"`
+	}
+	res := make([]result, len(companies))
+	for i, v := range companies {
+		totalSendCount, totalRecvCount, totalFinishedCount := GetStatisticsData(v.CreatorId)
+		res[i].TotalSendCount = totalSendCount
+		res[i].TotalRecvCount = totalRecvCount
+		res[i].TotalFinishedCount = totalFinishedCount
+		v.CertificateUrl = ""
+		res[i].Company = v
+	}
+	response.Success(c, gin.H{"companyList": res}, "查询成功")
+}

+ 44 - 3
controller/user.go

@@ -7,10 +7,9 @@ import (
 	"lims-extend/response"
 )
 
-func GetStatisticsInfoForAdmin(c *gin.Context) {
-	userId := c.Params.ByName("userId")
-	db := common.GetDB()
+func GetStatisticsData(userId string) (int64, int64, int64) {
 
+	db := common.GetDB()
 	//总发包数
 	var totalSendCount int64
 	db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
@@ -24,7 +23,29 @@ func GetStatisticsInfoForAdmin(c *gin.Context) {
 	var totalFinishedCount int64
 	db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
 		Where("plan.creator_id = ? and task.state = 2", userId).Count(&totalFinishedCount)
+	return totalSendCount, totalRecvCount, totalFinishedCount
+}
+
+func GetStatisticsInfoForAdmin(c *gin.Context) {
+	userId := c.Params.ByName("userId")
+	totalSendCount, totalRecvCount, totalFinishedCount := GetStatisticsData(userId)
+	response.Success(c, gin.H{
+		"totalSendCount":     totalSendCount,
+		"totalRecvCount":     totalRecvCount,
+		"totalFinishedCount": totalFinishedCount,
+	}, "success")
+}
+
+func GetStatisticsInfoForSuperAdmin(c *gin.Context) {
+	db := common.GetDB()
 
+	var totalSendCount, totalRecvCount, totalFinishedCount int64
+	db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
+		Where("1 = 1 ").Count(&totalSendCount)
+	db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
+		Where("task.state <> 3").Count(&totalRecvCount)
+	db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id").
+		Where("task.state = 2").Count(&totalFinishedCount)
 	response.Success(c, gin.H{
 		"totalSendCount":     totalSendCount,
 		"totalRecvCount":     totalRecvCount,
@@ -98,3 +119,23 @@ func GetCompanyOfUser(c *gin.Context) {
 	}
 	response.Success(c, gin.H{"company": company}, "查询成功")
 }
+
+func GetUsers(c *gin.Context) {
+	db := common.GetDB()
+	type result struct {
+		ID       string `json:"id"`
+		Username string `json:"username"`
+		Identify int    `json:"identify"`
+		Tel      string `json:"tel"`
+		IsLogin  string `json:"isLogin" gorm:"column:is_login"`
+		Name     string `json:"company_name"`
+	}
+	var res []result
+	db.Raw("SELECT user.id,username,identify,tel,company.name,is_login " +
+		"FROM `user` LEFT JOIN `company_users` ON `user`.id = `company_users`.user_id " +
+		"LEFT JOIN company ON `company_users`.company_id = `company`.id " +
+		"ORDER BY user.create_time").Find(&res)
+
+	response.Success(c, gin.H{"users": res}, "查询成功")
+
+}

+ 1 - 0
model/company.go

@@ -6,6 +6,7 @@ type Company struct {
 	LogoUrl        string `json:"logo_url" gorm:"type:varchar(128);not null"`
 	CertificateUrl string `json:"certificate_url" gorm:"type:varchar(128);not null"`
 	CreatorId      string `json:"creator_id" gorm:"type:varchar(128);not null"`
+	CreatorName    string `json:"creator_name" gorm:"type:varchar(128);not null"`
 	CreatedAt      Time   `json:"created_at" gorm:"column:create_time;type:datetime default CURRENT_TIMESTAMP"`
 	UpdatedAt      Time   `json:"updated_at" gorm:"column:update_time;type:datetime default CURRENT_TIMESTAMP"`
 }

+ 3 - 0
router.go

@@ -33,8 +33,10 @@ func CollectRoute(r *gin.Engine) *gin.Engine {
 	{
 		user.GET("infoSender/:userId", controller.GetStatisticsInfoForAdmin)
 		user.GET("infoReceiver/:userId", controller.GetStatisticsInfoForUser)
+		user.GET("infoAdmin", controller.GetStatisticsInfoForSuperAdmin)
 		user.GET("isJoinedCompany/:userId", controller.IsJoinedCompany)
 		user.GET("companyInfo/:userId", controller.GetCompanyOfUser)
+		user.GET("lists", controller.GetUsers)
 	}
 
 	company := r.Group("/api/v-go/company")
@@ -52,6 +54,7 @@ func CollectRoute(r *gin.Engine) *gin.Engine {
 		company.DELETE("member/delete/:userId", controller.DelCompanyMember)
 		company.GET("members/:companyId", controller.GetCompanyMembers)
 		company.DELETE("applyRequest/confirmReject/:userId", controller.ConfirmRejectInfo)
+		company.GET("lists", controller.GetCompanyStatisticsList)
 	}
 	file := r.Group("files")
 	{