Преглед на файлове

Merge branch 'crm/crm_15.9.1' of http://8.136.199.33:3000/hongze/hz_crm_api

xingzai преди 6 месеца
родител
ревизия
6905b1c30a

+ 86 - 4
controllers/company.go

@@ -1702,6 +1702,14 @@ func (this *CompanyController) List() {
 			//永续客户X类试用客户出参转换
 			v.StatusStr = strings.Replace(v.StatusStr, utils.COMPANY_STATUS_FOREVER, utils.COMPANY_STATUS_X_CLASS_TRY_OUT, -1)
 
+			if !utils.InArrayByStr([]string{"正式", "试用", "永续", "X类试用"}, v.Status) { //不是这几种状态不做标红处理
+				v.IsUserMaker = 0
+			}
+
+			//解决共享客户正式筛选下是否标红的问题
+			if v.WeekViewActive == 0 && v.IsUserMaker == 1 {
+				v.WeekViewActive = 1
+			}
 			companyList := &company.CompanyListItem{
 				CompanyId:        v.CompanyId,
 				CompanyName:      v.CompanyName,
@@ -1766,6 +1774,7 @@ func (this *CompanyController) List() {
 				CloseReason:     v.CloseReason,
 				ShareSellerId:   v.ShareSellerId,
 				ShareSellerIds:  v.ShareSellerIds,
+				IsUserMaker:     v.IsUserMaker,
 			}
 			if v.ShareSellerIds != "" {
 				shareSellerIds := strings.Split(v.ShareSellerIds, ",")
@@ -8237,7 +8246,8 @@ func (this *CompanyController) EditTryOutCompanyReason() {
 	endDateTime, _ = time.Parse(utils.FormatDate, endDate)
 	sub := time.Now().Sub(endDateTime)
 	renewalReason.ExpirationTimeExceeded = int(sub.Hours() / 24)
-	err = company.AddRenewalReason(&renewalReason)
+	var newId int64
+	newId, err = company.AddRenewalReason(&renewalReason)
 	if err != nil {
 		br.Msg = "新增续约情况说明操作异常!"
 		br.ErrMsg = "新增续约情况说明操作异常,err:" + err.Error()
@@ -8342,6 +8352,22 @@ func (this *CompanyController) EditTryOutCompanyReason() {
 		return
 	}
 
+	if req.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+		//权益客户新增历史备注总表
+		itemRecord := new(company.CompanyHistoryRemark)
+		itemRecord.CompanyId = req.CompanyId
+		itemRecord.Content = req.Remark
+		itemRecord.SysAdminId = sysUser.AdminId
+		itemRecord.SysAdminName = sysUser.RealName
+		itemRecord.CreateTime = time.Now().Local()
+		itemRecord.ModifyTime = time.Now().Local()
+		itemRecord.ShowTime = time.Now().Local()
+		itemRecord.ProductId = 2
+		itemRecord.TableName = "company_renewal_reason"
+		itemRecord.TableId = int(newId)
+		go services.AddCompanyHistoryRemark(itemRecord)
+	}
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "编辑成功"
@@ -8437,7 +8463,8 @@ func (this *CompanyController) AddTryOutCompanyReason() {
 	endDateTime, _ = time.Parse(utils.FormatDate, endDate)
 	sub := time.Now().Sub(endDateTime)
 	renewalReason.ExpirationTimeExceeded = int(sub.Hours() / 24)
-	err = company.AddRenewalReason(&renewalReason)
+	var newId int64
+	newId, err = company.AddRenewalReason(&renewalReason)
 	if err != nil {
 		br.Msg = "新增续约情况说明操作异常!"
 		br.ErrMsg = "新增续约情况说明操作异常,err:" + err.Error()
@@ -8523,6 +8550,22 @@ func (this *CompanyController) AddTryOutCompanyReason() {
 			companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, approveContentExtra, sysUser.RealName, "", companyProduct.Status)
 	}
 
+	if req.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+		//权益客户新增历史备注总表
+		itemRecord := new(company.CompanyHistoryRemark)
+		itemRecord.CompanyId = req.CompanyId
+		itemRecord.Content = req.Remark
+		itemRecord.SysAdminId = sysUser.AdminId
+		itemRecord.SysAdminName = sysUser.RealName
+		itemRecord.CreateTime = time.Now().Local()
+		itemRecord.ModifyTime = time.Now().Local()
+		itemRecord.ShowTime = time.Now().Local()
+		itemRecord.ProductId = 2
+		itemRecord.TableName = "company_renewal_reason"
+		itemRecord.TableId = int(newId)
+		go services.AddCompanyHistoryRemark(itemRecord)
+	}
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "编辑成功"
@@ -8678,7 +8721,9 @@ func (this *CompanyController) AddRenewalReason() {
 	endDateTime, _ = time.Parse(utils.FormatDate, endDate)
 	sub := time.Now().Sub(endDateTime)
 	renewalReason.ExpirationTimeExceeded = int(sub.Hours() / 24)
-	err = company.AddRenewalReason(&renewalReason)
+
+	var newId int64
+	newId, err = company.AddRenewalReason(&renewalReason)
 	if err != nil {
 		br.Msg = "新增续约情况说明操作异常!"
 		br.ErrMsg = "新增续约情况说明操作异常,err:" + err.Error()
@@ -8774,6 +8819,22 @@ func (this *CompanyController) AddRenewalReason() {
 		}
 	}
 
+	if req.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+		//权益客户新增历史备注总表
+		itemRecord := new(company.CompanyHistoryRemark)
+		itemRecord.CompanyId = req.CompanyId
+		itemRecord.Content = req.Remark
+		itemRecord.SysAdminId = sysUser.AdminId
+		itemRecord.SysAdminName = sysUser.RealName
+		itemRecord.CreateTime = time.Now().Local()
+		itemRecord.ModifyTime = time.Now().Local()
+		itemRecord.ShowTime = time.Now().Local()
+		itemRecord.ProductId = 2
+		itemRecord.TableName = "company_renewal_reason"
+		itemRecord.TableId = int(newId)
+		go services.AddCompanyHistoryRemark(itemRecord)
+	}
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "编辑成功"
@@ -8849,7 +8910,8 @@ func (this *CompanyController) AddRemark() {
 		SysRealName: sysUser.RealName,
 	}
 
-	err = company.AddCompanyRemark(&remark)
+	var newId int64
+	newId, err = company.AddCompanyRemark(&remark)
 
 	{
 		approveContent := req.Remark
@@ -8863,6 +8925,23 @@ func (this *CompanyController) AddRemark() {
 		br.Msg = "编辑失败"
 		br.ErrMsg = "编辑失败,Err:" + err.Error()
 	}
+
+	//如果是权益的写入历史备注表
+	if productId == utils.COMPANY_PRODUCT_RAI_ID {
+		//权益客户新增历史备注总表
+		itemRecord := new(company.CompanyHistoryRemark)
+		itemRecord.CompanyId = req.CompanyId
+		itemRecord.Content = req.Remark
+		itemRecord.SysAdminId = sysUser.AdminId
+		itemRecord.SysAdminName = sysUser.RealName
+		itemRecord.CreateTime = time.Now().Local()
+		itemRecord.ModifyTime = time.Now().Local()
+		itemRecord.ShowTime = time.Now().Local()
+		itemRecord.ProductId = 2
+		itemRecord.TableName = "company_product_remark"
+		itemRecord.TableId = int(newId)
+		go services.AddCompanyHistoryRemark(itemRecord)
+	}
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "编辑成功"
@@ -9505,6 +9584,9 @@ func (this *CompanyController) DelRemark() {
 	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)
 
+	if item.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+		go services.DelCompanyHistoryRemark("company_product_remark", req.RemarkId) // 删除
+	}
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "操作成功"

+ 20 - 1
controllers/company_renewal.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
+	"hongze/hz_crm_api/services"
 	"hongze/hz_crm_api/utils"
 	"time"
 )
@@ -159,12 +160,30 @@ func (this *CompanyRenewalController) CompanyNoRenewedNoteAdd() {
 	item.ProductId = productId
 	item.CreateTime = time.Now()
 	item.ModifyTime = time.Now()
-	err = company.AddCompanyNoRenewedNote(item)
+	var newId int64
+	newId, err = company.AddCompanyNoRenewedNote(item)
 	if err != nil {
 		br.Msg = "新建失败"
 		br.ErrMsg = "新建失败,Err:" + err.Error()
 		return
 	}
+
+	if productId == utils.COMPANY_PRODUCT_RAI_ID {
+		//权益客户新增历史备注总表
+		itemRecord := new(company.CompanyHistoryRemark)
+		itemRecord.CompanyId = req.CompanyId
+		itemRecord.Content = req.Content
+		itemRecord.SysAdminId = sysUser.AdminId
+		itemRecord.SysAdminName = sysUser.RealName
+		itemRecord.CreateTime = time.Now().Local()
+		itemRecord.ModifyTime = time.Now().Local()
+		itemRecord.ShowTime = time.Now().Local()
+		itemRecord.ProductId = 2
+		itemRecord.TableName = "company_no_renewed_note"
+		itemRecord.TableId = int(newId)
+		go services.AddCompanyHistoryRemark(itemRecord)
+	}
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "新建成功"

+ 18 - 1
controllers/company_service_record.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
+	"hongze/hz_crm_api/services"
 	"hongze/hz_crm_api/utils"
 	"strings"
 	"time"
@@ -128,12 +129,28 @@ func (this *CompanyServiceRecordController) ServiceRecordAdd() {
 	item.SysAdminName = sysUser.RealName
 	item.CreateTime = time.Now().Local()
 	item.ModifyTime = time.Now().Local()
-	if e := item.Create(); e != nil {
+
+	newId, e := item.Create()
+	if e != nil {
 		br.Msg = "操作失败"
 		br.ErrMsg = "新增沟通记录失败, Err: " + e.Error()
 		return
 	}
 
+	//权益客户新增历史备注总表
+	itemRecord := new(company.CompanyHistoryRemark)
+	itemRecord.CompanyId = req.CompanyId
+	itemRecord.Content = req.Content
+	itemRecord.SysAdminId = sysUser.AdminId
+	itemRecord.SysAdminName = sysUser.RealName
+	itemRecord.CreateTime = time.Now().Local()
+	itemRecord.ModifyTime = time.Now().Local()
+	itemRecord.ShowTime = time.Now().Local()
+	itemRecord.ProductId = 2
+	itemRecord.TableName = "company_service_record"
+	itemRecord.TableId = newId
+	go services.AddCompanyHistoryRemark(itemRecord)
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "操作成功"

+ 20 - 1
controllers/company_share.go

@@ -653,6 +653,7 @@ func (this *CompanyController) CompanyShareList() {
 				ShareSellerId:   v.ShareSellerId,
 				LastServiceTime: v.LastServiceTime,
 				ServiceTimes:    v.ServiceTimes,
+				IsUserMaker:     v.IsUserMaker,
 			}
 			if v.ShareSellerIds != "" {
 				shareSellerIds := strings.Split(v.ShareSellerIds, ",")
@@ -848,7 +849,8 @@ func (this *CompanyController) CompanyShareAddRemark() {
 		SysUserId:   sysUser.AdminId,
 		SysRealName: sysUser.RealName,
 	}
-	err = company.AddCompanyRemark(&remark)
+	var newId int64
+	newId, err = company.AddCompanyRemark(&remark)
 	if err != nil {
 		br.Msg = "操作失败"
 		br.ErrMsg = "新增共享客户备注失败, Err: " + err.Error()
@@ -863,6 +865,23 @@ func (this *CompanyController) CompanyShareAddRemark() {
 			companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, sysUser.RealName, "", companyProduct.Status)
 	}()
 
+	//如果是权益的写入历史备注表
+	if productId == utils.COMPANY_PRODUCT_RAI_ID {
+		//权益客户新增历史备注总表
+		itemRecord := new(company.CompanyHistoryRemark)
+		itemRecord.CompanyId = req.CompanyId
+		itemRecord.Content = req.Remark
+		itemRecord.SysAdminId = sysUser.AdminId
+		itemRecord.SysAdminName = sysUser.RealName
+		itemRecord.CreateTime = time.Now().Local()
+		itemRecord.ModifyTime = time.Now().Local()
+		itemRecord.ShowTime = time.Now().Local()
+		itemRecord.ProductId = 2
+		itemRecord.TableName = "company_product_remark"
+		itemRecord.TableId = int(newId)
+		go services.AddCompanyHistoryRemark(itemRecord)
+	}
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "编辑成功"

+ 152 - 4
controllers/cygx/rai_serve.go

@@ -1,12 +1,14 @@
 package cygx
 
 import (
+	"encoding/json"
 	"errors"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"github.com/tealeg/xlsx"
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/roadshow"
 	cygxService "hongze/hz_crm_api/services/cygx"
@@ -485,9 +487,7 @@ func (this *RaiServeCoAntroller) List() {
 		item.ShareSellerId = v.ShareSellerId
 		item.Status = v.Status
 		item.PermissionName = v.PermissionName
-		if v.IsUserMaker == 0 {
-			item.IsRed = true
-		}
+		item.IsUserMaker = v.IsUserMaker
 		item.ThisWeekAmount = mapWeekAmount[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", 0)]
 		item.LastWeekAmount = mapWeekAmount[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", 1)]
 		item.TwoWeekAmount = mapWeekAmount[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", 2)]
@@ -624,7 +624,7 @@ func RaiServeListExport(this *RaiServeCoAntroller, resp *cygx.CygxRaiServeCompan
 		dataRow.SetHeight(20)
 
 		cellA := dataRow.AddCell()
-		if v.IsRed {
+		if v.IsUserMaker == 0 {
 			cellA.SetStyle(redStyle)
 		} else {
 			cellA.SetStyle(style)
@@ -1034,3 +1034,151 @@ func (this *RaiServeCoAntroller) BillList() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// AddCompanyHistoryRemark
+// @Title 新增历史备注
+// @Description 新增历史备注
+// @Param	request	body company.CompanyHistoryRemarkReq true "type json string"
+// @Success 200 编辑成功
+// @router /rai_serve/remark/add [post]
+func (this *RaiServeCoAntroller) AddRemark() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		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.CompanyHistoryRemarkReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.CompanyId <= 0 {
+		br.Msg = "参数缺失"
+		br.ErrMsg = "参数缺失,客户编号未传!"
+		return
+	}
+	if req.Content == "" {
+		br.Msg = "参数缺失"
+		br.ErrMsg = "参数缺失,备注说明未传!"
+		return
+	}
+	var productId int
+	//var productName string
+	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
+		br.Msg = "角色类型错误"
+		br.ErrMsg = "角色类型错误,该角色不能添加备注!"
+		return
+	}
+	productId = 2
+
+	item := new(company.CompanyHistoryRemark)
+	item.CompanyId = req.CompanyId
+	item.ProductId = productId
+	item.Content = req.Content
+	item.SysAdminId = sysUser.AdminId
+	item.SysAdminName = sysUser.RealName
+	item.CreateTime = time.Now()
+	item.ModifyTime = time.Now()
+	item.ShowTime = time.Now()
+	item.TableName = "company_history_remark"
+
+	err = company.AddCompanyHistoryRemark(item)
+
+	//{
+	//	approveContent := req.Remark
+	//	remark := "新增备注"
+	//	operation := "add_remark"
+	//	services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, companyProduct.ProductId, sysUser.AdminId, companyProduct.CompanyName,
+	//		companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, sysUser.RealName, "", companyProduct.Status)
+	//}
+
+	if err != nil {
+		br.Msg = "编辑失败"
+		br.ErrMsg = "编辑失败,Err:" + err.Error()
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "编辑成功"
+}
+
+// RemarkList 备注列表
+// @Title 备注列表
+// @Description 备注列表
+// @Param   CompanyId   query   string  true       "客户id"
+// @Success 200 {object} company.RemarkResp
+// @router /rai_serve/remark/list [get]
+func (this *RaiServeCoAntroller) RemarkList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	companyId := this.GetString("CompanyId")
+	var remarkList []*company.CompanyHistoryRemark
+	var err error
+
+	groupFicc := []string{
+		utils.ROLE_TYPE_CODE_FICC_SELLER, utils.ROLE_TYPE_CODE_FICC_TEAM, utils.ROLE_TYPE_CODE_FICC_GROUP,
+		utils.ROLE_TYPE_CODE_FICC_DEPARTMENT, utils.ROLE_TYPE_CODE_FICC_ADMIN,
+	}
+
+	if utils.InArrayByStr(groupFicc, sysUser.RoleTypeCode) {
+		br.Msg = "角色类型错误"
+		br.ErrMsg = "角色类型错误,该角色不能添加备注!"
+		return
+	}
+
+	remarkList, err = company.GetCompanyHistoryRemarkList(companyId, "2")
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+
+	resp := new(company.CompanyHistoryRemarkListResp)
+	for _, v := range remarkList {
+		item := new(company.CompanyHistoryRemarkResp)
+		item.CompanyId = v.CompanyId
+		item.Content = v.Content
+		item.SysAdminName = v.SysAdminName
+		item.CreateTime = v.ShowTime.Format(utils.FormatDateTime)
+		switch v.TableName {
+		case "company_service_record":
+			item.RemarkType = "沟通记录"
+		case "company_product_remark":
+			item.RemarkType = "备注"
+		case "company_no_renewed_note":
+			item.RemarkType = "未续约备注"
+		case "company_renewal_reason":
+			item.RemarkType = "未续约说明"
+		case "cygx_user_feedback":
+			item.RemarkType = "交流反馈(" + v.RealName + ")"
+		default:
+			item.RemarkType = "备注"
+		}
+		resp.List = append(resp.List, item)
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 4 - 194
controllers/cygx/user.go

@@ -114,199 +114,6 @@ func (this *UserController) List() {
 	//流失客户统计
 	lossCondition += ` AND status='流失' `
 
-	//productId := services.GetProductId(roleTypeCode)
-	//productId := 2
-	//权限控制
-	//{
-	//	//如果不是超级管理员或者财务
-	//	if roleTypeCode != utils.ROLE_TYPE_CODE_ADMIN && roleTypeCode != utils.ROLE_TYPE_CODE_FINANCE {
-	//		//如果是部门管理员
-	//		if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
-	//			condition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'`
-	//
-	//			lossCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'`
-	//
-	//			permissionCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'`
-	//
-	//		} else {
-	//			condition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'`
-	//
-	//			lossCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'`
-	//
-	//			permissionCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'`
-	//
-	//			if status == "全部" {
-	//				////如果是筛选了流失客户状态
-	//				if sysUser.Authority <= 0 {
-	//					condition += ` AND (b.seller_id= '` + strconv.Itoa(sysUser.AdminId) + `' OR status='流失')  `
-	//
-	//					permissionCondition += ` AND b.seller_id= ` + strconv.Itoa(sysUser.AdminId)
-	//				} else {
-	//					if sysUser.Authority == 1 {
-	//						condition += ` AND (b.department_id=` + strconv.Itoa(sysUser.DepartmentId) + `  OR status='流失')`
-	//						permissionCondition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId)
-	//					}
-	//					if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
-	//						if status != utils.COMPANY_STATUS_LOSE {
-	//							condition += ` AND (b.group_id=` + strconv.Itoa(sysUser.GroupId) + `  OR status='流失') `
-	//						}
-	//						permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId)
-	//
-	//					}
-	//
-	//					if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
-	//						pid, err := company.GetParentIdFromGroup(sysUser.GroupId)
-	//						if err != nil {
-	//							br.Msg = "获取失败"
-	//							br.ErrMsg = "查询父级id异常" + err.Error()
-	//							return
-	//						}
-	//						var ids []*string
-	//						if pid != nil {
-	//							if *pid != 0 {
-	//								//销售主管放在三级列表中
-	//								ids, err = company.GetGroupIdsByParentId(*pid)
-	//								if err != nil {
-	//									fmt.Println(err.Error())
-	//								}
-	//							} else {
-	//								//销售主管放在二级列表中
-	//								ids, err = company.GetGroupIdsByParentId(sysUser.GroupId)
-	//								if err != nil {
-	//									fmt.Println(err.Error())
-	//								}
-	//							}
-	//						}
-	//						var idSlice []string
-	//						var sid string
-	//						for _, id := range ids {
-	//							idSlice = append(idSlice, *id)
-	//						}
-	//						//加入父级groupId
-	//						if *pid > 0 {
-	//							idSlice = append(idSlice, strconv.Itoa(*pid))
-	//						} else {
-	//							idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId))
-	//						}
-	//
-	//						sid = strings.Join(idSlice, ",")
-	//						if len(sid) > 0 {
-	//							if status != utils.COMPANY_STATUS_LOSE {
-	//								condition += ` AND (b.group_id IN (` + sid + `) OR status='流失') `
-	//							}
-	//
-	//							permissionCondition += ` AND b.group_id IN (` + sid + `) `
-	//						} else {
-	//							if status != utils.COMPANY_STATUS_LOSE {
-	//								condition += ` AND (b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) OR status='流失') `
-	//							}
-	//							permissionCondition += ` AND b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) `
-	//						}
-	//					}
-	//					if sysUser.Authority == 4 {
-	//						if status != utils.COMPANY_STATUS_LOSE {
-	//							condition += ` AND (b.group_id =` + strconv.Itoa(sysUser.GroupId) + ` OR status='流失') `
-	//							//pars = append(pars, sysUser.GroupId)
-	//						}
-	//						permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId)
-	//						//permissionPars = append(permissionPars, sysUser.GroupId)
-	//					}
-	//				}
-	//			} else {
-	//				//如果没有筛选了流失客户状态,那么需要加客户归属条件加入到查询中去
-	//				if sysUser.Authority <= 0 {
-	//					if status != utils.COMPANY_STATUS_LOSE {
-	//						condition += ` AND b.seller_id=` + strconv.Itoa(sysUser.AdminId)
-	//						//pars = append(pars, sysUser.AdminId)
-	//					}
-	//
-	//					permissionCondition += ` AND b.seller_id=` + strconv.Itoa(sysUser.AdminId)
-	//					//permissionPars = append(permissionPars, sysUser.AdminId)
-	//				} else {
-	//					if sysUser.Authority == 1 {
-	//						if status != utils.COMPANY_STATUS_LOSE {
-	//							condition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId)
-	//							//pars = append(pars, sysUser.DepartmentId)
-	//						}
-	//						permissionCondition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId)
-	//						//permissionPars = append(permissionPars, sysUser.DepartmentId)
-	//					}
-	//					if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
-	//						if status != utils.COMPANY_STATUS_LOSE {
-	//							condition += ` AND b.group_id= ` + strconv.Itoa(sysUser.GroupId)
-	//							//pars = append(pars, sysUser.GroupId)
-	//						}
-	//						permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId)
-	//						//permissionPars = append(permissionPars, sysUser.GroupId)
-	//					}
-	//					if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
-	//						pid, err := company.GetParentIdFromGroup(sysUser.GroupId)
-	//						if err != nil {
-	//							br.Msg = "获取失败"
-	//							br.ErrMsg = "查询父级id异常" + err.Error()
-	//							return
-	//						}
-	//						var ids []*string
-	//						if pid != nil {
-	//							if *pid != 0 {
-	//								//销售主管放在三级列表中
-	//								ids, err = company.GetGroupIdsByParentId(*pid)
-	//								if err != nil {
-	//									fmt.Println(err.Error())
-	//								}
-	//							} else {
-	//								//销售主管放在二级列表中
-	//								ids, err = company.GetGroupIdsByParentId(sysUser.GroupId)
-	//								if err != nil {
-	//									fmt.Println(err.Error())
-	//								}
-	//							}
-	//						}
-	//						var idSlice []string
-	//						var sid string
-	//						for _, id := range ids {
-	//							idSlice = append(idSlice, *id)
-	//						}
-	//						//加入父级groupId
-	//						if *pid > 0 {
-	//							idSlice = append(idSlice, strconv.Itoa(*pid))
-	//						} else {
-	//							idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId))
-	//						}
-	//
-	//						sid = strings.Join(idSlice, ",")
-	//						if len(sid) > 0 {
-	//							if status != utils.COMPANY_STATUS_LOSE {
-	//								condition += ` AND (b.group_id IN (` + sid + `) OR status='流失') `
-	//								//pars = append(pars, sysUser.GroupId)
-	//							}
-	//
-	//							permissionCondition += ` AND b.group_id IN (` + sid + `) `
-	//						} else {
-	//							if status != utils.COMPANY_STATUS_LOSE {
-	//								condition += ` AND (b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) OR status='流失') `
-	//								//pars = append(pars, sysUser.GroupId)
-	//							}
-	//
-	//							permissionCondition += ` AND b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) `
-	//						}
-	//					}
-	//
-	//					if sysUser.Authority == 4 {
-	//						if status != utils.COMPANY_STATUS_LOSE {
-	//							condition += ` AND b.group_id =` + strconv.Itoa(sysUser.GroupId)
-	//							//pars = append(pars, sysUser.GroupId)
-	//						}
-	//
-	//						permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId)
-	//						//permissionPars = append(permissionPars, sysUser.GroupId)
-	//					}
-	//				}
-	//			}
-	//		}
-	//	}
-	//}
-
 	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER { //权益销售的查询逻辑
 		condition += ` AND ( cp.seller_id = ` + strconv.Itoa(sysUser.AdminId) + `  OR cp.share_seller_id = ` + strconv.Itoa(sysUser.AdminId) + `)`
 	} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP { // 权益销售组长查询逻辑
@@ -440,6 +247,7 @@ func (this *UserController) List() {
 	}
 	var userIds string
 	var userIdArr []int
+	var companyIds []int
 	if list != nil {
 		for k, v := range list {
 			if v.RegisterTime != "" {
@@ -477,6 +285,7 @@ func (this *UserController) List() {
 			if !isAdminRole {
 				list[k].CompanyInteractionNum = v.CompanyInteractionNumSeller
 			}
+			companyIds = append(companyIds, v.CompanyId)
 		}
 		userIds = strings.TrimRight(userIds, ",")
 		splitList, err := cygx.GetCygxCompanyUserListSplit(userIds)
@@ -500,7 +309,7 @@ func (this *UserController) List() {
 		}
 
 		UserRemindListMap := cygxService.GetCygxUserRemindListMap(userIdArr)
-
+		mapIsUserMaker := cygxService.GetCompanyProductIsUserMakerByCompanyIds(companyIds) //根据公司ID获取近四周之内有决策人互动的客户
 		for k, v := range list {
 			for _, vsplit := range splitList {
 				if vsplit.UserId == v.UserId {
@@ -523,6 +332,7 @@ func (this *UserController) List() {
 				list[k].Content = mapUserRemarks[int(v.UserId)]
 			}
 			list[k].IsRemind = UserRemindListMap[int(v.UserId)]
+			list[k].IsUserMaker = mapIsUserMaker[v.CompanyId]
 		}
 		for k := range list {
 			list[k].InteractionNum = list[k].HistoryNum + list[k].CountNum + list[k].IndustryFllowNum + list[k].DepartmentFollowNum + list[k].KeyWordNum + list[k].OnLineNum + list[k].OfficeNum + list[k].ChartNum + list[k].TripNum + list[k].RoadshowVideoNum + list[k].ActivityVideoNum + list[k].ActivityVoiceNum + list[k].YanxuanspecialNum

+ 26 - 2
controllers/cygx/user_feedback.go

@@ -4,7 +4,9 @@ import (
 	"encoding/json"
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/cygx"
+	"hongze/hz_crm_api/services"
 	"time"
 )
 
@@ -60,12 +62,32 @@ func (this *UserFeedbackController) UserFeedbackAdd() {
 	item.RealName = wxUser.RealName
 	item.AdminId = sysUser.AdminId
 	item.CreateTime = time.Now()
-	_, err = cygx.AddCygxUserFeedback(item)
+	var newId int64
+	newId, err = cygx.AddCygxUserFeedback(item)
 	if err != nil {
 		br.Msg = "新增失败."
 		br.ErrMsg = "新增失败,Err:" + err.Error()
 		return
 	}
+
+	//权益客户新增历史备注总表
+	itemRecord := new(company.CompanyHistoryRemark)
+	itemRecord.CompanyId = wxUser.CompanyId
+	itemRecord.Content = req.Content
+	itemRecord.SysAdminId = sysUser.AdminId
+	itemRecord.SysAdminName = sysUser.RealName
+	itemRecord.CreateTime = time.Now().Local()
+	itemRecord.ModifyTime = time.Now().Local()
+	itemRecord.ShowTime = time.Now().Local()
+	itemRecord.ProductId = 2
+	itemRecord.UserId = wxUser.UserId
+	itemRecord.Mobile = wxUser.Mobile
+	itemRecord.Email = wxUser.Email
+	itemRecord.RealName = wxUser.RealName
+	itemRecord.TableName = "cygx_user_feedback"
+	itemRecord.TableId = int(newId)
+	go services.AddCompanyHistoryRemark(itemRecord)
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "操作成功"
@@ -134,7 +156,6 @@ func (this *UserFeedbackController) UserFeedbackDel() {
 		return
 	}
 	userFeedbackId := req.UserFeedbackId
-
 	if userFeedbackId < 0 {
 		br.Msg = "参数错误!"
 		return
@@ -146,6 +167,9 @@ func (this *UserFeedbackController) UserFeedbackDel() {
 		br.ErrMsg = "删除失败,Err:" + err.Error()
 		return
 	}
+
+	go services.DelCompanyHistoryRemark("cygx_user_feedback", userFeedbackId) // 删除
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "删除成功"

+ 5 - 0
controllers/statistic_company_merge.go

@@ -403,6 +403,7 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 		list = make([]*models.IncrementalList, 0)
 	}
 	var companyContractIds []int
+	var companyIds []int
 	for i := 0; i < listLen; i++ {
 		item := list[i]
 		companyContractIds = append(companyContractIds, item.CompanyContractId)
@@ -415,6 +416,7 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 			expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
 			list[i].ExpireDay = expireDay
 		}
+		companyIds = append(companyIds, item.CompanyId)
 	}
 
 	//合并合同所对应的权限
@@ -424,8 +426,11 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+
+	mapIsUserMaker := cygxService.GetCompanyProductIsUserMakerByCompanyIds(companyIds) //根据公司ID获取近四周之内有决策人互动的客户
 	for _, v := range list {
 		v.PermissionName = mappermissionName[v.CompanyContractId]
+		v.IsUserMaker = mapIsUserMaker[v.CompanyId]
 	}
 
 	page := paging.GetPaging(currentIndex, pageSize, dataTotal)

+ 27 - 24
models/company/company.go

@@ -213,6 +213,7 @@ type CompanyItem struct {
 	CloseReason         string               `description:"关闭原因"`
 	CloseTime           string               `description:"关闭时间"`
 	Nation              string               `description:"所属国家"`
+	IsUserMaker         int                  `description:"近四周之内是否包含决策人互动过 ,0否,1是"`
 	LatestServiceRecord time.Time            `description:"最近沟通时间"`
 	FirstDate           time.Time            `description:"首次服务时间"`
 }
@@ -281,6 +282,7 @@ type CompanyListItem struct {
 	CloseReason      string               `description:"关闭客户原因"`
 	CloseTime        string               `description:"关闭客户时间"`
 	IsScrounge       int                  `description:"是否白嫖 0不是 1是"`
+	IsUserMaker      int                  `description:"近四周之内是否包含决策人互动过 ,0否,1是"`
 }
 
 type TryStageSliceItem struct {
@@ -320,7 +322,7 @@ func GetCompanyList(condition, status, sortStr string, pars []interface{}, start
 	// 权益客户: 以权益最后一次阅读时间作为参考
 	t := time.Now().Local().AddDate(0, 0, -7).Format(utils.FormatDate)
 
-	sql := `SELECT a.company_id,a.company_name,a.credit_code,a.company_code,a.created_time,a.province,a.city,a.address,a.region_type,b.group_id,b.road_show_total,b.is_share,
+	sql := `SELECT a.company_id,a.company_name,a.credit_code,a.company_code,a.created_time,a.province,a.city,a.address,a.region_type,b.group_id,b.road_show_total,b.is_share,b.is_user_maker,
 			CASE 
      WHEN GROUP_CONCAT(b.status) LIKE "%永续%" THEN 1
 	 WHEN GROUP_CONCAT(b.status) LIKE "%正式%" THEN 2
@@ -1235,29 +1237,30 @@ type CheckCompanyInfoRepeatResp struct {
 }
 
 type ButtonPermission struct {
-	BtnView          bool `description:"查看按钮权限:true显示,false不显示"`
-	BtnEdit          bool `description:"编辑按钮权限:true显示,false不显示"`
-	BtnDelete        bool `description:"删除按钮权限:true显示,false不显示"`
-	BtnSuspend       bool `description:"暂停/启用按钮权限:true显示,false不显示"`
-	BtnDelay         bool `description:"申请延期按钮权限:true显示,false不显示"`
-	BtnTurnPositive  bool `description:"申请转正按钮权限:true显示,false不显示"`
-	BtnUpdate        bool `description:"服务更新按钮权限:true显示,false不显示"`
-	BtnAddAgreement  bool `description:"补充协议按钮权限:true显示,false不显示"`
-	BtnThaw          bool `description:"申请解冻按钮权限:true显示,false不显示"`
-	BtnApplyReceive  bool `description:"申请领取按钮权限:true显示,false不显示"`
-	BtnReceive       bool `description:"领取客户按钮权限:true显示,false不显示"`
-	BtnModifySeller  bool `description:"修改销售按钮权限:true显示,false不显示"`
-	BtnReceiveOther  bool `description:"领取其他部门客户按钮权限:true显示,false不显示"`
-	BtnFreeze        bool `description:"冻结按钮权限:true显示,false不显示"`
-	BtnTryOut        bool `description:"增开试用:true显示,false不显示"`
-	BtnDetail        bool `description:"详情按钮:true显示,false不显示"`
-	BtnRemarkEdit    bool `description:"编辑备注按钮:true显示,false不显示"`
-	BtnRemarkView    bool `description:"查看备注按钮:true显示,false不显示"`
-	BtnShare         bool `description:"设置共享按钮:true显示,false不显示"`
-	BtnServiceRecord bool `description:"查看服务记录按钮:true显示,false不显示"`
-	BtnClose         bool `description:"关闭客户按钮:true显示,false不显示"`
-	BtnLoss          bool `description:"转流失按钮:true显示,false不显示"`
-	IsResearchShow   bool `description:"研选详情展示控制:true显示,false不显示"`
+	BtnView              bool `description:"查看按钮权限:true显示,false不显示"`
+	BtnEdit              bool `description:"编辑按钮权限:true显示,false不显示"`
+	BtnDelete            bool `description:"删除按钮权限:true显示,false不显示"`
+	BtnSuspend           bool `description:"暂停/启用按钮权限:true显示,false不显示"`
+	BtnDelay             bool `description:"申请延期按钮权限:true显示,false不显示"`
+	BtnTurnPositive      bool `description:"申请转正按钮权限:true显示,false不显示"`
+	BtnUpdate            bool `description:"服务更新按钮权限:true显示,false不显示"`
+	BtnAddAgreement      bool `description:"补充协议按钮权限:true显示,false不显示"`
+	BtnThaw              bool `description:"申请解冻按钮权限:true显示,false不显示"`
+	BtnApplyReceive      bool `description:"申请领取按钮权限:true显示,false不显示"`
+	BtnReceive           bool `description:"领取客户按钮权限:true显示,false不显示"`
+	BtnModifySeller      bool `description:"修改销售按钮权限:true显示,false不显示"`
+	BtnReceiveOther      bool `description:"领取其他部门客户按钮权限:true显示,false不显示"`
+	BtnFreeze            bool `description:"冻结按钮权限:true显示,false不显示"`
+	BtnTryOut            bool `description:"增开试用:true显示,false不显示"`
+	BtnDetail            bool `description:"详情按钮:true显示,false不显示"`
+	BtnRemarkEdit        bool `description:"编辑备注按钮:true显示,false不显示"`
+	BtnRemarkView        bool `description:"查看备注按钮:true显示,false不显示"`
+	BtnRemarkViewHistory bool `description:"查看历史备注按钮:true显示,false不显示"`
+	BtnShare             bool `description:"设置共享按钮:true显示,false不显示"`
+	BtnServiceRecord     bool `description:"查看服务记录按钮:true显示,false不显示"`
+	BtnClose             bool `description:"关闭客户按钮:true显示,false不显示"`
+	BtnLoss              bool `description:"转流失按钮:true显示,false不显示"`
+	IsResearchShow       bool `description:"研选详情展示控制:true显示,false不显示"`
 }
 
 type ButtonSearchPermission struct {

+ 96 - 0
models/company/company_history_remark.go

@@ -0,0 +1,96 @@
+package company
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CompanyHistoryRemark struct {
+	HistoryId    int       `orm:"column(history_id);pk" comment:"备注id"`
+	CompanyId    int       `comment:"客户ID"`
+	ProductId    int       `comment:"产品id"`
+	Content      string    `comment:"备注内容"`
+	SysAdminId   int       `comment:"创建人ID"`
+	SysAdminName string    `comment:"创建人姓名"`
+	CreateTime   time.Time `comment:"创建时间"`
+	ModifyTime   time.Time `comment:"更新时间"`
+	TableName    string    `comment:"表名"`
+	TableId      int       `comment:"表ID"`
+	UserId       int       `comment:"用户ID"`
+	Mobile       string    `comment:"手机号"`
+	Email        string    `comment:"邮箱"`
+	RealName     string    `comment:"用户实际名称"`
+	ShowTime     time.Time `comment:"对外展示的创建时间"`
+}
+
+// CompanyHistoryRemarkReq 新增历史备注请求
+type CompanyHistoryRemarkReq struct {
+	CompanyId int    `description:"客户id"`
+	Content   string `description:"备注内容"`
+}
+
+// 新增
+func AddCompanyHistoryRemark(remark *CompanyHistoryRemark) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(remark)
+	return
+}
+
+type CompanyHistoryRemarkResp struct {
+	CompanyId    int    `comment:"客户ID"`
+	Content      string `comment:"备注内容"`
+	SysAdminName string `comment:"创建人姓名"`
+	RemarkType   string `comment:"备注类型"`
+	CreateTime   string `comment:"对外展示的创建时间"`
+}
+
+type CompanyHistoryRemarkListResp struct {
+	List []*CompanyHistoryRemarkResp
+}
+
+// GetCompanyHistoryRemarkList 获取备注列表
+func GetCompanyHistoryRemarkList(CompanyId, ProductId string) (items []*CompanyHistoryRemark, err error) {
+	o := orm.NewOrm()
+	sql := "SELECT * FROM company_history_remark WHERE company_id=? AND product_id=? ORDER BY show_time DESC "
+	_, err = o.Raw(sql, CompanyId, ProductId).QueryRows(&items)
+	return
+}
+
+// DelCompanyHistoryRemark 删除客户历史备注
+func DelCompanyHistoryRemark(tableName string, tableId int) (err error) {
+	o := orm.NewOrm()
+	sql := `DELETE FROM company_history_remark WHERE table_name = ? AND  table_id = ?   `
+	_, err = o.Raw(sql, tableName, tableId).Exec()
+	return
+}
+
+// GetCompanyHistoryRemarkList 获取备注列表
+func GetCompanyHistoryRemarkListinit() (items []*CompanyHistoryRemark, err error) {
+	o := orm.NewOrm()
+	sql := "SELECT * FROM company_history_remark  WHERE	 table_id > 0   "
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// AddCompanyHistoryRemarkMultiinit 批量添加
+func AddCompanyHistoryRemarkMultiinit(items []*CompanyHistoryRemark) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+	if len(items) > 0 {
+		//批量添加流水信息
+		_, err = o.InsertMulti(len(items), items)
+	}
+	return
+}

+ 2 - 2
models/company/company_no_renewed_note.go

@@ -35,9 +35,9 @@ type CompanyNoRenewedNoteReq struct {
 }
 
 // 添加
-func AddCompanyNoRenewedNote(item *CompanyNoRenewedNote) (err error) {
+func AddCompanyNoRenewedNote(item *CompanyNoRenewedNote) (newId int64, err error) {
 	o := orm.NewOrm()
-	_, err = o.Insert(item)
+	newId, err = o.Insert(item)
 	return
 }
 

+ 13 - 4
models/company/company_product.go

@@ -61,6 +61,7 @@ type CompanyProduct struct {
 	ShareSeller         string    `description:"共享销售员"`
 	ShareSellerId       int       `description:"共享销售员id"`
 	ShareGroupId        int       `description:"共享销售员所属分组ID"`
+	IsUserMaker         int       `description:"近四周之内是否包含决策人互动过 ,0否,1是"`
 }
 
 // 新增客户产品
@@ -300,9 +301,9 @@ type CompanyRenewalReason struct {
 }
 
 // AddRenewalReason 新增续约情况说明
-func AddRenewalReason(renewalReason *CompanyRenewalReason) (err error) {
+func AddRenewalReason(renewalReason *CompanyRenewalReason) (newId int64, err error) {
 	o := orm.NewOrm()
-	_, err = o.Insert(renewalReason)
+	newId, err = o.Insert(renewalReason)
 	return
 }
 
@@ -366,9 +367,9 @@ type CompanyProductRemark struct {
 	SysRealName            string    `description:"创建人姓名"`
 }
 
-func AddCompanyRemark(remark *CompanyProductRemark) (err error) {
+func AddCompanyRemark(remark *CompanyProductRemark) (newId int64, err error) {
 	o := orm.NewOrm()
-	_, err = o.Insert(remark)
+	newId, err = o.Insert(remark)
 	return
 }
 
@@ -380,6 +381,14 @@ func GetRemarkList(CompanyId, ProductId string) (items []*CompanyProductRemark,
 	return
 }
 
+// GetRemarkList 获取备注列表15.9.1job
+func GetRemarkListInit() (items []*CompanyProductRemark, err error) {
+	o := orm.NewOrm()
+	sql := "SELECT * FROM company_product_remark WHERE product_id=2 ORDER BY create_time DESC"
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 // GetRemarkList 获取备注列表
 func GetRemarkListByCompanyId(CompanyId string) (items []*CompanyProductRemark, err error) {
 	o := orm.NewOrm()

+ 2 - 2
models/company/company_service_record.go

@@ -45,13 +45,13 @@ func (m *CompanyServiceRecord) TableName() string {
 	return "company_service_record"
 }
 
-func (m *CompanyServiceRecord) Create() (err error) {
+func (m *CompanyServiceRecord) Create() (newId int, err error) {
 	o := orm.NewOrm()
 	id, err := o.Insert(m)
 	if err != nil {
 		return
 	}
-	m.CompanyServiceRecordId = int(id)
+	newId = int(id)
 	return
 }
 

+ 1 - 0
models/cygx/cygx_user.go

@@ -49,6 +49,7 @@ type CygxCompanyUser struct {
 	Content                     string `description:"备注信息"`
 	IsRemind                    bool   `description:"是否添加互动提醒"`
 	IsSubscribeCygx             int    `description:"是否关注了查研观向微信公众号: 0-未关注; 1-已关注"`
+	IsUserMaker                 int    `description:"近四周之内是否包含决策人互动过 ,0否,1是"`
 }
 
 type CompanyUserListResp struct {

+ 1 - 1
models/cygx/rai_serve_company.go

@@ -27,7 +27,7 @@ type CygxRaiServeCompany struct {
 type CygxRaiServeCompanyResp struct {
 	CompanyId         int     `comment:"公司ID"`
 	CompanyName       string  `comment:"公司名称"`
-	IsRed             bool    `comment:"是否标红"`
+	IsUserMaker       int     `description:"近四周之内是否包含决策人互动过 ,0否,1是"`
 	Money             float64 `comment:"合同金额"`
 	ServeCoverageRate string  `comment:"近四周服务覆盖率"`
 	SellerId          int     `comment:"所属销售id"`

+ 11 - 1
models/cygx/user_feedback.go

@@ -68,7 +68,7 @@ type CygxCygxUserFeedbackResp struct {
 	List []*CygxUserFeedbackResp
 }
 
-func GetCygxUserFeedbackList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxOrderResp, err error) {
+func GetCygxUserFeedbackList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxUserFeedback, err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *
 			FROM
@@ -79,6 +79,16 @@ func GetCygxUserFeedbackList(condition string, pars []interface{}, startSize, pa
 	return
 }
 
+func GetCygxUserFeedbackListInit() (items []*CygxUserFeedback, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT *
+			FROM
+			cygx_user_feedback
+			WHERE 1 = 1 `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 // 获取数量
 func GetCygxUserFeedbackCount(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")

+ 1 - 0
models/db.go

@@ -268,6 +268,7 @@ func initCompany() {
 		new(company.CompanyContractNoRenewedAscribeLog),      // 合同确认不续约记录日志
 		new(company.CrmConfig),                               // 管理后台基本配置表
 		new(company.CompanyRenewalRecord),                    // 客户续约状态记录表
+		new(company.CompanyHistoryRemark),                    // 客户记录历史记录表
 	)
 }
 

+ 9 - 0
models/statistic_report.go

@@ -405,6 +405,7 @@ type IncrementalList struct {
 	PermissionNameStatus string                             `description:"权限状态"`
 	CompanyProductStatus string                             `description:"客户状态"`
 	//CompanyContractIdGroup string                             `description:"表company_contract合并的 company_contract_id"`
+	IsUserMaker int `description:"近四周之内是否包含决策人互动过 ,0否,1是"`
 }
 
 // GetIncrementalNewCompanyCount 获取增量客户报表列表统计数据(根据合同来展示)
@@ -842,6 +843,14 @@ func GetMoreRenewalReason(CompanyId, ProductId string) (items []*company.Company
 	return
 }
 
+// GetMoreRenewalReason 获取更多未续约说明列表15.9.1
+func GetMoreRenewalReasoninit() (items []*company.CompanyRenewalReason, err error) {
+	o := orm.NewOrm()
+	sql := "SELECT * FROM company_renewal_reason WHERE  product_id=2 ORDER BY create_time DESC"
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 // GetLastContractMoney 获取上一份权益合同的金额
 func GetLastContractMoney(CompanyIds string) (items []*IncrementalList, err error) {
 	o := orm.NewOrm()

+ 18 - 0
routers/commentsRouter.go

@@ -2329,6 +2329,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:RaiServeCoAntroller"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:RaiServeCoAntroller"],
+        beego.ControllerComments{
+            Method: "AddRemark",
+            Router: `/rai_serve/remark/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:RaiServeCoAntroller"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:RaiServeCoAntroller"],
+        beego.ControllerComments{
+            Method: "RemarkList",
+            Router: `/rai_serve/remark/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:RaiServeCoAntroller"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:RaiServeCoAntroller"],
         beego.ControllerComments{
             Method: "SearchTag",

+ 54 - 8
services/company.go

@@ -867,12 +867,20 @@ func GetCompanyPermissionButton(roleTypeCode, status, itemSellerIds, itemGroupId
 		if !strings.Contains(status, "/") {
 			if status == utils.COMPANY_STATUS_FORMAL { //正式
 				//button.BtnModifySeller = true
-				button.BtnRemarkView = true
+				if productId == utils.COMPANY_PRODUCT_RAI_ID {
+					button.BtnRemarkViewHistory = true
+				} else {
+					button.BtnRemarkView = true
+				}
 				return
 			} else if status == utils.COMPANY_STATUS_TRY_OUT { //试用
 				button.BtnEdit = true
 				button.BtnDelete = true
-				button.BtnRemarkView = true
+				if productId == utils.COMPANY_PRODUCT_RAI_ID {
+					button.BtnRemarkViewHistory = true
+				} else {
+					button.BtnRemarkView = true
+				}
 				//button.BtnModifySeller = true
 				button.BtnFreeze = false
 				if productId == utils.COMPANY_PRODUCT_FICC_ID {
@@ -881,11 +889,18 @@ func GetCompanyPermissionButton(roleTypeCode, status, itemSellerIds, itemGroupId
 				return
 			} else if status == utils.COMPANY_STATUS_FREEZE { //冻结
 				//button.BtnModifySeller = true
-				button.BtnRemarkView = true
+				if productId == utils.COMPANY_PRODUCT_RAI_ID {
+					button.BtnRemarkViewHistory = true
+				} else {
+					button.BtnRemarkView = true
+				}
 				return
 			} else if status == utils.COMPANY_STATUS_LOSE { //流失
 				//button.BtnModifySeller = true
 				button.BtnDelete = true
+				if productId == utils.COMPANY_PRODUCT_RAI_ID {
+					button.BtnRemarkViewHistory = true
+				}
 				return
 			} else if status == utils.COMPANY_STATUS_CLOSE { // 关闭
 				//button.BtnModifySeller = true
@@ -898,6 +913,9 @@ func GetCompanyPermissionButton(roleTypeCode, status, itemSellerIds, itemGroupId
 				//button.BtnModifySeller = true
 				button.BtnDelete = true
 				button.BtnEdit = true
+				if productId == utils.COMPANY_PRODUCT_RAI_ID {
+					button.BtnRemarkViewHistory = true
+				}
 				return
 			}
 		}
@@ -949,6 +967,7 @@ func GetCompanyPermissionButton(roleTypeCode, status, itemSellerIds, itemGroupId
 			if productStatus == utils.COMPANY_STATUS_FORMAL { //正式
 				button.BtnModifySeller = true
 				button.BtnShare = true
+				button.BtnRemarkViewHistory = true
 			} else if productStatus == utils.COMPANY_STATUS_TRY_OUT { //试用
 				button.BtnEdit = true
 				//button.BtnDelete = true
@@ -956,13 +975,17 @@ func GetCompanyPermissionButton(roleTypeCode, status, itemSellerIds, itemGroupId
 				button.BtnFreeze = false
 				// CRM14.7.2 权益管理员可以设置试用客户为共享
 				button.BtnShare = true
+				button.BtnRemarkViewHistory = true
 			} else if productStatus == utils.COMPANY_STATUS_FREEZE { //冻结
 				button.BtnModifySeller = true
+				button.BtnRemarkViewHistory = true
 			} else if productStatus == utils.COMPANY_STATUS_LOSE { //流失
 				//button.BtnDelete = true
+				button.BtnRemarkViewHistory = true
 			} else { //永续
 				button.BtnModifySeller = true
 				button.BtnShare = true
+				button.BtnRemarkViewHistory = true
 			}
 		} else {
 			productStatus2, hasProduct2 := productStatusMap[1]
@@ -1163,7 +1186,8 @@ func GetCompanyPermissionButton(roleTypeCode, status, itemSellerIds, itemGroupId
 						button.BtnModifySeller = true
 						//button.BtnShare = true
 						button.BtnRemarkEdit = true
-						button.BtnRemarkView = true
+						//button.BtnRemarkView = true //权益销售隐藏
+						button.BtnRemarkViewHistory = true
 					} else if productStatus == utils.COMPANY_STATUS_TRY_OUT { //试用
 						button.BtnEdit = true
 						button.BtnDelete = true
@@ -1173,7 +1197,8 @@ func GetCompanyPermissionButton(roleTypeCode, status, itemSellerIds, itemGroupId
 						button.BtnModifySeller = true
 						button.BtnFreeze = true
 						button.BtnRemarkEdit = true
-						button.BtnRemarkView = true
+						//button.BtnRemarkView = true //权益销售隐藏
+						button.BtnRemarkViewHistory = true
 						//button.BtnShare = true
 					} else if productStatus == utils.COMPANY_STATUS_FREEZE { //冻结
 						button.BtnThaw = true
@@ -1182,12 +1207,15 @@ func GetCompanyPermissionButton(roleTypeCode, status, itemSellerIds, itemGroupId
 						button.BtnRemarkView = true
 					} else if productStatus == utils.COMPANY_STATUS_LOSE { //流失
 						button.BtnApplyReceive = true
+						button.BtnRemarkViewHistory = true
 					} else if productStatus == utils.COMPANY_STATUS_FOREVER { //永续
 						button.BtnTurnPositive = true
+						button.BtnRemarkViewHistory = true
 					}
 				} else {
 					if productStatus == utils.COMPANY_STATUS_LOSE { //流失
 						button.BtnView = true //显示权限、详情
+						button.BtnRemarkViewHistory = true
 						//如果不是自己客户,那么判断是否是本小组的,如果是本小组,那么还是申请领取,非本小组的话,那就是领取
 						if groupId == sysUserGroupId {
 							button.BtnApplyReceive = true
@@ -1201,25 +1229,31 @@ func GetCompanyPermissionButton(roleTypeCode, status, itemSellerIds, itemGroupId
 			//如果是组长,且该客户属于本组客户
 			if authority == 2 && hasGroupId && groupId == sysUserGroupId {
 				button.BtnView = true                             //查看详情权限
+				button.BtnRemarkViewHistory = true                //历史备注
 				if productStatus == utils.COMPANY_STATUS_FORMAL { //正式
 					button.BtnModifySeller = true
 					//button.BtnShare = true
-					button.BtnRemarkView = true
+					//button.BtnRemarkView = true //权益销售隐藏
+					//button.BtnRemarkViewHistory = true
 				} else if productStatus == utils.COMPANY_STATUS_TRY_OUT { //试用
 					button.BtnModifySeller = true
-					button.BtnRemarkView = true
+					//button.BtnRemarkView = true //权益销售隐藏
+					//button.BtnRemarkViewHistory = true
 					//button.BtnShare = true
 				} else if productStatus == utils.COMPANY_STATUS_FREEZE { //冻结
 					button.BtnModifySeller = true
-					button.BtnRemarkView = true
+					//button.BtnRemarkView = true //权益销售隐藏
+					//button.BtnRemarkViewHistory = true
 				} else if productStatus == utils.COMPANY_STATUS_LOSE { //流失
 					if sellerId == sysUserId || groupId == sysUserGroupId || utils.InArrayByStr(shareSellerIdArr, strconv.Itoa(sysUserId)) || shareSellerId == sysUserId {
 						button.BtnApplyReceive = true
 					} else {
 						button.BtnReceive = true
 					}
+					//button.BtnRemarkViewHistory = true
 				} else { //永续
 					//button.BtnDelete = true
+					//button.BtnRemarkViewHistory = true
 				}
 			}
 
@@ -2389,6 +2423,7 @@ func FilterReadAndContractAuth(chartPermissions, contractPermissions, condition
 
 // GetShareCompanyPermissionButton 正式客户共享-权限按钮
 func GetShareCompanyPermissionButton(roleTypeCode, statuses string, productId int, item *company.CompanyItem, sysUser *system.Admin) (button *company.ButtonPermission) {
+	statuses = strings.Replace(statuses, "(共享)", "", -1)
 	statusMap := make(map[int]string)
 	statusMap[productId] = statuses
 	if strings.Contains(statuses, "/") {
@@ -2470,5 +2505,16 @@ func GetShareCompanyPermissionButton(roleTypeCode, statuses string, productId in
 	if companyButton.BtnShare == true {
 		button.BtnShare = true
 	}
+	//备注与历史备注修改 CRM15.9.1
+	button.BtnRemarkView = companyButton.BtnRemarkView
+
+	if productId == 2 {
+		button.BtnRemarkView = false
+		button.BtnRemarkViewHistory = true
+	}
+
+	if utils.InArrayByStr([]string{utils.ROLE_TYPE_CODE_RAI_ADMIN, utils.ROLE_TYPE_CODE_RAI_SELLER, utils.ROLE_TYPE_CODE_RAI_GROUP}, roleTypeCode) {
+		button.BtnServiceRecord = false //王芳,权益销售,权益销售组长,这三种身份看不到这个按钮
+	}
 	return
 }

+ 243 - 0
services/company_record.go

@@ -0,0 +1,243 @@
+package services
+
+import (
+	"fmt"
+	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/company"
+	"hongze/hz_crm_api/models/cygx"
+	"hongze/hz_crm_api/models/system"
+	"hongze/hz_crm_api/services/alarm_msg"
+	"hongze/hz_crm_api/utils"
+	"time"
+)
+
+// 权益客户新增历史备注
+func AddCompanyHistoryRemark(item *company.CompanyHistoryRemark) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg("权益客户新增历史备注,失败:"+err.Error()+fmt.Sprint(item), 2)
+		}
+	}()
+	err = company.AddCompanyHistoryRemark(item)
+	return
+}
+
+// 删除权益客户新增历史备注
+func DelCompanyHistoryRemark(tableName string, tableId int) {
+	if tableName == "" {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg(fmt.Sprintf("权益客户新增历史备注,失败:"+err.Error()+"tableName:", tableName, "tableId", tableId), 2)
+		}
+	}()
+	err = company.DelCompanyHistoryRemark(tableName, tableId)
+	return
+}
+
+//func init() {
+//	AddCompanyHistoryRemarkInit()
+//}
+
+// 权益客户新增历史备注脚本
+func AddCompanyHistoryRemarkInit() {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+		}
+	}()
+
+	sysUserList, err := system.GetAdminList()
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	mapadmin := make(map[int]string)
+	for _, v := range sysUserList {
+		mapadmin[v.AdminId] = v.RealName
+	}
+
+	listHistory, e := company.GetCompanyHistoryRemarkListinit()
+	if e != nil {
+		fmt.Println(e)
+		return
+	}
+
+	makHistoryMap := make(map[string]bool)
+
+	for _, v := range listHistory {
+		makHistoryMap[fmt.Sprintf("id_", v.TableId, "name_", v.TableName)] = true
+	}
+
+	var items []*company.CompanyHistoryRemark
+
+	recordOB := new(company.CompanyServiceRecord)
+	recordCond := ""
+	recordPars := make([]interface{}, 0)
+	records, e := recordOB.GetItemsByCondition(recordCond, recordPars, []string{}, "")
+	if e != nil {
+		fmt.Println(e)
+		return
+	}
+
+	//company_service_record
+	for _, v := range records {
+		if makHistoryMap[fmt.Sprintf("id_", v.CompanyServiceRecordId, "name_", v.TableName)] {
+			continue
+		}
+		item := new(company.CompanyHistoryRemark)
+		item.CompanyId = v.CompanyId
+		item.Content = v.Content
+		item.SysAdminId = v.SysAdminId
+		item.SysAdminName = v.SysAdminName
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		item.ShowTime = v.CreateTime
+		item.CompanyId = v.CompanyId
+		item.TableId = v.CompanyServiceRecordId
+		item.TableName = "company_service_record"
+		items = append(items, item)
+	}
+
+	//company_product_remark
+	listRemark, e := company.GetRemarkListInit()
+	if e != nil {
+		fmt.Println(e)
+		return
+	}
+	for _, v := range listRemark {
+		if makHistoryMap[fmt.Sprintf("id_", v.CompanyProductRemarkId, "name_", "company_product_remark")] {
+			continue
+		}
+		item := new(company.CompanyHistoryRemark)
+		item.CompanyId = v.CompanyId
+		item.Content = v.Remark
+		item.SysAdminId = v.SysUserId
+		item.SysAdminName = v.SysRealName
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		item.ShowTime = v.CreateTime
+		item.CompanyId = v.CompanyId
+		item.TableId = v.CompanyProductRemarkId
+		item.TableName = "company_product_remark"
+		items = append(items, item)
+	}
+	//company_product_remark  end
+
+	var condition string
+	var pars []interface{}
+	condition += ` AND product_id = 2  ORDER  BY  create_time DESC   `
+	listrenewed_note, err := company.GetCompanyNoRenewedNoteList(condition, pars, 0, 0)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	//company_no_renewed_note
+	for _, v := range listrenewed_note {
+		if makHistoryMap[fmt.Sprintf("id_", v.NoRenewedNoteId, "name_", "company_no_renewed_note")] {
+			continue
+		}
+		item := new(company.CompanyHistoryRemark)
+		item.CompanyId = v.CompanyId
+		item.Content = v.Content
+		item.SysAdminId = v.AdminId
+		item.SysAdminName = mapadmin[v.AdminId]
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		item.ShowTime = utils.StrTimeToTime(v.CreateTime)
+		item.CompanyId = v.CompanyId
+		item.TableId = v.NoRenewedNoteId
+		item.TableName = "company_no_renewed_note"
+		items = append(items, item)
+	}
+	//company_no_renewed_note end
+
+	//company_renewal_reason
+	listRenewa, e := models.GetMoreRenewalReasoninit()
+	if e != nil {
+		fmt.Println(e)
+		return
+	}
+	for _, v := range listRenewa {
+		if makHistoryMap[fmt.Sprintf("id_", v.CompanyRenewalReasonId, "name_", "company_renewal_reason")] {
+			continue
+		}
+		item := new(company.CompanyHistoryRemark)
+		item.CompanyId = v.CompanyId
+		item.Content = v.RenewalReason
+		//item.SysAdminId = v.SysUserId
+		//item.SysAdminName = v.SysRealName
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		item.ShowTime = v.CreateTime
+		item.CompanyId = v.CompanyId
+		item.TableId = v.CompanyRenewalReasonId
+		item.TableName = "company_renewal_reason"
+		items = append(items, item)
+	}
+	//company_renewal_reason end
+
+	//cygx_user_feedback
+	// 权益服务明细表
+	listUserFeedback, e := cygx.GetCygxUserFeedbackListInit()
+	if e != nil {
+		fmt.Println(e)
+		return
+	}
+	for _, v := range listUserFeedback {
+		if makHistoryMap[fmt.Sprintf("id_", v.UserFeedbackId, "name_", "cygx_user_feedback")] {
+			continue
+		}
+		item := new(company.CompanyHistoryRemark)
+		item.CompanyId = v.CompanyId
+		item.Content = v.Content
+		item.SysAdminId = v.AdminId
+		item.SysAdminName = mapadmin[v.AdminId]
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		item.ShowTime = v.CreateTime
+		item.CompanyId = v.CompanyId
+		item.UserId = v.UserId
+		item.Mobile = v.Mobile
+		item.Email = v.Email
+		item.RealName = v.RealName
+		item.TableId = v.UserFeedbackId
+		item.TableName = "cygx_user_feedback"
+		items = append(items, item)
+	}
+
+	if len(items) > 0 {
+		var itemsAdd []*company.CompanyHistoryRemark
+		for k, v := range items {
+			v.ProductId = 2
+			itemsAdd = append(itemsAdd, v)
+			if len(itemsAdd)%2000 == 0 {
+				fmt.Println(k)
+				e = company.AddCompanyHistoryRemarkMultiinit(itemsAdd)
+				if e != nil {
+					fmt.Println(e)
+					return
+				}
+				itemsAdd = make([]*company.CompanyHistoryRemark, 0)
+			}
+		}
+		e = company.AddCompanyHistoryRemarkMultiinit(itemsAdd)
+		if e != nil {
+			fmt.Println(e)
+			return
+		}
+	}
+
+	//cygx_user_feedback end
+
+	fmt.Println(len(items))
+	fmt.Println(len(records))
+	return
+}

+ 31 - 0
services/cygx/contract_allocation.go

@@ -952,3 +952,34 @@ func UpdateCygxallocationCompanyContractByEnterScoreInit() {
 	fmt.Println("END")
 	return
 }
+
+// 根据公司ID获取近四周之内有决策人互动的客户
+func GetCompanyProductIsUserMakerByCompanyIds(companyIds []int) (mapIsUserMakerResp map[int]int) {
+	var err error
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("根据公司ID获取近四周之内有决策人互动的客户失败 GetCompanyProductIsUserMakerByCompanyIds ErrMsg:"+err.Error(), 2)
+
+		}
+	}()
+	lenArr := len(companyIds)
+	if lenArr == 0 {
+		return
+	}
+	var condition string
+	var pars []interface{}
+
+	condition += " AND  company_id IN (" + utils.GetOrmInReplace(lenArr) + ")  AND product_id = 2  AND status IN  ('正式','试用','永续') AND  company_id > 1  "
+	pars = append(pars, companyIds)
+
+	productList, e := company.GetCompanyProductList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCompanyProductList, Err: " + e.Error())
+		return
+	}
+	mapIsUserMakerResp = make(map[int]int)
+	for _, v := range productList {
+		mapIsUserMakerResp[v.CompanyId] = v.IsUserMaker
+	}
+	return
+}