123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- package service
- import (
- "fmt"
- "strings"
- . "app.yhyue.com/moapp/jybase/common"
- "bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
- . "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
- )
- //获取用户可切换的身份列表
- func IdentityList(userId int64) []*Identity {
- result := []*Identity{}
- list := entity.BaseMysql.SelectBySql(`SELECT DISTINCT a.id as position_id,c.person_id,a.person_name,a.account_id,a.type as position_type,a.ent_id,b.id as ent_account_id,d.phone from base_user d
- inner join base_position a on (d.id=? and d.id=a.user_id)
- inner join base_account c on (a.account_id=c.id)
- left join base_account b on (b.type=1 and b.person_id=0 and b.ent_id<>0 and c.ent_id=b.ent_id) order by a.id desc`, userId)
- if list != nil {
- m := map[int64]*Identity{}
- entIds := []string{}
- phone := ""
- for _, v := range *list {
- i := &Identity{
- EntId: Int64All(v["ent_id"]),
- PersonId: Int64All(v["person_id"]),
- UserName: ObjToString(v["person_name"]),
- AccountId: Int64All(v["account_id"]),
- EntAccountId: Int64All(v["ent_account_id"]),
- PositionId: Int64All(v["position_id"]),
- PositionType: Int64All(v["position_type"]),
- UserId: userId,
- }
- if i.PositionType == 0 {
- i.Name = "个人版"
- m[0] = i
- } else if i.EntId > 0 {
- m[i.EntId] = i
- entIds = append(entIds, fmt.Sprint(i.EntId))
- }
- if phone == "" {
- phone = ObjToString(v["phone"])
- }
- }
- if len(entIds) > 0 {
- ents := entity.Mysql.SelectBySql(`SELECT a.id,a.name,a.ent_id,a.niche_dis,b.name as ent_name,c.role_id,d.dept_id from entniche_user a inner join entniche_info b on (a.phone=? and b.id in (`+strings.Join(entIds, ",")+`) and a.ent_id=b.id) left join entniche_user_role c on (a.id=c.user_id) LEFT JOIN entniche_department_user d ON(d.user_id =a.id ) order by b.createtime`, phone)
- if ents != nil {
- for _, v := range *ents {
- i := m[Int64All(v["ent_id"])]
- i.EntUserId = Int64All(v["id"])
- i.EntUserName = ObjToString(v["name"])
- i.Name = ObjToString(v["ent_name"])
- i.EntRole = Int64All(v["role_id"])
- i.EntNicheDis = Int64All(v["niche_dis"])
- i.EntDeptId = Int64All(v["dept_id"])
- result = append(result, i)
- }
- }
- }
- if m[0] != nil {
- result = append(result, m[0])
- }
- }
- return result
- }
- //根据账号id获取个人身份信息
- func IdentityByUserId(userId int64) *Identity {
- list := entity.BaseMysql.SelectBySql(`SELECT a.account_id,a.id as position_id,c.person_id,a.person_name,a.type as position_type from base_user d
- inner join base_position a on (d.id=? and a.type=0 and d.id=a.user_id)
- inner join base_account c on (c.type=0 and a.account_id=c.id) order by a.id desc limit 1`, userId)
- if list != nil && len(*list) > 0 {
- return &Identity{
- PersonId: Int64All((*list)[0]["person_id"]),
- UserName: ObjToString((*list)[0]["person_name"]),
- AccountId: Int64All((*list)[0]["account_id"]),
- PositionId: Int64All((*list)[0]["position_id"]),
- PositionType: Int64All((*list)[0]["position_type"]),
- UserId: userId,
- }
- }
- return nil
- }
- //根据职位id获取身份信息
- func IdentityByPositionId(positionId int64) *Identity {
- list := entity.BaseMysql.SelectBySql(`SELECT a.id as position_id,c.person_id,a.person_name,a.account_id,a.type as position_type,a.ent_id,b.phone,b.id as user_id,d.id as ent_account_id from base_position a
- inner join base_user b on (a.user_id=b.id)
- inner join base_account c on (a.id=? and a.account_id=c.id)
- left join base_account d on (d.type=1 and d.person_id=0 and d.ent_id<>0 and d.ent_id=a.ent_id) limit 1`, positionId)
- if list != nil && len(*list) == 1 {
- identity := &Identity{
- EntId: Int64All((*list)[0]["ent_id"]),
- PersonId: Int64All((*list)[0]["person_id"]),
- UserName: ObjToString((*list)[0]["person_name"]),
- AccountId: Int64All((*list)[0]["account_id"]),
- EntAccountId: Int64All((*list)[0]["ent_account_id"]),
- PositionId: Int64All((*list)[0]["position_id"]),
- PositionType: Int64All((*list)[0]["position_type"]),
- UserId: Int64All((*list)[0]["user_id"]),
- }
- if identity.PositionType == 0 {
- identity.Name = "个人版"
- }
- phone := ObjToString((*list)[0]["phone"])
- if identity.EntId > 0 {
- ents := entity.Mysql.SelectBySql(`SELECT a.id,a.name,a.ent_id,a.niche_dis,b.name as ent_name,c.role_id,d.dept_id from entniche_user a inner join entniche_info b on (a.phone=? and b.id=? and a.ent_id=b.id) left join entniche_user_role c on (a.id=c.user_id) LEFT JOIN entniche_department_user d ON(d.user_id =a.id ) limit 1`, phone, identity.EntId)
- if ents != nil && len(*ents) > 0 {
- identity.EntUserId = Int64All((*ents)[0]["id"])
- identity.EntUserName = ObjToString((*ents)[0]["name"])
- identity.Name = ObjToString((*ents)[0]["ent_name"])
- identity.EntRole = Int64All((*ents)[0]["role_id"])
- identity.EntNicheDis = Int64All((*ents)[0]["niche_dis"])
- identity.EntDeptId = Int64All((*ents)[0]["dept_id"])
- }
- }
- return identity
- }
- return nil
- }
- //根据企业员工id获取身份信息
- func IdentityByEntUserId(entUserId int64) *Identity {
- ents := entity.Mysql.SelectBySql(`SELECT a.id,a.name,a.phone,a.ent_id,a.niche_dis,b.name as ent_name,c.role_id,d.dept_id from entniche_user a inner join entniche_info b on (a.id=? and a.ent_id=b.id) left join entniche_user_role c on (a.id=c.user_id) LEFT JOIN entniche_department_user d ON(d.user_id =a.id ) limit 1`, entUserId)
- if ents == nil || len(*ents) == 0 {
- return nil
- }
- if entId := Int64All((*ents)[0]["ent_id"]); entId > 0 {
- list := entity.BaseMysql.SelectBySql(`SELECT a.id as position_id,c.person_id,a.person_name,a.account_id,a.type as position_type,d.id as user_id,b.id as ent_account_id from base_user d
- inner join base_position a on (d.phone=? and a.ent_id=? and a.type=1 and d.id=a.user_id)
- inner join base_account c on (c.ent_id=? and c.type=1 and a.account_id=c.id)
- inner join base_account b on (b.type=1 and b.person_id=0 and b.ent_id=?) order by a.id desc limit 1`, ObjToString((*ents)[0]["phone"]), entId, entId, entId)
- if list != nil && len(*list) > 0 {
- identity := &Identity{
- PersonId: Int64All((*list)[0]["person_id"]),
- UserName: ObjToString((*list)[0]["person_name"]),
- AccountId: Int64All((*list)[0]["account_id"]),
- EntAccountId: Int64All((*list)[0]["ent_account_id"]),
- PositionId: Int64All((*list)[0]["position_id"]),
- PositionType: Int64All((*list)[0]["position_type"]),
- UserId: Int64All((*list)[0]["user_id"]),
- EntId: entId,
- EntUserId: Int64All((*ents)[0]["id"]),
- EntUserName: ObjToString((*ents)[0]["name"]),
- Name: ObjToString((*ents)[0]["ent_name"]),
- EntRole: Int64All((*ents)[0]["role_id"]),
- EntNicheDis: Int64All((*ents)[0]["niche_dis"]),
- EntDeptId: Int64All((*ents)[0]["dept_id"]),
- }
- return identity
- }
- }
- return nil
- }
- //根据企业id获取身份信息
- func IdentityByEntId(entId int64) *Identity {
- list := entity.BaseMysql.SelectBySql(`select id from base_account where ent_id=? and type=1 and person_id=0 limit 1`, entId)
- if list == nil || len(*list) == 0 {
- return nil
- }
- return &Identity{
- EntAccountId: Int64All((*list)[0]["id"]),
- }
- }
|