Browse Source

Merge remote-tracking branch 'origin/crm/13.6' into CRM13.7

# Conflicts:
#	controllers/company.go
#	models/company/company.go
#	models/company/company_product.go
ziwen 1 year ago
parent
commit
5e8010e116

+ 97 - 11
controllers/company.go

@@ -399,6 +399,7 @@ func (this *CompanyController) SearchList() {
 // @Param   SortType   query   string  true       "如何排序,是正序还是倒序,枚举值:`asc 正序`,`desc 倒叙`"
 // @Param   SortByTodo   query   bool  true       "是否根据待办排序,true或false"
 // @Param   TryStage   query   int  false       "试用客户子标签:0全部、1未分类、2 推进、3 跟踪、4 预备"
+// @Param   IncludeShare   query   bool  true       "是否包含共享客户: true-包含; false-不包含"
 // @Success 200 {object} company.CompanyListResp
 // @router /list [get]
 func (this *CompanyController) List() {
@@ -434,8 +435,9 @@ func (this *CompanyController) List() {
 	city := this.GetString("City")
 	keyWord = strings.Trim(keyWord, " ")
 	keyWord = strings.Replace(keyWord, "'", "", -1)
-	todoStatus := this.GetString("TodoStatus") //任务状态
-	tryStage, _ := this.GetInt("TryStage")     //试用客户标签
+	todoStatus := this.GetString("TodoStatus")      //任务状态
+	tryStage, _ := this.GetInt("TryStage")          //试用客户标签
+	includeShare, _ := this.GetBool("IncludeShare") // 是否包含试用客户
 
 	// 套餐类型
 	packageType, _ := this.GetInt("PackageType")
@@ -753,8 +755,17 @@ func (this *CompanyController) List() {
 					//如果没有筛选了流失客户状态,那么需要加客户归属条件加入到查询中去
 					if sysUser.Authority <= 0 {
 						if status != utils.COMPANY_STATUS_LOSE {
-							condition += ` AND b.seller_id=?  `
-							pars = append(pars, sysUser.AdminId)
+							//condition += ` AND b.seller_id=?  `
+							//pars = append(pars, sysUser.AdminId)
+
+							// 是否包含共享客户(新增合同时, 关键词搜索客户为true)
+							if includeShare {
+								condition += ` AND (b.seller_id = ? OR (a.share_seller_id = ? AND a.is_share = 1)) `
+								pars = append(pars, sysUser.AdminId, sysUser.AdminId)
+							} else {
+								condition += ` AND b.seller_id=?  `
+								pars = append(pars, sysUser.AdminId)
+							}
 						}
 
 						permissionCondition += ` AND b.seller_id=? `
@@ -8506,12 +8517,13 @@ func (this *CompanyController) AddRemark() {
 	}
 
 	remark := company.CompanyProductRemark{
-		CompanyProductRemakrId: 0,
-		CompanyId:              companyProduct.CompanyId,
-		ProductId:              companyProduct.ProductId,
-		ProductName:            companyProduct.ProductName,
-		Remark:                 req.Remark,
-		CreateTime:             time.Now(),
+		CompanyId:   companyProduct.CompanyId,
+		ProductId:   companyProduct.ProductId,
+		ProductName: companyProduct.ProductName,
+		Remark:      req.Remark,
+		CreateTime:  time.Now(),
+		SysUserId:   sysUser.AdminId,
+		SysRealName: sysUser.RealName,
 	}
 
 	err = company.AddCompanyRemark(&remark)
@@ -8597,8 +8609,12 @@ func (this *CompanyController) RemarkList() {
 		resp[i].Remark = remark.Remark
 		resp[i].ProductName = remark.ProductName
 		resp[i].CreateTime = createDate
-		resp[i].CompanyProductRemakrId = remark.CompanyProductRemakrId
+		resp[i].CompanyProductRemarkId = remark.CompanyProductRemarkId
 		resp[i].Mark = remark.Mark
+		// 仅自己添加的可删除
+		if remark.SysUserId == sysUser.AdminId {
+			resp[i].ButtonDel = true
+		}
 	}
 
 	br.Ret = 200
@@ -9090,3 +9106,73 @@ func (this *CompanyTodoController) CompanyActivityPointsBill() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// DelRemark
+// @Title 删除备注
+// @Description 删除备注
+// @Param	request	body company.RemarkDelReq true "type json string"
+// @Success 200 操作成功
+// @router /remark/del [post]
+func (this *CompanyController) DelRemark() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req company.RemarkDelReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.RemarkId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = "参数有误, 备注ID有误"
+		return
+	}
+
+	item, e := company.GetCompanyRemarkById(req.RemarkId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "备注已被删除, 请刷新页面"
+			return
+		}
+		br.Msg = "备注信息有误"
+		br.ErrMsg = "获取客户备注失败, Err: " + e.Error()
+		return
+	}
+	if item.SysUserId != sysUser.AdminId {
+		br.Msg = "仅备注添加人可删除"
+		return
+	}
+
+	product, e := company.GetCompanyProductByCompanyIdAndProductId(item.CompanyId, item.ProductId)
+	if e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取客户产品信息失败, Err: " + e.Error()
+		return
+	}
+
+	if e := company.DelCompanyRemark(req.RemarkId); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "删除客户备注失败, Err: " + e.Error()
+		return
+	}
+	content := fmt.Sprintf("%s%s", "删除备注: ", item.Remark)
+	_ = services.AddCompanyOperationRecord(product.CompanyId, product.SellerId, sysUser.AdminId, product.ProductId, sysUser.AdminId, product.CompanyName, product.ProductName, sysUser.RealName, "删除备注", "del_remark", content, sysUser.RealName, "", product.Status)
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}

+ 11 - 3
controllers/company_apply_v2.go

@@ -141,8 +141,16 @@ func (this *CompanyApplyController) ApplyServiceUpdate() {
 		br.ErrMsg = "客户状态为:" + companyProduct.Status + ";不可进行服务更新申请"
 		return
 	}
-	//客户归属判断
-	if companyProduct.SellerId != sysUser.AdminId {
+
+	companyItem, e := company.GetCompanyById(req.CompanyId)
+	if e != nil {
+		br.Msg = "客户信息有误"
+		br.ErrMsg = "获取客户信息失败, Err: " + e.Error()
+		return
+	}
+
+	//客户归属判断-当前销售/咨询组共享销售
+	if companyProduct.SellerId != sysUser.AdminId && companyItem.ShareSellerId != sysUser.AdminId {
 		br.Msg = "客户信息异常"
 		br.ErrMsg = "客户信息异常,不是当前所属销售,客户所属销售:" + companyProduct.SellerName + ";当前销售:" + sysUser.AdminName
 		return
@@ -811,7 +819,7 @@ func (this *CompanyApplyController) ApplyBySystemContract() {
 		br.ErrMsg = "客户不存在,不可提交审批:companyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId)
 		return
 	}
-	if companyProduct.SellerId != sysUser.AdminId {
+	if companyProduct.SellerId != sysUser.AdminId && companyInfo.ShareSellerId != sysUser.AdminId {
 		br.Msg = "客户信息异常"
 		br.ErrMsg = "客户信息异常,不是当前所属销售,客户所属销售:" + companyProduct.SellerName + ";当前销售:" + sysUser.AdminName
 		return

+ 14 - 9
controllers/company_share.go

@@ -299,7 +299,7 @@ func (this *CompanyController) CompanyShareList() {
 	}
 
 	// 查询当前销售是否有领取客户的权限
-	receiveEnabled, _ := services.CheckCompanyReceiveButton(sysUser.AdminId)
+	//receiveEnabled, _ := services.CheckCompanyReceiveButton(sysUser.AdminId)
 	for i := 0; i < lenList; i++ {
 		item := list[i]
 
@@ -431,11 +431,15 @@ func (this *CompanyController) CompanyShareList() {
 		//按钮显示控制
 		btnItem := new(company.ButtonPermission)
 		if item.CompanyId != 1 {
-			*btnItem = services.GetCompanyPermissionButton(roleTypeCode, itemStatus, item.GroupIds, item.GroupIds, item.GroupId, sysUser.GroupId, item.SellerId, sysUser.AdminId, sysUser.Authority, item.ProductId, item.ShareSellerId)
+			//*btnItem = services.GetCompanyPermissionButton(roleTypeCode, itemStatus, item.GroupIds, item.GroupIds, item.GroupId, sysUser.GroupId, item.SellerId, sysUser.AdminId, sysUser.Authority, item.ProductId, item.ShareSellerId)
 			//根据销售"领取客户"的权限对部分按钮做限制
-			btnItem = services.GetCompanyPermissionButtonByReceiveEnabled(btnItem, receiveEnabled)
+			//btnItem = services.GetCompanyPermissionButtonByReceiveEnabled(btnItem, receiveEnabled)
+
+			// 13.6正式客户共享按钮显示控制
+			btnItem = services.GetShareCompanyPermissionButton(roleTypeCode, itemStatus, item.ProductId)
 		}
 		list[i].BtnItem = btnItem
+
 		if item.FreezeStartDate != "" && item.FreezeEndDate != "" && item.Status == utils.COMPANY_STATUS_FREEZE {
 			freezeEndDate, _ := time.Parse(utils.FormatDate, item.FreezeEndDate)
 			if time.Now().Before(freezeEndDate) {
@@ -708,12 +712,13 @@ func (this *CompanyController) CompanyShareAddRemark() {
 		br.ErrMsg = "查询客户异常,Err:" + err.Error()
 	}
 	remark := company.CompanyProductRemark{
-		CompanyProductRemakrId: 0,
-		CompanyId:              companyProduct.CompanyId,
-		ProductId:              companyProduct.ProductId,
-		ProductName:            companyProduct.ProductName,
-		Remark:                 req.Remark,
-		CreateTime:             time.Now(),
+		CompanyId:   companyProduct.CompanyId,
+		ProductId:   companyProduct.ProductId,
+		ProductName: companyProduct.ProductName,
+		Remark:      req.Remark,
+		CreateTime:  time.Now(),
+		SysUserId:   sysUser.AdminId,
+		SysRealName: sysUser.RealName,
 	}
 	err = company.AddCompanyRemark(&remark)
 	if err != nil {

+ 19 - 7
controllers/company_user.go

@@ -96,6 +96,18 @@ func (this *CompanyUserController) AddUser() {
 	companyProductList := make([]*company.CompanyProduct, 0)
 
 	shareSellerId := 0
+	companyInfo := new(company.Company)
+	if req.CompanyId > 0 {
+		item, e := company.GetCompanyById(req.CompanyId)
+		if e != nil {
+			br.Msg = "客户信息有误"
+			br.ErrMsg = "获取客户信息失败, Err: " + e.Error()
+			return
+		}
+		companyInfo = item
+		shareSellerId = item.ShareSellerId
+	}
+
 	//权益类客户,邮箱必填(2021-03-22 13:32:59修改)
 	productId := services.GetProductId(sysUser.RoleTypeCode)
 	if productId == 1 || regionType == "国内" { //ficc类客户
@@ -129,12 +141,12 @@ func (this *CompanyUserController) AddUser() {
 			return
 		} else if req.Source == "add_user" {
 			//普通类型添加客户
-			companyInfo, err := company.GetCompanyById(req.CompanyId)
-			if err != nil {
-				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
-				br.Msg = "获取客户信息失败"
-				return
-			}
+			//companyInfo, err := company.GetCompanyById(req.CompanyId)
+			//if err != nil {
+			//	br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
+			//	br.Msg = "获取客户信息失败"
+			//	return
+			//}
 
 			//手机号、邮箱校验(必填一个)
 			if req.MobileOne == "" && req.Email == "" {
@@ -142,7 +154,7 @@ func (this *CompanyUserController) AddUser() {
 				br.IsSendEmail = false
 				return
 			}
-			shareSellerId = companyInfo.ShareSellerId
+			//shareSellerId = companyInfo.ShareSellerId
 			//获取当前操作员产品权限
 			tmpCompanyProductList, productErr := getSysCompanyProductList(productId, req.CompanyId)
 			if productErr != nil {

+ 60 - 16
controllers/contract/contract.go

@@ -2516,12 +2516,15 @@ func (this *ContractController) BusinessContractCompanyList() {
 
 	//关键字
 	keyword := this.GetString("Keyword")
+	keyword = strings.TrimSpace(keyword)
 	if keyword == "" {
 		br.Msg = "请输入客户名称"
 		br.ErrMsg = "请输入客户名称"
 		return
 	}
-	condition += ` AND (contract_code LIKE '%` + keyword + `%' OR company_name LIKE '%` + keyword + `%' OR credit_code LIKE '%` + keyword + `%' ) `
+	kw := fmt.Sprint("%", keyword, "%")
+	condition += ` AND (contract_code LIKE ? OR company_name LIKE ? OR credit_code LIKE ? ) `
+	pars = append(pars, kw, kw, kw)
 
 	list, err := contract.GetContractCompanyNameList(condition, pars)
 	if err != nil {
@@ -2535,6 +2538,25 @@ func (this *ContractController) BusinessContractCompanyList() {
 		companyNameList = append(companyNameList, v.CompanyName)
 	}
 
+	// 13.6正式共享客户的处理
+	{
+		// 通过关键词获取分配给当前销售的正式共享客户
+		cond := ` AND share_seller_id = ? AND is_share = 1 AND company_name LIKE ?`
+		pars := make([]interface{}, 0)
+		pars = append(pars, sysUser.AdminId, kw)
+		shares, e := company.GetCompanyListByCondition(cond, pars, []string{"company_id", "company_name"}, "")
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取共享客户信息失败, Err: " + e.Error()
+			return
+		}
+		for _, v := range shares {
+			if !utils.InArrayByStr(companyNameList, v.CompanyName) {
+				companyNameList = append(companyNameList, v.CompanyName)
+			}
+		}
+	}
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
@@ -2576,8 +2598,13 @@ func (this *ContractController) BusinessContractListByCompanyName() {
 	//		pars = append(pars, sysUser.AdminId)
 	//	}
 	//}
-	condition += ` AND a.seller_id = ? `
-	pars = append(pars, sysUser.AdminId)
+	//condition += ` AND a.seller_id = ? `
+	//pars = append(pars, sysUser.AdminId)
+
+	// 13.6正式共享客户-可以选择分配给自己的共享客户下的非自己创建的合同
+	joinStr := ` LEFT JOIN company AS b ON a.company_name = b.company_name `
+	condition += ` AND (a.seller_id = ? OR (b.is_share = 1 AND b.share_seller_id = ?))`
+	pars = append(pars, sysUser.AdminId, sysUser.AdminId)
 
 	//关键字
 	companyName := this.GetString("CompanyName")
@@ -2586,7 +2613,7 @@ func (this *ContractController) BusinessContractListByCompanyName() {
 		br.ErrMsg = "请输入客户名称"
 		return
 	}
-	condition += ` AND  company_name = ? `
+	condition += ` AND a.company_name = ? `
 	pars = append(pars, companyName)
 
 	pageSize, _ := this.GetInt("PageSize")
@@ -2601,14 +2628,14 @@ func (this *ContractController) BusinessContractListByCompanyName() {
 	}
 	startSize = paging.StartIndex(currentIndex, pageSize)
 
-	total, err := contract.GetContractListCount(condition, "", pars)
+	total, err := contract.GetContractListCount(condition, joinStr, pars)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
 		return
 	}
 
-	list, err := contract.GetContractList(condition, "", pars, startSize, pageSize)
+	list, err := contract.GetContractList(condition, joinStr, pars, startSize, pageSize)
 	if err != nil {
 		br.Msg = "获取合同列表失败!"
 		br.ErrMsg = "获取合同列表失败,Err:" + err.Error()
@@ -2824,25 +2851,42 @@ func (this *ContractController) GetListBySeal() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
 
 	keyword := this.GetString("Keyword")
-	condition := ""
+	condition := ` AND a.status = "已审批"`
 	pars := make([]interface{}, 0)
 	if keyword != "" {
-		condition += ` AND (company_name LIKE '%` + keyword + `%') `
-	}
-	// 如果不是合规则只能查看自己的合同
-	if this.SysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_COMPLIANCE {
-		condition += ` AND seller_id = ? `
-		pars = append(pars, this.SysUser.AdminId)
+		kw := fmt.Sprint("%", keyword, "%")
+		condition += ` AND (a.company_name LIKE ?) `
+		pars = append(pars, kw)
 	}
 
-	list, err := contract.GetSearchListBySeal(condition, pars)
-	if err != nil {
+	// 13.6正式共享客户
+	joinStr := ` LEFT JOIN company AS b ON a.company_name = b.company_name `
+	// 非合规角色可查看自己的合同或是自己的共享客户下的非自己创建的合同
+	if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_COMPLIANCE {
+		condition += ` AND (a.seller_id = ? OR (b.is_share = 1 AND b.share_seller_id = ?))`
+		pars = append(pars, sysUser.AdminId, sysUser.AdminId)
+	}
+	list, e := contract.GetContractList(condition, joinStr, pars, 0, 100)
+	if e != nil {
 		br.Msg = "获取失败"
-		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		br.ErrMsg = "获取合同列表失败, Err:" + e.Error()
 		return
 	}
+	//list, err := contract.GetSearchListBySeal(condition, pars)
+	//if err != nil {
+	//	br.Msg = "获取失败"
+	//	br.ErrMsg = "获取数据失败,Err:" + err.Error()
+	//	return
+	//}
 
 	newList := make([]response.ContractListBySealResp, 0)
 	if len(list) > 0 {

+ 22 - 0
models/company/company.go

@@ -1539,6 +1539,11 @@ type RemarkReq struct {
 	Remark    string `description:"备注"`
 }
 
+// RemarkDelReq 删除备注请求
+type RemarkDelReq struct {
+	RemarkId int `description:"备注ID"`
+}
+
 // RemarkResp 备注说明
 type RemarkResp struct {
 	Remark                 string `description:"未续约说明"`
@@ -1546,6 +1551,7 @@ type RemarkResp struct {
 	CreateTime             string `description:"添加时间"`
 	CompanyProductRemakrId int
 	Mark                   int `description:"是否标记 0不是 1是"`
+	ButtonDel   bool   `description:"删除权限"`
 }
 
 type RoadShowTotalSlice struct {
@@ -1887,3 +1893,19 @@ type CompanyMarkReq struct {
 	CompanyProductRemakrId int `description:"备注id"`
 	Status                 int `description:"0取消标记 1标记"`
 }
+
+// GetCompanyListByCondition 获取客户列表
+func GetCompanyListByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*Company, err error) {
+	o := orm.NewOrm()
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := `ORDER BY created_time DESC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM company WHERE 1=1 %s %s`, fields, condition, order)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 12 - 1
models/company/company_apply.go

@@ -54,6 +54,7 @@ type CompanyContractHistory struct {
 	ModifyTimeStr     string    `description:"合同修改时间"`
 	Status            int       `description:"状态"`
 	ProductId         int       `description:"产品id"`
+	ContractId        int       `description:"合同ID"`
 	PermissionList    []*ContractPermissionList
 }
 
@@ -63,7 +64,17 @@ type CompanyContractHistoryResp struct {
 
 func GetCompanyContractHistoryList(companyId int, productId string) (items []*CompanyContractHistory, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM company_contract WHERE company_id=? AND product_id IN(` + productId + `) AND status="1" ORDER BY modify_time DESC `
+	//sql := `SELECT * FROM company_contract WHERE company_id=? AND product_id IN(` + productId + `) AND status="1" ORDER BY modify_time DESC `
+	sql := `SELECT
+				a.*,
+				b.contract_id
+			FROM
+				company_contract AS a
+			LEFT JOIN contract AS b ON a.contract_code = b.contract_code
+			WHERE
+				a.company_id = ? AND a.product_id IN (` + productId + `) AND a.status = 1
+			ORDER BY
+				a.modify_time DESC`
 	_, err = o.Raw(sql, companyId).QueryRows(&items)
 	return
 }

+ 20 - 2
models/company/company_product.go

@@ -343,15 +343,17 @@ func UpdateCompanyProductModifyTime(companyId, productId int) (err error) {
 	return
 }
 
-// CompanyRemark 备注
+// CompanyProductRemark 备注
 type CompanyProductRemark struct {
-	CompanyProductRemakrId int       `orm:"column(company_product_remark_id);pk" description:"备注id"`
+	CompanyProductRemarkId int       `orm:"column(company_product_remark_id);pk" description:"备注id"`
 	CompanyId              int       `description:"客户id"`
 	ProductId              int       `description:"产品id"`
 	ProductName            string    `description:"产品名称"`
 	Remark                 string    `description:"备注"`
 	CreateTime             time.Time `description:"创建时间"`
 	Mark                   int       `description:"是否标记 0不是 1是"`
+	SysUserId              int       `description:"创建人ID"`
+	SysRealName            string    `description:"创建人姓名"`
 }
 
 func AddCompanyRemark(remark *CompanyProductRemark) (err error) {
@@ -550,3 +552,19 @@ func GetCompanyProductListByScale(status string, productId int) (items []*Compan
 	_, err = o.Raw(sql, status, productId).QueryRows(&items)
 	return
 }
+
+// GetCompanyRemarkById 获取客户备注
+func GetCompanyRemarkById(remarkId int) (item *CompanyProductRemark, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM company_product_remark WHERE company_product_remark_id = ? LIMIT 1`
+	err = o.Raw(sql, remarkId).QueryRow(&item)
+	return
+}
+
+// DelCompanyRemark 删除客户备注
+func DelCompanyRemark(remarkId int) (err error) {
+	o := orm.NewOrm()
+	sql := `DELETE FROM company_product_remark WHERE company_product_remark_id = ? LIMIT 1`
+	_, err = o.Raw(sql, remarkId).Exec()
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -8476,6 +8476,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyController"],
+        beego.ControllerComments{
+            Method: "DelRemark",
+            Router: `/remark/del`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyController"],
         beego.ControllerComments{
             Method: "RenewReasonList",

+ 49 - 0
services/company.go

@@ -2300,3 +2300,52 @@ func FilterReadAndContractAuth(chartPermissions, contractPermissions, condition
 	cond += ` AND a.company_id IN (` + strings.Join(queryIdArr, ",") + `) `
 	return
 }
+
+// GetShareCompanyPermissionButton 正式客户共享-权限按钮(目前仅FICC有正式客户共享, 所以不管权益角色)
+func GetShareCompanyPermissionButton(roleTypeCode, statuses string, productId int) (button *company.ButtonPermission) {
+	statusMap := make(map[int]string)
+	statusMap[productId] = statuses
+	if strings.Contains(statuses, "/") {
+		statusArr := strings.Split(statuses, "/")
+		statusMap[1] = statusArr[0]
+		statusMap[2] = statusArr[1]
+	}
+
+	// 查看权限均有
+	button = new(company.ButtonPermission)
+	button.BtnView = true
+
+	// 超管, FICC管理员
+	if roleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
+		button.BtnModifySeller = true
+		button.BtnRemarkView = true
+		button.BtnServiceRecord = true
+	}
+	status, ok := statusMap[1]
+	if !ok {
+		return
+	}
+
+	// ficc销售
+	ficcArr := []string{
+		utils.ROLE_TYPE_CODE_FICC_GROUP, utils.ROLE_TYPE_CODE_FICC_TEAM, utils.ROLE_TYPE_CODE_FICC_SELLER,
+	}
+	if !utils.InArrayByStr(ficcArr, roleTypeCode) {
+		return
+	}
+	if status == utils.COMPANY_STATUS_TRY_OUT {
+		button.BtnTurnPositive = true
+		button.BtnRemarkEdit = true
+		button.BtnRemarkView = true
+		button.BtnServiceRecord = true
+	}
+	if status == utils.COMPANY_STATUS_FORMAL {
+		button.BtnUpdate = true
+		button.BtnAddAgreement = true
+		button.BtnTryOut = true
+		button.BtnRemarkEdit = true
+		button.BtnRemarkView = true
+		button.BtnServiceRecord = true
+	}
+	return
+}