Browse Source

地理位置

qin_1
超级管理员 4 years ago
parent
commit
3f8d9b9fae
  1. 44
      gin_server_admin/api/index/assessment/assesshandle.go
  2. 54
      gin_server_admin/api/index/assessment/assesstype.go
  3. 9
      gin_server_admin/api/publichandle/enter.go
  4. 5
      gin_server_admin/api/publichandle/userhandle/enter.go
  5. 121
      gin_server_admin/api/publichandle/userhandle/handel.go
  6. 16
      gin_server_admin/api/publichandle/userhandle/type.go
  7. 12
      gin_server_admin/api/wechatapp/callback/type.go
  8. 8
      gin_server_admin/api/wechatapp/sendmessage/apphandle.go
  9. 5
      gin_server_admin/api/wechatapp/sendmessage/type.go
  10. 14
      gin_server_admin/api/wechatapp/sharemethod/handle.go
  11. 275
      gin_server_admin/commonus/publichaneld.go
  12. 31
      gin_server_admin/commonus/publicstruct.go
  13. 7
      gin_server_admin/initialize/router.go
  14. 32
      gin_server_admin/model/testpage/grouptree.go
  15. 2
      gin_server_admin/router/assessment/assessmentrouter.go
  16. 2
      gin_server_admin/router/enter.go
  17. 5
      gin_server_admin/router/publichandel/enter.go
  18. 23
      gin_server_admin/router/publichandel/geography.go
  19. 36
      gin_server_admin/utils/redishandel/myredis.go

44
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/archiveapi"
"github.com/flipped-aurora/gin-vue-admin/server/api/v1/assessment" "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/commonus"
"github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel"
@ -894,3 +895,46 @@ func (a *Assessment) LookDepartmentAssessInfo(c *gin.Context) {
outContMap["dutyListMap"] = outList outContMap["dutyListMap"] = outList
response.Result(0, outContMap, "数据写入成功!", c) 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)
}

54
gin_server_admin/api/index/assessment/assesstype.go

@ -209,3 +209,57 @@ type DutyListType struct {
type LookDutyCont struct { type LookDutyCont struct {
Id string `json:"id"` 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"`
}

9
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)

5
gin_server_admin/api/publichandle/userhandle/enter.go

@ -0,0 +1,5 @@
package userhandle
type ApiGroup struct {
GeographyUnknown
}

121
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)
}

16
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"`
}

12
gin_server_admin/api/wechatapp/callback/type.go

@ -60,11 +60,13 @@ type GeographicalPositionType struct {
//上报地理位置Redis //上报地理位置Redis
type GeographicalPositionRedis struct { type GeographicalPositionRedis struct {
UserId string `json:"userid"` UserId string `json:"userid"`
Latitude string `json:"latitude"` Latitude string `json:"latitude"`
Longitude string `json:"longitude"` Longitude string `json:"longitude"`
Precision string `json:"precision"` Precision string `json:"precision"`
Time int64 `json:"time"` Time int64 `json:"time"`
LatitudeBaiDu float64 `json:"latitudebaidu"`
LongitudeBaiDu float64 `json:"longitudebaidu"`
} }
//通讯录主表 //通讯录主表

8
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 return addDePartMent, true, msg
} }
//多项选择型 //查询自建应用审批单当前状态
func (s *MultipleTemplate) SendMessage(appName string) ([]byte, bool, string) { func (s *OpenApprovalState) SendMessage(appName string) ([]byte, bool, string) {
sendUrl, IsTrue, msg := sharemethod.GetSendMsgTokenUrl(appName) sendUrl, IsTrue, msg := sharemethod.QueryStateOpenApprovalAata(appName)
if IsTrue == false { if IsTrue == false {
return nil, false, msg return nil, false, msg
} }
sendJsonData, _ := json.Marshal(s) sendJsonData, _ := json.Marshal(s)
addDePartMent := commonus.CurlPostJosn(sendUrl, sendJsonData) 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 return addDePartMent, true, msg
} }

5
gin_server_admin/api/wechatapp/sendmessage/type.go

@ -420,3 +420,8 @@ type MultipleTemplate struct {
type TemplatedEtailType struct { type TemplatedEtailType struct {
TemplateId string `json:"template_id"` TemplateId string `json:"template_id"`
} }
//查询自建应用审批单当前状态
type OpenApprovalState struct {
ThirdNo string `json:"thirdNo"` //审批单ID
}

14
gin_server_admin/api/wechatapp/sharemethod/handle.go

@ -160,3 +160,17 @@ func GetJsapiTicket(types, callUrl string, state int) (tokenInfo string, err err
} }
return 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
}

275
gin_server_admin/commonus/publichaneld.go

@ -3,6 +3,7 @@ package commonus
//公共函数类 //公共函数类
import ( import (
"encoding/json" "encoding/json"
"fmt"
"regexp" "regexp"
"strconv" "strconv"
"strings" "strings"
@ -626,3 +627,277 @@ func AdminClientIdentity() (isTrue bool, redisAdminInfo systemuser.RedisAdminInf
} }
return 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
}
//

31
gin_server_admin/commonus/publicstruct.go

@ -22,3 +22,34 @@ type DelParameter struct {
State int `json:"state"` // 状态 State int `json:"state"` // 状态
IsDel int `json:"isdel"` // 是否强制删除 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"` //昵称"`
}

7
gin_server_admin/initialize/router.go

@ -59,6 +59,8 @@ func Routers() *gin.Engine {
ExamineApprove := router.RouterGroupApp.ExamApprove.ExamApproveRouter //前端审批相关 ExamineApprove := router.RouterGroupApp.ExamApprove.ExamApproveRouter //前端审批相关
publicApprove := router.RouterGroupApp.PublicApprove.Geography //公共Api
/** /**
企业微信相关 企业微信相关
*/ */
@ -110,6 +112,11 @@ func Routers() *gin.Engine {
workWechatApp.CallBackWeCahtApi.InitGroupRouter(PublicGroup) //企业微信回调 workWechatApp.CallBackWeCahtApi.InitGroupRouter(PublicGroup) //企业微信回调
workWechatApp.SendMsgWeCahtApi.InitGroupRouter(PublicGroup) //企业微信发送 workWechatApp.SendMsgWeCahtApi.InitGroupRouter(PublicGroup) //企业微信发送
/*
公共API
*/
publicApprove.InitRouter(PublicGroup)
} }
PrivateGroup := Router.Group("") PrivateGroup := Router.Group("")
PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler())

32
gin_server_admin/model/testpage/grouptree.go

@ -51,3 +51,35 @@ func (BranchFactoryHasMany *BranchFactoryHasMany) TableName() string {
func (WorkShopsection *WorkShopsection) TableName() string { func (WorkShopsection *WorkShopsection) TableName() string {
return "work_shopsection" 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"
}

2
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("getdeparttimeassess", authorityIndexApi.GetDepartTimeAssess) //根据部门和时间获取考核详情
dutyIndexCodeRouter.POST("departmentassess", authorityIndexApi.DepartmentAssess) //根据部门和时间获取考核详情 dutyIndexCodeRouter.POST("departmentassess", authorityIndexApi.DepartmentAssess) //根据部门和时间获取考核详情
dutyIndexCodeRouter.POST("departmentassessdata", authorityIndexApi.DepartmentAssessData) //根据部门和时间写入全部考核项分值 dutyIndexCodeRouter.POST("departmentassessdata", authorityIndexApi.DepartmentAssessData) //根据部门和时间写入全部考核项分值
dutyIndexCodeRouter.POST("lookopenapprovaldatainfo", authorityIndexApi.LookOpenApprovalDataInfo) //查询审批状态
} }
} }

2
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/examrouter"
"github.com/flipped-aurora/gin-vue-admin/server/router/examtestpage" "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/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/shiyan"
"github.com/flipped-aurora/gin-vue-admin/server/router/staffrouter" "github.com/flipped-aurora/gin-vue-admin/server/router/staffrouter"
"github.com/flipped-aurora/gin-vue-admin/server/router/system" "github.com/flipped-aurora/gin-vue-admin/server/router/system"
@ -32,6 +33,7 @@ type RouterGroup struct {
AdminRouter systemadmin.RouterGroup AdminRouter systemadmin.RouterGroup
WorkWeChatApp wechatapp.RouterGroup WorkWeChatApp wechatapp.RouterGroup
ExamApprove examapprove.RouterGroup ExamApprove examapprove.RouterGroup
PublicApprove publichandel.RouterGroup
} }
var RouterGroupApp = new(RouterGroup) var RouterGroupApp = new(RouterGroup)

5
gin_server_admin/router/publichandel/enter.go

@ -0,0 +1,5 @@
package publichandel
type RouterGroup struct {
Geography
}

23
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) //获取地址上报人员地理位置列表
}
}

36
gin_server_admin/utils/redishandel/myredis.go

@ -2,6 +2,7 @@ package redishandel
import ( import (
"context" "context"
"fmt"
"time" "time"
"github.com/flipped-aurora/gin-vue-admin/server/global" "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 { func (r *RedisStoreType) HashMsetAdd(hashName string, hashVal map[string]interface{}) bool {
// rdb := RedisInit() // rdb := RedisInit()
err := r.RedisDb.HMSet(r.Context, r.PreKey+hashName, hashVal).Err() 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() // err := rdb.HMSet(ctx, "userfg", hashVal).Err()
if err != nil { if err != nil {
return false 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) r.RedisDb.PExpire(r.Context, r.PreKey+hashName, r.Expiration)
} }
// fmt.Printf("错误sss=========》%v\n", hashVal)
return true return true
} }
func (r *RedisStoreType) HashMsetAddAry(hashName string, hashVal []map[string]interface{}) bool { 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() val, err = r.RedisDb.BRPopLPush(r.Context, source, destination, r.Expiration).Result()
return 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
}

Loading…
Cancel
Save