Explorar o código

feature(报修): 报修管理

liuyaqi %!s(int64=3) %!d(string=hai) anos
pai
achega
6fbf94c24f

+ 3 - 3
dao/feedback/internal/feedback_flow.go

@@ -27,7 +27,7 @@ type FeedbackFlowDao struct {
 // FeedbackFlowColumns defines and stores column names for table feedback_flow.
 type feedbackFlowColumns struct {
 	Id            string // Id
-	FeebackId     string // 反馈Id
+	FeedbackId    string // 反馈Id
 	Type          string // 流程节点 1 发起 2 转交 3 处理 4 重新激活
 	Status        string // 处理结果 1 成功
 	ProcessById   string // 处理人 Id
@@ -46,7 +46,7 @@ var (
 		Table: "feedback_flow",
 		Columns: feedbackFlowColumns{
 			Id:            "Id",
-			FeebackId:     "FeebackId",
+			FeedbackId:    "FeedbackId",
 			Type:          "Type",
 			Status:        "Status",
 			ProcessById:   "ProcessById",
@@ -67,7 +67,7 @@ func NewFeedbackFlowDao(tenant string) FeedbackFlowDao {
 		Table: "feedback_flow",
 		Columns: feedbackFlowColumns{
 			Id:            "Id",
-			FeebackId:     "FeebackId",
+			FeedbackId:    "FeedbackId",
 			Type:          "Type",
 			Status:        "Status",
 			ProcessById:   "ProcessById",

+ 3 - 3
dao/feedback/internal/feedback_result.go

@@ -27,7 +27,7 @@ type FeedbackResultDao struct {
 // FeedbackResultColumns defines and stores column names for table feedback_result.
 type feedbackResultColumns struct {
 	Id            string // Id
-	FeebackId     string // 反馈Id
+	FeedbackId    string // 反馈Id
 	ProcessById   string // 处理人 Id
 	ProcessByName string // 处理人名称
 	ProcessType   string // 处理方式
@@ -45,7 +45,7 @@ var (
 		Table: "feedback_result",
 		Columns: feedbackResultColumns{
 			Id:            "Id",
-			FeebackId:     "FeebackId",
+			FeedbackId:    "FeedbackId",
 			ProcessById:   "ProcessById",
 			ProcessByName: "ProcessByName",
 			ProcessType:   "ProcessType",
@@ -65,7 +65,7 @@ func NewFeedbackResultDao(tenant string) FeedbackResultDao {
 		Table: "feedback_result",
 		Columns: feedbackResultColumns{
 			Id:            "Id",
-			FeebackId:     "FeebackId",
+			FeedbackId:    "FeedbackId",
 			ProcessById:   "ProcessById",
 			ProcessByName: "ProcessByName",
 			ProcessType:   "ProcessType",

+ 137 - 0
handler/feedback/feedback.go

@@ -0,0 +1,137 @@
+package feedback
+
+import (
+	"context"
+	"lims_adapter/model"
+	"lims_adapter/model/feedback"
+	feedbackSrv "lims_adapter/service/feedback"
+
+	"dashoo.cn/common_definition/comm_def"
+	"dashoo.cn/micro_libary/myerrors"
+	"github.com/gogf/gf/frame/g"
+)
+
+type Feedback struct{}
+
+func (c *Feedback) List(ctx context.Context, req *feedback.FeedbackListReq, rsp *comm_def.CommonMsg) error {
+	g.Log().Infof("Feedback.List request %#v ", *req)
+	s, err := feedbackSrv.NewFeedbackService(ctx)
+	if err != nil {
+		return err
+	}
+	total, ent, err := s.List(ctx, req)
+	_, err, code, msg := myerrors.CheckError(err)
+	if err != nil {
+		return err
+	}
+	if ent == nil {
+		ent = []*feedback.Feedback{}
+	}
+	rsp.Code = code
+	rsp.Msg = msg
+	rsp.Data = map[string]interface{}{
+		"total": total,
+		"list":  ent,
+	}
+	return nil
+}
+
+func (c *Feedback) Get(ctx context.Context, req *feedback.FeedbackGetReq, rsp *comm_def.CommonMsg) error {
+	g.Log().Infof("Feedback.Get request %#v ", *req)
+	s, err := feedbackSrv.NewFeedbackService(ctx)
+	if err != nil {
+		return err
+	}
+	ent, err := s.Get(ctx, req)
+	_, err, code, msg := myerrors.CheckError(err)
+	if err != nil {
+		return err
+	}
+	rsp.Code = code
+	rsp.Msg = msg
+	rsp.Data = ent
+	return nil
+}
+
+func (c *Feedback) Add(ctx context.Context, req *feedback.FeedbackAddReq, rsp *comm_def.CommonMsg) error {
+	g.Log().Infof("Feedback.Add request %#v ", *req)
+	s, err := feedbackSrv.NewFeedbackService(ctx)
+	if err != nil {
+		return err
+	}
+
+	id, err := s.Add(ctx, req)
+	_, err, code, msg := myerrors.CheckError(err)
+	if err != nil {
+		return err
+	}
+	rsp.Code = code
+	rsp.Msg = msg
+	rsp.Data = id
+	return nil
+}
+
+func (c *Feedback) Trans(ctx context.Context, req *feedback.FeedbackTransReq, rsp *comm_def.CommonMsg) error {
+	g.Log().Infof("Feedback.Trans request %#v ", *req)
+	s, err := feedbackSrv.NewFeedbackService(ctx)
+	if err != nil {
+		return err
+	}
+	err = s.Trans(ctx, req)
+	_, err, code, msg := myerrors.CheckError(err)
+	if err != nil {
+		return err
+	}
+	rsp.Code = code
+	rsp.Msg = msg
+	return nil
+}
+
+func (c *Feedback) Process(ctx context.Context, req *feedback.FeedbackProcessReq, rsp *comm_def.CommonMsg) error {
+	g.Log().Infof("Feedback.Process request %#v ", *req)
+	s, err := feedbackSrv.NewFeedbackService(ctx)
+	if err != nil {
+		return err
+	}
+	err = s.Process(ctx, req)
+	_, err, code, msg := myerrors.CheckError(err)
+	if err != nil {
+		return err
+	}
+	rsp.Code = code
+	rsp.Msg = msg
+	return nil
+}
+
+func (c *Feedback) Reactivate(ctx context.Context, req *feedback.FeedbackReactivateReq, rsp *comm_def.CommonMsg) error {
+	g.Log().Infof("Feedback.Reactivate request %#v ", *req)
+	s, err := feedbackSrv.NewFeedbackService(ctx)
+	if err != nil {
+		return err
+	}
+	err = s.Reactivate(ctx, req)
+	_, err, code, msg := myerrors.CheckError(err)
+	if err != nil {
+		return err
+	}
+	rsp.Code = code
+	rsp.Msg = msg
+	return nil
+}
+
+func (c *Feedback) Processor(ctx context.Context, req *model.EmptyArgs, rsp *comm_def.CommonMsg) error {
+	g.Log().Infof("Feedback.Get request %#v ", *req)
+	s, err := feedbackSrv.NewFeedbackService(ctx)
+	if err != nil {
+		return err
+	}
+	ent, err := s.Processor(ctx)
+	_, err, code, msg := myerrors.CheckError(err)
+	if err != nil {
+		return err
+	}
+	rsp.Code = code
+	rsp.Msg = msg
+	rsp.Data = ent
+	return nil
+}

+ 3 - 0
main.go

@@ -3,6 +3,7 @@ package main
 import (
 	"context"
 	"lims_adapter/handler"
+	"lims_adapter/handler/feedback"
 	"lims_adapter/handler/learning"
 	"lims_adapter/service/timers"
 	"net/http"
@@ -71,6 +72,8 @@ func main() {
 		new((learning.LearningTestpaper)), "")
 	s.RegisterName("LearningMaterialPublishRecord",
 		new((learning.LearningMaterialPublishRecord)), "")
+	s.RegisterName("Feedback",
+		new((feedback.Feedback)), "")
 
 	// 注册auth处理
 	s.AuthFunc = handleAuth

+ 8 - 8
model/feedback/feedback.go

@@ -2,7 +2,7 @@
 // This is auto-generated by gf cli tool. Fill this file as you wish.
 // ==========================================================================
 
-package model
+package feedback
 
 import (
 	"lims_adapter/model"
@@ -34,26 +34,26 @@ type FeedbackGetRsp struct {
 }
 
 type FeedbackAddReq struct {
-	Type    int    `json:"type" v:"required#请输入反馈类型"`    // 反馈类型
-	Content string `json:"content" v:"required#请输入反馈内容"` // 反馈内容
-	Mobile  string `json:"mobile" v:"required#请输入联系方式"`  // 联系方式
-	Email   string `json:"email" v:"required#请输入电子邮箱"`   // 邮箱
+	Type    int    `json:"type" v:"required#请输入反馈类型"`                   // 反馈类型
+	Content string `json:"content" v:"required#请输入反馈内容"`                // 反馈内容
+	Mobile  string `json:"mobile" v:"required|phone#请输入联系方式|请输入正确的手机号"` // 联系方式
+	Email   string `json:"email" v:"required|email#请输入电子邮箱|请输入正确的电子邮箱"` // 邮箱
 }
 
 type FeedbackTransReq struct {
-	Id     int    `json:"id"`                         // 反馈Id
+	Id     int    `json:"id" v:"required#请输入反馈 Id"`   // 反馈Id
 	UserId int    `json:"userId" v:"required#请输入转交人"` // 转交人 Id
 	Note   string `json:"note" v:"required#请输入转交原因"`  // 转交原因
 }
 
 type FeedbackProcessReq struct {
-	Id   int    `json:"id"`                        // 反馈Id
+	Id   int    `json:"id" v:"required#请输入反馈 Id"`  // 反馈Id
 	Type int    `json:"type" v:"required#请输入处理方式"` // 处理方式
 	Note string `json:"note" v:"required#请输入处理描述"` // 处理描述
 }
 
 type FeedbackReactivateReq struct {
-	Id   int    `json:"id"`                          // 反馈Id
+	Id   int    `json:"id" v:"required#请输入反馈 Id"`    // 反馈Id
 	Note string `json:"note" v:"required#请输入重新激活描述"` // 重新激活描述
 }
 

+ 1 - 1
model/feedback/feedback_flow.go

@@ -2,7 +2,7 @@
 // This is auto-generated by gf cli tool. Fill this file as you wish.
 // ==========================================================================
 
-package model
+package feedback
 
 import (
 	"lims_adapter/model/feedback/internal"

+ 1 - 1
model/feedback/feedback_result.go

@@ -2,7 +2,7 @@
 // This is auto-generated by gf cli tool. Fill this file as you wish.
 // ==========================================================================
 
-package model
+package feedback
 
 import (
 	"lims_adapter/model/feedback/internal"

+ 1 - 1
model/feedback/internal/feedback_flow.go

@@ -11,7 +11,7 @@ import (
 // FeedbackFlow is the golang structure for table feedback_flow.
 type FeedbackFlow struct {
 	Id            int         `orm:"Id,primary"    json:"id"`            // Id
-	FeebackId     int         `orm:"FeebackId"     json:"feebackId"`     // 反馈Id
+	FeedbackId    int         `orm:"FeedbackId"     json:"feebackId"`    // 反馈Id
 	Type          int         `orm:"Type"          json:"type"`          // 流程节点 1 发起 2 转交 3 处理 4 重新激活
 	Status        int         `orm:"Status"        json:"status"`        // 处理结果 1 成功
 	ProcessById   int         `orm:"ProcessById"   json:"processById"`   // 处理人 Id

+ 1 - 1
model/feedback/internal/feedback_result.go

@@ -11,7 +11,7 @@ import (
 // FeedbackResult is the golang structure for table feedback_result.
 type FeedbackResult struct {
 	Id            int         `orm:"Id,primary"    json:"id"`            // Id
-	FeebackId     int         `orm:"FeebackId"     json:"feebackId"`     // 反馈Id
+	FeedbackId    int         `orm:"FeedbackId"     json:"feebackId"`    // 反馈Id
 	ProcessById   int         `orm:"ProcessById"   json:"processById"`   // 处理人 Id
 	ProcessByName string      `orm:"ProcessByName" json:"processByName"` // 处理人名称
 	ProcessType   int         `orm:"ProcessType"   json:"processType"`   // 处理方式

+ 42 - 26
service/feedback/feedback.go

@@ -5,8 +5,7 @@ import (
 	"database/sql"
 	"fmt"
 	dao "lims_adapter/dao/feedback"
-	"lims_adapter/model"
-	feedback "lims_adapter/model/feedback"
+	"lims_adapter/model/feedback"
 
 	"dashoo.cn/common_definition/admin/permission_def"
 	"dashoo.cn/micro_libary/micro_srv"
@@ -53,11 +52,11 @@ func (s FeedbackService) Get(ctx context.Context, req *feedback.FeedbackGetReq)
 	if f == nil {
 		return nil, myerrors.NewMsgError(nil, "反馈不存在")
 	}
-	flow, err := s.DaoFlow.Where("FeebackId = ?", f.Id).All()
+	flow, err := s.DaoFlow.Where("FeedbackId = ?", f.Id).All()
 	if err != nil {
 		return nil, err
 	}
-	result, err := s.DaoResult.Where("FeebackId = ?", f.Id).All()
+	result, err := s.DaoResult.Where("FeedbackId = ?", f.Id).All()
 	if err != nil {
 		return nil, err
 	}
@@ -117,18 +116,18 @@ type organize struct {
 	FullName string
 }
 
-func (s FeedbackService) Add(ctx context.Context, req *feedback.FeedbackAddReq) error {
+func (s FeedbackService) Add(ctx context.Context, req *feedback.FeedbackAddReq) (int, error) {
 	validErr := gvalid.CheckStruct(ctx, req, nil)
 	if validErr != nil {
-		return myerrors.NewMsgError(nil, validErr.Current().Error())
+		return 0, myerrors.NewMsgError(nil, validErr.Current().Error())
 	}
 	dept := &organize{}
 	err := s.Dao.DB.Table("base_organize").Where("Id", s.userInfo.DeptId).Struct(dept)
 	if err == sql.ErrNoRows {
-		return myerrors.NewMsgError(err, fmt.Sprintf("部门不存在 %s", s.userInfo.DeptId))
+		return 0, myerrors.NewMsgError(err, fmt.Sprintf("部门不存在 %s", s.userInfo.DeptId))
 	}
 	if err != nil {
-		return err
+		return 0, err
 	}
 
 	id, err := s.Dao.InsertAndGetId(feedback.Feedback{
@@ -146,11 +145,11 @@ func (s FeedbackService) Add(ctx context.Context, req *feedback.FeedbackAddReq)
 		UpdatedAt:          gtime.New(),
 	})
 	if err != nil {
-		return err
+		return 0, err
 	}
 
 	_, err = s.DaoFlow.Insert(feedback.FeedbackFlow{
-		FeebackId:     int(id),
+		FeedbackId:    int(id),
 		Type:          1,
 		Status:        1,
 		ProcessById:   int(s.userInfo.Id),
@@ -159,7 +158,7 @@ func (s FeedbackService) Add(ctx context.Context, req *feedback.FeedbackAddReq)
 		CreatedAt:     gtime.New(),
 		UpdatedAt:     gtime.New(),
 	})
-	return err
+	return int(id), err
 }
 
 func (s FeedbackService) Trans(ctx context.Context, req *feedback.FeedbackTransReq) error {
@@ -188,7 +187,7 @@ func (s FeedbackService) Trans(ctx context.Context, req *feedback.FeedbackTransR
 		return err
 	}
 	_, err = s.DaoFlow.Insert(feedback.FeedbackFlow{
-		FeebackId:     req.Id,
+		FeedbackId:    req.Id,
 		Type:          2,
 		Status:        1,
 		ProcessById:   int(s.userInfo.Id),
@@ -218,7 +217,7 @@ func (s FeedbackService) Process(ctx context.Context, req *feedback.FeedbackProc
 		return err
 	}
 	_, err = s.DaoFlow.Insert(feedback.FeedbackFlow{
-		FeebackId:     req.Id,
+		FeedbackId:    req.Id,
 		Type:          3,
 		Status:        1,
 		ProcessById:   int(s.userInfo.Id),
@@ -227,6 +226,18 @@ func (s FeedbackService) Process(ctx context.Context, req *feedback.FeedbackProc
 		CreatedAt:     gtime.New(),
 		UpdatedAt:     gtime.New(),
 	})
+	if err != nil {
+		return err
+	}
+	_, err = s.DaoResult.Insert(feedback.FeedbackResult{
+		FeedbackId:    req.Id,
+		ProcessById:   int(s.userInfo.Id),
+		ProcessByName: s.userInfo.RealName,
+		ProcessType:   req.Type,
+		ProcessNote:   req.Note,
+		CreatedAt:     gtime.New(),
+		UpdatedAt:     gtime.New(),
+	})
 	return err
 }
 
@@ -252,7 +263,7 @@ func (s FeedbackService) Reactivate(ctx context.Context, req *feedback.FeedbackR
 		return err
 	}
 	_, err = s.DaoFlow.Insert(feedback.FeedbackFlow{
-		FeebackId:     req.Id,
+		FeedbackId:    req.Id,
 		Type:          4,
 		Status:        1,
 		ProcessById:   int(s.userInfo.Id),
@@ -268,7 +279,8 @@ type id struct {
 	Id int
 }
 
-func (s FeedbackService) Processor(ctx context.Context, req *model.EmptyArgs) ([]feedback.FeedbackProcessorRsp, error) {
+func (s FeedbackService) Processor(ctx context.Context) ([]feedback.FeedbackProcessorRsp, error) {
+	rsp := []feedback.FeedbackProcessorRsp{}
 	menu := &id{}
 	err := s.Dao.DB.Table("base_menu").
 		Where("Permission = ?", PermissionFeeedbackProcess).
@@ -283,28 +295,32 @@ func (s FeedbackService) Processor(ctx context.Context, req *model.EmptyArgs) ([
 
 	roles := []id{}
 	err = s.Dao.DB.Table("base_role_menu").
-		Where("MenuIds LIKE ?", fmt.Sprintf("%%%d%%", menu.Id)).
-		Fields("Id").Structs(&roles)
+		Where("find_in_set(?, `MenuIds`)", menu.Id).
+		Fields("RoleId as Id").Structs(&roles)
 	if err == sql.ErrNoRows {
-		return nil, nil
+		return rsp, nil
 	}
 	if err != nil {
 		return nil, err
 	}
 	if len(roles) == 0 {
-		return nil, nil
+		return rsp, nil
 	}
 
-	rsp := []feedback.FeedbackProcessorRsp{}
-	dao := s.Dao.DB.Table("base_user_role a").LeftJoin("base_user b", "a.UserId=b.Id")
-	for _, r := range roles {
-		dao.Or("find_in_set(?, `a.RoleIds`)", r.Id)
+	dao := s.Dao.DB.Table("base_user a").LeftJoin("base_user_role b", "b.UserId=a.Id")
+	orsql := ""
+	for i, r := range roles {
+		if i != 0 {
+			orsql += " OR "
+		}
+		orsql += fmt.Sprintf("find_in_set(%d, `RoleIds`)", r.Id)
 	}
-	err = dao.Fields("b.Id, b.Realname").Structs(&rsp)
+	dao = dao.Where("a.Enabled = 1").Where(fmt.Sprintf("(%s)", orsql))
+	err = dao.Fields("a.Id, a.Realname").Structs(&rsp)
 	if err == sql.ErrNoRows {
-		return nil, nil
+		return rsp, nil
 	}
-	return rsp, nil
+	return rsp, err
 }
 
 func Allow(tenant, uuid, permission string) (bool, error) {

+ 2 - 2
sql/feedback.sql

@@ -19,7 +19,7 @@ CREATE TABLE `feedback` (
 
 CREATE TABLE `feedback_flow` (
   `Id` int NOT NULL AUTO_INCREMENT COMMENT 'Id',
-  `FeebackId` int NOT NULL COMMENT '反馈Id',
+  `FeedbackId` int NOT NULL COMMENT '反馈Id',
   `Type` int NOT NULL COMMENT '流程节点 1 发起 2 转交 3 处理 4 重新激活',
   `Status` int NOT NULL COMMENT '处理结果 1 成功',
   `ProcessById` int NOT NULL COMMENT '处理人 Id',
@@ -33,7 +33,7 @@ CREATE TABLE `feedback_flow` (
 
 CREATE TABLE `feedback_result` (
   `Id` int NOT NULL AUTO_INCREMENT COMMENT 'Id',
-  `FeebackId` int NOT NULL COMMENT '反馈Id',
+  `FeedbackId` int NOT NULL COMMENT '反馈Id',
   `ProcessById` int NOT NULL COMMENT '处理人 Id',
   `ProcessByName` varchar(255) NOT NULL COMMENT '处理人名称',
   `ProcessType` int COMMENT '处理方式',

+ 2 - 2
sql/repair.sql

@@ -19,7 +19,7 @@ CREATE TABLE `repair` (
 
 CREATE TABLE `repair_flow` (
   `Id` int NOT NULL AUTO_INCREMENT COMMENT 'Id',
-  `FeebackId` int NOT NULL COMMENT '报修Id',
+  `RepairId` int NOT NULL COMMENT '报修Id',
   `Type` int NOT NULL COMMENT '流程节点 1 发起 2 转交 3 处理 4 重新激活',
   `Status` int NOT NULL COMMENT '处理结果 1 成功',
   `ProcessById` int NOT NULL COMMENT '处理人 Id',
@@ -33,7 +33,7 @@ CREATE TABLE `repair_flow` (
 
 CREATE TABLE `repair_result` (
   `Id` int NOT NULL AUTO_INCREMENT COMMENT 'Id',
-  `FeebackId` int NOT NULL COMMENT '反馈Id',
+  `RepairId` int NOT NULL COMMENT '报修Id',
   `ProcessById` int NOT NULL COMMENT '处理人 Id',
   `ProcessByName` varchar(255) NOT NULL COMMENT '处理人名称',
   `ProcessType` int COMMENT '处理方式',

+ 294 - 1
swaggerui/swagger.yml

@@ -1,6 +1,6 @@
 openapi: 3.0.0
 info:
-    title: learning
+    title: lims
     description: 培训考试
     version: 0.0.1
 
@@ -830,6 +830,181 @@ paths:
                   success:
                     $ref: "#/components/examples/success"
 
+    /Feedback.List:
+      post:
+        tags:
+          - 反馈
+        operationId: FeedbackList
+        summary: 查询反馈
+        requestBody:
+          required: true
+          content:
+            application/json:
+              schema:
+                oneOf:
+                  - $ref: '#/components/schemas/FeedbackList'
+              examples:
+                FeedbackList:
+                  $ref: '#/components/examples/FeedbackList'
+        responses:
+          200:
+            description: 请求成功
+            content:
+              application/json:
+                examples:
+                  success:
+                    $ref: "#/components/examples/success"
+
+    /Feedback.Add:
+      post:
+        tags:
+          - 反馈
+        operationId: FeedbackAdd
+        summary: 新增反馈
+        requestBody:
+          required: true
+          content:
+            application/json:
+              schema:
+                oneOf:
+                  - $ref: '#/components/schemas/FeedbackAdd'
+              examples:
+                FeedbackAdd:
+                  $ref: '#/components/examples/FeedbackAdd'
+        responses:
+          200:
+            description: 请求成功
+            content:
+              application/json:
+                examples:
+                  success:
+                    $ref: "#/components/examples/success"
+
+    /Feedback.Get:
+      post:
+        tags:
+          - 反馈
+        operationId: FeedbackGet
+        summary: 反馈详情
+        requestBody:
+          required: true
+          content:
+            application/json:
+              schema:
+                oneOf:
+                  - $ref: '#/components/schemas/IdReq'
+              examples:
+                FeedbackGet:
+                  $ref: '#/components/examples/FeedbackGet'
+        responses:
+          200:
+            description: 请求成功
+            content:
+              application/json:
+                examples:
+                  success:
+                    $ref: "#/components/examples/success"
+
+    /Feedback.Trans:
+      post:
+        tags:
+          - 反馈
+        operationId: FeedbackTrans
+        summary: 转交
+        requestBody:
+          required: true
+          content:
+            application/json:
+              schema:
+                oneOf:
+                  - $ref: '#/components/schemas/FeedbackTrans'
+              examples:
+                FeedbackTrans:
+                  $ref: '#/components/examples/FeedbackTrans'
+        responses:
+          200:
+            description: 请求成功
+            content:
+              application/json:
+                examples:
+                  success:
+                    $ref: "#/components/examples/success"
+
+    /Feedback.Process:
+      post:
+        tags:
+          - 反馈
+        operationId: FeedbackProcess
+        summary: 处理
+        requestBody:
+          required: true
+          content:
+            application/json:
+              schema:
+                oneOf:
+                  - $ref: '#/components/schemas/FeedbackProcess'
+              examples:
+                FeedbackProcess:
+                  $ref: '#/components/examples/FeedbackProcess'
+        responses:
+          200:
+            description: 请求成功
+            content:
+              application/json:
+                examples:
+                  success:
+                    $ref: "#/components/examples/success"
+
+    /Feedback.Reactivate:
+      post:
+        tags:
+          - 反馈
+        operationId: FeedbackReactivate
+        summary: 重新激活
+        requestBody:
+          required: true
+          content:
+            application/json:
+              schema:
+                oneOf:
+                  - $ref: '#/components/schemas/FeedbackReactivate'
+              examples:
+                FeedbackReactivate:
+                  $ref: '#/components/examples/FeedbackReactivate'
+        responses:
+          200:
+            description: 请求成功
+            content:
+              application/json:
+                examples:
+                  success:
+                    $ref: "#/components/examples/success"
+
+    /Feedback.Processor:
+      post:
+        tags:
+          - 反馈
+        operationId: FeedbackProcessor
+        summary: 获取具有处理反馈权限的用户
+        requestBody:
+          required: true
+          content:
+            application/json:
+              schema:
+                oneOf:
+                  - $ref: '#/components/schemas/NoArgs'
+              examples:
+                FeedbackProcessor:
+                  $ref: '#/components/examples/NoArgs'
+        responses:
+          200:
+            description: 请求成功
+            content:
+              application/json:
+                examples:
+                  success:
+                    $ref: "#/components/examples/success"
+
 
 # 添加这个 swagger ui 会显示授权按钮
 security:
@@ -1479,6 +1654,98 @@ components:
         enable:
           type: integer
           description: 是否启用 0 未启用 1 启用
+    FeedbackList:
+      type: object
+      properties:
+        page:
+          type: object
+          description: 分页信息,不传默认不分页,返回所有数据
+          properties:
+            current:
+              type: integer
+              description: 当前页面
+            size:
+              type: integer
+              description: 每页条数
+        enable:
+          type: integer
+          description: 是否启用 0 未启用 1 启用
+        status:
+          type: integer
+          description: 反馈状态 1 未处理 2 已处理
+        createdByName:
+          type: string
+          description: 创建者用户名
+        createdAtStart:
+          type: string
+          description: 创建时间
+        createdAtEnd:
+          type: string
+          description: 创建时间
+    FeedbackAdd:
+      type: object
+      required:
+        - type
+        - content
+        - mobile
+        - email
+      properties:
+        type:
+          type: integer
+          description: 反馈类型
+        content:
+          type: string
+          description: 反馈内容
+        mobile:
+          type: string
+          description: 联系方式
+        email:
+          type: string
+          description: 邮箱
+    FeedbackTrans:
+      type: object
+      required:
+        - id
+        - userId
+        - note
+      properties:
+        id:
+          type: integer
+          description: 反馈 id
+        userId:
+          type: integer
+          description: 转交对象
+        note:
+          type: string
+          description: 描述
+    FeedbackProcess:
+      type: object
+      required:
+        - id
+        - type
+        - note
+      properties:
+        id:
+          type: integer
+          description: 反馈 id
+        type:
+          type: integer
+          description: 处理方式
+        note:
+          type: string
+          description: 描述
+    FeedbackReactivate:
+      type: object
+      required:
+        - id
+        - note
+      properties:
+        id:
+          type: integer
+          description: 反馈 id
+        note:
+          type: string
+          description: 描述
 
   examples:
     success:
@@ -1688,3 +1955,29 @@ components:
       value:
         skillId: 5
         excelUrl: http://192.168.0.252:9390/9,21086966c07b68
+    FeedbackList:
+      value:
+        createdAtStart: "2022-04-29 11:00:00"
+    FeedbackGet:
+      value:
+        id: 2
+    FeedbackAdd:
+      value:
+        type: 1
+        content: 测试
+        mobile: "18001156784"
+        email: "123@123.com"
+    FeedbackTrans:
+      value:
+        id: 2
+        userId: 1
+        note: 测试转交
+    FeedbackProcess:
+      value:
+        id: 2
+        type: 1
+        note: 测试处理
+    FeedbackReactivate:
+      value:
+        id: 2
+        note: 测试重新激活