Bladeren bron

添加公司模块,完成创建公司申请部分

bigcat 2 jaren geleden
bovenliggende
commit
098ccfefc8
8 gewijzigde bestanden met toevoegingen van 138 en 2 verwijderingen
  1. 2 0
      .gitignore
  2. 2 1
      config/application.yml
  3. 80 0
      controller/company.go
  4. 12 0
      controller/file.go
  5. 4 1
      main.go
  6. 19 0
      model/company.go
  7. 9 0
      router.go
  8. 10 0
      util/util.go

+ 2 - 0
.gitignore

@@ -2,3 +2,5 @@
 /main.exe
 /lims-extend.zip
 /config/application_bak.yml
+/files/logo/*
+/files/cert/*

+ 2 - 1
config/application.yml

@@ -12,4 +12,5 @@ datasource:
   loc: Asia/Shanghai
 pybackend:
   host: 47.110.247.58
-  port: 8002
+  port: 8002
+httphead: http://127.0.0.1:1016/

+ 80 - 0
controller/company.go

@@ -0,0 +1,80 @@
+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}, "查询成功")
+}

+ 12 - 0
controller/file.go

@@ -0,0 +1,12 @@
+package controller
+
+import (
+	"fmt"
+	"github.com/gin-gonic/gin"
+)
+
+func OfferFile(c *gin.Context) {
+	fileType := c.Params.ByName("fileType")
+	fileName := c.Params.ByName("fileName")
+	c.File(fmt.Sprintf("files/%s/%s", fileType, fileName))
+}

+ 4 - 1
main.go

@@ -5,6 +5,7 @@ import (
 	"github.com/spf13/viper"
 	"lims-extend/common"
 	"lims-extend/middleware"
+	"lims-extend/util"
 	"os"
 )
 
@@ -16,6 +17,8 @@ func main() {
 	r = CollectRoute(r)
 	port := viper.GetString("server.port")
 	listen := viper.GetString("server.listen")
+	httpHead := viper.GetString("httphead")
+	util.SetHTTPHead(httpHead)
 	if port != "" {
 		r.Run(listen + ":" + port)
 	}
@@ -26,7 +29,7 @@ func InitConfig() {
 	wordDir, _ := os.Getwd()
 	viper.SetConfigName("application")
 	viper.SetConfigType("yml")
-	viper.AddConfigPath(wordDir + "/config")
+	viper.AddConfigPath(wordDir + "/Config")
 	err := viper.ReadInConfig()
 	if err != nil {
 	}

+ 19 - 0
model/company.go

@@ -0,0 +1,19 @@
+package model
+
+type Company struct {
+}
+
+type CompanyCreateRequest 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"`
+	State          int    `json:"state" gorm:"type:int; 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"`
+}
+
+func (CompanyCreateRequest) TableName() string {
+	return "company_create_request"
+}

+ 9 - 0
router.go

@@ -33,7 +33,16 @@ func CollectRoute(r *gin.Engine) *gin.Engine {
 	{
 		user.GET("infoSender/:userId", controller.GetStatisticsInfoForAdmin)
 		user.GET("infoReceiver/:userId", controller.GetStatisticsInfoForUser)
+	}
 
+	company := r.Group("/api/v-go/company")
+	{
+		company.POST("submitCompanyCreateRequest", controller.SubmitCompanyCreateRequest)
+		company.GET("getCompanyCreateRequest/:creator_id", controller.GetCompanyCreateRequest)
+	}
+	file := r.Group("files")
+	{
+		file.GET(":fileType/:fileName", controller.OfferFile)
 	}
 	return r
 }

+ 10 - 0
util/util.go

@@ -6,6 +6,8 @@ import (
 	"strings"
 )
 
+var httpHead string
+
 type result struct {
 	ID string
 }
@@ -20,3 +22,11 @@ func GetNextId(db *gorm.DB, tableName string) string {
 	resId := strings.Join(strSlice, "_")
 	return resId
 }
+
+func GetHTTPHead() string {
+	return httpHead
+}
+
+func SetHTTPHead(head string) {
+	httpHead = head
+}