From 3f8d9b9fae6c39474f98c7d6d7152c75933178a5 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Mon, 7 Feb 2022 14:26:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=B0=E7=90=86=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/index/assessment/assesshandle.go | 44 +++ .../api/index/assessment/assesstype.go | 54 ++++ gin_server_admin/api/publichandle/enter.go | 9 + .../api/publichandle/userhandle/enter.go | 5 + .../api/publichandle/userhandle/handel.go | 121 ++++++++ .../api/publichandle/userhandle/type.go | 16 + .../api/wechatapp/callback/type.go | 12 +- .../api/wechatapp/sendmessage/apphandle.go | 8 +- .../api/wechatapp/sendmessage/type.go | 5 + .../api/wechatapp/sharemethod/handle.go | 14 + gin_server_admin/commonus/publichaneld.go | 275 ++++++++++++++++++ gin_server_admin/commonus/publicstruct.go | 31 ++ gin_server_admin/initialize/router.go | 7 + gin_server_admin/model/testpage/grouptree.go | 32 ++ .../router/assessment/assessmentrouter.go | 2 + gin_server_admin/router/enter.go | 2 + gin_server_admin/router/publichandel/enter.go | 5 + .../router/publichandel/geography.go | 23 ++ gin_server_admin/utils/redishandel/myredis.go | 36 ++- 19 files changed, 691 insertions(+), 10 deletions(-) create mode 100644 gin_server_admin/api/publichandle/enter.go create mode 100644 gin_server_admin/api/publichandle/userhandle/enter.go create mode 100644 gin_server_admin/api/publichandle/userhandle/handel.go create mode 100644 gin_server_admin/api/publichandle/userhandle/type.go create mode 100644 gin_server_admin/router/publichandel/enter.go create mode 100644 gin_server_admin/router/publichandel/geography.go diff --git a/gin_server_admin/api/index/assessment/assesshandle.go b/gin_server_admin/api/index/assessment/assesshandle.go index 2a2e369..2bef80e 100644 --- a/gin_server_admin/api/index/assessment/assesshandle.go +++ b/gin_server_admin/api/index/assessment/assesshandle.go @@ -7,6 +7,7 @@ import ( "github.com/flipped-aurora/gin-vue-admin/server/api/v1/archiveapi" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/assessment" + "github.com/flipped-aurora/gin-vue-admin/server/api/wechatapp/sendmessage" "github.com/flipped-aurora/gin-vue-admin/server/commonus" "github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" @@ -894,3 +895,46 @@ func (a *Assessment) LookDepartmentAssessInfo(c *gin.Context) { outContMap["dutyListMap"] = outList response.Result(0, outContMap, "数据写入成功!", c) } + +//查询自建应用审批单当前状态 +func (a *Assessment) LookOpenApprovalDataInfo(c *gin.Context) { + var requestData LookDutyCont + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if requestData.Id == "" { + response.Result(102, err, "参数错误!不可产看!", c) + return + } + orderId, orderIdErr := strconv.ParseInt(requestData.Id, 10, 64) + if orderIdErr != nil { + response.Result(103, err, "参数错误!不可产看!", c) + return + } + var assessLogCont assessmentmodel.AssessmentLog //考核记录 + orderContErr := global.GVA_DB_Performanceappraisal.Where("`al_order_id` = ?", orderId).First(&assessLogCont).Error + if orderContErr != nil { + response.Result(104, orderId, "该审批单不存在!请检查是否查看错误!", c) + return + } + var oAS sendmessage.OpenApprovalState + oAS.ThirdNo = requestData.Id + callBackData, isTrue, msg := oAS.SendMessage("school") + if isTrue != true { + response.Result(105, string(callBackData), msg, c) + return + } + var jsonToOpenApprovalStruct OpenApprovalDataInfo + jsonErr := json.Unmarshal(callBackData, &jsonToOpenApprovalStruct) + if jsonErr != nil { + response.Result(106, string(callBackData), "数据解析错误", c) + return + } + if jsonToOpenApprovalStruct.Errcode != 0 { + response.Result(107, jsonToOpenApprovalStruct, jsonToOpenApprovalStruct.Errmsg, c) + return + } + response.Result(0, jsonToOpenApprovalStruct, "查询成功!", c) +} diff --git a/gin_server_admin/api/index/assessment/assesstype.go b/gin_server_admin/api/index/assessment/assesstype.go index 31d5ed2..694f78d 100644 --- a/gin_server_admin/api/index/assessment/assesstype.go +++ b/gin_server_admin/api/index/assessment/assesstype.go @@ -209,3 +209,57 @@ type DutyListType struct { type LookDutyCont struct { Id string `json:"id"` } + +//查看提交审批的详细内容结果 +type OpenApprovalDataInfo struct { + Errcode int `json:"errcode"` + Errmsg string `json:"errmsg"` + Data OpenApprovalDataStruct `json:"data"` +} + +type OpenApprovalDataStruct struct { + ThirdNo string `json:"ThirdNo"` + OpenTemplateId string `json:"OpenTemplateId"` + OpenSpName string `json:"OpenSpName"` + OpenSpstatus int `json:"OpenSpstatus"` // 申请单当前审批状态:1-审批中;2-已通过;3-已驳回;4-已撤销 + ApplyTime int64 `json:"ApplyTime"` + ApplyUsername string `json:"ApplyUsername"` + ApplyUserParty string `json:"ApplyUserParty"` + ApplyUserImage string `json:"ApplyUserImage"` + ApplyUserId string `json:"ApplyUserId"` + ApproverStep int `json:"ApproverStep"` //当前审批节点:0-第一个审批节点;1-第二个审批节点…以此类推 + ApprovalNodes ApprovalNodesType `json:"ApprovalNodes"` + NotifyNodes NotifyNodesType `json:"NotifyNodes"` +} + +type ApprovalNodesType struct { + ApprovalNode []ApprovalNodeType `json:"ApprovalNode"` +} +type ApprovalNodeType struct { + NodeStatus int `json:"NodeStatus"` + NodeAttr int `json:NodeAttr` + NodeType int `json:"NodeType"` + Items ItemsType `json:"Items"` +} + +type ItemsType struct { + Item []ItemStruct `json:"Item"` +} + +type ItemStruct struct { + NotifyNodeType + ItemStatus int `json:"ItemStatus"` + ItemSpeech string `json:"ItemSpeech"` + ItemOpTime int `json:"ItemOpTime"` +} + +type NotifyNodesType struct { + NotifyNode []NotifyNodeType `json:"NotifyNode"` +} + +type NotifyNodeType struct { + ItemName string `json:"ItemName"` + ItemParty string `json:"ItemParty"` + ItemImage string `json:"ItemImage"` + ItemUserId string `json:"ItemUserId"` +} diff --git a/gin_server_admin/api/publichandle/enter.go b/gin_server_admin/api/publichandle/enter.go new file mode 100644 index 0000000..6f97f62 --- /dev/null +++ b/gin_server_admin/api/publichandle/enter.go @@ -0,0 +1,9 @@ +package publichandle + +import "github.com/flipped-aurora/gin-vue-admin/server/api/publichandle/userhandle" + +type ApiGroup struct { + GeographyApi userhandle.ApiGroup +} + +var ApiGroupApp = new(ApiGroup) diff --git a/gin_server_admin/api/publichandle/userhandle/enter.go b/gin_server_admin/api/publichandle/userhandle/enter.go new file mode 100644 index 0000000..9eeaa33 --- /dev/null +++ b/gin_server_admin/api/publichandle/userhandle/enter.go @@ -0,0 +1,5 @@ +package userhandle + +type ApiGroup struct { + GeographyUnknown +} diff --git a/gin_server_admin/api/publichandle/userhandle/handel.go b/gin_server_admin/api/publichandle/userhandle/handel.go new file mode 100644 index 0000000..38d06ca --- /dev/null +++ b/gin_server_admin/api/publichandle/userhandle/handel.go @@ -0,0 +1,121 @@ +package userhandle + +import ( + "encoding/json" + "strconv" + "strings" + + "github.com/flipped-aurora/gin-vue-admin/server/api/wechatapp/callback" + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel" + "github.com/gin-gonic/gin" +) + +//入口 +func (g *GeographyUnknown) Index(c *gin.Context) { + outPut := commonus.MapOut() + response.Result(0, outPut, "公共API入口获取成功", c) +} + +//获取地理位置上报人员信息 +func (g *GeographyUnknown) LocationUserList(c *gin.Context) { + var requestData GetLocLocationUserPage + err := c.ShouldBindJSON(&requestData) + if err != nil { + // response.Result(101, err, "参数错误!请重新提交!", c) + // return + } + if requestData.PageSize == 0 { + requestData.PageSize = 20 + } + // if requestData.Page <= 0 { + // requestData.Page = 1 + // } + offSetPage := commonus.CalculatePages(requestData.Page, requestData.PageSize) + redisPrefix := "Location:GeographicalPosition_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":userId_*" //redis KEY + redisClient := redishandel.RunRedis() + redisClient.SetRedisDb(1) + keys, cursores, errRedis := redisClient.Scan(uint64(offSetPage), redisPrefix, int64(requestData.PageSize)) + output := commonus.MapOut() + output["keys"] = keys + output["cursores"] = cursores + output["errRedis"] = errRedis + output["offSetPage"] = uint64(offSetPage) + output["PageSize"] = int64(requestData.PageSize) + output["Page"] = requestData.Page + response.Result(101, output, "参数错误!请重新提交!", c) +} + +//获取所有地理位置上报人员信息 +func (g *GeographyUnknown) LocationUserListAll(c *gin.Context) { + redisPrefix := "Location:GeographicalPosition_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":userId_*" //redis KEY + redisClient := redishandel.RunRedis() + redisClient.SetRedisDb(1) + keys, errRedis := redisClient.Keys(redisPrefix) + if errRedis != nil { + response.Result(101, errRedis, "没有上报人员!", c) + return + } + var userIdMap []commonus.PublicUserCont + for _, val := range keys { + oenKey := strings.Split(val, "userId_") + if len(oenKey) == 2 { + for t_index, t_val := range oenKey { + if t_index == 1 { + userErr, userInfo := commonus.GetUesrContForWechatID(t_val) + if userErr == true { + userIdMap = append(userIdMap, userInfo) + } + // commonus.GetUesrContForWechatID(t_val) + } + } + } + } + output := commonus.MapOut() + output["keys"] = keys + output["errRedis"] = errRedis + output["userIdMap"] = userIdMap + response.Result(0, output, "数据获取成功!", c) +} + +//获取人员上报地址点位 +func (g *GeographyUnknown) GetLocationUserAddress(c *gin.Context) { + var requestData GetWechatWorkId + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if requestData.Id == "" { + response.Result(102, err, "参数错误!请重新提交!", c) + return + } + redisPrefix := "Location:GeographicalPosition_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":userId_" + requestData.Id //redis KEY + redisClient := redishandel.RunRedis() + redisClient.SetRedisDb(1) + addressMap, addressErr := redisClient.Lrange(redisPrefix, 0, -1) + if addressErr != nil { + response.Result(103, err, "没有上报地理点位!", c) + return + } + var redisToJsonAddressMap []callback.GeographicalPositionRedis + for _, val := range addressMap { + var redisToJsonAddress callback.GeographicalPositionRedis + jsonErr := json.Unmarshal([]byte(val), &redisToJsonAddress) + if jsonErr == nil { + + longFloat, _ := strconv.ParseFloat(redisToJsonAddress.Longitude, 64) + latFloat, _ := strconv.ParseFloat(redisToJsonAddress.Latitude, 64) + long, latg := commonus.GCJ02toBD09(longFloat, latFloat) + redisToJsonAddress.LongitudeBaiDu = long + redisToJsonAddress.LatitudeBaiDu = latg + redisToJsonAddressMap = append(redisToJsonAddressMap, redisToJsonAddress) + } + } + output := commonus.MapOut() + output["addressMap"] = addressMap + output["redisToJsonAddressMap"] = redisToJsonAddressMap + response.Result(0, output, "数据获取成功!", c) +} diff --git a/gin_server_admin/api/publichandle/userhandle/type.go b/gin_server_admin/api/publichandle/userhandle/type.go new file mode 100644 index 0000000..7f323f8 --- /dev/null +++ b/gin_server_admin/api/publichandle/userhandle/type.go @@ -0,0 +1,16 @@ +package userhandle + +import "github.com/flipped-aurora/gin-vue-admin/server/commonus" + +//地理未知 +type GeographyUnknown struct{} + +//获取上报地理位置人员列表(翻页) +type GetLocLocationUserPage struct { + commonus.PageSetLimt +} + +//获取企业微信UserID +type GetWechatWorkId struct { + Id string `json:"id"` +} diff --git a/gin_server_admin/api/wechatapp/callback/type.go b/gin_server_admin/api/wechatapp/callback/type.go index 35890e4..d7881da 100644 --- a/gin_server_admin/api/wechatapp/callback/type.go +++ b/gin_server_admin/api/wechatapp/callback/type.go @@ -60,11 +60,13 @@ type GeographicalPositionType struct { //上报地理位置Redis type GeographicalPositionRedis struct { - UserId string `json:"userid"` - Latitude string `json:"latitude"` - Longitude string `json:"longitude"` - Precision string `json:"precision"` - Time int64 `json:"time"` + UserId string `json:"userid"` + Latitude string `json:"latitude"` + Longitude string `json:"longitude"` + Precision string `json:"precision"` + Time int64 `json:"time"` + LatitudeBaiDu float64 `json:"latitudebaidu"` + LongitudeBaiDu float64 `json:"longitudebaidu"` } //通讯录主表 diff --git a/gin_server_admin/api/wechatapp/sendmessage/apphandle.go b/gin_server_admin/api/wechatapp/sendmessage/apphandle.go index 160952d..39c381e 100644 --- a/gin_server_admin/api/wechatapp/sendmessage/apphandle.go +++ b/gin_server_admin/api/wechatapp/sendmessage/apphandle.go @@ -152,14 +152,14 @@ func (s *VoteTemplate) SendMessage(appName string) ([]byte, bool, string) { return addDePartMent, true, msg } -//多项选择型 -func (s *MultipleTemplate) SendMessage(appName string) ([]byte, bool, string) { - sendUrl, IsTrue, msg := sharemethod.GetSendMsgTokenUrl(appName) +//查询自建应用审批单当前状态 +func (s *OpenApprovalState) SendMessage(appName string) ([]byte, bool, string) { + sendUrl, IsTrue, msg := sharemethod.QueryStateOpenApprovalAata(appName) if IsTrue == false { return nil, false, msg } sendJsonData, _ := json.Marshal(s) addDePartMent := commonus.CurlPostJosn(sendUrl, sendJsonData) - // fmt.Printf("%v-------------->%v\n", string(sendJsonData), string(addDePartMent)) + // fmt.Printf("%v-------------->%v----%v\n", string(sendJsonData), string(addDePartMent), sendUrl) return addDePartMent, true, msg } diff --git a/gin_server_admin/api/wechatapp/sendmessage/type.go b/gin_server_admin/api/wechatapp/sendmessage/type.go index b1de365..feb634e 100644 --- a/gin_server_admin/api/wechatapp/sendmessage/type.go +++ b/gin_server_admin/api/wechatapp/sendmessage/type.go @@ -420,3 +420,8 @@ type MultipleTemplate struct { type TemplatedEtailType struct { TemplateId string `json:"template_id"` } + +//查询自建应用审批单当前状态 +type OpenApprovalState struct { + ThirdNo string `json:"thirdNo"` //审批单ID +} diff --git a/gin_server_admin/api/wechatapp/sharemethod/handle.go b/gin_server_admin/api/wechatapp/sharemethod/handle.go index bb1e0d0..b32e6fe 100644 --- a/gin_server_admin/api/wechatapp/sharemethod/handle.go +++ b/gin_server_admin/api/wechatapp/sharemethod/handle.go @@ -160,3 +160,17 @@ func GetJsapiTicket(types, callUrl string, state int) (tokenInfo string, err err } return } + +//查询自建应用审批单当前状态 +func QueryStateOpenApprovalAata(appName string) (sendUrlstr string, isTrue bool, msg string) { + isTrue = false + ton, _, err := GetWechatToken(appName) + if err != nil { + msg = "获取ToKen失败!" + return + } + isTrue = true + msg = "获取ToKen成功!" + sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/corp/getopenapprovaldata?access_token=" + ton + return +} diff --git a/gin_server_admin/commonus/publichaneld.go b/gin_server_admin/commonus/publichaneld.go index 01dab1c..2520e90 100644 --- a/gin_server_admin/commonus/publichaneld.go +++ b/gin_server_admin/commonus/publichaneld.go @@ -3,6 +3,7 @@ package commonus //公共函数类 import ( "encoding/json" + "fmt" "regexp" "strconv" "strings" @@ -626,3 +627,277 @@ func AdminClientIdentity() (isTrue bool, redisAdminInfo systemuser.RedisAdminInf } return } + +//更具微信ID获取员工信息 +func GetUesrContForWechatID(wechatId string) (isTrue bool, myCont PublicUserCont) { + redisClient := redishandel.RunRedis() + isTrue = false + redisPrefix := "userInfo_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":" + wechatId //redis KEY + redisCont, redisErr := redisClient.HashGetAll(redisPrefix) + if redisErr == true { + myCont.Number = redisCont["number"] + departmentid, departmentidErr := strconv.ParseInt(redisCont["departmentid"], 10, 64) + if departmentidErr == nil { + myCont.DepartmentId = departmentid + } + workshop, workshopErr := strconv.ParseInt(redisCont["workshopid"], 10, 64) + if workshopErr == nil { + myCont.WorkshopId = workshop + } + postid, postidErr := strconv.ParseInt(redisCont["postid"], 10, 64) + if postidErr == nil { + myCont.PostId = postid + } + tema, temaErr := strconv.ParseInt(redisCont["tema"], 10, 64) + if temaErr == nil { + myCont.Tema = tema + } + temakey, temakeyErr := strconv.ParseInt(redisCont["key"], 10, 64) + if temakeyErr == nil { + myCont.Key = temakey + } + stateval, statevalErr := strconv.Atoi(redisCont["key"]) + if statevalErr == nil { + myCont.State = stateval + } + hireset, hiresetErr := strconv.Atoi(redisCont["hireset"]) + if hiresetErr == nil { + myCont.HireSet = hireset + } + groupset, groupsetErr := strconv.ParseInt(redisCont["group"], 10, 64) + if groupsetErr == nil { + myCont.Group = groupset + } + myCont.WechatId = wechatId + myCont.Name = redisCont["name"] + gender, genderErr := strconv.Atoi(redisCont["gender"]) + if genderErr == nil { + myCont.Gender = gender + } + age, ageErr := strconv.Atoi(redisCont["age"]) + if ageErr == nil { + myCont.Age = age + } + myCont.Tel = redisCont["tel"] + category, categoryErr := strconv.Atoi(redisCont["category"]) + if categoryErr == nil { + myCont.Category = category + } + certificatestype, certificatestypeErr := strconv.Atoi(redisCont["certificatestype"]) + if certificatestypeErr == nil { + myCont.CertificatesType = certificatestype + } + myCont.CertificatesNum = redisCont["certificatesnum"] + myCont.Birthday = redisCont["birthday"] + myCont.EntryTime = redisCont["entrytime"] + myCont.QuitTimeAttr = redisCont["quittimeattr"] + myCont.Addrest = redisCont["addrest"] + myCont.Icon = redisCont["icon"] + myCont.NickName = redisCont["nickname"] + myCont.DepartmentName = redisCont["departmentname"] + myCont.WorkshopName = redisCont["workshopname"] + myCont.PostName = redisCont["postname"] + myCont.TemaName = redisCont["teamname"] + isTrue = true + // fmt.Printf("1===============>%v\n", myCont) + } else { + + var userCont testpage.PersonalDetails + userErr := global.GVA_DB_Master.Model(&testpage.WorkMan{}).Select("worker_man.*", "worker_man_data.*").Joins("left join worker_man_data on worker_man_data.wmd_key = worker_man.wm_key").Where("`qywx_key` = ? OR `wx_key` = ?", wechatId, wechatId).Find(&userCont).Error + userInfo := MapOut() + if userErr == nil { + userInfo["number"] = userCont.Number + userInfo["departmentid"] = userCont.DepartmentId + userInfo["workshopid"] = userCont.WorkshopId + userInfo["postid"] = userCont.PostId + userInfo["tema"] = userCont.Tema + userInfo["key"] = userCont.Key + userInfo["state"] = userCont.State + userInfo["hireset"] = userCont.HireSet + userInfo["group"] = userCont.Group + userInfo["wechatid"] = wechatId + userInfo["name"] = userCont.Name + userInfo["gender"] = userCont.Gender + userInfo["age"] = userCont.Age + userInfo["tel"] = userCont.Tel + userInfo["category"] = userCont.Category + userInfo["certificatestype"] = userCont.CertificatesType + userInfo["certificatesnum"] = userCont.CertificatesNum + userInfo["birthday"] = TimeStampToDate(userCont.Birthday, 6) + userInfo["entrytime"] = TimeStampToDate(userCont.EntryTime, 6) + userInfo["quittimeattr"] = TimeStampToDate(userCont.QuitTimeAttr, 6) + userInfo["addrest"] = userCont.Addrest + userInfo["icon"] = userCont.Icon + userInfo["nickname"] = userCont.NickName + isTrue = true + myCont.Number = userCont.Number + myCont.DepartmentId = userCont.DepartmentId + + bfIsTrue, bfInfo := GetBranchFactory(userCont.DepartmentId) + if bfIsTrue == true { + myCont.DepartmentName = bfInfo.Name + userInfo["departmentname"] = bfInfo.Name + } else { + userInfo["departmentname"] = "" + } + myCont.WorkshopId = userCont.WorkshopId + wsIsTrue, wsInfo := GetWorkShopSection(userCont.WorkshopId) + if wsIsTrue == true { + myCont.WorkshopName = wsInfo.Name + userInfo["workshopname"] = wsInfo.Name + } else { + userInfo["workshopname"] = "" + } + myCont.PostId = userCont.PostId + posErr, posCont := GetPosition(userCont.PostId) + if posErr == true { + myCont.PostName = posCont.Name + userInfo["postname"] = posCont.Name + } else { + userInfo["postname"] = "" + } + myCont.Tema = userCont.Tema + temErr, temCont := GetTeaming(userCont.Tema) + if temErr == true { + myCont.TemaName = temCont.Name + userInfo["teamname"] = temCont.Name + } else { + userInfo["teamname"] = "" + } + myCont.Key = userCont.Key + myCont.State = userCont.State + myCont.HireSet = userCont.HireSet + myCont.Group = userCont.Group + myCont.WechatId = wechatId + myCont.Name = userCont.Name + myCont.Gender = userCont.Gender + myCont.Age = userCont.Age + myCont.Tel = userCont.Tel + myCont.Category = userCont.Category + myCont.CertificatesType = userCont.CertificatesType + myCont.CertificatesNum = userCont.CertificatesNum + myCont.Birthday = TimeStampToDate(userCont.Birthday, 6) + myCont.EntryTime = TimeStampToDate(userCont.EntryTime, 6) + myCont.QuitTimeAttr = TimeStampToDate(userCont.QuitTimeAttr, 6) + myCont.Addrest = userCont.Addrest + myCont.Icon = userCont.Icon + myCont.NickName = userCont.NickName + + redisClient.SetRedisTime(604800) + redisClient.HashMsetAdd(redisPrefix, userInfo) + fmt.Printf("2===============>\n") + } else { + var userInfoStruct wechat.WechatUsers + myErr := global.GVA_DB_WatchDate.Where("userid = ?", wechatId).First(&userInfoStruct).Error + if myErr != nil { + return + } + groupContErr, groupCont := GetGroupInfo(userInfoStruct.MainDepartment) + groupID := 1 + if groupContErr == true { + var groupMap []int + jsonErr := json.Unmarshal([]byte(groupCont.Group), &groupMap) + if jsonErr == nil { + if len(groupMap) > 0 { + for g_index, g_val := range groupMap { + if g_index == 0 { + groupID = g_val + } + } + } + } + } + + isTrue = true + tadyTime := time.Now().Unix() + userInfo["number"] = userInfoStruct.UserNumber + userInfo["departmentid"] = userInfoStruct.MainDepartment + userInfo["workshopid"] = 0 + userInfo["postid"] = 0 + userInfo["tema"] = 0 + userInfo["key"] = 0 + userInfo["state"] = userInfoStruct.Status + userInfo["hireset"] = 1 + userInfo["group"] = groupID + userInfo["wechatid"] = wechatId + userInfo["name"] = userInfoStruct.Name + userInfo["gender"] = userInfoStruct.Gender + userInfo["age"] = 0 + userInfo["tel"] = userInfoStruct.Mobile + userInfo["category"] = 1 + userInfo["certificatestype"] = 1 + userInfo["certificatesnum"] = "" + userInfo["birthday"] = TimeStampToDate(0, 6) + userInfo["entrytime"] = TimeStampToDate(tadyTime, 6) + userInfo["quittimeattr"] = TimeStampToDate(0, 6) + userInfo["addrest"] = 0 + userInfo["icon"] = userInfoStruct.Avatar + userInfo["nickname"] = userInfoStruct.Name + userInfo["departmentname"] = "" + userInfo["workshopname"] = "" + userInfo["postname"] = "" + userInfo["teamname"] = "" + + myCont.Number = userInfoStruct.UserNumber + myCont.DepartmentId = userInfoStruct.MainDepartment + myCont.WorkshopId = 0 + myCont.PostId = 0 + myCont.Tema = 0 + myCont.Key = 0 + myCont.State = userInfoStruct.Status + myCont.HireSet = 1 + myCont.Group = 1 + myCont.WechatId = wechatId + myCont.Name = userInfoStruct.Name + myCont.Gender = userInfoStruct.Gender + myCont.Age = 1 + myCont.Tel = userInfoStruct.Mobile + myCont.Category = 1 + myCont.CertificatesType = 1 + myCont.CertificatesNum = "" + myCont.Birthday = TimeStampToDate(0, 6) + myCont.EntryTime = TimeStampToDate(tadyTime, 6) + myCont.QuitTimeAttr = TimeStampToDate(0, 6) + myCont.Addrest = "" + myCont.Icon = userInfoStruct.Avatar + myCont.NickName = userInfoStruct.Name + + redisClient.SetRedisTime(604800) + redisClient.HashMsetAdd(redisPrefix, userInfo) + fmt.Printf("3===============>\n") + } + } + return +} + +//获得分厂名称 +func GetBranchFactory(id int64) (isTrue bool, ContInfo testpage.BranchFactory) { + isTrue = false + err := global.GVA_DB_Master.Where("bf_id = ?", id).First(&ContInfo).Error + if err == nil { + isTrue = true + } + return +} + +//获取职务信息 +func GetPosition(id int64) (isTrue bool, content testpage.Position) { + isTrue = false + err := global.GVA_DB_Master.Where("ps_id = ?", id).First(&content).Error + if err == nil { + isTrue = true + } + return +} + +//获取班组信息 +func GetTeaming(id int64) (isTrue bool, content testpage.Teaming) { + isTrue = false + err := global.GVA_DB_Master.Where("tm_id = ?", id).First(&content).Error + if err == nil { + isTrue = true + } + return +} + +// diff --git a/gin_server_admin/commonus/publicstruct.go b/gin_server_admin/commonus/publicstruct.go index cd3a268..4802ae7 100644 --- a/gin_server_admin/commonus/publicstruct.go +++ b/gin_server_admin/commonus/publicstruct.go @@ -22,3 +22,34 @@ type DelParameter struct { State int `json:"state"` // 状态 IsDel int `json:"isdel"` // 是否强制删除 } + +//员工信息进本信息 +type PublicUserCont struct { + Number string `json:"number"` //员工编号 + DepartmentId int64 `json:"departmentid"` //分厂Id + DepartmentName string `json:"departmentname"` //分厂名称 + WorkshopId int64 `json:"workshopid"` //工段Id + WorkshopName string `json:"workshopname"` //工段名称 + PostId int64 `json:"postid"` //职务Id + PostName string `json:"postname"` //职务名称 + Tema int64 `json:"tema"` //班组Id + TemaName string `json:"temaname"` //班组名称 + Key int64 `json:"key" ` //唯一识别码 + State int `json:"state"` //状态(1:启用;2:禁用;3:删除) + HireSet int `json:"hireset"` //雇佣状态(1:在职;2:离职) + Group int64 `json:"group"` //集团公司 + WechatId string `json:"wechatid"` //微信KEY + Name string `json:"name"` //姓名 + Gender int `json:"gender"` //性别(1:男;2:女)"` + Age int `json:"age"` //年龄"` + Tel string `json:"tel"` //联系方式"` + Category int `json:"category"` //人员类别(1:正式工;2:合同工;3:实习生)"` + CertificatesType int `json:"certificatesType"` //证件类型(1:身份证;2:驾驶证;3:军人证;4:护照;5:居住证)"` + CertificatesNum string `json:"certificatesNum"` //证件编号"` + Birthday string `json:"birthday"` //出生日期"` + EntryTime string `json:"entryTime"` //入职日期"` + QuitTimeAttr string `json:"quitTime"` //离职日期"` + Addrest string `json:"addrest"` //家庭住址 + Icon string `json:"icon"` //照片"` + NickName string `json:"nickName"` //昵称"` +} diff --git a/gin_server_admin/initialize/router.go b/gin_server_admin/initialize/router.go index 8b8f667..83c3a80 100644 --- a/gin_server_admin/initialize/router.go +++ b/gin_server_admin/initialize/router.go @@ -59,6 +59,8 @@ func Routers() *gin.Engine { ExamineApprove := router.RouterGroupApp.ExamApprove.ExamApproveRouter //前端审批相关 + publicApprove := router.RouterGroupApp.PublicApprove.Geography //公共Api + /** 企业微信相关 */ @@ -110,6 +112,11 @@ func Routers() *gin.Engine { workWechatApp.CallBackWeCahtApi.InitGroupRouter(PublicGroup) //企业微信回调 workWechatApp.SendMsgWeCahtApi.InitGroupRouter(PublicGroup) //企业微信发送 + /* + 公共API + */ + publicApprove.InitRouter(PublicGroup) + } PrivateGroup := Router.Group("") PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) diff --git a/gin_server_admin/model/testpage/grouptree.go b/gin_server_admin/model/testpage/grouptree.go index e379371..6dd57d3 100644 --- a/gin_server_admin/model/testpage/grouptree.go +++ b/gin_server_admin/model/testpage/grouptree.go @@ -51,3 +51,35 @@ func (BranchFactoryHasMany *BranchFactoryHasMany) TableName() string { func (WorkShopsection *WorkShopsection) TableName() string { return "work_shopsection" } + +//职务 +type Position struct { + Id int64 `json:"id" gorm:"column:ps_id;type:bigint(20);;primaryKey;unique;not null;autoIncrement;index"` + Name string `json:"name" gorm:"column:ps_name;type:varchar(50);not null;comment:工段名称"` //工段名称 + Set int8 `json:"state" gorm:"column:ps_set;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` //'状态(1:启用;2:禁用;3:删除) + WorkId int64 `json:"workid" gorm:"column:ps_ws_id;type:bigint(20) unsigned;default:0;not null;comment:所属工段"` //'所属工段', + BranchFactoryID int64 `json:"branchFactoryID" gorm:"column:ps_bf_id;type:bigint(20) unsigned;default:0;not null;comment:所属分厂"` //'所属分厂', + Time int64 `json:"time" gorm:"column:ps_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` //创建时间 + EiteTime int64 `json:"eitetime" gorm:"column:ps_eite_time;type:bigint(20) unsigned;default:0;not null;comment:修改时间"` //'修改时间', + Sysuid int64 `json:"sysuid" gorm:"column:ps_sys_uid;type:bigint(20) unsigned;default:0;not null;comment:添加人"` //'添加人', + Weight int64 `json:"weight" gorm:"column:ps_weight;type:smallint(4) unsigned;default:0;not null;comment:权重"` + Genexa int64 `json:"genexa" gorm:"column:ps_gen_exa;type:tinyint(1) unsigned;default:0;not null;comment:统考(1:是;2:否)"` + Group int64 `json:"group" gorm:"column:ps_group;type:int(10) unsigned;default:0;not null;comment:归属集团"` +} + +func (Position *Position) TableName() string { + return "position" +} + +//班组 +type Teaming struct { + Id int64 `json:"id" gorm:"column:tm_id;type:bigint(20);;primaryKey;unique;not null;autoIncrement;index"` + Name string `json:"name" gorm:"column:tm_name;type:varchar(50);not null;comment:班组名称"` + Time int64 `json:"time" gorm:"column:tm_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` + Set int8 `json:"state" gorm:"column:tm_set;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` + Long int64 `json:"long" gorm:"column:tm_long;type:tinyint(1) unsigned;default:0;not null;comment:倒班人员(1:是;2:否)"` +} + +func (Teaming *Teaming) TableName() string { + return "teaming" +} diff --git a/gin_server_admin/router/assessment/assessmentrouter.go b/gin_server_admin/router/assessment/assessmentrouter.go index 31744ad..6a08f57 100644 --- a/gin_server_admin/router/assessment/assessmentrouter.go +++ b/gin_server_admin/router/assessment/assessmentrouter.go @@ -62,6 +62,8 @@ func (s *AssessmentRouter) InitDutyHandelRouter(Router *gin.RouterGroup) { dutyIndexCodeRouter.POST("getdeparttimeassess", authorityIndexApi.GetDepartTimeAssess) //根据部门和时间获取考核详情 dutyIndexCodeRouter.POST("departmentassess", authorityIndexApi.DepartmentAssess) //根据部门和时间获取考核详情 dutyIndexCodeRouter.POST("departmentassessdata", authorityIndexApi.DepartmentAssessData) //根据部门和时间写入全部考核项分值 + + dutyIndexCodeRouter.POST("lookopenapprovaldatainfo", authorityIndexApi.LookOpenApprovalDataInfo) //查询审批状态 } } diff --git a/gin_server_admin/router/enter.go b/gin_server_admin/router/enter.go index bb57cd8..5076c77 100644 --- a/gin_server_admin/router/enter.go +++ b/gin_server_admin/router/enter.go @@ -8,6 +8,7 @@ import ( "github.com/flipped-aurora/gin-vue-admin/server/router/examrouter" "github.com/flipped-aurora/gin-vue-admin/server/router/examtestpage" "github.com/flipped-aurora/gin-vue-admin/server/router/index/examapprove" + "github.com/flipped-aurora/gin-vue-admin/server/router/publichandel" "github.com/flipped-aurora/gin-vue-admin/server/router/shiyan" "github.com/flipped-aurora/gin-vue-admin/server/router/staffrouter" "github.com/flipped-aurora/gin-vue-admin/server/router/system" @@ -32,6 +33,7 @@ type RouterGroup struct { AdminRouter systemadmin.RouterGroup WorkWeChatApp wechatapp.RouterGroup ExamApprove examapprove.RouterGroup + PublicApprove publichandel.RouterGroup } var RouterGroupApp = new(RouterGroup) diff --git a/gin_server_admin/router/publichandel/enter.go b/gin_server_admin/router/publichandel/enter.go new file mode 100644 index 0000000..bfaf91c --- /dev/null +++ b/gin_server_admin/router/publichandel/enter.go @@ -0,0 +1,5 @@ +package publichandel + +type RouterGroup struct { + Geography +} diff --git a/gin_server_admin/router/publichandel/geography.go b/gin_server_admin/router/publichandel/geography.go new file mode 100644 index 0000000..c69437e --- /dev/null +++ b/gin_server_admin/router/publichandel/geography.go @@ -0,0 +1,23 @@ +package publichandel + +import ( + public "github.com/flipped-aurora/gin-vue-admin/server/api/publichandle" + "github.com/gin-gonic/gin" +) + +type Geography struct{} + +func (s *Geography) InitRouter(Router *gin.RouterGroup) { + CodeRouter := Router.Group("geography") + var authorityApi = public.ApiGroupApp.GeographyApi.GeographyUnknown + { + CodeRouter.POST("", authorityApi.Index) // 入口 + CodeRouter.POST("/", authorityApi.Index) + CodeRouter.GET("", authorityApi.Index) + CodeRouter.GET("/", authorityApi.Index) + + CodeRouter.POST("locationuserlist", authorityApi.LocationUserList) //获取地址上报人员列表 + CodeRouter.POST("locationuserlistall", authorityApi.LocationUserListAll) //获取地址上报人员列表所有 + CodeRouter.POST("getlocationuseraddress", authorityApi.GetLocationUserAddress) //获取地址上报人员地理位置列表 + } +} diff --git a/gin_server_admin/utils/redishandel/myredis.go b/gin_server_admin/utils/redishandel/myredis.go index 0b0f4d2..e03720e 100644 --- a/gin_server_admin/utils/redishandel/myredis.go +++ b/gin_server_admin/utils/redishandel/myredis.go @@ -2,6 +2,7 @@ package redishandel import ( "context" + "fmt" "time" "github.com/flipped-aurora/gin-vue-admin/server/global" @@ -117,6 +118,7 @@ func (r *RedisStoreType) HashSet(hashName, hashKey, hashVal string) bool { func (r *RedisStoreType) HashMsetAdd(hashName string, hashVal map[string]interface{}) bool { // rdb := RedisInit() err := r.RedisDb.HMSet(r.Context, r.PreKey+hashName, hashVal).Err() + fmt.Printf("错误sss=========》%v=====2====》%v\n", err, hashVal) // err := rdb.HMSet(ctx, "userfg", hashVal).Err() if err != nil { return false @@ -127,7 +129,6 @@ func (r *RedisStoreType) HashMsetAdd(hashName string, hashVal map[string]interfa r.RedisDb.PExpire(r.Context, r.PreKey+hashName, r.Expiration) } - // fmt.Printf("错误sss=========》%v\n", hashVal) return true } func (r *RedisStoreType) HashMsetAddAry(hashName string, hashVal []map[string]interface{}) bool { @@ -352,3 +353,36 @@ func (r *RedisStoreType) Brpoplpush(source, destination string) (val string, err val, err = r.RedisDb.BRPopLPush(r.Context, source, destination, r.Expiration).Result() return } + +/* +Redis 键(key) +Redis 键命令用于管理 redis 的键。 +*/ + +/* +Redis SCAN 命令 +Redis Scan 命令用于迭代数据库中的数据库键。 + +SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。 + +SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回 0 表示迭代已结束。 + +相关命令: + + SSCAN 命令用于迭代集合键中的元素。 + HSCAN 命令用于迭代哈希键中的键值对。 + ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。 +*/ + +func (r *RedisStoreType) Scan(cursor uint64, match string, count int64) (keys []string, cursores uint64, err error) { + keys, cursores, err = r.RedisDb.Scan(r.Context, cursor, match, count).Result() + return +} + +/* +*Keys 命令用于查找所有符合给定模式 pattern 的 key 。。 + */ +func (r *RedisStoreType) Keys(key string) (val []string, err error) { + val, err = r.RedisDb.Keys(r.Context, key).Result() + return +}