|
- package svc
-
- import (
- "applet/app/admin/md"
- "applet/app/db"
- "applet/app/db/model"
- enum2 "applet/app/enum"
- "applet/app/utils"
- "fmt"
- )
-
- func EnterpriseUserListByCentralKitchenForSchool(req md.EnterpriseUserListReq) (resp md.EnterpriseUserListByCentralKitchenForSchoolResp, err error) {
- //1、判断是否过滤 "教师"
- userIdentityDb := db.UserIdentityDb{}
- userIdentityDb.Set(0)
- teacherUserIdentities, err := userIdentityDb.FindUserIdentityForEnterpriseByIdentity(req.EnterpriseId, enum2.UserIdentityForCentralKitchenForTeacher)
- if err != nil {
- return
- }
-
- userIdentities, err := userIdentityDb.FindUserIdentityForEnterprise(req.EnterpriseId)
- if err != nil {
- return
- }
- var teacherUserIdentitiesMap = map[string][]model.UserIdentity{}
- var userIdentitiesMap = map[string][]model.UserIdentity{}
- var uids, teacherUids []int
- for _, v := range *teacherUserIdentities {
- teacherUserIdentitiesMap[utils.IntToStr(v.Uid)] = append(teacherUserIdentitiesMap[utils.IntToStr(v.Uid)], v)
- teacherUids = append(teacherUids, v.Uid)
- }
- for _, v := range *userIdentities {
- userIdentitiesMap[utils.IntToStr(v.Uid)] = append(userIdentitiesMap[utils.IntToStr(v.Uid)], v)
- uids = append(uids, v.Uid)
- }
-
- var m []model.User
- sess := db.Db.In("id", uids)
- if req.IsTeacher == 1 {
- sess.In("id", teacherUids)
- }
- if req.IsTeacher == 2 {
- sess.NotIn("id", teacherUids)
- }
- if req.Nickname != "" {
- sess.And("nickname like ?", "%"+req.Nickname+"%")
- }
- if req.Phone != "" {
- sess.And("phone like ?", "%"+req.Phone+"%")
- }
- count, err := sess.Limit(req.Limit, (req.Page-1)*req.Limit).FindAndCount(&m)
- if err != nil {
- return
- }
- resp.Total = count
- classWithUserDb := db.ClassWithUserDb{}
- classWithUserDb.Set()
- for _, v := range m {
- temp := md.EnterpriseUserListByCentralKitchenForSchoolStruct{
- Id: v.Id,
- Nickname: v.Nickname,
- Phone: v.Phone,
- Avatar: v.Avatar,
- IsTeacher: 0,
- CreateAt: v.CreateAt,
- }
- for _, v1 := range userIdentitiesMap[utils.IntToStr(v.Id)] {
- //TODO::判断是否为老师
- if v1.Identity == enum2.UserIdentityForCentralKitchenForTeacher {
- temp.UserIdentities = append(temp.UserIdentities, struct {
- Id int `json:"id" label:"身份id"`
- EnterpriseId int `json:"enterprise_id" label:"企业id"`
- IdNo string `json:"id_no" label:"身份证号"`
- SchoolName string `json:"school_name" label:"学校名"`
- Name string `json:"name" label:"姓名"`
- Grade string `json:"grade" label:"年级"`
- GradeId int `json:"grade_id" label:"年级id"`
- Class string `json:"class" label:"班级"`
- ClassId int `json:"class_id" label:"班级id"`
- }{Id: v1.Id, EnterpriseId: v1.EnterpriseId, IdNo: v1.IdNo, SchoolName: "教师", Name: v1.Name, Grade: "教师", Class: "教师", GradeId: -1, ClassId: -1})
- temp.IsTeacher = 1
- } else {
- data, err2 := classWithUserDb.GetInfoByUserIdentityId(v1.Id)
- if err2 != nil {
- return resp, err2
- }
- if data == nil {
- continue
- }
- temp.UserIdentities = append(temp.UserIdentities, struct {
- Id int `json:"id" label:"身份id"`
- EnterpriseId int `json:"enterprise_id" label:"企业id"`
- IdNo string `json:"id_no" label:"身份证号"`
- SchoolName string `json:"school_name" label:"学校名"`
- Name string `json:"name" label:"姓名"`
- Grade string `json:"grade" label:"年级"`
- GradeId int `json:"grade_id" label:"年级id"`
- Class string `json:"class" label:"班级"`
- ClassId int `json:"class_id" label:"班级id"`
- }{Id: v1.Id, EnterpriseId: v1.EnterpriseId, IdNo: data.UserIdentity.IdNo, SchoolName: data.Enterprise.Name, Name: data.UserIdentity.Name, Grade: data.Grade.Name, Class: data.Class.Name, GradeId: data.Grade.Id, ClassId: data.Class.Id})
- }
- }
- resp.List = append(resp.List, temp)
- }
- return
- }
-
- func EnterpriseUserListByCentralKitchenForSchoolV2(req md.EnterpriseUserListReq) (resp md.EnterpriseUserListByCentralKitchenForSchoolResp, err error) {
- sess := db.Db.Desc("user.id")
- if req.Nickname != "" {
- sess.And("user.nickname like ?", "%"+req.Nickname+"%")
- }
- if req.Phone != "" {
- sess.And("user.phone like ?", "%"+req.Phone+"%")
- }
- if req.IsTeacher == 1 {
- sess.And("user.phone like ?", "%"+req.Phone+"%")
- }
- if req.IsTeacher == 0 {
- sess.And("user_identity.identity = ? or user_identity.identity = ?", enum2.UserIdentityForCentralKitchenForTeacher, enum2.UserIdentityForCentralKitchenForStudent)
- }
- if req.IsTeacher == 1 {
- sess.And("user_identity.identity = ?", enum2.UserIdentityForCentralKitchenForTeacher)
- }
- if req.IsTeacher == 2 {
- sess.And("user_identity.identity = ?", enum2.UserIdentityForCentralKitchenForStudent)
- }
-
- userIdentityDb := db.UserIdentityDb{}
- userIdentityDb.Set(0)
- userIdentitiy, err := userIdentityDb.FindUserIdentityForEnterprise(req.EnterpriseId)
- if err != nil {
- return
- }
- var uids []int
- for _, v := range *userIdentitiy {
- uids = append(uids, v.Uid)
- }
- if len(uids) > 0 {
- sess.In("id", uids)
- }
-
- var classWithUserIdentityIdsOne []int
- var classWithUserIdentityIdsTwo []int
- classWithUserDb := db.ClassWithUserDb{}
- classWithUserDb.Set()
- if req.ClassId != 0 {
- classWithUsers, err2 := classWithUserDb.FindUserIdentity(req.ClassId)
- if err2 != nil {
- return resp, err2
- }
- for _, v := range *classWithUsers {
- classWithUserIdentityIdsOne = append(classWithUserIdentityIdsOne, v.UserIdentityId)
- }
- }
- if req.GradeId != 0 {
- classDb := db.ClassDb{}
- classDb.Set(req.GradeId)
- classes, err3 := classDb.FindClass()
- if err3 != nil {
- return resp, err3
- }
- var classesId []int
- for _, v := range *classes {
- classesId = append(classesId, v.Id)
- }
- classWithUsers, err4 := classWithUserDb.FindUserIdentity(classesId)
- if err4 != nil {
- return resp, err4
- }
- for _, v := range *classWithUsers {
- classWithUserIdentityIdsTwo = append(classWithUserIdentityIdsTwo, v.UserIdentityId)
- }
- }
-
- if req.Name != "" {
- sess.And("user_identity.name like ?", "%"+req.Name+"%")
- }
- if len(classWithUserIdentityIdsOne) > 0 {
- sess.In("user_identity.id", classWithUserIdentityIdsOne)
- }
- if len(classWithUserIdentityIdsTwo) > 0 {
- sess.In("user_identity.id", classWithUserIdentityIdsTwo)
- }
-
- var m []*db.UserWithUserIdentity
- count, _ := sess.
- Join("LEFT", "user_identity", "user.id = user_identity.uid").
- Limit(req.Limit, (req.Page-1)*req.Limit).GroupBy("user.id").FindAndCount(&m)
- resp.Total = count
-
- var userIdentitiesMap = map[string][]db.UserIdentityWithClass{}
- for _, v := range m {
- userIdentityDb.Set(v.User.Id)
- userIdentities, err1 := userIdentityDb.FindUserIdentityWithClass()
- if err1 != nil {
- return resp, err1
- }
- for _, v1 := range *userIdentities {
- userIdentitiesMap[utils.IntToStr(v1.Uid)] = append(userIdentitiesMap[utils.IntToStr(v1.Uid)], v1)
- }
- }
- fmt.Println("!!!!!!!!!")
- for _, v := range m {
- temp := md.EnterpriseUserListByCentralKitchenForSchoolStruct{
- Id: v.User.Id,
- IsTeacher: 0,
- }
- for _, v1 := range userIdentitiesMap[utils.IntToStr(v.User.Id)] {
- temp.Nickname = v1.User.Nickname
- temp.Phone = v1.User.Phone
- temp.Avatar = v1.User.Avatar
- temp.CreateAt = v1.User.CreateAt
- //TODO::判断是否为老师
- if v1.Identity == enum2.UserIdentityForCentralKitchenForTeacher {
- temp.UserIdentities = append(temp.UserIdentities, struct {
- Id int `json:"id" label:"身份id"`
- EnterpriseId int `json:"enterprise_id" label:"企业id"`
- IdNo string `json:"id_no" label:"身份证号"`
- SchoolName string `json:"school_name" label:"学校名"`
- Name string `json:"name" label:"姓名"`
- Grade string `json:"grade" label:"年级"`
- GradeId int `json:"grade_id" label:"年级id"`
- Class string `json:"class" label:"班级"`
- ClassId int `json:"class_id" label:"班级id"`
- }{Id: v1.UserIdentity.Id, EnterpriseId: v1.UserIdentity.EnterpriseId, IdNo: v1.IdNo, SchoolName: v1.Enterprise.Name, Name: v1.UserIdentity.Name, Grade: "教师", Class: "教师", GradeId: -1, ClassId: -1})
- temp.IsTeacher = 1
- }
- if v1.Identity == enum2.UserIdentityForCentralKitchenForStudent {
- temp.UserIdentities = append(temp.UserIdentities, struct {
- Id int `json:"id" label:"身份id"`
- EnterpriseId int `json:"enterprise_id" label:"企业id"`
- IdNo string `json:"id_no" label:"身份证号"`
- SchoolName string `json:"school_name" label:"学校名"`
- Name string `json:"name" label:"姓名"`
- Grade string `json:"grade" label:"年级"`
- GradeId int `json:"grade_id" label:"年级id"`
- Class string `json:"class" label:"班级"`
- ClassId int `json:"class_id" label:"班级id"`
- }{Id: v1.UserIdentity.Id, EnterpriseId: v1.UserIdentity.EnterpriseId, IdNo: v1.UserIdentity.IdNo, SchoolName: v1.Enterprise.Name, Name: v1.UserIdentity.Name, Grade: v1.Grade.Name, Class: v1.Class.Name, GradeId: v1.Grade.Id, ClassId: v1.Class.Id})
- }
- }
- resp.List = append(resp.List, temp)
- }
- resp.UserIdentityKindList = []map[string]interface{}{
- {
- "name": enum2.UserIdentity.String(enum2.UserIdentityForCentralKitchenForStudent),
- "value": enum2.UserIdentityForCentralKitchenForStudent,
- },
- {
- "name": enum2.UserIdentity.String(enum2.UserIdentityForCentralKitchenForTeacher),
- "value": enum2.UserIdentityForCentralKitchenForTeacher,
- },
- {
- "name": enum2.UserIdentity.String(enum2.UserIdentityForCentralKitchenForWorker),
- "value": enum2.UserIdentityForCentralKitchenForWorker,
- },
- {
- "name": enum2.UserIdentity.String(enum2.UserIdentityForSelfSupportForStudent),
- "value": enum2.UserIdentityForSelfSupportForStudent,
- },
- {
- "name": enum2.UserIdentity.String(enum2.UserIdentityForSelfSupportForTeacher),
- "value": enum2.UserIdentityForSelfSupportForTeacher,
- },
- {
- "name": enum2.UserIdentity.String(enum2.UserIdentityForSelfSupportForWorker),
- "value": enum2.UserIdentityForSelfSupportForWorker,
- },
- }
- return
- }
-
- func EnterpriseUserListByNursingHome(req md.EnterpriseUserListReq) (resp md.EnterpriseUserListByNursingHomeResp, err error) {
- //1、判断是否过滤 "教师"
- userIdentityDb := db.UserIdentityDb{}
- userIdentityDb.Set(0)
- userIdentities, err := userIdentityDb.FindUserIdentityForEnterprise(req.EnterpriseId)
- if err != nil {
- return
- }
- var userIdentitiesMap = map[string][]model.UserIdentity{}
- var uids []int
- for _, v := range *userIdentities {
- userIdentitiesMap[utils.IntToStr(v.Uid)] = append(userIdentitiesMap[utils.IntToStr(v.Uid)], v)
- uids = append(uids, v.Uid)
- }
-
- var m []model.User
- sess := db.Db.In("id", uids)
- if req.Nickname != "" {
- sess.And("nickname like ?", "%"+req.Nickname+"%")
- }
- if req.Phone != "" {
- sess.And("phone like ?", "%"+req.Phone+"%")
- }
- count, err := sess.Limit(req.Limit, (req.Page-1)*req.Limit).FindAndCount(&m)
- if err != nil {
- return
- }
- resp.Total = count
- for _, v := range m {
- temp := md.EnterpriseUserListByNursingHomeStruct{
- Id: v.Id,
- Nickname: v.Nickname,
- Phone: v.Phone,
- Avatar: v.Avatar,
- CreateAt: v.CreateAt,
- }
- for _, v1 := range userIdentitiesMap[utils.IntToStr(v.Id)] {
- temp.UserIdentities = append(temp.UserIdentities, struct {
- Id int `json:"id" label:"身份id"`
- IdNo string `json:"id_no" label:"身份证号"`
- EnterpriseName string `json:"enterprise_name" label:"单位名"`
- Name string `json:"name" label:"姓名"`
- }{Id: v1.Id, IdNo: v1.IdNo, EnterpriseName: req.EnterpriseName, Name: v1.Name})
- }
- resp.List = append(resp.List, temp)
- }
- return
- }
|