caipin 4 gadi atpakaļ
vecāks
revīzija
96a91a423a

+ 6 - 0
dao/project_dao.go

@@ -81,6 +81,12 @@ func (d *ProjectDao) GetListByCode(code string) []models.CmProject {
 	}
 }
 
+// 新增
+func (d *ProjectDao) Add(data *models.CmProject) error {
+	_, err := d.engine.Insert(data)
+	return err
+}
+
 //更新
 func (d *ProjectDao) Update(data *models.CmProject, columns []string) error {
 	//_, err := d.engine.Id(data.Id).MustCols(columns...).Update(data)

+ 26 - 28
models/cm_project.go

@@ -5,32 +5,30 @@ import (
 )
 
 type CmProject struct {
-	Id            int       `xorm:"not null pk comment('自增ID') INT(11)"`
-	Code          string    `xorm:"comment('项目编号') VARCHAR(32)"`
-	EnterpriseId  int       `xorm:"comment('企业id') INT(11)"`
-	UserId        int       `xorm:"comment('管理员id(sso用户)') INT(11)"`
-	UserAccount   string    `xorm:"comment('管理员名字(sso用户名)') VARCHAR(32)"`
-	Category      string    `xorm:"comment('办事处') VARCHAR(32)"`
-	StaffName     string    `xorm:"comment('负责任(cld员工)') VARCHAR(32)"`
-	CreateTime    time.Time `xorm:"comment('创建时间') DATETIME"`
-	MaxUser       int       `xorm:"comment('最大创建用户数(删除)') TINYINT(4)"`
-	Name          string    `xorm:"comment('项目名称') VARCHAR(128)"`
-	Creator       int64     `xorm:"comment('创建者') BIGINT(20)"`
-	Status        int       `xorm:"comment('项目状态') TINYINT(1)"`
-	Remark        string    `xorm:"comment('备注') VARCHAR(128)"`
-	ManagerId     int       `xorm:"comment('销售负责人') INT(11)"`
-	ManagerOffice int       `xorm:"comment('负责人办事处') TINYINT(4)"`
-	Office        int       `xorm:"comment('办事处id(项目所属)') TINYINT(4)"`
-	OfficeShare   string    `xorm:"comment('办事处共享(office id列表') VARCHAR(1024)"`
-	BillId        string    `xorm:"comment('工程量清单id列表') VARCHAR(128)"`
-	ChapterId     string    `xorm:"comment('项目节清单id列表') VARCHAR(128)"`
-	StandardId    int       `xorm:"comment('标准清单id') TINYINT(4)"`
-	Valuation     string    `xorm:"comment('清单规范id列表(删除)') VARCHAR(128)"`
-	QrcodeJson    string    `xorm:"comment('项目二维码信息') TEXT"`
-	DealpayJson   string    `xorm:"TEXT"`
-	Custom        int       `xorm:"comment('是否是定制项目') TINYINT(1)"`
-	CanApi        int       `xorm:"comment('定制项目接口是否可用') TINYINT(1)"`
-	Secret        string    `xorm:"comment('定制项目私钥') VARCHAR(255)"`
-	PageShow      string    `xorm:"comment('前台页面或功能展示与隐藏') VARCHAR(3072)"`
-	PagePath      string    `xorm:"VARCHAR(11)"`
+	Id           int       `xorm:"not null pk comment('自增ID') INT(11)"`
+	Code         string    `xorm:"comment('项目编号') VARCHAR(32)"`
+	EnterpriseId int       `xorm:"comment('企业id') INT(11)"`
+	UserId       int       `xorm:"comment('管理员id(sso用户)') INT(11)"`
+	UserAccount  string    `xorm:"comment('管理员名字(sso用户名)') VARCHAR(32)"`
+	CategoryId   int       `xorm:"comment('办事处ID') INT(11)"`
+	Category     string    `xorm:"comment('办事处') VARCHAR(32)"`
+	StaffId      int       `xorm:"comment('负责人Id(cld员工)') INT(11)"`
+	StaffName    string    `xorm:"comment('负责人(cld员工)') VARCHAR(32)"`
+	CreateTime   time.Time `xorm:"comment('创建时间') DATETIME"`
+	MaxUser      int       `xorm:"comment('最大创建用户数(删除)') TINYINT(4)"`
+	Name         string    `xorm:"comment('项目名称') VARCHAR(128)"`
+	Creator      int64     `xorm:"comment('创建者') BIGINT(20)"`
+	Status       int       `xorm:"comment('项目状态') TINYINT(1)"`
+	Remark       string    `xorm:"comment('备注') VARCHAR(128)"`
+	BillId       string    `xorm:"comment('工程量清单id列表') VARCHAR(128)"`
+	ChapterId    string    `xorm:"comment('项目节清单id列表') VARCHAR(128)"`
+	StandardId   int       `xorm:"comment('标准清单id') TINYINT(4)"`
+	Valuation    string    `xorm:"comment('清单规范id列表(删除)') VARCHAR(128)"`
+	QrcodeJson   string    `xorm:"comment('项目二维码信息') TEXT"`
+	DealpayJson  string    `xorm:"TEXT"`
+	Custom       int       `xorm:"comment('是否是定制项目') TINYINT(1)"`
+	CanApi       int       `xorm:"comment('定制项目接口是否可用') TINYINT(1)"`
+	Secret       string    `xorm:"comment('定制项目私钥') VARCHAR(255)"`
+	PageShow     string    `xorm:"comment('前台页面或功能展示与隐藏') VARCHAR(3072)"`
+	PagePath     string    `xorm:"VARCHAR(11)"`
 }

+ 22 - 0
services/backstage_service.go

@@ -24,6 +24,7 @@ type BackstageService interface {
 	ValidRuleLogin(ctx iris.Context) (viewmodels.StaffCld, error)
 	ValidCldStaff(loginData viewmodels.StaffCld, writer http.ResponseWriter) (*viewmodels.ResultCld, error)
 	ValidRuleProject(ctx iris.Context) (viewmodels.Project, error)
+	ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error)
 	Out(ctx iris.Context) error
 }
 
@@ -75,6 +76,23 @@ func (s *backstageService) ValidRuleProject(ctx iris.Context) (viewmodels.Projec
 	return projectVaild, nil
 }
 
+// 验证项目
+func (s *backstageService) ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error) {
+	projectVaild := viewmodels.Project{}
+	err := ctx.ReadForm(&projectVaild)
+	if err != nil {
+		log.Println("ReadForm转换异常, error=", err)
+		return projectVaild, err
+	}
+
+	err = projectVaild.ValidateAdd()
+	if err != nil {
+		log.Println("登录验证, error=", err)
+		return projectVaild, err
+	}
+	return projectVaild, nil
+}
+
 // 验证项目用户登陆相关
 func (s *backstageService) ValidCldStaff(loginData viewmodels.StaffCld, writer http.ResponseWriter) (*viewmodels.ResultCld, error) {
 
@@ -117,6 +135,10 @@ func (s *backstageService) ValidCldStaff(loginData viewmodels.StaffCld, writer h
 	}
 	http.SetCookie(writer, c)
 
+	// staffCld := &viewmodels.StaffCld{}
+	// staffCld.Category = result.Data.Category
+	// staffCld.StaffName = result.Data.UserName
+
 	return &result.Data, nil
 }
 

+ 19 - 0
services/project_service.go

@@ -11,6 +11,7 @@ import (
 	"html"
 	"log"
 	"strconv"
+	"time"
 
 	"github.com/kataras/iris/v12"
 	"go.mod/comm"
@@ -31,6 +32,7 @@ type ProjectService interface {
 	GetList(page int, size int) []viewmodels.Project
 	GetName(code string) []viewmodels.Project
 	Save(projectId int, projectVM viewmodels.Project) error
+	Add(projectVM viewmodels.Project, categoryId int, staffId int) error
 }
 
 //返回service操作类
@@ -149,6 +151,23 @@ func (s *projectService) Save(id int, projectVM viewmodels.Project) error {
 	return err
 }
 
+// 新增项目
+func (s *projectService) Add(projectVM viewmodels.Project, categoryId int, staffId int) error {
+	project := &models.CmProject{}
+	project.Name = projectVM.Name
+	project.Code = projectVM.Code
+	project.CategoryId = categoryId
+	project.Category = projectVM.Category
+	project.StaffId = staffId
+	project.StaffName = projectVM.StaffName
+	project.CreateTime = time.Now()
+	project.Remark = projectVM.Remark
+
+	err := s.dao.Add(project)
+
+	return err
+}
+
 // 构造视图层models
 func makeProjectVM(projectCM *models.CmProject) viewmodels.Project {
 	projectVM := viewmodels.Project{}

+ 81 - 0
web/backstage/project_bs.go

@@ -89,7 +89,41 @@ func (c *ProjectBs) Get() {
 		c.Ctx.JSON(iris.Map{"code": -1, "msg": ErrMsg})
 		return
 	}
+	// 获得项目ID
+	projectIdInt, err := utils.GetDecryptId(AccountData.Id)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	// 获得项目信息
+	ProjectData, err := c.ServiceProject.Get(projectIdInt)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	c.Ctx.JSON(iris.Map{
+		"code": 0,
+		"data": ProjectData,
+		"msg":  "",
+	})
+}
 
+// @Summary 后台-办事处列表和员工
+// @Tags 后台 - 项目
+// @Accept  json
+// @Produce  json
+// @Param   categoryId     body    int     true        "办事处ID"
+// @Success 200 {object} viewmodels.ProjectAccount "{code:0成功,data:viewmodels.ProjectAccount,msg:}"
+// @Failure 400 {string} string	"{code:-1参数类错误,msg:错误信息}"
+// @Router /backstage/cld [get]
+func (c *ProjectBs) GetCld() {
+
+	AccountData, err := c.ServiceBackstage.ValidRuleProject(c.Ctx)
+	if err != nil {
+		ErrMsg := utils.FormValidError(err)
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": ErrMsg})
+		return
+	}
 	// 获得项目ID
 	projectIdInt, err := utils.GetDecryptId(AccountData.Id)
 	if err != nil {
@@ -108,3 +142,50 @@ func (c *ProjectBs) Get() {
 		"msg":  "",
 	})
 }
+
+// @Summary 后台-新增项目
+// @Tags 后台 - 项目
+// @Accept  json
+// @Produce  json
+// @Param   code     body    string     true        "项目编号"
+// @Param   name     body    string     true        "项目名称"
+// @Param   categoryId     body    string     true        "办事处Id"
+// @Param   category     body    string     true        "办事处"
+// @Param   staffId     body    string     true        "负责人Id"
+// @Param   staffName     body    string     true        "负责人"
+// @Param   remark     body    string     true        "备注"
+// @Success 200 {object} viewmodels.ProjectAccount "{code:0成功,data:viewmodels.ProjectAccount,msg:}"
+// @Failure 400 {string} string	"{code:-1参数类错误,msg:错误信息}"
+// @Router /backstage/project [post]
+func (c *ProjectBs) PostAdd() {
+
+	projectData, err := c.ServiceBackstage.ValidRuleProjectAdd(c.Ctx)
+	if err != nil {
+		ErrMsg := utils.FormValidError(err)
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": ErrMsg})
+		return
+	}
+
+	categoryId, err := utils.GetDecryptId(projectData.CategoryId)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	staffId, err := utils.GetDecryptId(projectData.StaffId)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+
+	// 新增项目信息
+	err = c.ServiceProject.Add(projectData, categoryId, staffId)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	c.Ctx.JSON(iris.Map{
+		"code": 0,
+		"data": "",
+		"msg":  "新增成功",
+	})
+}

+ 8 - 4
web/viewmodels/backstage.go

@@ -12,11 +12,15 @@ import (
 
 // cld相关
 type StaffCld struct {
-	Id        string `from:"id" json:"id"`
-	StaffName string `from:"staffName" json:"staffName"`
-	Password  string `from:"password" json:"password"`
-	Category  string `from:"category" json:"category"`
+	Id         string `from:"id" json:"id"`
+	StaffId    string `from:"staffId" json:"staffId"`
+	StaffName  string `from:"staffName" json:"staffName"`
+	Password   string `from:"password" json:"password"`
+	CategoryId string `from:"categoryId" json:"categoryId"`
+	Category   string `from:"category" json:"category"`
 }
+
+// 接收CLD
 type ResultCld struct {
 	UserName string `from:"username" json:"username"`
 	Category string `from:"category" json:"category"`

+ 15 - 0
web/viewmodels/project.go

@@ -18,9 +18,12 @@ type Project struct {
 	Name        string `form:"name" json:"name"`
 	UserId      string `form:"userId" json:"userId"`
 	UserAccount string `form:"userAccount" json:"userAccount"`
+	CategoryId  string `form:"categoryId" json:"categoryId"`
 	Category    string `form:"category" json:"category"`
+	StaffId     string `form:"StaffId" json:"StaffId"`
 	StaffName   string `form:"staffName" json:"staffName"`
 	CreateTime  string `form:"createTime" json:"createTime"`
+	Remark      string `form:"remark" json:"remark"`
 }
 type ProjectInfo struct {
 	ProjectName string `from:"project_name" json:"projectName"`
@@ -49,6 +52,18 @@ func (l Project) ValidateId() error {
 	)
 }
 
+func (l Project) ValidateAdd() error {
+	return validation.ValidateStruct(&l,
+		// 字符的4倍
+		validation.Field(&l.Code, validation.Required.Error("项目编号不能为空")),
+		validation.Field(&l.Name, validation.Required.Error("项目名称不能为空")),
+		validation.Field(&l.Category, validation.Required.Error("办事处不能为空")),
+		validation.Field(&l.CategoryId, validation.Required.Error("办事处ID不能为空")),
+		validation.Field(&l.StaffName, validation.Required.Error("负责人不能为空")),
+		validation.Field(&l.StaffId, validation.Required.Error("负责人ID不能为空")),
+	)
+}
+
 func (l Project) Validate() error {
 	return validation.ValidateStruct(&l,
 		// 字符的4倍