Jelajahi Sumber

feat:参标信息调整

fuwencai 2 tahun lalu
induk
melakukan
fc83065079
2 mengubah file dengan 86 tambahan dan 111 penghapusan
  1. 4 3
      jyBXCore/rpc/bxcore.proto
  2. 82 108
      jyBXCore/rpc/service/participateBid.go

+ 4 - 3
jyBXCore/rpc/bxcore.proto

@@ -171,9 +171,10 @@ message ParticipateInfoReq{
 // 详情页参标信息返回值
 message ParticipateDetailInfo{
   bool showParticipate = 1;// 是否显示参标按钮  true-显示  false-不显示
-  int64 showValue = 2;// 参标按钮显示值:0-参标 1-终止参标
-  string userName = 3;//参标人姓名 逗号分割
-  bool showTransfer = 4;// 转给同事按钮是否展示:true-展示 false-不展示
+  bool showStopParticipate = 2;//
+  bool showTransfer = 3;// 转给同事按钮是否展示:true-展示 false-不展示
+  string userName = 4;//参标人姓名 逗号分割
+
 }
 message ParticipateInfoRes{
   int64 err_code = 1;

+ 82 - 108
jyBXCore/rpc/service/participateBid.go

@@ -13,14 +13,16 @@ import (
 )
 
 const (
-	IndexProjectSet         = "projectset" // 项目信息es index
-	TypeProjectSet          = "projectset" // 项目信息es type
-	PositionTypeEnt         = 1            // 职位类型企业
-	PositionTypePersonal    = 0            // 职位类型个人
-	ButtonValueParticipate  = 0            // 参标按钮 显示值 0-参标
-	ButtonValueParticipated = 1            // 按钮显示值 列表页面 1-已参标 详情页 1-终止参标
-	RoleEntManager          = 1            //  企业管理员角色
-	RoleDepartManager       = 2            //  部门管理员角色
+	IndexProjectSet         = "projectset"    // 项目信息es index
+	TypeProjectSet          = "projectset"    // 项目信息es type
+	TableEntnicheUser       = "entniche_user" // 企业用户表
+	PositionTypeEnt         = 1               // 职位类型企业
+	PositionTypePersonal    = 0               // 职位类型个人
+	ButtonValueParticipate  = 0               // 参标按钮 显示值 0-参标
+	ButtonValueParticipated = 1               // 按钮显示值 列表页面 1-已参标
+	RoleEntManager          = 1               //  企业管理员角色
+	RoleDepartManager       = 2               //  部门管理员角色
+
 )
 
 type ParticipateBid struct {
@@ -66,34 +68,6 @@ func (p *ParticipateBid) GetProjectByInfoId(infoIds []string) *[]map[string]inte
 
 }
 
-// HandlerProjectId 返回信息的映射集合,项目id列表
-func HandlerProjectId(projectInfos []map[string]interface{}, infoIds map[string]struct{}) (map[string]string, []string) {
-	result := map[string]string{}
-	projectIdList := []string{}
-	//  记录infoid 和项目id 对应关系  用于最后处理返回的数据
-	for i := 0; i < len(projectInfos); i++ {
-		_id := common.ObjToString(projectInfos[i]["_id"])
-		projectIdList = append(projectIdList, _id)
-		list, b := projectInfos[i]["list"].([]interface{})
-		if !b {
-			continue
-		}
-		for j := 0; j < len(list); j++ {
-			infoidMap := common.ObjToMap(list[j])
-			if infoidMap == nil {
-				continue
-			}
-			infoid := common.ObjToString((*infoidMap)["infoid"])
-			if _, ok := infoIds[infoid]; ok && infoid != "" {
-				result[infoid] = _id
-				break
-			}
-		}
-	}
-	return result, projectIdList
-
-}
-
 // PersonalExistProject 个人版要展示的参标按钮  查询出已经参标的项目信息 用于后边格式化数据
 func (p *ParticipateBid) PersonalExistProject(projectId []string) map[string]struct{} {
 	// 1. 查询出已经参标的
@@ -106,7 +80,7 @@ func (p *ParticipateBid) PersonalExistProject(projectId []string) map[string]str
 	}
 	argStr := strings.Join(arg, ",")
 	query := "select project_id from participate_user where position_id = ? and project_id in (%s)  and state>=0"
-	rs := init.MainMysql.SelectBySql(query, fmt.Sprintf(query, argStr), value)
+	rs := init.BaseMysql.SelectBySql(query, fmt.Sprintf(query, argStr), value)
 	existProjectSet := map[string]struct{}{}
 	if rs != nil && len(*rs) > 0 { // 如果查到了  说明已经参标 这部分应该显示已参标
 		// 处理成map
@@ -118,7 +92,7 @@ func (p *ParticipateBid) PersonalExistProject(projectId []string) map[string]str
 	return existProjectSet
 }
 
-// ListPersonalFormat 列表页个人 参标按钮 格式化数据
+// ListPersonalFormat 列表页个人 参标按钮 格式化数据
 func (p *ParticipateBid) ListPersonalFormat(existProjectSet map[string]struct{}, infoM map[string]string) []*bxcore.ShowInfo {
 	// 处理成 要返回的返回数据
 	var formatList []*bxcore.ShowInfo
@@ -138,15 +112,13 @@ func (p *ParticipateBid) ListPersonalFormat(existProjectSet map[string]struct{},
 // DetailPersonalFormat 详情页个人版 按钮格式化数据
 func (p *ParticipateBid) DetailPersonalFormat(existProjectSet map[string]struct{}) bxcore.ParticipateDetailInfo {
 	// 处理成 要返回的返回数据
-	formatData := bxcore.ParticipateDetailInfo{
-		ShowParticipate: true,
-	}
-	// 存在在说明已经参标  展示未终止参标
+	formatData := bxcore.ParticipateDetailInfo{}
+	// 存在在说明已经参标  显示终止参标
 	if len(existProjectSet) > 0 {
-		formatData.ShowValue = ButtonValueParticipated
+		formatData.ShowStopParticipate = true
 	} else {
-		// 不存在则说明 未参标 展示为参标
-		formatData.ShowValue = ButtonValueParticipate
+		// 不存在则说明 未参标 参标按钮展示
+		formatData.ShowParticipate = true
 	}
 	return formatData
 }
@@ -160,9 +132,9 @@ func (p *ParticipateBid) EntExistProject(projectId []string) map[string]string {
 		arg = append(arg, "?")
 		value = append(value, p.PositionId)
 	}
-	argStr := strings.Join(arg, ",")
+	argStr := strings.Join(arg, ",") // todo
 	query := "select GROUP_CONCAT(ent_user_id) as personIds ,project_id from participate_user where ent_id=? and  project_id in (%s) and state>=0  group by project_id "
-	rs := init.MainMysql.SelectBySql(query, fmt.Sprintf(query, argStr), value)
+	rs := init.BaseMysql.SelectBySql(query, fmt.Sprintf(query, argStr), value)
 	existProjectMap := map[string]string{}
 	if rs != nil && len(*rs) > 0 { // 如果查到了  说明这个项目公司里面已经参标 处理一下信息用于后边判断是否是自己参标
 		// 处理成map
@@ -181,13 +153,13 @@ func (p *ParticipateBid) EntExistProject(projectId []string) map[string]string {
 //     - 有参标人   判断是否包含自己
 //                 如果包含自己   显示已参标
 //                 不包含自己     则判断企业是否允许多人参标 允许 则显示参标按钮 不允许 则不显示
-func (p ParticipateBid) ListEntFormat(existProjectMap, infoM map[string]string, isAllow bool) []*bxcore.ShowInfo {
+func (p *ParticipateBid) ListEntFormat(existProjectMap, infoM map[string]string, isAllow bool) []*bxcore.ShowInfo {
 	// 处理成 要返回的返回数据
 	var formatList []*bxcore.ShowInfo
 	for k, v := range infoM {
 		buttonValue := ButtonValueParticipate      // 不存在时-显示参标
 		if userIds, ok := existProjectMap[v]; ok { // 存在时 说明项目在企业下已经参标 需要进一步判断
-			// 判断已经存在的参标人中是否包含自己 // 包含时 显示成已参标
+			// 判断已经存在的参标人中是否包含自己  包含时 显示成已参标
 			if ContainId(userIds, common.InterfaceToStr(p.EntUserId)) {
 				buttonValue = ButtonValueParticipated
 			} else if isAllow { // 不包含自己时需要 进一步判断公司设置是否允许多人参标
@@ -207,55 +179,71 @@ func (p ParticipateBid) ListEntFormat(existProjectMap, infoM map[string]string,
 
 }
 
-// DetailEntFormat 企业版 详情页数据格式化
+// DetailEntFormat 企业版 详情页数据格式化  返回数据 参标按钮 终止参标按钮 转给同事按钮 参标人姓名
 //  判断企业下是否有参标人
-//     - 无参标人   展示参标按钮
-//     - 有参标人   判断是否包含本人  包含则展示 终止参标按钮 不包含则再判断用户身份
-//                - 企业管理员  显示终止参标
-//                - 部门管理员  如果参标人中有该部门的人员  显示终止参标  否则 判断是否允许多人参标 允许多人参标 显示参标按钮 否则不显示
-//                - 员工: 判断是否允许多人参标  允许多人则展示 参标  不允许多人则不展示按钮
-func (p ParticipateBid) DetailEntFormat(existProjectMap map[string]string, isAllow bool) (formatData bxcore.ParticipateDetailInfo) {
+//  - 无参标人   展示参标按钮   其余按钮不显示
+//  - 有参标人  展示参标人信息
+//    - 管理员 展示 转给同事、终止参标
+//    - 包含自己 展示终止参标 不包含自己如果允许多人参标 展示参标按钮
+//
+func (p *ParticipateBid) DetailEntFormat(existProjectMap map[string]string, isAllow bool) (formatData bxcore.ParticipateDetailInfo) {
 	// 处理成 要返回的返回数据
-	formatData = bxcore.ParticipateDetailInfo{
-		ShowParticipate: true,
-	}
+	formatData = bxcore.ParticipateDetailInfo{}
 	if len(existProjectMap) == 0 {
-		// 不存在则说明 当前未参标 按钮展示为参标
-		formatData.ShowValue = ButtonValueParticipate
+		//  无参标人   展示参标按钮   其余按钮不显示
+		formatData.ShowParticipate = true
 		return
 	}
 	persons := ""
-	for _, v := range existProjectMap { // 这是为了取参标人信息 列表页是多条数据 详情页这里 map里面只会有一条数据
+	for _, v := range existProjectMap { // 这是为了取参标人id信息 列表页是多条数据 详情页这里 map里面只会有一条数据
 		persons = v
 		break
 	}
-	// todo 参标人信息 处理成姓名
-
-	// 判断是不是自己
-	// 是自己则展示终止参标
-	if ContainId(persons, fmt.Sprint(p.EntUserId)) {
-		formatData.ShowValue = ButtonValueParticipated
-		return
+	// 参标人信息 处理成姓名
+	nameRs := GetNameByUserIds(persons)
+	if nameRs != nil && len(*nameRs) > 0 {
+		formatData.UserName = common.ObjToString((*nameRs)[0]["name"])
 	}
-	// 不是自己则需要再 判断身份   员工  / 企业管理员 部门管理员
-	switch p.EntRoleId {
-	case RoleEntManager:
-		// 如果是企业管理员  显示 终止参标
-		formatData.ShowValue = ButtonValueParticipated
-	case RoleDepartManager:
-		// 如果是部门管理员 判断是否包含该部门下的 如果是 显示终止参标  如果不是 判断是否允许多人参标  允许 显示参标 不允许 则不显示
+	// 如果是管理员 显示 终止参标按钮 、转给同事按钮
+	if p.EntRoleId == RoleEntManager || p.EntRoleId == RoleDepartManager {
+		formatData.ShowStopParticipate = true
+		formatData.ShowTransfer = true
+	}
+	// 如果包含自己 显示终止参标按钮
+	if ContainId(persons, common.InterfaceToStr(p.EntUserId)) {
+		formatData.ShowStopParticipate = true
+	} else if isAllow { // 如果允许多人 显示参标按钮
+		formatData.ShowParticipate = true
+	}
+	return
 
-	default:
-		// 如果是员工  判断是否允许多人
-		if isAllow {
-			formatData.ShowValue = ButtonValueParticipate // 是 -显示参标
-		} else {
-			formatData.ShowParticipate = false // 否  不显示按钮
-		}
+}
 
+// HandlerProjectId 返回信息的映射集合,项目id列表
+func HandlerProjectId(projectInfos []map[string]interface{}, infoIds map[string]struct{}) (map[string]string, []string) {
+	result := map[string]string{}
+	projectIdList := []string{}
+	//  记录infoid 和项目id 对应关系  用于最后处理返回的数据
+	for i := 0; i < len(projectInfos); i++ {
+		_id := common.ObjToString(projectInfos[i]["_id"])
+		projectIdList = append(projectIdList, _id)
+		list, b := projectInfos[i]["list"].([]interface{})
+		if !b {
+			continue
+		}
+		for j := 0; j < len(list); j++ {
+			infoidMap := common.ObjToMap(list[j])
+			if infoidMap == nil {
+				continue
+			}
+			infoid := common.ObjToString((*infoidMap)["infoid"])
+			if _, ok := infoIds[infoid]; ok && infoid != "" {
+				result[infoid] = _id
+				break
+			}
+		}
 	}
-
-	return
+	return result, projectIdList
 
 }
 
@@ -273,7 +261,7 @@ func DecodeId(ids string) (result []string, resultSet map[string]struct{}) {
 	return
 }
 
-// ContainId 用于判断已经参标的用户中是否包含自己
+// ContainId 用于判断给定的逗号分割的字符串中是否包含 目标的字符串
 func ContainId(ids string, objId string) bool {
 	list := strings.Split(ids, ",")
 	for i := 0; i < len(list); i++ {
@@ -282,30 +270,16 @@ func ContainId(ids string, objId string) bool {
 		}
 	}
 	return false
-
 }
 
-/*
- 详情页参标信息展示
- 参标按钮:
-1. 判断身份 2. 根据标讯id 查询项目信息 同上
-3. 项目信息存在  则区分  个人 和 企业
-个人:
-	参标按钮 :项目参标人为空 否则展示终止参标
-    参标人姓名 : 不展示
-    转给同事按钮:不展示
-企业身份:
-    参标按钮:
-    判断企业下是否有参标人
-     - 无参标人   展示参标按钮
-     - 有参标人   当前用户是企业管理员 显示终止参标
-                当前用户是部门管理员  如果参标人中有该部门的人员  显示终止参标  否则 判断是否允许多人参标 允许多人参标 显示参标按钮 否则不显示
-                不是管理员:判断是否包含本人  包含则展示 终止参标按钮
-                          不包含则判断是否允许多人参标  允许多人则展示 参标  不允许多人则不展示按钮
-     参标人姓名 :有参标人则展示
-     转给同事按钮 :判断是否是管理员(部门管理员/企业管理员)
-				 是管理员则展示 否 则不展示
-*/
+// GetNameByUserIds 获取用户名字符串
+//  参数:逗号分割的用户id "11,22,333..."
+//  返回: "张三,李四,王五..."
+func GetNameByUserIds(ids string) *[]map[string]interface{} {
+	query := "select  group_concat( name)  from" + TableEntnicheUser + "where id in (" + ids + ") "
+	rs := init.MainMysql.SelectBySql(query)
+	return rs
+}
 
 /*
 投标状态更新