Browse Source

同步品种数据

xyxie 11 months ago
parent
commit
a727b2daa2

+ 26 - 183
controller/crm/chart_permission.go

@@ -6,119 +6,18 @@ import (
 	"hongze/hz_crm_eta/controller/resp"
 	"hongze/hz_crm_eta/global"
 	"hongze/hz_crm_eta/models/crm"
-	"hongze/hz_crm_eta/models/request"
+	"hongze/hz_crm_eta/models/eta"
 	crmService "hongze/hz_crm_eta/services/crm"
 )
 
 type ChartPermissionController struct{}
 
-// GetChartPermission
-// @Description  获取品种列表
+// SyncClassifyChartPermission
+// @Description  同步分类权限
 // @Success 200 {string} string "操作成功"
-// @Router /crm/chart_permission/list [post]
-func (cp *ChartPermissionController) GetChartPermission(c *gin.Context) {
-	var req request.ChartPermissionReq
-	err := c.Bind(&req)
-	if err != nil {
-		errs, ok := err.(validator.ValidationErrors)
-		if !ok {
-			resp.FailData("参数解析失败", "Err:"+err.Error(), c)
-			return
-		}
-		resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
-		return
-	}
-
-	cond := ` 1=1`
-	pars := make([]interface{}, 0)
-
-	if req.ProductId > 0 {
-		cond += " and product_id = ?"
-		pars = append(pars, req.ProductId)
-	}
-	if req.ChartPermissionId > 0 {
-		cond += " and chart_permission_id = ?"
-		pars = append(pars, req.ChartPermissionId)
-	}
-	list, e := crmService.GetChartPermissionList(cond, pars)
-	if e != nil {
-		resp.FailData("查询失败", e.Error(), c)
-		return
-	}
-	data := request.ChartPermissionResp{List: list}
-	resp.OkData("操作成功", data, c)
-}
-
-// AddChartPermission
-// @Description  新增品种
-// @Success 200 {string} string "操作成功"
-// @Router /crm/chart_permission/add [post]
-func (cp *ChartPermissionController) AddChartPermission(c *gin.Context) {
-	var req crm.PermissionAddReq
-	err := c.Bind(&req)
-	if err != nil {
-		errs, ok := err.(validator.ValidationErrors)
-		if !ok {
-			resp.FailData("参数解析失败", "Err:"+err.Error(), c)
-			return
-		}
-		resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
-		return
-	}
-
-	if req.PermissionName == "" {
-		resp.Fail("请输入品种名称", c)
-		return
-	}
-	e, msg := crmService.AddChartPermission(req)
-	if e != nil {
-		resp.FailData(msg, e.Error(), c)
-		return
-	}
-	resp.Ok("操作成功", c)
-}
-
-// EditChartPermission
-// @Description  编辑品种
-// @Success 200 {string} string "操作成功"
-// @Router /crm/chart_permission/edit [post]
-func (cp *ChartPermissionController) EditChartPermission(c *gin.Context) {
-	var req crm.PermissionEditReq
-	err := c.Bind(&req)
-	if err != nil {
-		errs, ok := err.(validator.ValidationErrors)
-		if !ok {
-			resp.FailData("参数解析失败", "Err:"+err.Error(), c)
-			return
-		}
-		resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
-		return
-	}
-
-	if req.PermissionName == "" {
-		resp.Fail("请输入品种名称", c)
-		return
-	}
-
-	if req.ChartPermissionId <= 0 {
-		resp.Fail("请选择品种", c)
-		return
-	}
-
-	e, msg := crmService.EditChartPermission(req)
-	if e != nil {
-		resp.FailData(msg, e.Error(), c)
-		return
-	}
-	resp.Ok("操作成功", c)
-}
-
-// MoveChartPermission
-// @Description  移动品种
-// @Success 200 {string} string "操作成功"
-// @Router /crm/chart_permission/move [post]
-func (cp *ChartPermissionController) MoveChartPermission(c *gin.Context) {
-	var req crm.PermissionMoveReq
+// @Router /crm/chart_permission/classify/sync [post]
+func (cp *ChartPermissionController) SyncClassifyChartPermission(c *gin.Context) {
+	var req crm.ClassifyPermissionEditReq
 	err := c.Bind(&req)
 	if err != nil {
 		errs, ok := err.(validator.ValidationErrors)
@@ -130,82 +29,31 @@ func (cp *ChartPermissionController) MoveChartPermission(c *gin.Context) {
 		return
 	}
 
-	if req.ChartPermissionId <= 0 {
-		resp.Fail("请选择品种", c)
-		return
-	}
-
-	e, msg := crmService.MoveChartPermission(req)
-	if e != nil {
-		resp.FailData(msg, e.Error(), c)
-		return
-	}
-	resp.Ok("操作成功", c)
-}
-
-// GetClassifyChartPermission
-// @Description  获取报告分类绑定的品种
-// @Success 200 {string} string "查询成功"
-// @Router /crm/chart_permission/classify [post]
-func (cp *ChartPermissionController) GetClassifyChartPermission(c *gin.Context) {
-	var req crm.ClassifyPermissionReq
-	err := c.Bind(&req)
-	if err != nil {
-		errs, ok := err.(validator.ValidationErrors)
-		if !ok {
-			resp.FailData("参数解析失败", "Err:"+err.Error(), c)
-			return
-		}
-		resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
+	if req.Keyword == "" {
+		resp.Fail("分类名称不能为空", c)
 		return
 	}
-	ob := new(crm.ChartPermissionSearchKeyWordMapping)
-	list := make([]*crm.ChartPermissionSearchKeyWordMapping, 0)
 
-	if req.Keyword == "" {
-		list, err = ob.GetPermission()
-	} else {
-		list, err = ob.GetPermissionByKeyword(req.Keyword)
-	}
+	etaOb := new(eta.ChartPermissionSearchKeyWordMapping)
+	mappingList, err := etaOb.GetPermissionByKeyword(req.Keyword)
 	if err != nil {
 		resp.FailData("查询分类权限失败", err.Error(), c)
 		return
 	}
-	data := crm.ClassifyPermissionResp{List: list}
-	resp.OkData("查询成功", data, c)
-}
-
-// EditClassifyChartPermission
-// @Description  编辑分类权限
-// @Success 200 {string} string "操作成功"
-// @Router /crm/chart_permission/classify/edit [post]
-func (cp *ChartPermissionController) EditClassifyChartPermission(c *gin.Context) {
-	var req crm.ClassifyPermissionEditReq
-	err := c.Bind(&req)
-	if err != nil {
-		errs, ok := err.(validator.ValidationErrors)
-		if !ok {
-			resp.FailData("参数解析失败", "Err:"+err.Error(), c)
-			return
+	finalList := make([]*crm.ChartPermissionSearchKeyWordMapping, 0)
+	for _, v := range mappingList {
+		tmp := &crm.ChartPermissionSearchKeyWordMapping{
+			Id:                 v.Id,
+			ChartPermissionId:  v.ChartPermissionId,
+			KeyWord:            v.KeyWord,
+			From:               v.From,
+			TacticType:         v.TacticType,
+			TeleconferenceSort: v.TeleconferenceSort,
 		}
-		resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
-		return
-	}
-
-	if req.Keyword == "" {
-		resp.Fail("分类名称不能为空", c)
-		return
+		finalList = append(finalList, tmp)
 	}
-	if req.NewKeyword == "" {
-		resp.Fail("分类名称不能为空", c)
-		return
-	}
-	/*if len(req.ChartPermissionIdList) == 0 {
-		resp.Fail("请选择权限", c)
-		return
-	}*/
 	ob := new(crm.ChartPermissionSearchKeyWordMapping)
-	e := ob.EditChartPermissionSearchKeyWordMappingMulti(req.Keyword, req.NewKeyword, req.ChartPermissionIdList)
+	e := ob.EditChartPermissionSearchKeyWordMappingMulti(req.Keyword, finalList)
 	if e != nil {
 		resp.FailData("设置分类权限失败", e.Error(), c)
 		return
@@ -213,13 +61,13 @@ func (cp *ChartPermissionController) EditClassifyChartPermission(c *gin.Context)
 	resp.Ok("操作成功", c)
 }
 
-// SetEnabled
-// @Title 启用/禁用品种
+// Sync
+// @Title 同步chart_permission数据
 // @Description 启用/禁用品种
 // @Param	request	body crm.PermissionEnabledReq true "type json string"
 // @Success 200 新增成功
-// @router /crm/chart_permission/enabled/set [post]
-func (this *ChartPermissionController) SetEnabled(c *gin.Context) {
+// @router /crm/chart_permission/sync [post]
+func (this *ChartPermissionController) Sync(c *gin.Context) {
 	var req crm.PermissionEnabledReq
 	err := c.Bind(&req)
 	if err != nil {
@@ -232,12 +80,7 @@ func (this *ChartPermissionController) SetEnabled(c *gin.Context) {
 		return
 	}
 
-	if req.ChartPermissionId <= 0 {
-		resp.Fail("请选择品种", c)
-		return
-	}
-
-	e, msg := crmService.SetEnabledChartPermission(req)
+	e, msg := crmService.SyncChartPermission()
 	if e != nil {
 		resp.FailData(msg, e.Error(), c)
 		return

+ 4 - 94
models/crm/chart_permission.go

@@ -1,7 +1,6 @@
 package crm
 
 import (
-	"fmt"
 	"hongze/hz_crm_eta/global"
 	"time"
 )
@@ -55,103 +54,14 @@ func (c *ChartPermission) GetItemByCondition(condition string, pars []interface{
 	return
 }
 
-// Create 新增权限
-func (c *ChartPermission) Create() (err error) {
-	err = global.MYSQL["hz_crm"].Create(c).Error
+// UpdateOrCreate 更新或者创建权限
+func (c *ChartPermission) UpdateOrCreate() (err error) {
+	// 保存记录,如果不存在则创建,存在则更新
+	global.MYSQL["hz_crm"].Save(&c)
 	return
 }
 
-// Update 更新权限
-func (c *ChartPermission) Update(cols []string) (err error) {
-	err = global.MYSQL["hz_crm"].Model(c).Select(cols).Updates(c).Error
-	return
-}
-
-// SetIsPublic 更新公有私有权限
-func (c *ChartPermission) SetIsPublic(ids []int, parentId, isPublic int) (err error) {
-	err = global.MYSQL["hz_crm"].Model(c).Where("chart_permission_id in (?) and parent_id = ?", ids, parentId).Update("is_public", isPublic).Error
-	return
-}
-
-// UpdatesByParentId 更新启动禁用
-func (c *ChartPermission) UpdateClassifyNameByParentId(parentId int, classifyName string) (err error) {
-	//err = global.MYSQL["hz_crm"].Model(c).Where("parent_id = ?", parentId).Updates(map[string]interface{}{"enabled": enabled, "classify_name": classifyName}).Error
-	err = global.MYSQL["hz_crm"].Model(c).Where("parent_id = ?", parentId).Update("classify_name", classifyName).Error
-	return
-}
-
-// SetEnabledByParentId 更新启动禁用
-func (c *ChartPermission) SetEnabledByParentId(parentId, enabled int) (err error) {
-	err = global.MYSQL["hz_crm"].Model(c).Where("parent_id = ?", parentId).Update("enabled", enabled).Error
-	return
-}
-
-// SetEnabledByChartPermissionId 更新启动禁用
-func (c *ChartPermission) SetEnabledByChartPermissionId(chartPermissionId, enabled int) (err error) {
-	err = global.MYSQL["hz_crm"].Model(c).Where("chart_permission_id = ?", chartPermissionId).Update("enabled", enabled).Error
-	return
-}
-
-// Delete 删除权限
-func (c *ChartPermission) Delete() (err error) {
-	err = global.MYSQL["hz_crm"].Delete(c).Error
-	return
-}
-
-// GetMaxSort 获取最大的排序值
-func (c *ChartPermission) GetMaxSort() (maxSort int, err error) {
-	err = global.MYSQL["hz_crm"].Model(c).Select("max(sort)").Scan(&maxSort).Error
-	return
-}
-
-// GetMaxSortByParentId 获取最大的排序值
-func (c *ChartPermission) GetMaxSortByParentId(parentId int) (maxSort int, err error) {
-	err = global.MYSQL["hz_crm"].Model(c).Select("max(sort)").Where("parent_id = ?", parentId).Scan(&maxSort).Error
-	return
-}
-
-type PermissionAddReq struct {
-	PermissionName string `description:"品种权限名称"`
-	ParentId       int    `description:"父级ID"`
-	Enabled        int    `description:"是否可用 0禁用, 1启用"` //启用,禁用操作会关联二级品种
-	IsPublic       int    `description:"是否是公有权限1:公有权限,0私有权限"`
-	ProductId      int
-}
-
-type PermissionEditReq struct {
-	ChartPermissionId   int    `description:"品种权限Id"`
-	PermissionName      string `description:"品种权限名称"`
-	ParentId            int    `description:"父级ID"`
-	IsPublic            int    `description:"是否是公有权限1:公有权限,0私有权限"`
-	PublicPermissionIds []int  `description:"公有权限的ID列表"` //一级品种没有公有私有属性
-}
-
 type PermissionEnabledReq struct {
 	ChartPermissionId int `description:"品种权限Id"`
 	Enabled           int `description:"是否可用 0禁用, 1启用"`
 }
-
-type PermissionMoveReq struct {
-	ChartPermissionId int `description:"品种id"`
-	//	ParentChartPermissionId int `description:"父级品种id"`
-	PrevChartPermissionId int `description:"上一个兄弟节点品种id"`
-	NextChartPermissionId int `description:"下一个兄弟节点品种id"`
-}
-
-// UpdateChartPermissionSortByParentId 根据父类id更新排序
-func UpdateChartPermissionSortByParentId(parentId, chartPermissionId, nowSort int, updateSort string, productId int) (err error) {
-	sql := ` update chart_permission set sort = ` + updateSort + ` WHERE parent_id=? AND product_id = ? AND (sort > ? `
-	if chartPermissionId > 0 {
-		sql += ` or ( chart_permission_id > ` + fmt.Sprint(chartPermissionId) + ` and sort = ` + fmt.Sprint(nowSort) + `))`
-	} else {
-		sql += `)`
-	}
-	err = global.MYSQL["hz_crm"].Exec(sql, parentId, nowSort, productId, productId).Error
-	return
-}
-
-// GetFirstChartPermissionByParentId 获取当前父级分类下,且排序数相同 的排序第一条的数据
-func (c *ChartPermission) GetFirstChartPermissionByParentId(parentId int) (item *ChartPermission, err error) {
-	err = global.MYSQL["hz_crm"].Where("parent_id = ?", parentId).Order("sort asc, chart_permission_id asc").First(&item).Error
-	return
-}

+ 4 - 17
models/crm/chart_permission_search_key_word_mapping.go

@@ -35,13 +35,11 @@ func (c *ChartPermissionSearchKeyWordMapping) GetPermission() (items []*ChartPer
 
 // ClassifyPermissionEditReq 编辑分类权限请求
 type ClassifyPermissionEditReq struct {
-	Keyword               string
-	ChartPermissionIdList []int `description:"权限id数组"`
-	NewKeyword            string
+	Keyword string
 }
 
 // EditChartPermissionSearchKeyWordMappingMulti 修改报告报告权限(先删除原有的权限,再添加新的权限)
-func (c *ChartPermissionSearchKeyWordMapping) EditChartPermissionSearchKeyWordMappingMulti(keyword, newKeyword string, permissionIdList []int) (err error) {
+func (c *ChartPermissionSearchKeyWordMapping) EditChartPermissionSearchKeyWordMappingMulti(keyword string, permissionIdList []*ChartPermissionSearchKeyWordMapping) (err error) {
 	tx := global.MYSQL["hz_crm"].Begin()
 	defer func() {
 		if err != nil {
@@ -55,20 +53,9 @@ func (c *ChartPermissionSearchKeyWordMapping) EditChartPermissionSearchKeyWordMa
 	if err != nil {
 		return
 	}
-	// 删除相关联的回复
+	// 批量插入绑定的权限
 	if len(permissionIdList) > 0 {
-		chartPermissionSearchKeyWordMappingList := make([]*ChartPermissionSearchKeyWordMapping, 0)
-		for _, permissionId := range permissionIdList {
-			tmpChartPermissionSearchKeyWordMapping := &ChartPermissionSearchKeyWordMapping{
-				ChartPermissionId:  permissionId,
-				KeyWord:            newKeyword,
-				From:               "rddp",
-				TacticType:         "",
-				TeleconferenceSort: 0,
-			}
-			chartPermissionSearchKeyWordMappingList = append(chartPermissionSearchKeyWordMappingList, tmpChartPermissionSearchKeyWordMapping)
-		}
-		err = tx.CreateInBatches(chartPermissionSearchKeyWordMappingList, len(chartPermissionSearchKeyWordMappingList)).Error
+		err = tx.CreateInBatches(permissionIdList, len(permissionIdList)).Error
 	}
 	return
 }

+ 66 - 0
models/eta/chart_permission.go

@@ -0,0 +1,66 @@
+package eta
+
+import (
+	"hongze/hz_crm_eta/global"
+	"time"
+)
+
+type ChartPermission struct {
+	ChartPermissionId     int       `gorm:"column:chart_permission_id;primary_key;AUTO_INCREMENT;NOT NULL;comment:'主键'" json:"chart_permission_id"`
+	ChartPermissionName   string    `gorm:"column:chart_permission_name;default:NULL;comment:'名称'" json:"chart_permission_name"`
+	PermissionName        string    `gorm:"column:permission_name;default:;comment:'权限名'" json:"permission_name"`
+	Sort                  int       `gorm:"column:sort;default:1;comment:'排序'" json:"sort"`
+	Enabled               int       `gorm:"column:enabled;comment:'是否可用 0禁用, 1启用'" json:"enabled"`
+	CreatedTime           time.Time `gorm:"column:created_time;default:CURRENT_TIMESTAMP;comment:'创建时间'" json:"created_time"`
+	LastUpdatedTime       time.Time `gorm:"column:last_updated_time;default:CURRENT_TIMESTAMP;NOT NULL" json:"last_updated_time"`
+	TeleconferenceSort    int       `gorm:"column:teleconference_sort;default:0;comment:'电话会类型排序'" json:"teleconference_sort"`
+	Remark                string    `gorm:"column:remark;default:NULL" json:"remark"`
+	ClassifyName          string    `gorm:"column:classify_name;default:NULL" json:"classify_name"`
+	ProductName           string    `gorm:"column:product_name;default:" json:"product_name"`
+	ProductId             int       `gorm:"column:product_id;default:0" json:"product_id"`
+	ImageUrl              string    `gorm:"column:image_url;default:NULL;comment:'图片地址'" json:"image_url"`
+	ShowType              int       `gorm:"column:show_type;default:0;comment:'1:查研观向小程序展示'" json:"show_type"`
+	IsOther               int       `gorm:"column:is_other;default:0;NOT NULL;comment:'是否是其他,用于查研观向小程序后台展示'" json:"is_other"`
+	IsReport              int       `gorm:"column:is_report;default:0;NOT NULL;comment:'是否是报告,用于查研观向小程序前台报告展示'" json:"is_report"`
+	CygxAuth              int       `gorm:"column:cygx_auth;default:0;NOT NULL;comment:'是否是权限,用于查研观向小程序前台权限校验'" json:"cygx_auth"`
+	PermissionType        int       `gorm:"column:permission_type;default:0;NOT NULL;comment:'1主观,2客观'" json:"permission_type"`
+	YbImgUrl              string    `gorm:"column:yb_img_url;default:NULL;comment:'研报小程序报告列表icon'" json:"yb_img_url"`
+	ProductPermissionName string    `gorm:"column:product_permission_name;default:;comment:'种类权限名称'" json:"product_permission_name"`
+	PriceDrivenState      int       `gorm:"column:price_driven_state;default:1;NOT NULL;comment:'品种价格驱动状态 0-关闭 1-开启'" json:"price_driven_state"`
+	ImageUrlM             string    `gorm:"column:image_url_m;default:NULL;comment:'图片地址(查研观向移动端)'" json:"image_url_m"`
+	ParentId              int       `gorm:"column:parent_id;default:0;NOT NULL;comment:'父级权限id'" json:"parent_id"`
+	IsPublic              int       `gorm:"column:is_public;default:0;NOT NULL;comment:'是否是公有权限1:公有权限,0私有权限'" json:"is_public"`
+}
+
+func (c *ChartPermission) TableName() string {
+	return "chart_permission"
+}
+
+// GetItemById 查询品种
+func (c *ChartPermission) GetItemById(chartPermissionId int) (item *ChartPermission, err error) {
+	err = global.MYSQL["rddp"].Where("chart_permission_id = ?", chartPermissionId).First(&item).Error
+	return
+}
+
+// GetItemsByCondition 查询列表
+func (c *ChartPermission) GetItemsByCondition(condition string, pars []interface{}) (items []*ChartPermission, err error) {
+	err = global.MYSQL["rddp"].Where(condition, pars...).Order("sort asc, chart_permission_id asc").Find(&items).Error
+	return
+}
+
+// GetItemByCondition 查询列表
+func (c *ChartPermission) GetItemByCondition(condition string, pars []interface{}) (item *ChartPermission, err error) {
+	err = global.MYSQL["rddp"].Where(condition, pars...).First(&item).Error
+	return
+}
+
+// UpdateOrCreate 更新或者创建权限
+func (c *ChartPermission) UpdateOrCreate() (err error) {
+	global.MYSQL["rddp"].Model(c).Save(&c)
+	return
+}
+
+type PermissionEnabledReq struct {
+	ChartPermissionId int `description:"品种权限Id"`
+	Enabled           int `description:"是否可用 0禁用, 1启用"`
+}

+ 12 - 0
models/eta/chart_permission_chapter_mapping.go

@@ -0,0 +1,12 @@
+package eta
+
+type ChartPermissionChapterMapping struct {
+	Id                  int    `gorm:"column:id;primary_key;AUTO_INCREMENT;NOT NULL"`
+	ChartPermissionId   int    `gorm:"column:chart_permission_id;default:0"`
+	ReportChapterTypeId int    `gorm:"column:report_chapter_type_id;default:0;comment:'report_chapter_type表主键id或research_report表主键id或tactic表主键id'"`
+	ResearchType        string `gorm:"column:research_type;default:"`
+}
+
+func (c *ChartPermissionChapterMapping) TableName() string {
+	return "chart_permission_chapter_mapping"
+}

+ 39 - 0
models/eta/chart_permission_search_key_word_mapping.go

@@ -0,0 +1,39 @@
+package eta
+
+import "hongze/hz_crm_eta/global"
+
+type ChartPermissionSearchKeyWordMapping struct {
+	Id                 int    `gorm:"column:id;primary_key;AUTO_INCREMENT;NOT NULL"`
+	ChartPermissionId  int    `gorm:"column:chart_permission_id;default:0"`
+	KeyWord            string `gorm:"column:key_word;default:"`
+	From               string `gorm:"column:from;default:"`
+	TacticType         string `gorm:"column:tactic_type;default:;comment:'策略表type字段值'"`
+	TeleconferenceSort int    `gorm:"column:teleconference_sort;default:0;comment:'电话会类型排序'"`
+}
+
+func (c *ChartPermissionSearchKeyWordMapping) TableName() string {
+	return "chart_permission_search_key_word_mapping"
+}
+
+type ClassifyPermissionReq struct {
+	Keyword string
+}
+
+type ClassifyPermissionResp struct {
+	List []*ChartPermissionSearchKeyWordMapping
+}
+
+func (c *ChartPermissionSearchKeyWordMapping) GetPermissionByKeyword(classifyNameSecond string) (items []*ChartPermissionSearchKeyWordMapping, err error) {
+	err = global.MYSQL["rddp"].Where("`from`='rddp' AND key_word = ?", classifyNameSecond).Find(&items).Error
+	return
+}
+
+func (c *ChartPermissionSearchKeyWordMapping) GetPermission() (items []*ChartPermissionSearchKeyWordMapping, err error) {
+	err = global.MYSQL["rddp"].Where("`from`='rddp'").Find(&items).Error
+	return
+}
+
+// ClassifyPermissionEditReq 编辑分类权限请求
+type ClassifyPermissionEditReq struct {
+	Keyword string
+}

+ 2 - 7
routers/chart_permission.go

@@ -8,11 +8,6 @@ import (
 func InitChartPermission(r *gin.RouterGroup) {
 	control := new(crm.ChartPermissionController)
 	group := r.Group("crm/chart_permission")
-	group.POST("list", control.GetChartPermission)
-	group.POST("add", control.AddChartPermission)
-	group.POST("edit", control.EditChartPermission)
-	group.POST("move", control.MoveChartPermission)
-	group.POST("classify", control.GetClassifyChartPermission)
-	group.POST("classify/edit", control.EditClassifyChartPermission)
-	group.POST("enabled/set", control.SetEnabled)
+	group.POST("sync", control.Sync)
+	group.POST("classify/sync", control.SyncClassifyChartPermission)
 }

+ 35 - 387
services/crm/chart_permission.go

@@ -3,8 +3,7 @@ package crm
 import (
 	"fmt"
 	"hongze/hz_crm_eta/models/crm"
-	"hongze/hz_crm_eta/utils"
-	"time"
+	"hongze/hz_crm_eta/models/eta"
 )
 
 // 获取权限列表
@@ -18,398 +17,47 @@ func GetChartPermissionList(cond string, pars []interface{}) (permissionList []*
 	return
 }
 
-// 新增权限
-func AddChartPermission(req crm.PermissionAddReq) (err error, errMsg string) {
-	// 重名校验
-	ob := new(crm.ChartPermission)
-	existCond := ` permission_name = ? AND parent_id = ?`
-	existPars := make([]interface{}, 0)
-	existPars = append(existPars, req.PermissionName, req.ParentId)
-	exist, e := ob.GetItemByCondition(existCond, existPars)
-	if e != nil && e != utils.ErrNoRow {
-		errMsg = "操作失败"
-		err = fmt.Errorf("获取重名品种权限失败, Err: " + e.Error())
-		return
-	}
-	if exist != nil && exist.ChartPermissionId > 0 {
-		errMsg = "品种名称已存在"
-		err = fmt.Errorf("品种名称已存在")
-		return
-	}
-
-	// 获取最大的排序值
-	maxSort, e := ob.GetMaxSort()
-	if e != nil {
-		errMsg = "查询品种排序失败"
-		err = fmt.Errorf("查询品种排序失败, Err: " + e.Error())
-		return
-	}
-	parentPermissionName := ""
-	if req.ParentId > 0 {
-		//查询父级是否存在
-		parent, e := ob.GetItemById(req.ParentId)
-		if e != nil {
-			errMsg = "查询父级品种失败"
-			err = fmt.Errorf("查询父级品种失败, Err: " + e.Error())
-			return
-		}
-		if parent.ChartPermissionId == 0 {
-			errMsg = "请选择正确的父级品种"
-			err = fmt.Errorf("请选择正确的父级品种")
-			return
-		}
-		if parent.ParentId != 0 {
-			errMsg = "只能选择一级品种作为父级品种"
-			err = fmt.Errorf("只能选择一级品种作为父级品种")
-			return
-		}
-		parentPermissionName = parent.PermissionName
-	} else {
-		parentPermissionName = req.PermissionName
-	}
-	// 新增
-	ob.ChartPermissionName = req.PermissionName
-	ob.PermissionName = req.PermissionName
-	ob.Remark = req.PermissionName
-	ob.ParentId = req.ParentId
-	ob.ProductId = req.ProductId
-	ob.IsPublic = req.IsPublic
-	ob.Enabled = req.Enabled
-	ob.Sort = maxSort + 1
-
-	ob.CreatedTime = time.Now()
-	ob.LastUpdatedTime = time.Now()
-	if req.ProductId == 1 {
-		ob.ProductName = "ficc"
-	} else {
-		ob.ProductName = "权益"
-	}
-	ob.ProductPermissionName = ob.ProductName + ob.PermissionName
-	ob.ClassifyName = parentPermissionName
-	if e = ob.Create(); e != nil {
-		errMsg = "操作失败"
-		err = fmt.Errorf("新增品种权限失败, Err: " + e.Error())
-		return
-	}
-	if req.ParentId > 0 && req.Enabled == 1 {
-		//  更新父级品种的启用禁用
-		err = ob.SetEnabledByChartPermissionId(req.ParentId, req.Enabled)
-		if err != nil {
-			errMsg = "更新品种启用禁用状态失败"
-			err = fmt.Errorf("更新品种启用禁用状态失败, Err: " + err.Error())
-			return
-		}
-	}
-	return
-}
-
-func EditChartPermission(req crm.PermissionEditReq) (err error, errMsg string) {
-	//查询是否存在品种
-	ob := new(crm.ChartPermission)
-	item, e := ob.GetItemById(req.ChartPermissionId)
-	if e != nil {
-		errMsg = "查询品种信息失败"
-		err = fmt.Errorf("查询品种信息失败, Err: " + e.Error())
-		return
-	}
-	if item.ChartPermissionId == 0 {
-		errMsg = "请选择正确的品种"
-		err = fmt.Errorf("请选择正确的品种")
-		return
-	}
-	// 查询品种名称是否修改
-	if item.PermissionName != req.PermissionName {
-		existCond := ` permission_name = ? AND parent_id = ? AND chart_permission_id !=?`
-		existPars := make([]interface{}, 0)
-		existPars = append(existPars, req.PermissionName, item.ParentId, req.ChartPermissionId)
-		exist, e := ob.GetItemByCondition(existCond, existPars)
-		if e != nil && e != utils.ErrNoRow {
-			errMsg = "操作失败"
-			err = fmt.Errorf("获取重名品种权限失败, Err: " + e.Error())
-			return
-		}
-		if exist != nil && exist.ChartPermissionId > 0 {
-			errMsg = "品种名称已存在"
-			err = fmt.Errorf("品种名称已存在")
-			return
-		}
-	}
-
-	//判断父级品种是否存在
-	parentPermissionName := ""
-	if req.ParentId > 0 {
-		//查询父级是否存在
-		parent, e := ob.GetItemById(req.ParentId)
-		if e != nil {
-			errMsg = "查询父级品种失败"
-			err = fmt.Errorf("查询父级品种失败, Err: " + e.Error())
-			return
-		}
-		if parent.ChartPermissionId == 0 {
-			errMsg = "请选择正确的父级品种"
-			err = fmt.Errorf("请选择正确的父级品种")
-			return
-		}
-		if parent.ParentId != 0 {
-			errMsg = "只能选择一级品种作为父级品种"
-			err = fmt.Errorf("只能选择一级品种作为父级品种")
-			return
-		}
-		parentPermissionName = parent.PermissionName
-	} else {
-		parentPermissionName = req.PermissionName
-	}
-	updateCol := []string{"PermissionName", "IsPublic", "ParentId", "ClassifyName", "LastUpdatedTime", "ProductPermissionName"}
-	if item.ProductId == 1 {
-		item.Remark = req.PermissionName //remark 在权益品种中用来区分主客观
-		updateCol = append(updateCol, "Remark")
-	}
-	item.PermissionName = req.PermissionName
-	item.IsPublic = req.IsPublic
-	item.ParentId = req.ParentId
-	item.ClassifyName = parentPermissionName
-	item.ProductPermissionName = item.ProductName + item.PermissionName
-	item.LastUpdatedTime = time.Now()
-	err = item.Update(updateCol)
-	if err != nil {
-		errMsg = "更新失败"
-		err = fmt.Errorf("更新品种失败, Err: " + err.Error())
-		return
-	}
-
-	//判断是否是一级品种
-	if item.ParentId == 0 {
-		// 判断是否设置公有的二级品种
-		if len(req.PublicPermissionIds) > 0 {
-			// 更新二级品种的公有权限
-			err = ob.SetIsPublic(req.PublicPermissionIds, item.ChartPermissionId, 1)
-			if err != nil {
-				errMsg = "更新品种公有权限失败"
-				err = fmt.Errorf("更新品种公有权限失败, Err: " + err.Error())
-				return
-			}
-		}
-		// 更新二级的启动禁用
-		err = ob.UpdateClassifyNameByParentId(item.ChartPermissionId, req.PermissionName)
-		if err != nil {
-			errMsg = "更新品种启用禁用状态失败"
-			err = fmt.Errorf("更新品种启用禁用状态失败, Err: " + err.Error())
-			return
-		}
-	} else if item.ParentId > 0 {
-		if item.Enabled == 1 {
-			//  更新父级品种的启用禁用
-			err = ob.SetEnabledByChartPermissionId(item.ParentId, item.Enabled)
-			if err != nil {
-				errMsg = "更新品种启用禁用状态失败"
-				err = fmt.Errorf("更新品种启用禁用状态失败, Err: " + err.Error())
-				return
-			}
-		}
-	}
-
-	return
-}
-
-// SetEnabledChartPermission  设置启用禁用
-func SetEnabledChartPermission(req crm.PermissionEnabledReq) (err error, errMsg string) {
+// SyncChartPermission  同步品种表数据
+func SyncChartPermission() (err error, errMsg string) {
 	//查询是否存在品种
-	ob := new(crm.ChartPermission)
-	item, e := ob.GetItemById(req.ChartPermissionId)
+	etaOb := new(eta.ChartPermission)
+	list, e := etaOb.GetItemsByCondition(" product_id = 1", []interface{}{})
 	if e != nil {
 		errMsg = "查询品种信息失败"
 		err = fmt.Errorf("查询品种信息失败, Err: " + e.Error())
 		return
 	}
-	if item.ChartPermissionId == 0 {
-		errMsg = "请选择正确的品种"
-		err = fmt.Errorf("请选择正确的品种")
-		return
-	}
-	// 查询品种名称是否修改
-	item.Enabled = req.Enabled
-	item.LastUpdatedTime = time.Now()
-	err = item.Update([]string{"Enabled", "LastUpdatedTime"})
-	if err != nil {
-		errMsg = "更新失败"
-		err = fmt.Errorf("更新品种失败, Err: " + err.Error())
-		return
-	}
-
-	//判断是否是一级品种
-	if item.ParentId == 0 {
-		// 判断是否设置公有的二级品种
-		// 更新二级的启动禁用
-		err = ob.SetEnabledByParentId(item.ChartPermissionId, req.Enabled)
-		if err != nil {
-			errMsg = "更新品种启用禁用状态失败"
-			err = fmt.Errorf("更新品种启用禁用状态失败, Err: " + err.Error())
-			return
-		}
-
-		//
-	} else if item.ParentId > 0 {
-		if req.Enabled == 1 {
-			//  更新父级品种的启用禁用
-			err = ob.SetEnabledByChartPermissionId(item.ParentId, req.Enabled)
-			if err != nil {
-				errMsg = "更新品种启用禁用状态失败"
-				err = fmt.Errorf("更新品种启用禁用状态失败, Err: " + err.Error())
-				return
-			}
-		}
-	}
-
-	return
-}
-
-// MoveChartPermission 移动品种
-func MoveChartPermission(req crm.PermissionMoveReq) (err error, errMsg string) {
-	ob := new(crm.ChartPermission)
-	chartPermissionId := req.ChartPermissionId
-	prevChartPermissionId := req.PrevChartPermissionId
-	nextChartPermissionId := req.NextChartPermissionId
-
-	//如果有传入 上一个兄弟节点分类id
-	var (
-		permissionInfo *crm.ChartPermission
-		prevPermission *crm.ChartPermission
-		nextPermission *crm.ChartPermission
-
-		prevSort int
-		nextSort int
-	)
-
-	// 移动对象为分类, 判断权限
-	permissionInfo, err = ob.GetItemById(chartPermissionId)
-	if err != nil {
-		if err == utils.ErrNoRow {
-			errMsg = "当前品种不存在"
-			err = fmt.Errorf("获取品种信息失败,Err:" + err.Error())
-			return
-		}
-		errMsg = "移动失败"
-		err = fmt.Errorf("获取分类信息失败,Err:" + err.Error())
-		return
-	} else if permissionInfo.ChartPermissionId == 0 {
-		errMsg = "当前品种不存在"
-		err = fmt.Errorf("获取品种信息失败,Err:" + err.Error())
-		return
-	}
-
-	parentChartPermissionId := permissionInfo.ParentId
-	productId := permissionInfo.ProductId
-	if prevChartPermissionId > 0 {
-		prevPermission, err = ob.GetItemById(prevChartPermissionId)
-		if err != nil {
-			errMsg = "移动失败"
-			err = fmt.Errorf("获取上一个兄弟节点分类信息失败,Err:" + err.Error())
-			return
-		}
-		prevSort = prevPermission.Sort
-	}
-
-	if nextChartPermissionId > 0 {
-		//下一个兄弟节点
-		nextPermission, err = ob.GetItemById(nextChartPermissionId)
-		if err != nil {
-			errMsg = "移动失败"
-			err = fmt.Errorf("获取下一个兄弟节点分类信息失败,Err:" + err.Error())
-			return
-		}
-		nextSort = nextPermission.Sort
-	}
-
-	err, errMsg = moveChartPermission(permissionInfo, prevPermission, nextPermission, parentChartPermissionId, prevSort, nextSort, productId)
-	return
-}
-
-// moveChartPermission 移动指标分类
-func moveChartPermission(permissionInfo, prevPermission, nextPermission *crm.ChartPermission, parentId, prevSort, nextSort, productId int) (err error, errMsg string) {
-	ob := new(crm.ChartPermission)
-	updateCol := make([]string, 0)
-
-	//判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
-	if permissionInfo.ParentId != parentId {
-		errMsg = "移动失败"
-		err = fmt.Errorf("不支持目录层级变更")
-		return
-	}
-
-	if prevSort > 0 {
-		//如果是移动在两个兄弟节点之间
-		if nextSort > 0 {
-			//下一个兄弟节点
-			//如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
-			if prevSort == nextSort || prevSort == permissionInfo.Sort {
-				//变更兄弟节点的排序
-				updateSortStr := `sort + 2`
-
-				//变更分类
-				if prevPermission != nil {
-					_ = crm.UpdateChartPermissionSortByParentId(parentId, prevPermission.ChartPermissionId, prevPermission.Sort, updateSortStr, productId)
-				} else {
-					_ = crm.UpdateChartPermissionSortByParentId(parentId, 0, prevSort, updateSortStr, productId)
-				}
-
-			} else {
-				//如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
-				if nextSort-prevSort == 1 {
-					//变更兄弟节点的排序
-					updateSortStr := `sort + 1`
-
-					//变更分类
-					if prevPermission != nil {
-						_ = crm.UpdateChartPermissionSortByParentId(parentId, prevPermission.ChartPermissionId, prevSort, updateSortStr, productId)
-					} else {
-						_ = crm.UpdateChartPermissionSortByParentId(parentId, 0, prevSort, updateSortStr, productId)
-					}
-
-				}
-			}
-		}
-
-		permissionInfo.Sort = prevSort + 1
-		permissionInfo.LastUpdatedTime = time.Now()
-		updateCol = append(updateCol, "Sort", "LastUpdatedTime")
-	} else if prevPermission == nil && nextPermission == nil && parentId > 0 {
-		//处理只拖动到目录里,默认放到目录底部的情况
-		var maxSort int
-		maxSort, err = ob.GetMaxSortByParentId(parentId)
-		if err != nil {
-			errMsg = "移动失败"
-			err = fmt.Errorf("查询组内排序信息失败,Err:" + err.Error())
-			return
-		}
-		permissionInfo.Sort = maxSort + 1 //那就是排在组内最后一位
-		permissionInfo.LastUpdatedTime = time.Now()
-		updateCol = append(updateCol, "Sort", "LastUpdatedTime")
-	} else {
-		// 拖动到父级分类的第一位
-		firstPermission, tmpErr := ob.GetFirstChartPermissionByParentId(parentId)
-		if tmpErr != nil && tmpErr != utils.ErrNoRow {
-			errMsg = "移动失败"
-			err = fmt.Errorf("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tmpErr.Error())
-			return
-		}
-
-		//如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
-		if firstPermission != nil && firstPermission.ChartPermissionId != 0 && firstPermission.Sort == 0 {
-			updateSortStr := ` sort + 1 `
-			_ = crm.UpdateChartPermissionSortByParentId(parentId, firstPermission.ChartPermissionId-1, 0, updateSortStr, productId)
-		}
-
-		permissionInfo.Sort = 0 //那就是排在第一位
-		permissionInfo.LastUpdatedTime = time.Now()
-		updateCol = append(updateCol, "Sort", "LastUpdatedTime")
-	}
-
-	//更新
-	if len(updateCol) > 0 {
-		err = permissionInfo.Update(updateCol)
+	for _, v := range list {
+		ob := &crm.ChartPermission{
+			ChartPermissionId:     v.ChartPermissionId,
+			ChartPermissionName:   v.ChartPermissionName,
+			PermissionName:        v.PermissionName,
+			Sort:                  v.Sort,
+			Enabled:               v.Enabled,
+			CreatedTime:           v.CreatedTime,
+			LastUpdatedTime:       v.LastUpdatedTime,
+			TeleconferenceSort:    v.TeleconferenceSort,
+			Remark:                v.Remark,
+			ClassifyName:          v.ClassifyName,
+			ProductName:           v.ProductName,
+			ProductId:             v.ProductId,
+			ImageUrl:              v.ImageUrl,
+			ShowType:              v.ShowType,
+			IsOther:               v.IsOther,
+			IsReport:              v.IsReport,
+			CygxAuth:              v.CygxAuth,
+			PermissionType:        v.PermissionType,
+			YbImgUrl:              v.YbImgUrl,
+			ProductPermissionName: v.ProductPermissionName,
+			PriceDrivenState:      v.PriceDrivenState,
+			ImageUrlM:             v.ImageUrlM,
+			ParentId:              v.ParentId,
+			IsPublic:              v.IsPublic,
+		}
+		err = ob.UpdateOrCreate()
 		if err != nil {
-			errMsg = "移动失败"
-			err = fmt.Errorf("修改失败,Err:" + err.Error())
+			errMsg = "更新失败"
+			err = fmt.Errorf("更新品种失败, Err: " + err.Error())
 			return
 		}
 	}