caipin 4 年之前
父節點
當前提交
0812abde2b

+ 1 - 1
dao/project_dao.go

@@ -71,7 +71,7 @@ func (d *ProjectDao) GetListByCode(code string) []models.CmProject {
 	datalist := make([]models.CmProject, 0)
 
 	err := d.engine.
-		Where("code like ?", code+"%").
+		Where("code = ?", code+"%").
 		Desc("id").
 		Find(&datalist)
 	if err != nil {

+ 5 - 3
dao/tree_dao.go

@@ -256,7 +256,8 @@ func (d *TreeDao) Move(treeNode *models.CmTree, moveFolder *models.CmTree) error
 		movrAttribution, serial, difference, treeNode.Id)
 	if err != nil {
 		session.Rollback()
-		return errors.New("移动目录或标段出错")
+		log.Println("移动目录或标段1, error=", err)
+		return errors.New("移动目录或标段出错1")
 	}
 
 	//
@@ -265,11 +266,12 @@ func (d *TreeDao) Move(treeNode *models.CmTree, moveFolder *models.CmTree) error
 	movrAttribution = fmt.Sprintf("%s%d-", movrAttribution, serial)
 	//`attribution` = replace(`attribution`, '"+attribution+"', '"+movrAttribution+"')
 	_, err = session.Exec("UPDATE  cm_tree SET  "+
-		",`depth` =`depth` - ? where attribution like ? and project_id=? and isdelete=0", difference, attribution+"%", treeNode.ProjectId)
+		"`depth` =`depth` - ? where attribution like ? and project_id=? and isdelete=0", difference, attribution+"%", treeNode.ProjectId)
 	//_, err = session.Exec("UPDATE from cm_tree SET `attribution` = replace(`attribution`, ?, ?) where attribution like ?", attribution,movrAttribution,attribution+"%")
 	if err != nil {
 		session.Rollback()
-		return errors.New("移动目录或标段出错")
+		log.Println("移动目录或标段2, error=", err)
+		return errors.New("移动目录或标段出错2")
 	}
 	// 6-目录孩子们的归属设置
 	err = d.replaceContractAttribution(session, attribution, movrAttribution, treeNode.ProjectId)

+ 30 - 26
models/cm_project.go

@@ -5,30 +5,34 @@ 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)"`
-	CategoryId   string    `xorm:"comment('办事处ID') VARCHAR(64)"`
-	Category     string    `xorm:"comment('办事处') VARCHAR(32)"`
-	StaffId      string    `xorm:"comment('负责人Id(cld员工)') VARCHAR(64)"`
-	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)"`
+	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       string    `xorm:"comment('办事处ID') VARCHAR(64)"`
+	Category         string    `xorm:"comment('办事处') VARCHAR(32)"`
+	StaffId          string    `xorm:"comment('负责人Id(cld员工)') VARCHAR(64)"`
+	StaffName        string    `xorm:"comment('负责人(cld员工)') VARCHAR(32)"`
+	CreateTime       time.Time `xorm:"comment('创建时间') DATETIME"`
+	CreateName       string    `xorm:"comment('创建人') VARCHAR(32)"`
+	CreateCategory   string    `xorm:"comment('创建办事处') VARCHAR(32)"`
+	InsideCategoryid string    `xorm:"comment('项目所在办事处Id') VARCHAR(32)"`
+	InsideCategory   string    `xorm:"comment('项目所在办事处') VARCHAR(32)"`
+	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)"`
 }

+ 20 - 3
services/backstage_service.go

@@ -25,6 +25,7 @@ type BackstageService interface {
 	ValidCldStaff(loginData viewmodels.StaffCld, writer http.ResponseWriter) (*viewmodels.ResultCld, error)
 	ValidRuleProject(ctx iris.Context) (viewmodels.Project, error)
 	ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error)
+	ValidRuleProjectSave(ctx iris.Context) (viewmodels.Project, error)
 	GetCldByCategoryId(categoryId string) (map[string]interface{}, error)
 	Out(ctx iris.Context) error
 }
@@ -80,7 +81,7 @@ func (s *backstageService) ValidRuleProject(ctx iris.Context) (viewmodels.Projec
 // 验证项目
 func (s *backstageService) ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error) {
 	projectVaild := viewmodels.Project{}
-	err := ctx.ReadForm(&projectVaild)
+	err := ctx.ReadJSON(&projectVaild)
 	if err != nil {
 		log.Println("ReadForm转换异常, error=", err)
 		return projectVaild, err
@@ -88,7 +89,23 @@ func (s *backstageService) ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Pro
 
 	err = projectVaild.ValidateAdd()
 	if err != nil {
-		log.Println("登录验证, error=", err)
+		log.Println("添加项目验证, error=", err)
+		return projectVaild, err
+	}
+	return projectVaild, nil
+}
+
+func (s *backstageService) ValidRuleProjectSave(ctx iris.Context) (viewmodels.Project, error) {
+	projectVaild := viewmodels.Project{}
+	err := ctx.ReadJSON(&projectVaild)
+	if err != nil {
+		log.Println("ReadForm转换异常, error=", err)
+		return projectVaild, err
+	}
+
+	err = projectVaild.ValidateSave()
+	if err != nil {
+		log.Println("添加项目验证, error=", err)
 		return projectVaild, err
 	}
 	return projectVaild, nil
@@ -114,7 +131,7 @@ func (s *backstageService) ValidCldStaff(loginData viewmodels.StaffCld, writer h
 		return nil, err
 	}
 	// 加密项目标识
-	category, err := comm.AesEncrypt(result.Data.UserName, conf.CookieSecret)
+	category, err := comm.AesEncrypt(result.Data.Category, conf.CookieSecret)
 	if err != nil {
 		return nil, err
 	}

+ 1 - 0
services/project_account_service.go

@@ -287,6 +287,7 @@ func (s *projectAccountService) Add(viewAccount viewmodels.ProjectAccount, proje
 	account.Mobile = viewAccount.Mobile
 	account.Telephone = viewAccount.Telephone
 	account.AccountGroup = viewAccount.AccountGroup
+	account.Enable = 1
 	account.CreateTime = time.Now()
 	err := s.dao.Add(&account)
 	return err

+ 6 - 5
services/project_service.go

@@ -32,7 +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 string, staffId string) error
+	Add(projectVM viewmodels.Project) error
 }
 
 //返回service操作类
@@ -152,19 +152,20 @@ func (s *projectService) Save(id int, projectVM viewmodels.Project) error {
 }
 
 // 新增项目
-func (s *projectService) Add(projectVM viewmodels.Project, categoryId string, staffId string) error {
+func (s *projectService) Add(projectVM viewmodels.Project) error {
 	project := &models.CmProject{}
 	project.Name = projectVM.Name
 	project.Code = projectVM.Code
-	project.CategoryId = categoryId
+	project.CategoryId = projectVM.CategoryId
 	project.Category = projectVM.Category
-	project.StaffId = staffId
+	project.StaffId = projectVM.StaffId
 	project.StaffName = projectVM.StaffName
 	project.CreateTime = time.Now()
+	project.CreateName = projectVM.CreateName
+	project.CreateCategory = projectVM.CreateCategory
 	project.Remark = projectVM.Remark
 
 	err := s.dao.Add(project)
-
 	return err
 }
 

+ 52 - 13
web/backstage/project_bs.go

@@ -163,7 +163,7 @@ func (c *ProjectBs) GetCld() {
 // @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]
+// @Router /backstage/project/add [post]
 func (c *ProjectBs) PostAdd() {
 
 	projectData, err := c.ServiceBackstage.ValidRuleProjectAdd(c.Ctx)
@@ -173,19 +173,21 @@ func (c *ProjectBs) PostAdd() {
 		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
-	// }
-
+	// 获得用户名称和办事处
+	staffName, err := utils.GetBackstageKey(c.Ctx, "StaffName")
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	category, err := utils.GetBackstageKey(c.Ctx, "Category")
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	projectData.CreateName = staffName
+	projectData.CreateCategory = category
 	// 新增项目信息
-	err = c.ServiceProject.Add(projectData, projectData.CategoryId, projectData.StaffId)
+	err = c.ServiceProject.Add(projectData)
 	if err != nil {
 		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
 		return
@@ -196,3 +198,40 @@ func (c *ProjectBs) PostAdd() {
 		"msg":  "新增成功",
 	})
 }
+
+// @Summary 后台-编辑项目
+// @Tags 后台 - 项目
+// @Accept  json
+// @Produce  json
+// @Param   id     body    string     true        "项目ID"
+// @Param   name     body    string     true        "项目名称"
+// @Param   insideCategoryId     body    string     true        "所在办事处Id"
+// @Param   insideCategory     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/save [post]
+func (c *ProjectBs) PostSave() {
+	// projectData, err := c.ServiceBackstage.ValidRuleProjectSave(c.Ctx)
+	// if err != nil {
+	// 	ErrMsg := utils.FormValidError(err)
+	// 	c.Ctx.JSON(iris.Map{"code": -1, "msg": ErrMsg})
+	// 	return
+	// }
+
+	// 新增项目信息
+	// err = c.ServiceProject.SaveBs(projectData, projectData.CategoryId, projectData.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":  "新增成功",
+	// })
+}

+ 1 - 0
web/routes/routes.go

@@ -203,5 +203,6 @@ func Configure(b *bootstrap.Bootstrapper) {
 	backstageProjectCM := mvc.New(b.Party("/backstage/project"))
 	backstageProjectCM.Register(ProjectService)
 	backstageProjectCM.Register(backstageService)
+	backstageProjectCM.Router.Use(middleware.SessionsBackstageAuth)
 	backstageProjectCM.Handle(new(backstage.ProjectBs))
 }

+ 11 - 0
web/utils/utils.go

@@ -40,6 +40,17 @@ func StringToMap(str string, split string) map[string]string {
 }
 
 // 获得项目ID
+func GetBackstageKey(ctx iris.Context, key string) (string, error) {
+	//account := ctx.Values().Get("account").(*models.CmProjectAccount)
+	// fmt.Println(account)
+	value := ctx.Values().GetString(key)
+	if value == "" {
+		return "", errors.New("项目不存在")
+	}
+	return value, nil
+}
+
+// 获得项目ID
 func GetProjectId(ctx iris.Context) (int, error) {
 	//account := ctx.Values().Get("account").(*models.CmProjectAccount)
 	// fmt.Println(account)

+ 30 - 12
web/viewmodels/project.go

@@ -13,17 +13,21 @@ import (
 )
 
 type Project struct {
-	Id          string `form:"id" json:"id"`
-	Code        string `form:"code" json:"code"`
-	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"`
+	Id               string `form:"id" json:"id"`
+	Code             string `form:"code" json:"code"`
+	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"`
+	CreateName       string `form:"createName" json:"createName"`
+	CreateCategory   string `form:"createCategory" json:"createCategory"`
+	InsideCategoryId string `form:"insideCategoryId" json:"insideCategoryId"`
+	InsideCategory   string `form:"insideCategory" json:"insideCategory"`
+	Remark           string `form:"remark" json:"remark"`
 }
 type ProjectInfo struct {
 	ProjectName string `from:"project_name" json:"projectName"`
@@ -54,7 +58,6 @@ 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("办事处不能为空")),
@@ -64,6 +67,21 @@ func (l Project) ValidateAdd() error {
 	)
 }
 
+func (l Project) ValidateSave() error {
+	return validation.ValidateStruct(&l,
+		validation.Field(&l.Id, validation.Required.Error("项目ID不能为空")),
+		validation.Field(&l.Name, validation.Required.Error("项目名称不能为空")),
+
+		validation.Field(&l.InsideCategoryId, validation.Required.Error("所在办事处ID不能为空")),
+		validation.Field(&l.InsideCategory, 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倍