package controller import ( "github.com/gin-gonic/gin" "lims-extend/common" "lims-extend/model" "lims-extend/response" ) 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"). Where("plan.creator_id = ?", userId).Count(&totalSendCount) //发包中总接包数 var totalRecvCount int64 db.Model(&model.Task{}).Joins("left join plan on task.plan_id = plan.id"). Where("plan.creator_id = ? and task.state <> 3", userId).Count(&totalRecvCount) //发包中总完成数 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, "totalFinishedCount": totalFinishedCount, }, "success") } func GetStatisticsInfoForUser(c *gin.Context) { userId := c.Params.ByName("userId") db := common.GetDB() //待领取任务数 var totalWaitingCount int64 db.Model(&model.Task{}). Where("executor_id = ? and state = 3", userId).Count(&totalWaitingCount) //发包中总接包数 var totalRecvCount int64 db.Model(&model.Task{}). Where("executor_id = ? and task.state <> 3", userId).Count(&totalRecvCount) //发包中总完成数 var totalFinishedCount int64 db.Model(&model.Task{}). Where("executor_id= ? and task.state = 2", userId).Count(&totalFinishedCount) response.Success(c, gin.H{ "totalWaitingCount": totalWaitingCount, "totalRecvCount": totalRecvCount, "totalFinishedCount": totalFinishedCount, }, "success") } func IsJoinedCompany(c *gin.Context) { db := common.GetDB() userId := c.Params.ByName("userId") var company2user model.Company2Users if err := db.Model(&model.Company2Users{}).Where("user_id = ?", userId).First(&company2user).Error; err != nil { // 状态3 是指没有提交过申请 company2user.State = 3 response.Success(c, gin.H{"res": company2user}, "未加入任何公司") return } var company model.Company db.Model(&model.Company{}).Where("id = ?", company2user.CompanyId).First(&company) type result struct { model.Company2Users CompanyName string `json:"company_name"` } res := result{ Company2Users: company2user, CompanyName: company.Name, } response.Success(c, gin.H{"res": res}, "查询成功") } func GetCompanyOfUser(c *gin.Context) { db := common.GetDB() userId := c.Params.ByName("userId") var company2user model.Company2Users if err := db.Model(&model.Company2Users{}).Where("user_id = ? and state = 1", userId).First(&company2user).Error; err != nil { response.Fail(c, nil, "用户还未加入公司或申请未通过") return } companyId := company2user.CompanyId var company model.Company if err := db.Model(&model.Company{}).Where("id = ?", companyId).First(&company).Error; err != nil { response.Fail(c, nil, "数据库错误") return } 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}, "查询成功") } func GetUserCompanyId(userId string) int { db := common.GetDB() var company2user model.Company2Users if err := db.Model(&model.Company2Users{}).Where("user_id = ? and state = 1", userId).First(&company2user).Error; err != nil { return -1 } return company2user.CompanyId }