浏览代码

Merge branch 'CRM13.7'

ziwen 1 年之前
父节点
当前提交
55f2dc03ff

+ 1 - 0
controllers/company_service_record.go

@@ -61,6 +61,7 @@ func (this *CompanyServiceRecordController) ServiceRecordList() {
 			SysAdminId:             r.SysAdminId,
 			SysAdminName:           r.SysAdminName,
 			CreateTime:             r.CreateTime.Format(utils.FormatDateTime),
+			Mark:                   r.Mark,
 		})
 	}
 

+ 270 - 0
controllers/company_share.go

@@ -739,3 +739,273 @@ func (this *CompanyController) CompanyShareAddRemark() {
 	br.Success = true
 	br.Msg = "编辑成功"
 }
+
+// CompanyShareMark
+// @Title 新增客户标记
+// @Description 新增客户标记
+// @Param	request	body company.CompanyMarkReq true "type json string"
+// @Success 200 编辑成功
+// @router /share/mark [post]
+func (this *CompanyController) CompanyShareMark() {
+	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.CompanyMarkReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.CompanyServiceRecordId <= 0 {
+		br.Msg = "参数缺失"
+		br.ErrMsg = "参数缺失,备注ID未传!"
+		return
+	}
+
+	err = company.UpdateCompanyServiceRecordMark(req.CompanyServiceRecordId, req.Status)
+	if err != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "新增共享客户备注失败, Err: " + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "编辑成功"
+}
+
+// @Title 共享客户列表-同城
+// @Description 共享客户列表接口
+// @Param   Keyword   query   string  true       "搜索关键词"
+// @Param   ListParam   query   int  false       "筛选字段参数,用来筛选的字段, 枚举值:0:全部 、 1:已分配 、 2:未分配  "
+// @Param   SortParam   query   string  false       "排序字段参数,用来排序的字段, 枚举值:'viewTotal':总阅读次数 、 'viewTime':阅读时间 、 'roadShowTotal':累计路演次数 、`expireDay:到期时间` 、 `createTime:创建时间` 、 'formalTime': 转正时间 、 'freezeTime':冻结时间 、'lossTime':流失时间  、'tryOutDay':试用天数"
+// @Param   SortType   query   string  true       "如何排序,是正序还是倒序,枚举值:`asc 正序`,`desc 倒叙`"
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Success Ret=200 设置成功
+// @router /share/list/city [get]
+func (this *CompanyController) CompanyShareListByCity() {
+	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
+	}
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	keyword := this.GetString("Keyword")
+	province := this.GetString("Province")
+	city := this.GetString("City")
+	//排序参数
+	//sortParam := this.GetString("SortParam")
+	//listParam, _ := this.GetInt("ListParam")
+	//sortType := this.GetString("SortType")
+
+	var total int
+	page := paging.GetPaging(currentIndex, pageSize, total)
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+	var condition string
+	var pars []interface{}
+
+	if keyword != "" {
+		companyIdStr, err := company.GetCompanyIdByKeyWord(keyword)
+		if err != nil {
+			br.Msg = "获取客户信息失败"
+			br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
+			return
+		}
+		if companyIdStr != "" {
+			condition += ` AND (a.company_name LIKE '%` + keyword + `%' OR a.credit_code LIKE '%` + keyword + `%' OR a.company_id IN(` + companyIdStr + `)) `
+		} else {
+			condition += ` AND (a.company_name LIKE '%` + keyword + `%' OR a.credit_code LIKE '%` + keyword + `%' ) `
+		}
+	}
+
+	condition += ` AND a.is_share=1 `
+	if province != "" {
+		var provinceSql string
+		slice := strings.Split(province, ",")
+		for _, v := range slice {
+			provinceSql += "'" + v + "'" + ","
+		}
+		provinceSql = strings.TrimRight(provinceSql, ",")
+		condition += ` AND a.province IN (` + provinceSql + `) `
+	}
+
+	if city != "" {
+		var citySql string
+		slice := strings.Split(city, ",")
+		for _, v := range slice {
+			citySql += "'" + v + "'" + ","
+		}
+		citySql = strings.TrimRight(citySql, ",")
+		condition += ` AND a.city IN (` + citySql + `) `
+	}
+
+	total, err := company.GetShareCompanyListCount(condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
+		return
+	}
+
+	sortStr := ` `
+	//if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN {
+	//	sortStr = " ORDER BY sort_status asc, all_view_total desc, a.created_time "
+	//} else {
+	//	sortStr = " ORDER BY sort_status asc, b.view_total desc, a.created_time  "
+	//}
+
+	list, err := company.GetShareCompanyList(condition, sortStr, pars, startSize, pageSize)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	//企业用户数组切片
+	companyIds := make([]int, 0)
+	companyIdSlice := make([]string, 0)
+	for _, v := range list {
+		companyIds = append(companyIds, v.CompanyId)
+		companyIdSlice = append(companyIdSlice, strconv.Itoa(v.CompanyId))
+	}
+
+	//企业用户产品开通数
+	companyIdStr := strings.Join(companyIdSlice, ",")
+	companyProductTotalList, _ := company.GetCountProductByCompanyIds(companyIdStr)
+	companyProductTotalMap := make(map[int]*company.CompanyProductTotalSlice)
+	for _, companyProductTotal := range companyProductTotalList {
+		companyProductTotalMap[companyProductTotal.CompanyId] = companyProductTotal
+	}
+
+	// 客户产品详细信息
+	companyProductMap := make(map[string]*company.CompanyProduct)
+	var companyProductCondition string
+	var companyProductPars []interface{}
+
+	companyProductList, err := company.GetCompanyProductsByCompanyIds(companyIdStr, companyProductCondition, companyProductPars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取客户产品数据失败,Err:" + err.Error()
+		return
+	}
+	for _, companyProduct := range companyProductList {
+		key := fmt.Sprint(companyProduct.CompanyId, "_", companyProduct.ProductId)
+		companyProductMap[key] = companyProduct
+	}
+
+	companyLists := make([]*company.CompanyListItem, 0)
+	//查询阅读次数
+	if list == nil {
+		companyLists = make([]*company.CompanyListItem, 0)
+	} else {
+		for _, v := range list {
+			//viewTotal:=GetviewTotal(v.CompanyId)
+
+			//活跃(客户状态)
+			tmpStatus := v.Status
+			if v.IsShare == 1 {
+				tmpStatus = v.Status + "(共享)"
+			}
+
+			companyList := &company.CompanyListItem{
+				CompanyId:        v.CompanyId,
+				CompanyName:      v.CompanyName,
+				CreditCode:       v.CreditCode,
+				CompanyCode:      v.CompanyCode,
+				StartDate:        v.StartDate,
+				EndDate:          v.EndDate,
+				LoseReason:       v.LoseReason,
+				RenewalReason:    v.RenewalReason,
+				FreezeReason:     v.FreezeReason,
+				LossTime:         v.LossTime,
+				Status:           tmpStatus,
+				CompanyType:      v.CompanyType,
+				ApproveStatus:    v.ApproveStatus,
+				SellerName:       v.SellerName,
+				SellerId:         v.SellerId,
+				SellerIds:        v.SellerIds,
+				ExpireDay:        v.ExpireDay,
+				FreezeTime:       v.FreezeTime,
+				GroupId:          v.GroupId,
+				GroupIds:         v.GroupIds,
+				DepartmentId:     v.DepartmentId,
+				IndustryName:     v.IndustryName,
+				IsSuspend:        v.IsSuspend,
+				CreatedTime:      v.CreatedTime,
+				Source:           v.Source,
+				Province:         v.Province,
+				City:             v.City,
+				Address:          v.Address,
+				Reasons:          v.Reasons,
+				FreezeStartDate:  v.FreezeStartDate,
+				FreezeEndDate:    v.FreezeEndDate,
+				FreezeExpireDays: v.FreezeExpireDays,
+				BtnItem:          v.BtnItem,
+				ProductId:        v.ProductId,
+				FormalTime:       v.FormalTime,
+				IsShared:         v.IsShared,
+				RegionType:       v.RegionType,
+				FiccPackageType:  v.FiccPackageType,
+				FiccLastViewTime: v.FiccLastViewTime,
+				RaiLastViewTime:  v.RaiLastViewTime,
+				//FiccView:         viewTotal[0],
+				//RaiView:          viewTotal[1],
+				//FiccView: ficcViewTotal,
+				//RaiView:  raiViewTotal,
+				FiccView:        v.FiccView,
+				RaiView:         v.RaiView,
+				FiccTryOutDay:   v.FiccTryOutDay,
+				RaiTryOutDay:    v.RaiTryOutDay,
+				AllViewTotal:    v.AllViewTotal,
+				RoadShowTotal:   v.RoadShowTotal,
+				TryStageSlice:   v.TryStageSlice,
+				Deadline:        v.Deadline,
+				WeekViewActive:  v.WeekViewActive,
+				IsShare:         v.IsShare,
+				ShareSeller:     v.ShareSeller,
+				ShareSellerId:   v.ShareSellerId,
+				LastServiceTime: v.LastServiceTime,
+				ServiceTimes:    v.ServiceTimes,
+			}
+			companyLists = append(companyLists, companyList)
+		}
+	}
+	if companyLists == nil {
+		companyLists = make([]*company.CompanyListItem, 0)
+	}
+	page = paging.GetPaging(currentIndex, pageSize, total)
+	resp := new(company.CompanyListResp)
+	resp.List = companyLists
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+
+}

+ 62 - 0
controllers/official_user.go

@@ -41,6 +41,9 @@ func (this *OfficialUserController) OfficialUserList() {
 	currentIndex, _ := this.GetInt("CurrentIndex")
 	keyWord := this.GetString("KeyWord")
 	sourceType := this.GetString("SourceType")
+	markGroup := this.GetString("MarkGroup")
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
 	if sourceType == "" {
 		br.Msg = "获取失败"
 		br.ErrMsg = "请选择类型"
@@ -67,6 +70,17 @@ func (this *OfficialUserController) OfficialUserList() {
 	if keyWord != "" {
 		condition += ` and (company_name LIKE '%` + keyWord + `%' OR phone LIKE '%` + keyWord + `%' OR email LIKE '%` + keyWord + `%' OR real_name LIKE '%` + keyWord + `%') `
 	}
+	if markGroup != "" {
+		condition += `AND mark_group = `+"'"+markGroup+"'"
+	}
+	if startDate != "" {
+		startDate += " 00:00:00"
+		condition += ` AND create_time >= '` + startDate + `' `
+	}
+	if endDate != "" {
+		endDate += " 23:59:59"
+		condition += ` AND create_time <= '` + endDate + `' `
+	}
 
 	//获取总数据数
 	total, err := models.GetOfficialApplyUserListListCount(condition, pars)
@@ -281,3 +295,51 @@ func (this *OfficialUserController) OfficialUserListExport() {
 	br.Success = true
 	br.Msg = "导出成功"
 }
+
+// @Title 官网试用用户确认
+// @Description 官网试用用户确认接口
+// @Param   Id   query   int  true       "申请记录id"
+// @Success Ret=200 确认成功
+// @router /official/user/mark_group [post]
+func (this *OfficialUserController) OfficialUserMarkGroup() {
+	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 models.UserTrialApplyMarkGroupReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	id := req.Id
+
+	//查询记录信息,并做初步判断
+	info, err := models.GetOfficialApplyUserById(id)
+	if err != nil && err.Error() == utils.ErrNoRow() {
+		br.Msg = "确认失败"
+		br.ErrMsg = "确认失败,记录异常"
+		return
+	}
+	if info.Status != "待处理" {
+		br.Msg = "确认失败"
+		br.ErrMsg = "确认失败,当前记录状态信息异常,请刷新页面"
+		return
+	}
+	err = models.OfficialApplyUserMarkGroup(id, sysUser.AdminId, sysUser.RealName, req.GroupName)
+	if err != nil {
+		br.Msg = "确认失败"
+		br.ErrMsg = "确认失败,Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "标记成功"
+	//br.Data = resp
+}

+ 61 - 0
controllers/yb/apply_record.go

@@ -271,6 +271,9 @@ func (this *ApplyRecordController) UserApplyList() {
 
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
+	markGroup := this.GetString("MarkGroup")
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
 	var startSize int
 	if pageSize <= 0 {
 		pageSize = utils.PageSize20
@@ -314,6 +317,17 @@ func (this *ApplyRecordController) UserApplyList() {
 		condition += " AND (a.real_name LIKE ? OR a.mobile LIKE ? OR a.email LIKE ? OR (a.company_id > 1 AND b.company_name LIKE ?) OR (a.company_id = 1 AND a.note LIKE ?))"
 		pars = append(pars, reqKeyword, reqKeyword, reqKeyword, reqKeyword, reqKeyword)
 	}
+	if markGroup != "" {
+		condition += `AND y.mark_group = `+"'"+markGroup+"'"
+	}
+	if startDate != "" {
+		startDate += " 00:00:00"
+		condition += ` AND IF(y.apply_record_id > 0,y.create_time, a.created_time) >= '` + startDate + `' `
+	}
+	if endDate != "" {
+		endDate += " 23:59:59"
+		condition += ` AND IF(y.apply_record_id > 0,y.create_time, a.created_time) <= '` + endDate + `' `
+	}
 
 	reqApplyStatus := this.GetString("ApplyStatus")
 	if reqApplyStatus != "" {
@@ -912,3 +926,50 @@ func (this *ApplyRecordController) DelPotentialUser() {
 	br.IsAddLog = true
 	return
 }
+
+// MarkGroup
+// @Title 标记分组
+// @Description 标记分组
+// @Param	request	body request.ApplyMarkReq true "type json string"
+// @Success 200 {object} 标记处理成功
+// @router /apply_record/mark_group [post]
+func (this *ApplyRecordController) MarkGroup() {
+	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 request.ApplyMarkGroupReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.ApplyRecordId <= 0 && req.GroupName != "" && req.UserId != 0 {
+		br.Msg = "申请记录ID或者分组名异常"
+		br.ErrMsg = "申请记录ID或者分组名异常"
+		return
+	}
+
+
+	// 标记处理
+	err = ybService.MarkGroupApplyRecord(req.ApplyRecordId, this.SysUser.AdminId, req.UserId, req.GroupName)
+	if err != nil {
+		br.Msg = "标记处理失败! "
+		br.ErrMsg = "标记处理失败,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "标记处理成功"
+}

+ 6 - 0
models/company/company.go

@@ -1891,6 +1891,12 @@ func Close2Loss(companyId, productId int) (err error) {
 	return
 }
 
+// CompanyMarkReq 标记请求
+type CompanyMarkReq struct {
+	CompanyServiceRecordId 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()

+ 0 - 1
models/company/company_product.go

@@ -376,7 +376,6 @@ func GetRemarkListByCompanyId(CompanyId string) (items []*CompanyProductRemark,
 	_, err = o.Raw(sql, CompanyId).QueryRows(&items)
 	return
 }
-
 // 冻结客户
 //func FreezeCompany(productId, companyId, adminId int, remark, realName string) (msg, errMsg string){
 //	time.Sleep(time.Second)

+ 10 - 0
models/company/company_service_record.go

@@ -17,6 +17,7 @@ type CompanyServiceRecord struct {
 	SysAdminName           string    `description:"创建人姓名"`
 	CreateTime             time.Time `description:"创建时间"`
 	ModifyTime             time.Time `description:"修改时间"`
+	Mark                   int       `description:"是否标记 0不是 1是"`
 }
 
 var CompanyServiceRecordColumns = struct {
@@ -142,4 +143,13 @@ type CompanyServiceRecordItem struct {
 	SysAdminId             int    `description:"创建人ID"`
 	SysAdminName           string `description:"创建人姓名"`
 	CreateTime             string `description:"创建时间"`
+	Mark                   int    `description:"是否标记 0不是 1是"`
+}
+
+// 更新备注标记
+func UpdateCompanyServiceRecordMark(remarkId, mark int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE company_service_record SET mark=? WHERE company_service_record_id=? `
+	_, err = o.Raw(sql, mark, remarkId).Exec()
+	return
 }

+ 27 - 6
models/user_trial_apply.go

@@ -23,6 +23,7 @@ type UserTrialApply struct {
 	OpUserName  string    `orm:"size(64)";description:"操作用户名称"`
 	CreateTime  time.Time `description:"申请时间"`
 	ModifyTime  time.Time `description:"修改时间"`
+	MarkGroup   string    `description:"标记分组"`
 }
 
 type UserTrialApplyItem struct {
@@ -43,20 +44,21 @@ type UserTrialApplyItem struct {
 	CreateTimeStr string    `description:"申请时间字符串"`
 	ModifyTime    time.Time `description:"修改时间"`
 	ModifyTimeStr string    `description:"申请时间字符串"`
+	MarkGroup     string    `description:"标记分组"`
 }
 
-//列表数据
+// 列表数据
 type UserTrialApplyListResp struct {
 	List   []*UserTrialApplyItem
 	Paging *paging.PagingItem `description:"分页数据"`
 }
 
-//确认申请
+// 确认申请
 type UserTrialApplyConfirmReq struct {
 	Id int `description:"Id"`
 }
 
-//获取获取官网申请列表页数据的数据数
+// 获取获取官网申请列表页数据的数据数
 func GetOfficialApplyUserListListCount(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT 
@@ -70,7 +72,7 @@ func GetOfficialApplyUserListListCount(condition string, pars []interface{}) (co
 	return
 }
 
-//获取官网申请列表页数据
+// 获取官网申请列表页数据
 func GetOfficialApplyUserListList(condition string, pars []interface{}, startSize, pageSize int) (items []*UserTrialApplyItem, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * from user_trial_apply `
@@ -94,14 +96,14 @@ func GetOfficialApplyUserListListExport(condition string, pars []interface{}) (i
 	return
 }
 
-//获取申请记录信息
+// 获取申请记录信息
 func GetOfficialApplyUserById(id int) (item *UserTrialApply, err error) {
 	o := orm.NewOrm()
 	err = o.Raw(`SELECT * from user_trial_apply where id = ?`, id).QueryRow(&item)
 	return
 }
 
-//确认申请记录
+// 确认申请记录
 func ConfirmOfficialApplyUser(id int, opUserId int, opUserName string) (err error) {
 	sql := ` UPDATE user_trial_apply
 			SET
@@ -113,3 +115,22 @@ func ConfirmOfficialApplyUser(id int, opUserId int, opUserName string) (err erro
 	_, err = orm.NewOrm().Raw(sql, "已处理", opUserId, opUserName, time.Now(), id).Exec()
 	return
 }
+
+type UserTrialApplyMarkGroupReq struct {
+	Id        int    `description:"申请记录ID"`
+	GroupName string `description:"分组名"`
+}
+
+// 标记分组
+func OfficialApplyUserMarkGroup(id int, opUserId int, opUserName,groupName string) (err error) {
+	sql := ` UPDATE user_trial_apply
+			SET
+			  status = ?,
+			  op_user_id = ?,
+			  op_user_name = ?,
+			  mark_group = ?,
+			  modify_time = ?
+			WHERE id = ? `
+	_, err = orm.NewOrm().Raw(sql, "已处理", opUserId, opUserName, groupName, time.Now(), id).Exec()
+	return
+}

+ 4 - 1
models/yb/apply_record.go

@@ -25,6 +25,7 @@ type ApplyRecord struct {
 	CreateTime      time.Time `description:"创建时间"`
 	IsMove          int       `description:"是否已移动"`
 	Source          int       `description:"申请来源:1-我的 2-活动 3-图库"`
+	MarkGroup       string    `description:"标记分组"`
 }
 
 func (applyRecord *ApplyRecord) TableName() string {
@@ -81,6 +82,7 @@ type ApplyListV2 struct {
 	RegisterSource   int       `description:"注册来源"`
 	SourceStr        string    `description:"来源"`
 	DelBtn           bool      `description:"是否展示删除按钮,true展示,false隐藏"`
+	MarkGroup        string    `description:"标记分组"`
 }
 
 // GetApplyRecordList 获取申请记录列表
@@ -156,6 +158,7 @@ SELECT
 	y.is_move,
 	y.source,
 	y.from_page,
+	y.mark_group,
     y.company_name as user_company_name
     #bp.seller_id,
 	#bp.seller_name
@@ -280,7 +283,7 @@ func GetTotalByUserIds(userIdsStr string) (list []*UserApplyTotal, err error) {
 	return
 }
 
-//DelApplyRecordByUserId 根据用户id删除该用户的所有申请
+// DelApplyRecordByUserId 根据用户id删除该用户的所有申请
 func DelApplyRecordByUserId(userId int64) (err error) {
 	o := orm.NewOrm()
 	sql := ` DELETE FROM yb_apply_record WHERE user_id=? `

+ 9 - 3
models/yb/request/apply_record.go

@@ -1,6 +1,12 @@
 package request
 
 type ApplyMarkReq struct {
-	ApplyRecordId	int		`description:"申请记录ID"`
-	UserId          int     `description:"用户ID"`
-}
+	ApplyRecordId int `description:"申请记录ID"`
+	UserId        int `description:"用户ID"`
+}
+
+type ApplyMarkGroupReq struct {
+	ApplyRecordId int    `description:"申请记录ID"`
+	GroupName     string `description:"分组名"`
+	UserId        int `description:"用户ID"`
+}

+ 36 - 0
routers/commentsRouter.go

@@ -7126,6 +7126,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/yb:ApplyRecordController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/yb:ApplyRecordController"],
+        beego.ControllerComments{
+            Method: "MarkGroup",
+            Router: `/apply_record/mark_group`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/yb:ApplyRecordController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/yb:ApplyRecordController"],
         beego.ControllerComments{
             Method: "MarkHandle",
@@ -8539,6 +8548,24 @@ 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: "CompanyShareListByCity",
+            Router: `/share/list/city`,
+            AllowHTTPMethods: []string{"get"},
+            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: "CompanyShareMark",
+            Router: `/share/mark`,
+            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: "MoveShareSeller",
@@ -9349,6 +9376,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:OfficialUserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:OfficialUserController"],
+        beego.ControllerComments{
+            Method: "OfficialUserMarkGroup",
+            Router: `/official/user/mark_group`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:PdfToImgCommonController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:PdfToImgCommonController"],
         beego.ControllerComments{
             Method: "PdfToImgConvert",

+ 73 - 0
services/yb/apply_record.go

@@ -258,3 +258,76 @@ func DeleteApplyUser(userId int64) (err error) {
 	}
 	return
 }
+
+// MarkGroupApplyRecord 标记申请记录和分组
+func MarkGroupApplyRecord(applyRecordId, adminId, userId int, groupName string) (err error) {
+	o := orm.NewOrm()
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
+	if applyRecordId > 0 {
+		applyRecord, tErr := yb.GetApplyRecordById(applyRecordId)
+		if tErr != nil {
+			if tErr.Error() == utils.ErrNoRow() {
+				err = errors.New(fmt.Sprint("申请记录不存在:", err))
+			} else {
+				err = tErr
+			}
+			return
+		}
+		if applyRecord.OpStatus != 0 {
+			err = errors.New(fmt.Sprint("申请记录处理状态有误:", err))
+			return
+		}
+		if userId > 0 && userId != applyRecord.UserId {
+			err = errors.New(fmt.Sprint("申请记录ID与用户ID不匹配:", err))
+			return
+		}
+		userId = applyRecord.UserId
+		// 1.标记申请记录
+		applyRecord.OpStatus = 1
+		applyRecord.DealTime = time.Now()
+		applyRecord.SysUserId = adminId
+		applyRecord.MarkGroup = groupName
+		updateCols := make([]string, 0)
+		updateCols = append(updateCols, "OpStatus", "DealTime", "SysUserId","MarkGroup")
+		err = applyRecord.Update(updateCols)
+		if err != nil {
+			err = errors.New(fmt.Sprint("申请记录标记失败", err))
+			return
+		}
+	}
+
+	// 2.标记wx用户表
+	wxUser, err := models.GetWxUserByUserId(userId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			err = nil // 用户可能在潜在用户列表直接被删除,那么直接不标记
+			return
+		}
+		return
+	}
+	// 未处理过则进行标记
+	if wxUser.IsDeal == 0 {
+		wxUser.IsDeal = 1
+		wxUser.LastUpdatedTime = time.Now()
+		userUpdateCols := make([]string, 0)
+		userUpdateCols = append(userUpdateCols, "IsDeal", "LastUpdatedTime")
+		err = wxUser.Update(userUpdateCols)
+		if err != nil {
+			err = errors.New(fmt.Sprint("对应用户信息标记失败", err))
+			return
+		}
+	}
+
+	return
+}