123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433 |
- package controller
- import (
- "fmt"
- "github.com/gin-gonic/gin"
- "lims-extend/common"
- "lims-extend/model"
- "lims-extend/response"
- "lims-extend/util"
- "strconv"
- "time"
- )
- func SubmitCompanyCreateRequest(c *gin.Context) {
- db := common.GetDB()
- db.AutoMigrate(&model.CompanyCreateRequest{})
-
- companyName := c.PostForm("company_name")
- creatorId := c.PostForm("user_id")
- certificateFile, err := c.FormFile("business_license")
-
- if err != nil {
- response.Fail(c, nil, "营业执照上传发生错误")
- return
- }
- logoFile, err := c.FormFile("logo")
- if err != nil {
- response.Fail(c, nil, "公司logo上传发生错误")
- return
- }
- var request model.CompanyCreateRequest
- if err := db.Model(&model.CompanyCreateRequest{}).
- Where("name = ?", companyName).First(&request).Error; err == nil || request.Name != "" {
- response.Fail(c, nil, "该公司已存在,无法重复提交申请")
- return
- }
- timestamp := strconv.FormatInt(time.Now().Unix(), 10)
-
- logoURL := "files/logo/" + timestamp + "_" + logoFile.Filename
- certificateURL := "files/cert/" + timestamp + "_" + certificateFile.Filename
- err = c.SaveUploadedFile(logoFile, logoURL)
- err = c.SaveUploadedFile(certificateFile, certificateURL)
- baseURL := util.GetHTTPHead()
- if err != nil {
- response.Fail(c, nil, "保存文件出错")
- return
- }
-
- var user model.User
- if err := db.Model(&model.User{}).Where("id = ?", creatorId).First(&user).Error; err != nil {
- response.Fail(c, nil, "用户不存在")
- return
- }
-
- request = model.CompanyCreateRequest{
- Name: companyName,
- LogoUrl: baseURL + logoURL,
- CertificateUrl: baseURL + certificateURL,
- State: 0,
- CreatorId: creatorId,
- CreatorName: user.Username,
- CreatedAt: model.Time{},
- UpdatedAt: model.Time{},
- }
-
- if err := db.Model(&model.CompanyCreateRequest{}).Create(&request).Error; err != nil {
- response.Fail(c, nil, "公司创建请求出现问题,请检查")
- return
- }
-
- response.Success(c, gin.H{"company": request}, "公司创建请求提交成功,请等待审核!")
- }
- func GetCompanyCreateRequest(c *gin.Context) {
- db := common.GetDB()
- creatorId := c.Params.ByName("creator_id")
- var request model.CompanyCreateRequest
- if err := db.Model(&model.CompanyCreateRequest{}).
- Where("creator_id = ?", creatorId).First(&request).Error; err != nil {
- response.Fail(c, nil, "查无此创建公司请求")
- return
- }
- response.Success(c, gin.H{"request": request}, "查询成功")
- }
- func GetCompanyCreateRequestsList(c *gin.Context) {
- db := common.GetDB()
-
- var requestList []model.CompanyCreateRequest
- if err := db.Model(&model.CompanyCreateRequest{}).
- Find(&requestList).Error; err != nil {
- response.Fail(c, nil, "查询出错")
- return
- }
- response.Success(c, gin.H{"requestList": requestList}, "查询成功")
- }
- func RejectCompanyCreateRequest(c *gin.Context) {
- db := common.GetDB()
- requestId := c.Params.ByName("request_id")
- var request model.CompanyCreateRequest
- if err := db.Model(&model.CompanyCreateRequest{}).
- Where("id = ?", requestId).
- First(&request).Error; err != nil {
- response.Fail(c, nil, "该创建请求不存在,请检查!")
- return
- }
- if request.State != 0 {
- response.Fail(c, nil, "该创建请求状态不为【未审核】,无法再次变更状态!")
- return
- }
- request.State = 2
- request.UpdatedAt = model.Time{}
- if err := db.Model(&model.CompanyCreateRequest{}).Where("id = ?", requestId).
- Updates(&request).Error; err != nil {
- response.Fail(c, nil, "拒绝失败,数据库错误!")
- return
- }
- response.Success(c, gin.H{"requestList": request}, "该申请已被驳回!")
- }
- func AcceptCompanyCreateRequest(c *gin.Context) {
- db := common.GetDB()
- requestId := c.Params.ByName("request_id")
- var request model.CompanyCreateRequest
- if err := db.Model(&model.CompanyCreateRequest{}).
- Where("id = ?", requestId).
- First(&request).Error; err != nil {
- response.Fail(c, nil, "该创建请求不存在,请检查!")
- return
- }
- if request.State != 0 {
- response.Fail(c, nil, "该创建请求状态不为【未审核】,无法再次变更状态!")
- return
- }
- db.AutoMigrate(&model.Company{})
-
- company := model.Company{
- Name: request.Name,
- LogoUrl: request.LogoUrl,
- CertificateUrl: request.CertificateUrl,
- CreatorId: request.CreatorId,
- CreatorName: request.CreatorName,
- CreatedAt: model.Time{},
- UpdatedAt: model.Time{},
- }
-
- if err := db.Model(&model.Company{}).Create(&company).Error; err != nil {
- response.Fail(c, nil, "公司创建失败,数据库错误。")
- return
- }
-
- request.State = 1
- request.UpdatedAt = model.Time{}
- if err := db.Model(&model.CompanyCreateRequest{}).Where("id = ?", requestId).
- Updates(&request).Error; err != nil {
- response.Fail(c, nil, "同意申请失败,数据库错误!")
- return
- }
-
- admin2user := model.Company2Users{
- CompanyId: company.ID,
- UserId: company.CreatorId,
- State: 1,
- CreatedAt: model.Time{},
- UpdatedAt: model.Time{},
- }
- if err := db.Model(&model.Company2Users{}).Create(&admin2user).Error; err != nil {
- response.Fail(c, nil, "无法将申请人加入公司列表中,数据库错误!")
- return
- }
- response.Success(c, gin.H{"company": company}, "审批通过!公司创建成功!")
- }
- func ConfirmRejectCompanyCreateRequest(c *gin.Context) {
- db := common.GetDB()
- requestId := c.Params.ByName("request_id")
- var request model.CompanyCreateRequest
- if err := db.Model(&model.CompanyCreateRequest{}).
- Where("id = ? and state = 2", requestId).First(&request).Error; err != nil {
- response.Fail(c, nil, "创建公司申请不存在或者未被驳回,无法撤回申请")
- return
- }
- if err := db.Model(&model.CompanyCreateRequest{}).Where("id = ?", requestId).Delete(&request).Error; err != nil {
- response.Fail(c, nil, "数据库错误,申请撤回失败")
- return
- }
- response.Success(c, nil, "申请撤回成功!")
- }
- func ApplyJoinCompany(c *gin.Context) {
- db := common.GetDB()
- db.AutoMigrate(&model.Company2Users{})
-
- type JoinCompanyRequest struct {
- UserId string `json:"user_id"`
- CompanyName string `json:"company_name"`
- }
- var request JoinCompanyRequest
- if err := c.ShouldBind(&request); err != nil {
- response.Fail(c, nil, "参数不完整")
- return
- }
-
- var company model.Company
- if err := db.Model(&model.Company{}).
- Where("name = ?", request.CompanyName).
- First(&company).Error; err != nil {
- response.Fail(c, nil, "公司不存在,请检查")
- return
- }
-
- var dupRequest model.Company2Users
- if err := db.Model(model.Company2Users{}).Where("user_id = ?", request.UserId).
- First(&dupRequest).Error; err == nil && dupRequest.UserId != "" {
- response.Fail(c, nil, fmt.Sprintf("该申请已经存在,请勿重复提交申请"))
- return
- }
-
- applyRequest := model.Company2Users{
- CompanyId: company.ID,
- UserId: request.UserId,
- State: 0,
- CreatedAt: model.Time{},
- UpdatedAt: model.Time{},
- }
- if err := db.Model(&model.Company2Users{}).Create(&applyRequest).Error; err != nil {
- response.Fail(c, nil, "申请创建失败,数据库错误")
- return
- }
-
- response.Success(c, gin.H{"applyRequest": applyRequest}, "申请成功,请等待审核!")
- }
- func AcceptJoinCompany(c *gin.Context) {
- db := common.GetDB()
- userId := c.Params.ByName("userId")
- var request model.Company2Users
- if err := db.Model(&model.Company2Users{}).Where("user_id = ?", userId).First(&request).Error; err != nil {
- response.Fail(c, nil, "该用户不存在或没有提交过申请")
- return
- }
- if request.State != 0 {
- response.Fail(c, nil, "无法重复审批申请")
- return
- }
- request.State = 1
- request.UpdatedAt = model.Time{}
- if err := db.Model(&model.Company2Users{}).Where("user_id = ?", userId).Updates(&request).Error; err != nil {
- response.Fail(c, nil, "数据库错误,同意申请失败")
- return
- }
- response.Success(c, nil, "同意申请成功")
- }
- func RejectJoinCompany(c *gin.Context) {
- db := common.GetDB()
- userId := c.Params.ByName("userId")
- var request model.Company2Users
- if err := db.Model(&model.Company2Users{}).Where("user_id = ?", userId).First(&request).Error; err != nil {
- response.Fail(c, nil, "该用户不存在或没有提交过申请")
- return
- }
- if request.State != 0 {
- response.Fail(c, nil, "无法重复审批申请")
- return
- }
- request.State = 2
- request.UpdatedAt = model.Time{}
- if err := db.Model(&model.Company2Users{}).Where("user_id = ?", userId).Updates(&request).Error; err != nil {
- response.Fail(c, nil, "数据库错误,驳回申请失败")
- return
- }
- response.Success(c, nil, "驳回申请成功")
- }
- func GetJoinCompanyRequests(c *gin.Context) {
- db := common.GetDB()
- companyId := c.Params.ByName("companyId")
- type result struct {
- model.Company2Users
- CreatorName string `json:"creator_name" gorm:"column:username"`
- }
- var requests []result
- if err := db.Raw("SELECT company_users.id,company_id,username,user_id,"+
- "state,company_users.create_time,company_users.update_time "+
- "FROM `company_users`,`user` WHERE user.id = company_users.user_id and company_id = ?", companyId).
- Find(&requests).Error; err != nil {
- response.Fail(c, nil, "数据库错误")
- return
- }
- response.Success(c, gin.H{"requestList": requests}, "查询成功")
- }
- func DelCompanyMember(c *gin.Context) {
- db := common.GetDB()
- userId := c.Params.ByName("userId")
- var request model.Company2Users
- if err := db.Model(&model.Company2Users{}).Where("user_id = ?", userId).First(&request).Error; err != nil {
- response.Fail(c, nil, "公司成员不存在,请勿重复删除")
- return
- }
- if err := db.Model(&model.Company2Users{}).Where("user_id = ?", userId).Delete(&request).Error; err != nil {
- response.Fail(c, nil, "数据库错误,删除失败")
- return
- }
- response.Success(c, nil, "删除成功")
- }
- func GetCompanyMembers(c *gin.Context) {
- db := common.GetDB()
- companyId := c.Params.ByName("companyId")
- type userInfo struct {
- Id string `json:"id" gorm:"column:"`
- Username string `json:"username"`
- Tel string `json:"tel"`
- IsLogin string `json:"is_Login"`
- Identify int `json:"identify"`
- }
- var users []userInfo
- if err := db.Raw("SELECT user.id,username,tel,is_login,identify from `user`,`company_users` WHERE "+
- "company_users.user_id = user.id and state = 1 and company_id = ?", companyId).Find(&users).Error; err != nil {
- response.Fail(c, nil, "数据库错误,获取公司成员失败")
- return
- }
- response.Success(c, gin.H{"userList": users}, "查询成功")
- }
- func ConfirmRejectInfo(c *gin.Context) {
- db := common.GetDB()
- userId := c.Params.ByName("userId")
- var request model.Company2Users
- if err := db.Model(&model.Company2Users{}).Where("user_id = ? and state = 2", userId).First(&request).Error; err != nil {
- 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"`
- TotalEngineer int `json:"totalEngineer"`
- TotalAdmin int `json:"totalAdmin"`
- }
- res := make([]result, len(companies))
- for i, v := range companies {
- totalSendCount, totalRecvCount, totalFinishedCount, totalEngineer, totalAdmin := GetCompanyStatisticsData(v.ID)
- res[i].TotalSendCount = totalSendCount
- res[i].TotalRecvCount = totalRecvCount
- res[i].TotalFinishedCount = totalFinishedCount
- res[i].TotalEngineer = totalEngineer
- res[i].TotalAdmin = totalAdmin
- v.CertificateUrl = ""
- res[i].Company = v
- }
- response.Success(c, gin.H{"companyList": res}, "查询成功")
- }
- func GetCompanyStatisticsData(companyId int) (int64, int64, int64, int, int) {
- db := common.GetDB()
-
- var totalSendCount int64
- db.Model(&model.Task{}).Where("company_id = ?", companyId).Count(&totalSendCount)
-
- var totalRecvCount int64
- db.Model(&model.Task{}).Where("company_id = ? and state <> 3", companyId).Count(&totalRecvCount)
-
- var totalFinishedCount int64
- db.Model(&model.Task{}).Where("company_id = ? and task.state = 2", companyId).Count(&totalFinishedCount)
-
- var totalEngineer int
- db.Raw("SELECT count(*) FROM company_users left join `user` on company_users.user_id = user.id "+
- "WHERE company_users.company_id = ? and company_users.state= 1 AND identify = 2", companyId).First(&totalEngineer)
-
- var totalAdmin int
- db.Raw("SELECT count(*) FROM company_users left join `user` on company_users.user_id = user.id "+
- "WHERE company_users.company_id = ? and company_users.state= 1 AND identify = 1", companyId).First(&totalAdmin)
- return totalSendCount, totalRecvCount, totalFinishedCount, totalEngineer, totalAdmin
- }
- func GetCompanyStatistics(c *gin.Context) {
- companyId := c.Params.ByName("companyId")
- db := common.GetDB()
- var company model.Company
- if err := db.Model(&model.Company{}).Where("id = ?", companyId).First(&company).Error; err != nil {
- response.Fail(c, nil, "公司不存在")
- return
- }
- companyIntId, _ := strconv.Atoi(companyId)
- totalSendCount, totalRecvCount, totalFinishedCount, totalEngineer, totalAdmin := GetCompanyStatisticsData(companyIntId)
- response.Success(c, gin.H{
- "company": company,
- "totalSendCount": totalSendCount,
- "totalRecvCount": totalRecvCount,
- "totalFinishedCount": totalFinishedCount,
- "totalEngineer": totalEngineer,
- "totalAdmin": totalAdmin,
- }, "查询成功")
- }
|