From 9c14e884db911a2094d26c2a509f752a729f8e8d Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期二, 16 四月 2024 10:56:36 +0800
Subject: [PATCH] 人员管理

---
 models/fineness_check_item.go              |    2 
 controllers/work_type_manage_controller.go |   49 +++
 controllers/request/worker_request.go      |    6 
 models/fineness.go                         |    2 
 models/workshop_manage.go                  |    2 
 models/dict.go                             |    2 
 middleware/jwt_request.go                  |    1 
 models/yield_register_circle.go            |    2 
 conf/config.yaml                           |    2 
 controllers/workshop_manage_controller.go  |    5 
 models/raw_silk_price_standard.go          |    2 
 router/router.go                           |   12 
 constvar/const.go                          |   10 
 models/yield_register.go                   |   14 +
 models/raw_silk_rank_standard.go           |    2 
 models/work_type_manage.go                 |  143 +++++++++++
 controllers/request/system_set.go          |    2 
 models/fineness_check.go                   |    2 
 models/db.go                               |    2 
 controllers/yield_register_controller.go   |    5 
 models/worker.go                           |  328 +++++++++++++++++++++++++
 models/yield_register_item.go              |    2 
 controllers/worker_controller.go           |  133 ++++++++++
 models/fineness_item.go                    |    2 
 24 files changed, 719 insertions(+), 13 deletions(-)

diff --git a/conf/config.yaml b/conf/config.yaml
index ede21b4..50fb03c 100644
--- a/conf/config.yaml
+++ b/conf/config.yaml
@@ -2,7 +2,7 @@
   port: 8008
   host: 192.168.20.119
 db:
-  dsn: root:c++java123@tcp(192.168.20.119:3306)/silk?charset=utf8&parseTime=True&loc=Local
+  dsn: root:c++java123@tcp(192.168.20.119:3306)/aps_server2?charset=utf8&parseTime=True&loc=Local
   logMode: true
   maxIdleCon: 20
   maxOpenCon: 100
diff --git a/constvar/const.go b/constvar/const.go
index df7a3f8..9ac7e61 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -46,3 +46,13 @@
 const (
 	EveryPersonCarCheckNumber = 2 //姣忎汉姣忚溅鎶芥浠芥暟
 )
+
+// WorkerStatus 浜哄憳鐘舵��
+type WorkerStatus int
+
+const (
+	WorkerStatusWorking  WorkerStatus = iota + 1 // 鍦ㄧ彮
+	WorkerStatusRest                             // 浼戞伅
+	WorkerStatusHoliday                          // 璇峰亣
+	WorkerStatusOvertime                         // 鍔犵彮
+)
diff --git a/controllers/request/system_set.go b/controllers/request/system_set.go
index 533098b..2fc8b98 100644
--- a/controllers/request/system_set.go
+++ b/controllers/request/system_set.go
@@ -59,5 +59,5 @@
 type GetWorkshopManageCar struct {
 	WorkshopName string `json:"workshopName"` //杞﹂棿鍚嶇О
 	GroupNumber  int    `json:"groupNumber"`  //缁勫埆
-	MarketName   string `json:"marketName"`   ///搴勫彛鍚�
+	MarketName   string `json:"marketName"`   //搴勫彛鍚�
 }
diff --git a/controllers/request/worker_request.go b/controllers/request/worker_request.go
new file mode 100644
index 0000000..61ca9d2
--- /dev/null
+++ b/controllers/request/worker_request.go
@@ -0,0 +1,6 @@
+package request
+
+type GetWorkerList struct {
+	PageInfo
+	KeyWord string `json:"keyWord"`
+}
diff --git a/controllers/work_type_manage_controller.go b/controllers/work_type_manage_controller.go
new file mode 100644
index 0000000..dd6446e
--- /dev/null
+++ b/controllers/work_type_manage_controller.go
@@ -0,0 +1,49 @@
+package controllers
+
+import (
+	"github.com/gin-gonic/gin"
+	"silkserver/extend/code"
+	"silkserver/extend/util"
+	"silkserver/middleware"
+	"silkserver/models"
+)
+
+type WorkTypeManageController struct {
+}
+
+// SaveWorkTypeInfo
+//
+//	@Tags		鍛樺伐绠$悊/鍛樺伐淇℃伅
+//	@Summary	淇濆瓨宸ョ淇℃伅
+//	@Produce	application/json
+//	@Param		object	body		models.WorkTypeManage	true	"鍙傛暟"
+//	@Param     	Authorization	header string true "token"
+//	@Success	200		{object}	util.Response		"鎴愬姛"
+//	@Router		/api-jl/v1/worker/saveWorkTypeInfo [post]
+func (slf WorkTypeManageController) SaveWorkTypeInfo(c *gin.Context) {
+	var params models.WorkTypeManage
+	err := c.BindJSON(&params)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	if params.ID > 0 {
+		//鏇存柊
+		err = models.NewWorkTypeManageSearch().Save(&params)
+		if err != nil {
+			util.ResponseFormat(c, code.RequestParamError, "淇濆瓨澶辫触")
+			return
+		}
+	} else {
+		//鏂板缓
+		info := middleware.GetUserInfo(c)
+		params.AddPeople = info.NickName
+		err = models.NewWorkTypeManageSearch().Create(&params)
+		if err != nil {
+			util.ResponseFormat(c, code.RequestParamError, "淇濆瓨澶辫触")
+			return
+		}
+	}
+
+	util.ResponseFormat(c, code.Success, "淇濆瓨鎴愬姛")
+}
diff --git a/controllers/worker_controller.go b/controllers/worker_controller.go
new file mode 100644
index 0000000..ba2f5c8
--- /dev/null
+++ b/controllers/worker_controller.go
@@ -0,0 +1,133 @@
+package controllers
+
+import (
+	"github.com/gin-gonic/gin"
+	"gorm.io/gorm"
+	"silkserver/controllers/request"
+	"silkserver/extend/code"
+	"silkserver/extend/util"
+	"silkserver/middleware"
+	"silkserver/models"
+)
+
+type WorkerController struct {
+}
+
+// CreateWorkerInfo
+//
+//	@Tags		鍛樺伐绠$悊/鍛樺伐淇℃伅
+//	@Summary	鍒涘缓浜哄憳淇℃伅
+//	@Produce	application/json
+//	@Param		object	body		models.Worker	true	"鍙傛暟"
+//	@Param     	Authorization	header string true "token"
+//	@Success	200		{object}	util.Response		"鎴愬姛"
+//	@Router		/api-jl/v1/worker/createWorkerInfo [post]
+func (slf WorkerController) CreateWorkerInfo(c *gin.Context) {
+	var params models.Worker
+	err := c.BindJSON(&params)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	if params.ID == "" {
+		util.ResponseFormat(c, code.RequestParamError, "ID涓虹┖")
+		return
+	}
+	if params.Name == "" {
+		util.ResponseFormat(c, code.RequestParamError, "鍚嶇О涓虹┖")
+		return
+	}
+	_, err = models.NewWorkerSearch().SetID(params.ID).First()
+	if err != gorm.ErrRecordNotFound {
+		util.ResponseFormat(c, code.RequestParamError, "缂栫爜宸插瓨鍦�")
+		return
+	}
+	info := middleware.GetUserInfo(c)
+	params.AddPeople = info.NickName
+
+	err = models.NewWorkerSearch().Create(&params)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍒涘缓澶辫触")
+		return
+	}
+	util.ResponseFormat(c, code.Success, "鍒涘缓鎴愬姛")
+}
+
+// UpdateWorkerInfo
+//
+//	@Tags		鍛樺伐绠$悊/鍛樺伐淇℃伅
+//	@Summary	鏇存柊浜哄憳淇℃伅
+//	@Produce	application/json
+//	@Param		object	body		models.Worker	true	"鍙傛暟"
+//	@Param     	Authorization	header string true "token"
+//	@Success	200		{object}	util.Response		"鎴愬姛"
+//	@Router		/api-jl/v1/worker/updateWorkerInfo [post]
+func (slf WorkerController) UpdateWorkerInfo(c *gin.Context) {
+	var params models.Worker
+	err := c.BindJSON(&params)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	if params.ID == "" {
+		util.ResponseFormat(c, code.RequestParamError, "ID涓虹┖")
+		return
+	}
+	if params.Name == "" {
+		util.ResponseFormat(c, code.RequestParamError, "鍚嶇О涓虹┖")
+		return
+	}
+	err = models.NewWorkerSearch().Create(&params)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏇存柊澶辫触")
+		return
+	}
+	util.ResponseFormat(c, code.Success, "鏇存柊鎴愬姛")
+}
+
+// GetWorkerList
+//
+//	@Tags		鍛樺伐绠$悊/鍛樺伐淇℃伅
+//	@Summary	鑾峰彇浜哄憳淇℃伅鍒楄〃
+//	@Produce	application/json
+//	@Param		object	body		request.GetWorkerList	true	"鍙傛暟"
+//	@Param     	Authorization	header string true "token"
+//	@Success	200		{object}	util.ResponseList{data=[]models.Worker}		"鎴愬姛"
+//	@Router		/api-jl/v1/worker/getWorkerList [post]
+func (slf WorkerController) GetWorkerList(c *gin.Context) {
+	var params request.GetWorkerList
+	err := c.BindJSON(&params)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	workers, total, err := models.NewWorkerSearch().SetPage(params.Page, params.PageSize).Find()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
+		return
+	}
+	util.ResponseFormatList(c, code.Success, workers, total)
+}
+
+// DeleteWorkerInfo
+//
+//	@Tags		鍛樺伐绠$悊/鍛樺伐淇℃伅
+//	@Summary	鍒犻櫎浜哄憳淇℃伅
+//	@Produce	application/json
+//	@Param		object	body		request.GetWorkerList	true	"鍙傛暟"
+//	@Param     	Authorization	header string true "token"
+//	@Success	200		{object}	util.ResponseList{data=[]models.Worker}		"鎴愬姛"
+//	@Router		/api-jl/v1/worker/deleteWorkerInfo/{id} [delete]
+func (slf WorkerController) DeleteWorkerInfo(c *gin.Context) {
+	id := c.Param("id")
+	if id == "" {
+		util.ResponseFormat(c, code.RequestParamError, "鏃犳晥鐨刬d")
+		return
+	}
+	err := models.NewWorkerSearch().SetID(id).Delete()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎澶辫触")
+		return
+	}
+	util.ResponseFormat(c, code.Success, "鍒犻櫎鎴愬姛")
+}
diff --git a/controllers/workshop_manage_controller.go b/controllers/workshop_manage_controller.go
index 434d435..6c34217 100644
--- a/controllers/workshop_manage_controller.go
+++ b/controllers/workshop_manage_controller.go
@@ -2,6 +2,7 @@
 
 import (
 	"github.com/gin-gonic/gin"
+	"gorm.io/gorm"
 	"silkserver/controllers/request"
 	"silkserver/controllers/response"
 	"silkserver/extend/code"
@@ -174,6 +175,10 @@
 	fineness, err := models.NewFinenessRegisterSearch().SetWorkshop(params.WorkshopName).SetWorkshopGroup(params.GroupNumber).
 		SetMarket(params.MarketName).First()
 	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			util.ResponseFormat(c, code.RequestParamError, "褰撳墠搴勫彛,杞﹂棿,缁勫埆涓�,娌℃湁绾ゅ害鐧昏淇℃伅")
+			return
+		}
 		util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触")
 		return
 	}
diff --git a/controllers/yield_register_controller.go b/controllers/yield_register_controller.go
index f7c64cb..8eca9d8 100644
--- a/controllers/yield_register_controller.go
+++ b/controllers/yield_register_controller.go
@@ -70,6 +70,11 @@
 		}
 	} else {
 		//淇濆瓨
+		count, _ := models.NewYieldRegisterSearch().SetNumber(yield.Number).Count()
+		if count > 0 {
+			util.ResponseFormat(c, code.RequestParamError, "缂栫爜宸插瓨鍦�")
+			return
+		}
 		err = models.NewYieldRegisterSearch().Create(&yield)
 		if err != nil {
 			util.ResponseFormat(c, code.RequestParamError, "淇濆瓨澶辫触")
diff --git a/middleware/jwt_request.go b/middleware/jwt_request.go
index 070280d..c36ec54 100644
--- a/middleware/jwt_request.go
+++ b/middleware/jwt_request.go
@@ -15,6 +15,7 @@
 type BaseClaims struct {
 	UserId      string
 	Username    string
+	NickName    string
 	ParentId    string
 	UserType    constvar.UserType
 	ModifiedPwd *bool
diff --git a/models/db.go b/models/db.go
index 0198c31..3928e7d 100644
--- a/models/db.go
+++ b/models/db.go
@@ -84,6 +84,8 @@
 		YieldRegister{},
 		YieldRegisterItem{},
 		YieldRegisterCircle{},
+		Worker{},
+		WorkTypeManage{},
 	)
 	return err
 }
diff --git a/models/dict.go b/models/dict.go
index fd32dd3..e585f01 100644
--- a/models/dict.go
+++ b/models/dict.go
@@ -29,7 +29,7 @@
 )
 
 func (slf *Dict) TableName() string {
-	return "dict"
+	return "silk_dict"
 }
 
 func NewDictSearch() *DictSearch {
diff --git a/models/fineness.go b/models/fineness.go
index 5fd3ada..4ea1e11 100644
--- a/models/fineness.go
+++ b/models/fineness.go
@@ -37,7 +37,7 @@
 )
 
 func (slf *FinenessRegister) TableName() string {
-	return "fineness_register"
+	return "silk_fineness_register"
 }
 
 func NewFinenessRegisterSearch() *FinenessRegisterSearch {
diff --git a/models/fineness_check.go b/models/fineness_check.go
index 0544afe..278189c 100644
--- a/models/fineness_check.go
+++ b/models/fineness_check.go
@@ -36,7 +36,7 @@
 )
 
 func (slf *FinenessCheck) TableName() string {
-	return "fineness_check"
+	return "silk_fineness_check"
 }
 
 func NewFinenessCheckSearch() *FinenessCheckSearch {
diff --git a/models/fineness_check_item.go b/models/fineness_check_item.go
index 6c8eeb3..016398b 100644
--- a/models/fineness_check_item.go
+++ b/models/fineness_check_item.go
@@ -41,7 +41,7 @@
 )
 
 func (slf *FinenessCheckItem) TableName() string {
-	return "fineness_check_item"
+	return "silk_fineness_check_item"
 }
 
 func (slf *FinenessCheckItem) AfterFind(tx *gorm.DB) error {
diff --git a/models/fineness_item.go b/models/fineness_item.go
index fb73857..5604ed1 100644
--- a/models/fineness_item.go
+++ b/models/fineness_item.go
@@ -28,7 +28,7 @@
 )
 
 func (slf *FinenessItem) TableName() string {
-	return "fineness_register_item"
+	return "silk_fineness_register_item"
 }
 
 func NewFinenessItemSearch() *FinenessItemSearch {
diff --git a/models/raw_silk_price_standard.go b/models/raw_silk_price_standard.go
index 2395f37..05348ab 100644
--- a/models/raw_silk_price_standard.go
+++ b/models/raw_silk_price_standard.go
@@ -28,7 +28,7 @@
 )
 
 func (slf RawSilkPriceStandard) TableName() string {
-	return "raw_silk_price_standard"
+	return "silk_raw_silk_price_standard"
 }
 
 func NewRawSilkPriceStandardSearch() *RawSilkPriceStandardSearch {
diff --git a/models/raw_silk_rank_standard.go b/models/raw_silk_rank_standard.go
index 4ecf2e3..5cb41e9 100644
--- a/models/raw_silk_rank_standard.go
+++ b/models/raw_silk_rank_standard.go
@@ -32,7 +32,7 @@
 )
 
 func (slf RawSilkRankStandard) TableName() string {
-	return "raw_silk_rank_standard"
+	return "silk_raw_silk_rank_standard"
 }
 
 func NewRawSilkRankStandardSearch() *RawSilkRankStandardSearch {
diff --git a/models/work_type_manage.go b/models/work_type_manage.go
new file mode 100644
index 0000000..f3f5973
--- /dev/null
+++ b/models/work_type_manage.go
@@ -0,0 +1,143 @@
+package models
+
+import (
+	"fmt"
+	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
+	"silkserver/pkg/mysqlx"
+)
+
+type (
+	WorkTypeManage struct {
+		gorm.Model
+		WorkName        string          `json:"workName" gorm:"type:varchar(255);comment:宸ョ鍚嶇О"`
+		IsGuaranteed    bool            `json:"isGuaranteed" gorm:"type:int(1);comment:涓嶈揪鏍囦繚搴�"`
+		GuaranteedWages decimal.Decimal `json:"guaranteedWages" gorm:"type:decimal(20,3);comment:淇濆簳宸ヨ祫"`
+		PayProgrammeId  uint            `json:"payProgrammeId" gorm:"type:int(11);comment:钖祫鏂规id"`
+		AddPeople       string          `gorm:"type:varchar(255);comment:娣诲姞浜�" json:"addPeople"`
+	}
+	WorkTypeManageSearch struct {
+		WorkTypeManage
+		PageNum  int
+		PageSize int
+		Preload  bool
+		Orm      *gorm.DB
+	}
+)
+
+func (slf WorkTypeManage) TableName() string {
+	return "silk_work_type_manage"
+}
+
+func NewWorkTypeManageSearch() *WorkTypeManageSearch {
+	return &WorkTypeManageSearch{Orm: mysqlx.GetDB()}
+}
+
+func (slf *WorkTypeManageSearch) SetOrm(tx *gorm.DB) *WorkTypeManageSearch {
+	slf.Orm = tx
+	return slf
+}
+
+func (slf *WorkTypeManageSearch) SetPage(page, size int) *WorkTypeManageSearch {
+	slf.PageNum, slf.PageSize = page, size
+	return slf
+}
+
+func (slf *WorkTypeManageSearch) SetPreload(preload bool) *WorkTypeManageSearch {
+	slf.Preload = preload
+	return slf
+}
+
+func (slf *WorkTypeManageSearch) build() *gorm.DB {
+	var db = slf.Orm.Table(slf.TableName())
+
+	return db
+}
+
+// Create 鍗曟潯鎻掑叆
+func (slf *WorkTypeManageSearch) Create(record *WorkTypeManage) error {
+	var db = slf.build()
+
+	if err := db.Create(record).Error; err != nil {
+		return fmt.Errorf("create err: %v, record: %+v", err, record)
+	}
+
+	return nil
+}
+
+func (slf *WorkTypeManageSearch) Save(record *WorkTypeManage) error {
+	var db = slf.build()
+
+	if err := db.Omit("CreatedAt").Save(record).Error; err != nil {
+		return fmt.Errorf("save err: %v, record: %+v", err, record)
+	}
+
+	return nil
+}
+
+func (slf *WorkTypeManageSearch) UpdateByMap(upMap map[string]interface{}) error {
+	var (
+		db = slf.build()
+	)
+
+	if err := db.Updates(upMap).Error; err != nil {
+		return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
+	}
+
+	return nil
+}
+
+func (slf *WorkTypeManageSearch) Delete() error {
+	var db = slf.build()
+
+	if err := db.Unscoped().Delete(&WorkTypeManage{}).Error; err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (slf *WorkTypeManageSearch) Find() ([]*WorkTypeManage, int64, error) {
+	var (
+		records = make([]*WorkTypeManage, 0)
+		total   int64
+		db      = slf.build()
+	)
+
+	if err := db.Count(&total).Error; err != nil {
+		return records, total, fmt.Errorf("find count err: %v", err)
+	}
+	if slf.PageNum*slf.PageSize > 0 {
+		db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+	}
+	if err := db.Find(&records).Error; err != nil {
+		return records, total, fmt.Errorf("find records err: %v", err)
+	}
+
+	return records, total, nil
+}
+
+func (slf *WorkTypeManageSearch) FindNotTotal() ([]*WorkTypeManage, error) {
+	var (
+		records = make([]*WorkTypeManage, 0)
+		db      = slf.build()
+	)
+
+	if err := db.Find(&records).Error; err != nil {
+		return records, fmt.Errorf("find records err: %v", err)
+	}
+
+	return records, nil
+}
+
+func (slf *WorkTypeManageSearch) Count() (int64, error) {
+	var (
+		total int64
+		db    = slf.build()
+	)
+
+	if err := db.Count(&total).Error; err != nil {
+		return total, fmt.Errorf("find count err: %v", err)
+	}
+	return total, nil
+}
diff --git a/models/worker.go b/models/worker.go
new file mode 100644
index 0000000..07640e0
--- /dev/null
+++ b/models/worker.go
@@ -0,0 +1,328 @@
+package models
+
+import (
+	"fmt"
+	"gorm.io/gorm"
+	"silkserver/constvar"
+	"silkserver/pkg/mysqlx"
+)
+
+type (
+	// Worker 浜哄姏璧勬簮
+	Worker struct {
+		BaseModelString
+		Name           string                `gorm:"index;type:varchar(191);not null;comment:浜哄憳濮撳悕" json:"name"`
+		PhoneNum       string                `gorm:"type:varchar(191);comment:鎵嬫満鍙�" json:"phoneNum"`
+		ShopID         string                `gorm:"type:varchar(191);comment:鎵�灞炶溅闂碔D" json:"shopId"`
+		ShopName       string                `gorm:"type:varchar(191);comment:杞﹂棿鍚嶇О锛屼粎鏌ヨ鐢�" json:"shopName"`
+		Status         constvar.WorkerStatus `gorm:"index;type:int(11);comment:浜哄憳鐘舵��" json:"status"`
+		WorkTypeId     uint                  `gorm:"type:int(11);comment:宸ョid" json:"workTypeId"`
+		WorkType       string                `gorm:"type:varchar(255);comment:宸ョ" json:"workType"`
+		GroupNumber    int                   `gorm:"type:int(11);comment:缁勫埆" json:"groupNumber"`
+		EmploymentTime string                `gorm:"type:varchar(255);comment:鍏ヨ亴鏃堕棿" json:"employmentTime"`
+		AddPeople      string                `gorm:"type:varchar(255);comment:娣诲姞浜�" json:"addPeople"`
+	}
+
+	WorkerSearch struct {
+		Worker
+		Keyword  string
+		Preload  bool
+		Order    string
+		PageNum  int
+		PageSize int
+		Orm      *gorm.DB
+		Fields   string
+	}
+)
+
+func (slf Worker) TableName() string {
+	return "worker"
+}
+
+func NewWorkerSearch() *WorkerSearch {
+	return &WorkerSearch{Orm: mysqlx.GetDB()}
+}
+
+func (slf *WorkerSearch) SetOrm(tx *gorm.DB) *WorkerSearch {
+	slf.Orm = tx
+	return slf
+}
+
+func (slf *WorkerSearch) SetPage(page, size int) *WorkerSearch {
+	slf.PageNum, slf.PageSize = page, size
+	return slf
+}
+
+func (slf *WorkerSearch) SetOrder(order string) *WorkerSearch {
+	slf.Order = order
+	return slf
+}
+
+func (slf *WorkerSearch) SetID(id string) *WorkerSearch {
+	slf.ID = id
+	return slf
+}
+
+func (slf *WorkerSearch) SetName(name string) *WorkerSearch {
+	slf.Name = name
+	return slf
+}
+
+func (slf *WorkerSearch) SetKeyword(keyword string) *WorkerSearch {
+	slf.Keyword = keyword
+	return slf
+}
+
+func (slf *WorkerSearch) SetShopID(shopID string) *WorkerSearch {
+	slf.ShopID = shopID
+	return slf
+}
+
+func (slf *WorkerSearch) SetPreload(preload bool) *WorkerSearch {
+	slf.Preload = preload
+	return slf
+}
+
+func (slf *WorkerSearch) SetStatus(status constvar.WorkerStatus) *WorkerSearch {
+	slf.Status = status
+	return slf
+}
+
+func (slf *WorkerSearch) SetFields(fields string) *WorkerSearch {
+	slf.Fields = fields
+	return slf
+}
+
+func (slf *WorkerSearch) build() *gorm.DB {
+	var db = slf.Orm.Table(slf.TableName())
+
+	if slf.ID != "" {
+		db = db.Where("id = ?", slf.ID)
+	}
+
+	if slf.Name != "" {
+		db = db.Where("name = ?", slf.Name)
+	}
+
+	if slf.ShopID != "" {
+		db = db.Where("shop_id = ?", slf.ShopID)
+	}
+
+	if slf.Keyword != "" {
+		db.Joins("WorkerSkill")
+		db = db.Where("worker.name LIKE ? or worker.phone_num LIKE ? or WorkerSkill.name like ?", "%"+slf.Keyword+"%", "%"+slf.Keyword+"%", "%"+slf.Keyword+"%")
+	}
+
+	if slf.Status > 0 {
+		db = db.Where("status = ?", slf.Status)
+	}
+
+	if slf.Order != "" {
+		db = db.Order(slf.Order)
+	}
+
+	if slf.Preload {
+		db = db.Model(&Worker{}).Preload("WorkerSkill")
+	}
+
+	if slf.Fields != "" {
+		db = db.Select(slf.Fields)
+	}
+
+	return db
+}
+
+// Create 鍗曟潯鎻掑叆
+func (slf *WorkerSearch) Create(record *Worker) error {
+	var db = slf.build()
+
+	if err := db.Create(record).Error; err != nil {
+		return fmt.Errorf("create err: %v, record: %+v", err, record)
+	}
+
+	return nil
+}
+
+// CreateBatch 鎵归噺鎻掑叆
+func (slf *WorkerSearch) CreateBatch(records []*Worker) error {
+	var db = slf.build()
+
+	if err := db.Create(&records).Error; err != nil {
+		return fmt.Errorf("create batch err: %v, records: %+v", err, records)
+	}
+
+	return nil
+}
+
+func (slf *WorkerSearch) Save(record *Worker) error {
+	var db = slf.build()
+
+	if err := db.Omit("CreatedAt").Save(record).Error; err != nil {
+		return fmt.Errorf("save err: %v, record: %+v", err, record)
+	}
+
+	return nil
+}
+
+func (slf *WorkerSearch) UpdateByMap(upMap map[string]interface{}) error {
+	var (
+		db = slf.build()
+	)
+
+	if err := db.Updates(upMap).Error; err != nil {
+		return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
+	}
+
+	return nil
+}
+
+func (slf *WorkerSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
+	var (
+		db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+	)
+
+	if err := db.Updates(upMap).Error; err != nil {
+		return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
+	}
+
+	return nil
+}
+
+func (slf *WorkerSearch) Delete() error {
+	var db = slf.build()
+
+	if err := db.Unscoped().Delete(&Worker{}).Error; err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (slf *WorkerSearch) First() (*Worker, error) {
+	var (
+		record = new(Worker)
+		db     = slf.build()
+	)
+
+	if err := db.First(record).Error; err != nil {
+		return record, err
+	}
+
+	return record, nil
+}
+
+func (slf *WorkerSearch) Find() ([]*Worker, int64, error) {
+	var (
+		records = make([]*Worker, 0)
+		total   int64
+		db      = slf.build()
+	)
+
+	if err := db.Count(&total).Error; err != nil {
+		return records, total, fmt.Errorf("find count err: %v", err)
+	}
+	if slf.PageNum*slf.PageSize > 0 {
+		db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+	}
+	if slf.Keyword != "" {
+		db = db.Distinct("worker.*")
+	}
+	if err := db.Find(&records).Error; err != nil {
+		return records, total, fmt.Errorf("find records err: %v", err)
+	}
+
+	return records, total, nil
+}
+
+func (slf *WorkerSearch) FindNotTotal() ([]*Worker, error) {
+	var (
+		records = make([]*Worker, 0)
+		db      = slf.build()
+	)
+
+	if slf.PageNum*slf.PageSize > 0 {
+		db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+	}
+	if err := db.Find(&records).Error; err != nil {
+		return records, fmt.Errorf("find records err: %v", err)
+	}
+
+	return records, nil
+}
+
+// FindByQuery 鎸囧畾鏉′欢鏌ヨ.
+func (slf *WorkerSearch) FindByQuery(query string, args []interface{}) ([]*Worker, int64, error) {
+	var (
+		records = make([]*Worker, 0)
+		total   int64
+		db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
+	)
+
+	if err := db.Count(&total).Error; err != nil {
+		return records, total, fmt.Errorf("find by query count err: %v", err)
+	}
+	if slf.PageNum*slf.PageSize > 0 {
+		db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+	}
+	if err := db.Find(&records).Error; err != nil {
+		return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+	}
+
+	return records, total, nil
+}
+
+// FindByQueryNotTotal 鎸囧畾鏉′欢鏌ヨ&涓嶆煡璇㈡�绘潯鏁�.
+func (slf *WorkerSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Worker, error) {
+	var (
+		records = make([]*Worker, 0)
+		db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
+	)
+
+	if slf.PageNum*slf.PageSize > 0 {
+		db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+	}
+	if err := db.Find(&records).Error; err != nil {
+		return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+	}
+
+	return records, nil
+}
+
+func (slf *WorkerSearch) Count() (int64, error) {
+	var (
+		total int64
+		db    = slf.build()
+	)
+
+	if err := db.Count(&total).Error; err != nil {
+		return total, fmt.Errorf("find count err: %v", err)
+	}
+	return total, nil
+}
+
+func (slf *WorkerSearch) MaxAutoIncr() (int64, error) {
+	type Result struct {
+		Max int64
+	}
+
+	var (
+		result Result
+		db     = slf.build()
+	)
+
+	err := db.Select("MAX(auto_incr) as max").Scan(&result).Error
+	if err != nil {
+		return result.Max, fmt.Errorf("max err: %v", err)
+	}
+	return result.Max, nil
+}
+
+func (slf *WorkerSearch) FirstOrCreate(record *Worker) error {
+	var db = slf.build()
+
+	if err := db.FirstOrCreate(record).Error; err != nil {
+		return fmt.Errorf("first or create err: %v, record: %+v", err, record)
+	}
+
+	return nil
+}
diff --git a/models/workshop_manage.go b/models/workshop_manage.go
index db0e30f..ca05716 100644
--- a/models/workshop_manage.go
+++ b/models/workshop_manage.go
@@ -29,7 +29,7 @@
 )
 
 func (slf WorkshopManage) TableName() string {
-	return "workshop_manage"
+	return "silk_workshop_manage"
 }
 
 func NewWorkshopManageSearch() *WorkshopManageSearch {
diff --git a/models/yield_register.go b/models/yield_register.go
index 35fe2f0..b22e269 100644
--- a/models/yield_register.go
+++ b/models/yield_register.go
@@ -56,7 +56,7 @@
 )
 
 func (slf YieldRegister) TableName() string {
-	return "yield_register"
+	return "silk_yield_register"
 }
 
 func NewYieldRegisterSearch() *YieldRegisterSearch {
@@ -216,3 +216,15 @@
 
 	return nil
 }
+
+func (slf *YieldRegisterSearch) Count() (int64, error) {
+	var (
+		total int64
+		db    = slf.build()
+	)
+
+	if err := db.Count(&total).Error; err != nil {
+		return total, fmt.Errorf("find count err: %v", err)
+	}
+	return total, nil
+}
diff --git a/models/yield_register_circle.go b/models/yield_register_circle.go
index b55a990..7f089cc 100644
--- a/models/yield_register_circle.go
+++ b/models/yield_register_circle.go
@@ -27,7 +27,7 @@
 )
 
 func (slf YieldRegisterCircle) TableName() string {
-	return "yield_register_circle"
+	return "silk_yield_register_circle"
 }
 
 func NewYieldRegisterCircleSearch() *YieldRegisterCircleSearch {
diff --git a/models/yield_register_item.go b/models/yield_register_item.go
index 6232808..e9a643a 100644
--- a/models/yield_register_item.go
+++ b/models/yield_register_item.go
@@ -25,7 +25,7 @@
 )
 
 func (slf YieldRegisterItem) TableName() string {
-	return "yield_register_item"
+	return "silk_yield_register_item"
 }
 
 func NewYieldRegisterItemSearch() *YieldRegisterItemSearch {
diff --git a/router/router.go b/router/router.go
index 9389fec..f4117cb 100644
--- a/router/router.go
+++ b/router/router.go
@@ -73,5 +73,17 @@
 		finenessApi.POST("changeYieldRegister", yieldController.ChangeYieldRegister)           // 鍒囨崲浜ч噺鐧昏琛�
 	}
 
+	workerApi := r.Group(urlPrefix + "/worker")
+	workerController := new(controllers.WorkerController)
+	workTypeManageController := new(controllers.WorkTypeManageController)
+	{
+		workerApi.POST("createWorkerInfo", workerController.CreateWorkerInfo)       //鍒涘缓浜哄憳淇℃伅
+		workerApi.POST("updateWorkerInfo", workerController.UpdateWorkerInfo)       //鏇存柊浜哄憳淇℃伅
+		workerApi.POST("getWorkerList", workerController.GetWorkerList)             //鑾峰彇浜哄憳淇℃伅鍒楄〃
+		workerApi.DELETE("deleteWorkerInfo/:id", workerController.DeleteWorkerInfo) //鍒犻櫎浜哄憳淇℃伅
+
+		workerApi.POST("saveWorkTypeInfo", workTypeManageController.SaveWorkTypeInfo) //淇濆瓨宸ョ淇℃伅
+	}
+
 	return r
 }

--
Gitblit v1.8.0