company.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package controller
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "lims-extend/common"
  5. "lims-extend/model"
  6. "lims-extend/response"
  7. "lims-extend/util"
  8. "strconv"
  9. "time"
  10. )
  11. func SubmitCompanyCreateRequest(c *gin.Context) {
  12. db := common.GetDB()
  13. db.AutoMigrate(&model.CompanyCreateRequest{})
  14. // 获取数据
  15. companyName := c.PostForm("company_name")
  16. creatorId := c.PostForm("user_id")
  17. certificateFile, err := c.FormFile("business_license")
  18. // 数据验证
  19. if err != nil {
  20. response.Fail(c, nil, "营业执照上传发生错误")
  21. return
  22. }
  23. logoFile, err := c.FormFile("logo")
  24. if err != nil {
  25. response.Fail(c, nil, "公司logo上传发生错误")
  26. return
  27. }
  28. var request model.CompanyCreateRequest
  29. if err := db.Model(&model.CompanyCreateRequest{}).
  30. Where("name = ?", companyName).First(&request).Error; err == nil || request.Name != "" {
  31. response.Fail(c, nil, "该公司已存在,无法重复提交申请")
  32. return
  33. }
  34. timestamp := strconv.FormatInt(time.Now().Unix(), 10)
  35. // 将获取到的图片文件保存到本地
  36. logoURL := "files/logo/" + timestamp + "_" + logoFile.Filename
  37. certificateURL := "files/cert/" + timestamp + "_" + certificateFile.Filename
  38. err = c.SaveUploadedFile(logoFile, logoURL)
  39. err = c.SaveUploadedFile(certificateFile, certificateURL)
  40. baseURL := util.GetHTTPHead()
  41. if err != nil {
  42. response.Fail(c, nil, "保存文件出错")
  43. return
  44. }
  45. // 创建公司创建请求实体
  46. request = model.CompanyCreateRequest{
  47. Name: companyName,
  48. LogoUrl: baseURL + logoURL,
  49. CertificateUrl: baseURL + certificateURL,
  50. State: 0, //状态0表示未审核
  51. CreatorId: creatorId,
  52. CreatedAt: model.Time{},
  53. UpdatedAt: model.Time{},
  54. }
  55. // 提交至数据库
  56. if err := db.Model(&model.CompanyCreateRequest{}).Create(&request).Error; err != nil {
  57. response.Fail(c, nil, "公司创建请求出现问题,请检查")
  58. return
  59. }
  60. // 返回创建成功提醒
  61. response.Success(c, gin.H{"company": request}, "公司创建请求提交成功,请等待审核!")
  62. }
  63. func GetCompanyCreateRequest(c *gin.Context) {
  64. db := common.GetDB()
  65. creatorId := c.Params.ByName("creator_id")
  66. var request model.CompanyCreateRequest
  67. if err := db.Model(&model.CompanyCreateRequest{}).
  68. Where("creator_id = ?", creatorId).First(&request).Error; err != nil {
  69. response.Fail(c, nil, "查无此创建公司请求")
  70. return
  71. }
  72. response.Success(c, gin.H{"request": request}, "查询成功")
  73. }
  74. func GetCompanyCreateRequestsList(c *gin.Context) {
  75. db := common.GetDB()
  76. //creatorId := c.Params.ByName("creator_id")
  77. var requestList []model.CompanyCreateRequest
  78. if err := db.Model(&model.CompanyCreateRequest{}).
  79. Find(&requestList).Error; err != nil {
  80. response.Fail(c, nil, "查询出错")
  81. return
  82. }
  83. response.Success(c, gin.H{"requestList": requestList}, "查询成功")
  84. }
  85. func RejectCompanyCreateRequest(c *gin.Context) {
  86. db := common.GetDB()
  87. requestId := c.Params.ByName("request_id")
  88. var request model.CompanyCreateRequest
  89. if err := db.Model(&model.CompanyCreateRequest{}).
  90. Where("id = ?", requestId).
  91. First(&request).Error; err != nil {
  92. response.Fail(c, nil, "该创建请求不存在,请检查!")
  93. return
  94. }
  95. if request.State != 0 {
  96. response.Fail(c, nil, "该创建请求状态不为【未审核】,无法再次变更状态!")
  97. return
  98. }
  99. request.State = 2
  100. request.UpdatedAt = model.Time{}
  101. if err := db.Model(&model.CompanyCreateRequest{}).Where("id = ?", requestId).
  102. Updates(&request).Error; err != nil {
  103. response.Fail(c, nil, "拒绝失败,数据库错误!")
  104. return
  105. }
  106. response.Success(c, gin.H{"requestList": request}, "该申请已被驳回!")
  107. }
  108. func AcceptCompanyCreateRequest(c *gin.Context) {
  109. db := common.GetDB()
  110. requestId := c.Params.ByName("request_id")
  111. var request model.CompanyCreateRequest
  112. if err := db.Model(&model.CompanyCreateRequest{}).
  113. Where("id = ?", requestId).
  114. First(&request).Error; err != nil {
  115. response.Fail(c, nil, "该创建请求不存在,请检查!")
  116. return
  117. }
  118. if request.State != 0 {
  119. response.Fail(c, nil, "该创建请求状态不为【未审核】,无法再次变更状态!")
  120. return
  121. }
  122. db.AutoMigrate(&model.Company{})
  123. // 开始创建公司实体
  124. company := model.Company{
  125. Name: request.Name,
  126. LogoUrl: request.LogoUrl,
  127. CertificateUrl: request.CertificateUrl,
  128. CreatorId: request.CreatorId,
  129. CreatedAt: model.Time{},
  130. UpdatedAt: model.Time{},
  131. }
  132. // 创建公司表数据
  133. if err := db.Model(&model.Company{}).Create(&company).Error; err != nil {
  134. response.Fail(c, nil, "公司创建失败,数据库错误。")
  135. return
  136. }
  137. // 设置公司创建申请状态为已同意
  138. request.State = 1
  139. request.UpdatedAt = model.Time{}
  140. if err := db.Model(&model.CompanyCreateRequest{}).Where("id = ?", requestId).
  141. Updates(&request).Error; err != nil {
  142. response.Fail(c, nil, "同意申请失败,数据库错误!")
  143. return
  144. }
  145. response.Success(c, gin.H{"company": company}, "审批通过!公司创建成功!")
  146. }