Browse Source

公司模块/完成获取申请列表功能/完成公司申请审批(同意/拒绝)功能

bigcat 2 years ago
parent
commit
7771a5d4ff
3 changed files with 97 additions and 2 deletions
  1. 81 0
      controller/company.go
  2. 11 0
      model/company.go
  3. 5 2
      router.go

+ 81 - 0
controller/company.go

@@ -78,3 +78,84 @@ func GetCompanyCreateRequest(c *gin.Context) {
 	}
 	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}, "审批通过!公司创建成功!")
+}

+ 11 - 0
model/company.go

@@ -1,6 +1,13 @@
 package model
 
 type Company struct {
+	ID             int    `json:"id" gorm:"type:bigint(20);not null"`
+	Name           string `json:"name" gorm:"type:varchar(128);not null"`
+	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"`
+	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"`
 }
 
 type CompanyCreateRequest struct {
@@ -17,3 +24,7 @@ type CompanyCreateRequest struct {
 func (CompanyCreateRequest) TableName() string {
 	return "company_create_request"
 }
+
+func (Company) TableName() string {
+	return "company"
+}

+ 5 - 2
router.go

@@ -37,8 +37,11 @@ func CollectRoute(r *gin.Engine) *gin.Engine {
 
 	company := r.Group("/api/v-go/company")
 	{
-		company.POST("submitCompanyCreateRequest", controller.SubmitCompanyCreateRequest)
-		company.GET("getCompanyCreateRequest/:creator_id", controller.GetCompanyCreateRequest)
+		company.POST("createRequest/submit", controller.SubmitCompanyCreateRequest)
+		company.GET("createRequest/:creator_id", controller.GetCompanyCreateRequest)
+		company.GET("createRequest/lists", controller.GetCompanyCreateRequestsList)
+		company.PUT("createRequest/reject/:request_id", controller.RejectCompanyCreateRequest)
+		company.POST("createRequest/accept/:request_id", controller.AcceptCompanyCreateRequest)
 	}
 	file := r.Group("files")
 	{