package controller import ( "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 } // 创建公司创建请求实体 request = model.CompanyCreateRequest{ Name: companyName, LogoUrl: baseURL + logoURL, CertificateUrl: baseURL + certificateURL, State: 0, //状态0表示未审核 CreatorId: creatorId, 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() //creatorId := c.Params.ByName("creator_id") 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, 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 } response.Success(c, gin.H{"company": company}, "审批通过!公司创建成功!") }