123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- package model
- import (
- "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/date"
- "encoding/json"
- IC "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/rpc/init"
- "strings"
- )
- type User struct {
- Id int
- Name string //员工姓名
- Mail string //邮箱
- Phone string //手机号
- Dept_id int //部门id
- Dept_name string //部门名称
- //Role string //角色
- Power int //权限
- }
- type CurrentUser struct {
- Role_admin_department bool //是否是部门管理员
- Role_admin_system bool //是否是系统管理员
- Dept *Department //部门信息
- BondPhone string //手机号
- NickName string //昵称
- HeadImageUrl string //头像
- PersonalAuth int //个人认证
- PersonalAuthReason string //个人认证不通过原因
- User_power int //是否分配权限
- User_name string //用户姓名
- }
- type Department struct {
- Id int
- Name string //部门名
- Pid int //上级部门id
- Pname string //上级部门名称
- Nodiff int //全员无差别接收 0:关闭 1:打开
- Subdis int //订阅分发 0:关闭 1:打开
- Aid int //管理员id
- Aname string //管理员姓名
- Rname string //角色名
- User_count int //该部门下员工的总数
- Dept_count int //该部门下子部门总数
- Ent_id int //公司id
- }
- type namePower struct {
- entUserId string
- power int //1 超级订阅权益 2大会员权益
- }
- const (
- //角色
- Role_admin_system = 1 //系统管理员
- Role_admin_department = 2 //部门管理员
- )
- // 当前登录用户的信息
- func EntInfo(entId, entUserId int) *CurrentUser {
- currentUser := &CurrentUser{
- Dept: &Department{},
- }
- user := IC.MainMysql.SelectBySql(`SELECT a.name as user_name from entniche_user a INNER JOIN entniche_user_role b on (a.id=b.user_id) where a.id=? and b.role_id=? limit 1`, entUserId, Role_admin_system)
- if user != nil && len(*user) > 0 {
- currentUser.Role_admin_system = true
- currentUser.User_name, _ = (*user)[0]["user_name"].(string)
- currentUser.User_power = 1
- r := IC.MainMysql.SelectBySql(`SELECT id,name,subdis,nodiff from entniche_department where ent_id=? and pid=0 limit 1`, entId)
- if r != nil && len(*r) == 1 {
- department := JsonUnmarshal((*r)[0], &Department{}).(*Department)
- if department != nil {
- department.Pid = department.Id
- currentUser.Dept = department
- }
- }
- } else {
- //角色、权限
- r := IC.MainMysql.SelectBySql(`SELECT a.name as user_name,a.power as user_power,b.role_id,d.id as dept_id,d.name as dept_name,d.subdis as dept_subdis,d.nodiff as dept_nodiff,e.id as dept_pid from entniche_user a
- LEFT JOIN entniche_user_role b on (b.user_id=?)
- INNER JOIN entniche_department_user c on (a.id=? and a.id=c.user_id)
- INNER JOIN entniche_department d on (c.dept_id=d.id)
- INNER JOIN entniche_department e on (e.ent_id=? and e.pid=0)
- order by a.id desc limit 1`, entUserId, entUserId, entId)
- if r != nil && len(*r) == 1 {
- currentUser.User_name, _ = (*r)[0]["user_name"].(string)
- currentUser.User_power = common.IntAll((*r)[0]["user_power"])
- if common.IntAll((*r)[0]["role_id"]) == Role_admin_department {
- currentUser.Role_admin_department = true
- }
- currentUser.Dept.Id = common.IntAll((*r)[0]["dept_id"])
- currentUser.Dept.Pid = common.IntAll((*r)[0]["dept_pid"])
- currentUser.Dept.Name = common.ObjToString((*r)[0]["dept_name"])
- currentUser.Dept.Subdis = common.IntAll((*r)[0]["dept_subdis"])
- currentUser.Dept.Nodiff = common.IntAll((*r)[0]["dept_nodiff"])
- }
- }
- return currentUser
- }
- // map转结构体
- func JsonUnmarshal(m interface{}, s interface{}) interface{} {
- var b []byte
- if v, ok := m.(string); ok {
- b = []byte(v)
- } else if v, ok := m.([]byte); ok {
- b = v
- } else {
- b, _ = json.Marshal(m)
- }
- json.Unmarshal(b, &s)
- return s
- }
- // 获取部门下可以进行分发的人员(不包含部门名称和部门id)
- func GetDisUsers(entId, deptId int) *[]*User {
- r := IC.MainMysql.SelectBySql(`select DISTINCT c.id,c.name,c.phone,c.power,b.dept_id from entniche_department_parent a
- INNER JOIN entniche_department_user b on (b.dept_id=? or (a.pid=? and a.id=b.dept_id))
- INNER JOIN entniche_user c on (c.ent_id=? and b.user_id=c.id)
- order by convert(c.name using gbk) COLLATE gbk_chinese_ci asc`, deptId, deptId, entId)
- users, _ := JsonUnmarshal(r, &[]*User{}).(*[]*User)
- if users == nil {
- return &[]*User{}
- }
- return users
- }
- // 获取企业下所有的员工(不包含部门名称和部门id)
- func GetEntUsers(entId int) *[]*User {
- r := IC.MainMysql.SelectBySql(`select a.id,a.name,a.phone,a.power,b.dept_id from entniche_user a LEFT JOIN entniche_department_user b on (a.id=b.user_id ) where ent_id=?
- order by convert(name using gbk) COLLATE gbk_chinese_ci asc`, entId)
- users, _ := JsonUnmarshal(*r, &[]*User{}).(*[]*User)
- if users == nil {
- return &[]*User{}
- }
- return users
- }
- // 获取企业下分配权益的用户
- func GetEntPowerUsers(entId int) map[namePower]int {
- nowFormat := date.NowFormat(date.Date_Short_Layout)
- r := IC.MainMysql.SelectBySql(`select a.ent_user_id,b.product_type from entniche_power a LEFT JOIN entniche_wait_empower b ON (a.wait_empower_id = b.id) where a.ent_id=? and a.status = 1 and b.start_time <=? and b.end_time>=? `, entId, nowFormat, nowFormat)
- if r == nil {
- return nil
- }
- data := make(map[namePower]int)
- for _, v := range *r {
- if strings.Contains(common.InterfaceToStr(v["product_type"]), "VIP") {
- var _n namePower
- _n.entUserId = common.InterfaceToStr(v["ent_user_id"])
- _n.power = 1
- data[_n] = 1
- } else if strings.Contains(common.InterfaceToStr(v["product_type"]), "大会员") {
- var _n namePower
- _n.entUserId = common.InterfaceToStr(v["ent_user_id"])
- _n.power = 2
- data[_n] = 2
- }
- }
- return data
- }
- func GetIsEnt(entId int) bool {
- return IC.MainMysql.CountBySql(`select count(*) from entniche_info where id=? and status = 1`, entId) > 0
- }
|