From 5008cb2de61de8314a179b7954796660b38a7ba3 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Sun, 6 Feb 2022 08:18:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E5=AE=A1=E6=89=B9=E8=AF=A6?= =?UTF-8?q?=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/index/assessment/assesshandle.go | 345 +++++++++++++++++- .../api/index/assessment/assesstype.go | 64 ++++ gin_server_admin/api/index/enter.go | 8 +- .../api/index/examineandapprove/enter.go | 6 + .../api/index/examineandapprove/examapp.go | 61 ++++ .../api/index/examineandapprove/type.go | 9 + gin_server_admin/api/v1/shiyan/shiyan.go | 30 +- .../api/wechatapp/callback/apphandle.go | 4 +- .../api/wechatapp/callback/eventprocessing.go | 55 ++- .../api/wechatapp/callback/type.go | 60 +++ .../wechatapp/sendmessage/examineapprove.go | 5 +- .../api/wechatapp/sharemethod/handle.go | 20 +- .../api/wechatapp/sharemethod/type.go | 1 + gin_server_admin/commonus/timeSub.go | 10 + gin_server_admin/initialize/router.go | 7 +- .../model/assessmentmodel/dutyclass.go | 19 + .../router/assessment/assessmentrouter.go | 36 +- gin_server_admin/router/enter.go | 2 + .../router/index/examapprove/enter.go | 5 + .../router/index/examapprove/examapprouter.go | 22 ++ gin_server_admin/router/shiyan/sys_shiyan.go | 1 + gin_server_admin/其他支持文件/config.yaml | 4 + 22 files changed, 740 insertions(+), 34 deletions(-) create mode 100644 gin_server_admin/api/index/examineandapprove/enter.go create mode 100644 gin_server_admin/api/index/examineandapprove/examapp.go create mode 100644 gin_server_admin/api/index/examineandapprove/type.go create mode 100644 gin_server_admin/router/index/examapprove/enter.go create mode 100644 gin_server_admin/router/index/examapprove/examapprouter.go diff --git a/gin_server_admin/api/index/assessment/assesshandle.go b/gin_server_admin/api/index/assessment/assesshandle.go index 680f88a..2a2e369 100644 --- a/gin_server_admin/api/index/assessment/assesshandle.go +++ b/gin_server_admin/api/index/assessment/assesshandle.go @@ -1,6 +1,7 @@ package assessment import ( + "encoding/json" "strconv" "time" @@ -27,6 +28,21 @@ func (a *Assessment) MyAssEssMentList(c *gin.Context) { // response.Result(101, err, "参数错误!请重新提交!", c) // return } + dayTime := time.Now() + monthData := commonus.TimeStampToDate(dayTime.Unix(), 10) //当月 + switch requestData.DayState { + case 1: + monthData = commonus.TimeStampToDate(dayTime.Unix(), 10) //当月 + case 2: + lastOneMonthStart, _ := commonus.AppointTimeFrontMonth(dayTime, 1) + monthData = commonus.TimeStampToDate(lastOneMonthStart, 10) //上一个月 + case 3: + lastOneMonthStart, _ := commonus.AppointTimeFrontMonth(dayTime, 2) + monthData = commonus.TimeStampToDate(lastOneMonthStart, 10) //上两个月 + default: + monthData = commonus.TimeStampToDate(dayTime.Unix(), 10) //当月 + } + if requestData.PageSize == 0 { requestData.PageSize = 20 } @@ -73,7 +89,7 @@ func (a *Assessment) MyAssEssMentList(c *gin.Context) { assessOutCont.AssessTitle = assessClassCont.Title } - assIsTrue, assDepartList := GetAssDepart(val.Id) + assIsTrue, assDepartList := GetAssDepart(val.Id, monthData) // fmt.Printf("------------->%v-------->%v\n", assIsTrue, assDepartList) if assIsTrue == true { assessOutCont.AssessDepart = assDepartList @@ -87,7 +103,7 @@ func (a *Assessment) MyAssEssMentList(c *gin.Context) { } //获得项目考核部门 -func GetAssDepart(dutyid int64) (isTrue bool, assessDepartstr []assessDepart) { +func GetAssDepart(dutyid int64, dataStr string) (isTrue bool, assessDepartstr []assessDepart) { isTrue = false var departDuty []assessmentmodel.DepartDuty assDepartErr := global.GVA_DB_Performanceappraisal.Where("`de_duty` = ? AND `de_satte` = 1", dutyid).Find(&departDuty).Error @@ -108,6 +124,7 @@ func GetAssDepart(dutyid int64) (isTrue bool, assessDepartstr []assessDepart) { assInfo.DutyId = val.DutyId assInfo.Rescore = val.Rescore assInfo.Group = val.Group + assInfo.IsTrue = JudgeResAssEssExam(val.DutyId, val.PartId, dataStr) assessDepartstr = append(assessDepartstr, assInfo) } @@ -116,6 +133,24 @@ func GetAssDepart(dutyid int64) (isTrue bool, assessDepartstr []assessDepart) { return } +//判断部门指定月份是否已经考核完毕 +func JudgeResAssEssExam(dutyId, departId int64, monthTimeStr string) (isTrue bool) { + isTrue = false + // var departscores assessmentmodel.Departscores + monthTimeStr = monthTimeStr + "-01 12:00:00" + + fileTime, fileTimeErr := commonus.DateToTimeStampEs(monthTimeStr) + if fileTimeErr != true { + return + } + outMap := commonus.MapOut() + err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Departscores{}).Select("s_id").Where("`s_duty` = ? AND `s_depart_id` = ? AND `s_file_time` = ?", dutyId, departId, fileTime).First(&outMap).Error + if err == nil { + isTrue = true + } + return +} + //根据具体考核项获取被考核部门 func (a *Assessment) GetDutyDepartList(c *gin.Context) { var requestData assessDepartRequest @@ -133,7 +168,9 @@ func (a *Assessment) GetDutyDepartList(c *gin.Context) { response.Result(103, err, "参数错误!请重新提交!", c) return } - isTrue, departList := GetAssDepart(id) + dayTime := time.Now() + monthData := commonus.TimeStampToDate(dayTime.Unix(), 10) //当月 + isTrue, departList := GetAssDepart(id, monthData) if isTrue != true { response.Result(104, departList, "获取失败!", c) return @@ -555,3 +592,305 @@ func GetDutyInfoCont(id int64) (isTrue bool, outAssDutyInfo outAessDuty) { isTrue = true return } + +//以部门为维度获取考核项目 +func (a *Assessment) DepartmentAssess(c *gin.Context) { + var requestData departAssessType + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if requestData.DepartmentId == 0 { + response.Result(102, err, "参数错误!请重新提交!", c) + return + } + + isTrue, userCont := commonus.ClientIdentity() + if isTrue != true { + response.Result(103, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + return + } + + if requestData.GroupId == 0 { + groupId, groupErr := strconv.Atoi(userCont.Group) + if groupErr == nil { + requestData.GroupId = groupId + } else { + response.Result(104, err, "参数错误!请重新提交!", c) + return + } + } + + dayTime := time.Now() + monthData := commonus.TimeStampToDate(dayTime.Unix(), 10) //当月 + switch requestData.DayState { + case 1: + monthData = commonus.TimeStampToDate(dayTime.Unix(), 10) //当月 + case 2: + lastOneMonthStart, _ := commonus.AppointTimeFrontMonth(dayTime, 1) + monthData = commonus.TimeStampToDate(lastOneMonthStart, 10) //上一个月 + case 3: + lastOneMonthStart, _ := commonus.AppointTimeFrontMonth(dayTime, 2) + monthData = commonus.TimeStampToDate(lastOneMonthStart, 10) //上两个月 + default: + monthData = commonus.TimeStampToDate(dayTime.Unix(), 10) //当月 + } + var ContInfo []departAssessOutType + departErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartDuty{}).Select("departduty.*", "dutycontent.dc_title", "dutycontent.dc_state", "dutycontent.dc_user_dump", "dutycontent.dc_dump", "dutycontent.dc_user_type", "dutycontent.dc_parent").Joins("left join dutycontent on departduty.de_duty = dutycontent.dc_id").Where("(`de_partid` = ? AND `de_group` = ? AND `de_satte` = 1) AND ((`dc_user_dump` = ? OR `dc_dump` = ?) AND `dc_state` = 1)", requestData.DepartmentId, requestData.GroupId, userCont.Key, userCont.DepartmentId).Find(&ContInfo).Error + if departErr != nil { + response.Result(105, err, "没有要考核的项目!", c) + return + } + var outCont departAssessOutType + var outContMap []departAssessOutType + // outMapList := []commonus.MapOut() + for _, val := range ContInfo { + outCont.Id = val.Id + outCont.Titles = val.Titles + outCont.Rescore = val.Rescore + outCont.IsTrue = JudgeResAssEssExam(val.Id, int64(requestData.DepartmentId), monthData) + outContMap = append(outContMap, outCont) + } + // JudgeResAssEssExam(val.DutyId, val.PartId, dataStr) .Where("(`dc_user_dump` = ? OR `dc_dump` = ?) AND `dc_state` = 1", userCont.Key, userCont.DepartmentId) + response.Result(0, outContMap, "查询成功!", c) +} + +//以部门为基准填写考核数据 +func (a *Assessment) DepartmentAssessData(c *gin.Context) { + var requestData DepartDutyData + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + var orderId int64 + var departId int + var executorUser int64 + var executorDepart int + orderId = 0 + departId = 0 + executorUser = 0 + executorDepart = 0 + if requestData.OrderId == "" { + response.Result(102, err, "未知订单号!请重新提交!", c) + return + } else { + orderIdVal, orderIdErr := strconv.ParseInt(requestData.OrderId, 10, 64) + if orderIdErr == nil { + orderId = orderIdVal + } else { + response.Result(103, err, "未知订单号!请重新提交!", c) + return + } + } + var assessLogCont assessmentmodel.AssessmentLog //考核记录 + orderContErr := global.GVA_DB_Performanceappraisal.Select("al_id").Where("`al_order_id` = ?", orderId).First(&assessLogCont).Error + if orderContErr == nil { + response.Result(121, orderId, "该订单已经提交审批!请不要重复提交审批!", c) + return + } + + if requestData.Title == "" { + response.Result(104, err, "未知考核标题!请重新提交!", c) + return + } + if requestData.DepartId == "" { + response.Result(105, err, "未知被考核的部门!请重新提交!", c) + return + } else { + departIdVal, departIdErr := strconv.Atoi(requestData.DepartId) + if departIdErr == nil { + departId = departIdVal + } else { + response.Result(106, err, "未知被考核的部门!请重新提交!", c) + return + } + } + + if requestData.ExecutorUser == "" { + response.Result(107, err, "未知考核执行人!请重新提交!", c) + return + } else { + executorUserVal, executorUserErr := strconv.ParseInt(requestData.ExecutorUser, 10, 64) + if executorUserErr == nil { + executorUser = executorUserVal + } else { + response.Result(108, err, "未知考核执行人!请重新提交!", c) + return + } + } + + if requestData.ExecutorDepart == "" { + response.Result(109, err, "未知考核执行部门!请重新提交!", c) + return + } else { + executorDepartVal, executorDepartErr := strconv.Atoi(requestData.ExecutorDepart) + if executorDepartErr == nil { + executorDepart = executorDepartVal + } else { + response.Result(110, err, "未知考核执行部门!请重新提交!", c) + return + } + } + if requestData.DateTime == "" { + response.Result(111, err, "未知考核时间!请重新提交!", c) + return + } + monthTimeStr := requestData.DateTime + "-01 12:00:00" + fileTime, fileTimeErr := commonus.DateToTimeStampEs(monthTimeStr) + if fileTimeErr != true { + response.Result(112, err, "考核时间格式错误!请重新提交!", c) + return + } + + if len(requestData.DutyList) <= 0 { + } + for reIndex, reData := range requestData.DutyList { + if reData.DutyId == "" { + response.Result(113, reIndex, "未知考核项目!请重新提交!", c) + return + } + if reData.DeductPoints > reData.ReferenceScore { + response.Result(114, reIndex, "考核项目扣分大于参考分!请重新提交!", c) + return + } + if reData.ExtraPoints > reData.ReferenceScore { + response.Result(115, reIndex, "考核项目加分大于参考分!请重新提交!", c) + return + } + } + var assessLog assessmentmodel.AssessmentLog //考核记录 + // assessLog.Id = commonus.GetFileNumberEs() + assessLog.Title = requestData.Title + assessLog.Assdepart = departId + assessLog.ExecutorUser = executorUser + assessLog.ExecutorDepart = executorDepart + assessLog.ExecutorTime = fileTime + assessLog.OrderId = orderId + assessLog.States = 1 + assessLog.AddTime = time.Now().Unix() + assessLog.EiteTime = time.Now().Unix() + + var dutyListMap []assessmentmodel.Departscores + for _, dutyCont := range requestData.DutyList { + var dutyListCont assessmentmodel.Departscores + dutyId, orderIdErr := strconv.ParseInt(dutyCont.DutyId, 10, 64) + if orderIdErr != nil { + response.Result(116, dutyCont.DutyId, "指定考核项目ID不正确!", c) + return + } + assIsTrue, assInfo := assessment.GetDutyInfoContAll(dutyId) + if assIsTrue != true { + response.Result(117, dutyCont.DutyId, "指定考核项目已禁止使用!", c) + return + } + classId := assInfo.ClassId + assessId := assInfo.AssessId + actualScore := dutyCont.ReferenceScore - dutyCont.DeductPoints + dutyCont.ExtraPoints + if actualScore < 0 { + actualScore = 0 + } + dutyListCont.Id = commonus.GetFileNumberEs() + dutyListCont.ClassId = classId + dutyListCont.AssessId = assessId + dutyListCont.DutyId = dutyId + dutyListCont.DeductPoints = int64(dutyCont.DeductPoints) + dutyListCont.ExtraPoints = int64(dutyCont.ExtraPoints) + // dutyListCont.Score = requestData.Score + dutyListCont.Score = int64(actualScore) + dutyListCont.FileTime = fileTime + dutyListCont.DepartId = int64(departId) + dutyListCont.CommentUser = executorUser + dutyListCont.AddTime = time.Now().Unix() + dutyListCont.EiteTime = time.Now().Unix() + dutyListCont.State = 1 + dutyListMap = append(dutyListMap, dutyListCont) + } + dutyList, dutyListErr := json.Marshal(dutyListMap) + if dutyListErr == nil { + assessLog.DutyList = string(dutyList) + } + outContMap := commonus.MapOut() + outContMap["assessLog"] = assessLog + outContMap["dutyListMap"] = dutyListMap + outContMap["lookid"] = requestData.OrderId + //写入数据 + affairDb := global.GVA_DB_Performanceappraisal.Begin() + assessLogErr := affairDb.Create(&assessLog).Error + dutyListMapErr := affairDb.Create(&dutyListMap).Error + if assessLogErr == nil && dutyListMapErr == nil { + affairDbErr := affairDb.Commit().Error + if affairDbErr == nil { + response.Result(0, outContMap, "数据写入成功!", c) + } else { + response.Result(118, outContMap, "数据写入失败!", c) + } + } else { + affairDbErr := affairDb.Rollback().Error + if affairDbErr == nil { + response.Result(119, outContMap, "数据写入失败!", c) + } else { + response.Result(120, outContMap, "数据写入失败!", c) + } + } +} + +//查看审批详细内容 +func (a *Assessment) LookDepartmentAssessInfo(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 dutyListMap []assessmentmodel.Departscores + jsonErr := json.Unmarshal([]byte(assessLogCont.DutyList), &dutyListMap) + if jsonErr != nil { + response.Result(105, jsonErr, "审批详情异常,不可查看!请联系系统管理员排查故障!", c) + return + } + outList := commonus.MapOutint() + for index, val := range dutyListMap { + outInfo := commonus.MapOut() + outInfo["id"] = strconv.FormatInt(val.Id, 10) + outInfo["classID"] = strconv.FormatInt(val.ClassId, 10) + outInfo["assessId"] = strconv.FormatInt(val.AssessId, 10) + outInfo["dutyId"] = strconv.FormatInt(val.DutyId, 10) + outInfo["deductPoints"] = strconv.FormatInt(val.DeductPoints, 10) + outInfo["extraPoints"] = strconv.FormatInt(val.ExtraPoints, 10) + outInfo["score"] = strconv.FormatInt(val.Score, 10) + outInfo["departId"] = strconv.FormatInt(val.DepartId, 10) + outInfo["commentUser"] = strconv.FormatInt(val.CommentUser, 10) + dtyContErr, dtyCont := GetDutyInfoCont(val.DutyId) + if dtyContErr == true { + outInfo["classTitle"] = dtyCont.ClassTitle + outInfo["assessTitle"] = dtyCont.AssessTitle + outInfo["dutyTitle"] = dtyCont.DutyTitle + } else { + outInfo["classTitle"] = "" + outInfo["assessTitle"] = "" + outInfo["dutyTitle"] = "" + } + outList[index] = outInfo + } + outContMap := commonus.MapOut() + outContMap["assessLog"] = assessLogCont + outContMap["dutyListMap"] = outList + response.Result(0, outContMap, "数据写入成功!", c) +} diff --git a/gin_server_admin/api/index/assessment/assesstype.go b/gin_server_admin/api/index/assessment/assesstype.go index e1d111b..31d5ed2 100644 --- a/gin_server_admin/api/index/assessment/assesstype.go +++ b/gin_server_admin/api/index/assessment/assesstype.go @@ -1,6 +1,8 @@ package assessment import ( + "sync" + "github.com/flipped-aurora/gin-vue-admin/server/commonus" "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" ) @@ -8,10 +10,27 @@ import ( //考核 type Assessment struct{} +//协程设置 +var synergeticProcess = sync.WaitGroup{} + +//数据锁统计 +type dataLockStatistics struct { + dataMap []map[string]interface{} + mutext sync.RWMutex +} + +//读取锁数据 +func (d *dataLockStatistics) readDataLock() []map[string]interface{} { + d.mutext.RLock() + defer d.mutext.RUnlock() + return d.dataMap +} + //列表参数 type getAssEssList struct { commonus.PageSetLimt BranchFactoryId int `json:"branchFactoryId"` + DayState int `json:"daystate"` } //考核项目输出 @@ -35,6 +54,7 @@ type assessDepart struct { DutyId int64 `json:"dutyId"` Rescore int64 `json:"rescore"` Group int64 `json:"group"` + IsTrue bool `json:"istrue"` } //更具具体考核项目获取考核部门 @@ -145,3 +165,47 @@ type departDutyList struct { type commentUser struct { UserKey int64 `json:"userkey" gorm:"column:s_comment_user;type:bigint(20) unsigned;default:0;not null;comment:评论人"` } + +//部门维度考核 +type departAssessType struct { + DepartmentId int `json:"departmentid"` + GroupId int `json:"groupid"` + DayState int `json:"daystate"` +} + +//查询输出 +type departAssessOutType struct { + assessmentmodel.DepartDuty + Titles string `json:"titles" gorm:"column:dc_title;type:text;comment:具体职责"` + Times int64 `json:"times" gorm:"column:dc_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` + States int `json:"states" gorm:"column:dc_state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` + PartIds int64 `json:"partIds" gorm:"column:dc_parent;type:bigint(20) unsigned;default:0;not null;comment:父级"` + UserTypes int `json:"userTypes" gorm:"column:dc_user_type;type:tinyint(1) unsigned;default:1;not null;comment:考核部门类型(1:指定人;2:指定部门)"` + UserDumps int64 `json:"userDumps" gorm:"column:dc_user_dump;type:bigint(20) unsigned;default:0;not null;comment:考核人执行人"` + Dumps int64 `json:"dumps" gorm:"column:dc_dump;type:bigint(20) unsigned;default:0;not null;comment:考核执行部门"` + IsTrue bool `json:"istrue"` +} + +//以部门为单位提报数据 +type DepartDutyData struct { + OrderId string `json:"orderid"` //订单ID + Title string `json:"title"` //标题 + DepartId string `json:"departid"` //被考核部门 + ExecutorUser string `json:"executoruser"` //执行人 + ExecutorDepart string `json:"executordepart"` //执行部门 + DateTime string `json:"datetime"` //考核月份 + DutyList []DutyListType `json:"dutylist"` //考核细则 +} + +//考核细则数据 +type DutyListType struct { + DutyId string `json:"dutyid"` //职责ID + DeductPoints int `json:"deductpoints"` //扣分 + ExtraPoints int `json:"extrapoints"` //加分 + ReferenceScore int `json:"referencescore"` //参考分 +} + +//查看提交审批的详细内容 +type LookDutyCont struct { + Id string `json:"id"` +} diff --git a/gin_server_admin/api/index/enter.go b/gin_server_admin/api/index/enter.go index 78b947f..f1bb386 100644 --- a/gin_server_admin/api/index/enter.go +++ b/gin_server_admin/api/index/enter.go @@ -1,9 +1,13 @@ package index -import "github.com/flipped-aurora/gin-vue-admin/server/api/index/assessment" +import ( + "github.com/flipped-aurora/gin-vue-admin/server/api/index/assessment" + "github.com/flipped-aurora/gin-vue-admin/server/api/index/examineandapprove" +) type ApiGroup struct { - AssessMentApi assessment.ApiGroup + AssessMentApi assessment.ApiGroup + ExamApproveApi examineandapprove.ApiGroup } var ApiGroupApp = new(ApiGroup) diff --git a/gin_server_admin/api/index/examineandapprove/enter.go b/gin_server_admin/api/index/examineandapprove/enter.go new file mode 100644 index 0000000..b54eae3 --- /dev/null +++ b/gin_server_admin/api/index/examineandapprove/enter.go @@ -0,0 +1,6 @@ +package examineandapprove + +//审批相关 +type ApiGroup struct { + ExamineApproveApi +} diff --git a/gin_server_admin/api/index/examineandapprove/examapp.go b/gin_server_admin/api/index/examineandapprove/examapp.go new file mode 100644 index 0000000..cbdd7e2 --- /dev/null +++ b/gin_server_admin/api/index/examineandapprove/examapp.go @@ -0,0 +1,61 @@ +package examineandapprove + +import ( + "fmt" + "strconv" + "time" + + "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/common/response" + "github.com/gin-gonic/gin" +) + +//考核入口 +func (e *ExamineApproveApi) Index(c *gin.Context) { + outPut := commonus.MapOut() + response.Result(0, outPut, "用户端审批获取成功", c) +} + +//获取基础配置 +func (e *ExamineApproveApi) GetConfing(c *gin.Context) { + var requestData ExamConfig + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if requestData.Url == "" { + response.Result(102, err, "参数错误!请重新提交!", c) + return + } + if requestData.State == 0 { + requestData.State = 1 + } + _, isTruees, msges := sendmessage.JsSdkSignAlgorithm("school", requestData.State) //获取应用的jsapi_ticket + if isTruees != true { + response.Result(103, isTruees, msges, c) + return + } + noncestr := commonus.GetFileNumberEs() + timestamp := time.Now().Unix() + url := requestData.Url + jiamistr := fmt.Sprintf("jsapi_ticket=%v&noncestr=%v×tamp=%v&url=%v", msges, noncestr, timestamp, url) + jiamistrHa1 := commonus.Sha1Encryption(jiamistr) + + outData := commonus.MapOut() + + outData["corpid"] = global.GVA_CONFIG.WorkWechatId.CompanyId + outData["agentid"] = global.GVA_CONFIG.WorkWechatSchool.AgentId + outData["timestamp"] = strconv.FormatInt(timestamp, 10) + outData["nonceStr"] = strconv.FormatInt(noncestr, 10) + outData["signature"] = jiamistrHa1 + outData["orderid"] = strconv.FormatInt(commonus.GetFileNumberEs(), 10) + + outData["jsapi_ticket"] = msges + + outData["state"] = requestData.State + + response.Result(0, outData, "查询成功", c) +} diff --git a/gin_server_admin/api/index/examineandapprove/type.go b/gin_server_admin/api/index/examineandapprove/type.go new file mode 100644 index 0000000..2ef55ca --- /dev/null +++ b/gin_server_admin/api/index/examineandapprove/type.go @@ -0,0 +1,9 @@ +package examineandapprove + +type ExamineApproveApi struct{} + +//配置参数 +type ExamConfig struct { + Url string `json:"url"` + State int `json:"state"` +} diff --git a/gin_server_admin/api/v1/shiyan/shiyan.go b/gin_server_admin/api/v1/shiyan/shiyan.go index da615eb..347e5d7 100644 --- a/gin_server_admin/api/v1/shiyan/shiyan.go +++ b/gin_server_admin/api/v1/shiyan/shiyan.go @@ -37,9 +37,25 @@ func (a *ShiyanApi) AddBaseMenu(c *gin.Context) { func (a *ShiyanApi) GetRequestOperation(c *gin.Context) { id := c.Query("id") fmt.Printf("====>%v\n", id) + // strconv.Atoi(id) + idint, _ := strconv.Atoi(id) + GetNextMonth(idint) response.Ok(c) } +func GetNextMonth(dataSet int) { + dataSet = dataSet * -1 + now := time.Now() + lastMonthFirstDay := now.AddDate(0, dataSet, -now.Day()+1) + lastMonthStart := time.Date(lastMonthFirstDay.Year(), lastMonthFirstDay.Month(), lastMonthFirstDay.Day(), 0, 0, 0, 0, now.Location()).Unix() + lastMonthEndDay := lastMonthFirstDay.AddDate(0, 1, -1) + lastMonthEnd := time.Date(lastMonthEndDay.Year(), lastMonthEndDay.Month(), lastMonthEndDay.Day(), 23, 59, 59, 0, now.Location()).Unix() + + monthData := commonus.TimeStampToDate(lastMonthStart, 11) + monthDatas := commonus.TimeStampToDate(lastMonthEnd, 11) + fmt.Printf("%v------------------->%v------------------->%v------------------->%v------------------->%v\n", dataSet, lastMonthStart, lastMonthEnd, monthData, monthDatas) +} + //get请求获参 type postGroupCanshu struct { Id int `json:"id" from:"id"` @@ -1220,7 +1236,17 @@ func (s *ShiyanApi) GetEatilTemplate(c *gin.Context) { } // msgbtye, isTrue, msg := requestData.GetTemplatedeTail("school") - msgbtyees, isTruees, msges := sendmessage.JsSdkSignAlgorithm("school") + msgbtyees, isTruees, msges := sendmessage.JsSdkSignAlgorithm("school", 1) + + noncestr := commonus.GetFileNumberEs() + timestamp := time.Now().Unix() + url := "http://gin.admin.net/shiyan/geteatiltemplate" + + jiamistr := fmt.Sprintf("jsapi_ticket=%v&noncestr=%v×tamp=%v&url=%v", msges, noncestr, timestamp, url) + + // jiamistr = "jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=http://mp.weixin.qq.com?params=value" + + jiamistrHa1 := commonus.Sha1Encryption(jiamistr) outData := commonus.MapOut() // outData["msgbtye"] = msgbtye @@ -1229,5 +1255,7 @@ func (s *ShiyanApi) GetEatilTemplate(c *gin.Context) { outData["msgbtyees"] = msgbtyees outData["isTruees"] = isTruees outData["msges"] = msges + outData["jiamistr"] = jiamistr + outData["jiamistrHa1"] = jiamistrHa1 response.Result(0, outData, "查询成功", c) } diff --git a/gin_server_admin/api/wechatapp/callback/apphandle.go b/gin_server_admin/api/wechatapp/callback/apphandle.go index bb733fd..141494a 100644 --- a/gin_server_admin/api/wechatapp/callback/apphandle.go +++ b/gin_server_admin/api/wechatapp/callback/apphandle.go @@ -177,7 +177,9 @@ func EventProcessing(event string, decryptMsg []byte) { case "pic_photo_or_album": //弹出拍照或者相册发图的事件推送 case "pic_weixin": //弹出微信相册发图器的事件推送 case "location_select": //弹出地理位置选择器的事件推送 - case "open_approval_change": //审批状态通知事件 + case "open_approval_change": //审批状态通知事件 自建应用 + OpenApprovalChange(decryptMsg) + case "sys_approval_change": //系统审批应用 case "share_agent_change": //企业互联共享应用事件回调 case "share_chain_change": //上下游共享应用事件回调 case "template_card_event": //模板卡片事件推送 diff --git a/gin_server_admin/api/wechatapp/callback/eventprocessing.go b/gin_server_admin/api/wechatapp/callback/eventprocessing.go index c8ec20a..78f57b4 100644 --- a/gin_server_admin/api/wechatapp/callback/eventprocessing.go +++ b/gin_server_admin/api/wechatapp/callback/eventprocessing.go @@ -4,16 +4,16 @@ import ( "encoding/json" "encoding/xml" "fmt" - "strconv" "time" "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" "github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel" ) //相关事件处理 -func GeographicalPosition(eventMsg []byte) { +func GeographicalPosition(eventMsg []byte) { //进入应用上报地址位置 var msgContent GeographicalPositionType err := xml.Unmarshal(eventMsg, &msgContent) if nil != err { @@ -34,7 +34,7 @@ func GeographicalPosition(eventMsg []byte) { redisPrefix := "Location:GeographicalPosition_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":userId_" + msgContent.FromUsername //redis KEY redisClient := redishandel.RunRedis() redisClient.SetRedisDb(1) - // fmt.Printf("button===101===>%v\n", string(marshal)) + // fmt.Printf("button===101===>%v\n", redisClient) locationJson, locationErr := redisClient.Lindex(redisPrefix, 0) // fmt.Printf("button===102===>%v===>%v\n", locationJson, locationErr) @@ -52,7 +52,7 @@ func GeographicalPosition(eventMsg []byte) { // fmt.Printf("button===2===>%v===>%v\n", jsonErr, locationJson) } else { timeVal := geographicalPositionRedis.Time - if time.Now().Unix()-timeVal >= 1800 { + if time.Now().Unix()-timeVal >= 300 { redisClient.Lpush(redisPrefix, string(marshal)) // fmt.Printf("button===4===>%v\n", marshal) } else { @@ -60,8 +60,47 @@ func GeographicalPosition(eventMsg []byte) { } } } - longFloat, _ := strconv.ParseFloat(msgContent.Longitude, 64) - latFloat, _ := strconv.ParseFloat(msgContent.Latitude, 64) - long, latg := commonus.GCJ02toBD09(longFloat, latFloat) - fmt.Printf("button======>%v======>%v======>%v\n", msgContent, long, latg) + // longFloat, _ := strconv.ParseFloat(msgContent.Longitude, 64) + // latFloat, _ := strconv.ParseFloat(msgContent.Latitude, 64) + // long, latg := commonus.GCJ02toBD09(longFloat, latFloat) + // fmt.Printf("button======>%v======>%v======>%v\n", msgContent, long, latg) +} + +//自建应用审批处理 +func OpenApprovalChange(eventMsg []byte) { + var msgContent OpenApprovalChangeType + err := xml.Unmarshal(eventMsg, &msgContent) + if nil != err { + fmt.Println("***********Unmarshal fail") + } + // jsonstr, _ := json.Marshal(msgContent) + + if msgContent.ApprovalInfo.ThirdNo != "" { + //审批状态 + approvalStatus := 1 + agree := 0 + agreeCount := 0 + for _, approvalNode := range msgContent.ApprovalInfo.ApprovalNodes.ApprovalNode { + agreeCount++ + if approvalNode.NodeStatus == 2 { + agree++ + } + if approvalNode.NodeStatus > 2 { + approvalStatus = int(approvalNode.NodeStatus) + } + } + if agree == agreeCount { + approvalStatus = 2 + } + eiteCont := commonus.MapOut() + eiteCont["al_states"] = approvalStatus + eiteCont["al_eite_time"] = time.Now().Unix() + var assessLog assessmentmodel.AssessmentLog //考核记录 + eiteErr := global.GVA_DB_Performanceappraisal.Model(&assessLog).Select("al_states", "al_eite_time").Where("`al_order_id` = ?", msgContent.ApprovalInfo.ThirdNo).Updates(eiteCont).Error + if eiteErr == nil { + } + // fmt.Printf("approvalStatus================>%v\n", approvalStatus) + } + + // fmt.Printf("open================>%v\n", string(jsonstr)) } diff --git a/gin_server_admin/api/wechatapp/callback/type.go b/gin_server_admin/api/wechatapp/callback/type.go index 24357ed..35890e4 100644 --- a/gin_server_admin/api/wechatapp/callback/type.go +++ b/gin_server_admin/api/wechatapp/callback/type.go @@ -101,3 +101,63 @@ type SelectedItemList struct { type OptionIdsStr struct { OptionId string `xml:"OptionId"` } + +//自建应用审批模块 +type OpenApprovalChangeType struct { + CurrencyMessage + ApprovalInfo ApprovalInfoType `xml:"ApprovalInfo"` +} + +//审批信息 +type ApprovalInfoType struct { + ThirdNo string `xml:"ThirdNo"` //审批单编号,由开发者在发起申请时自定义 + OpenSpName string `xml:"OpenSpName"` //审批模板名称 + OpenTemplateId string `xml:"OpenTemplateId"` //审批模板id + OpenSpStatus int `xml:"OpenSpStatus"` //申请单当前审批状态:1-审批中;2-已通过;3-已驳回;4-已取消 + ApplyTime int64 `xml:"ApplyTime"` //提交申请时间 + ApplyUserName string `xml:"ApplyUserName"` //提交者姓名 + ApplyUserId string `xml:"ApplyUserId"` //提交者userid + ApplyUserParty string `xml:"ApplyUserParty"` //提交者所在部门 + ApplyUserImage string `xml:"ApplyUserImage"` //提交者头像 + ApprovalNodes ApprovalNodesType `xml:"ApprovalNodes"` //审批流程信息 + NotifyNodes NotifyNodesType `xml:"NotifyNodes"` //抄送信息,可能有多个抄送人 + ApproverStep int `xml:"ApproverStep"` //当前审批节点:0-第一个审批节点;1-第二个审批节点…以此类推 +} + +//审批流程信息 +type ApprovalNodesType struct { + ApprovalNode []ApprovalNodeType `xml:"ApprovalNode"` //审批流程信息,可以有多个审批节点 +} + +//审批流程信息,可以有多个审批节点 +type ApprovalNodeType struct { + NodeStatus int `xml:"NodeStatus"` //节点审批操作状态:1-审批中;2-已同意;3-已驳回;4-已转审 + NodeAttr int `xml:"NodeAttr"` //审批节点属性:1-或签;2-会签 + NodeType int `xml:"NodeType"` //审批节点类型:1-固定成员;2-标签;3-上级 + Items ItemsType `xml:"Items"` //审批节点信息,当节点为标签或上级时,一个节点可能有多个分支 +} + +//审批节点信息,当节点为标签或上级时,一个节点可能有多个分支 +type ItemsType struct { + Item ItemType `xml:"Item"` //审批节点分支,当节点为标签或上级时,一个节点可能有多个分支 +} + +//审批节点分支,当节点为标签或上级时,一个节点可能有多个分支 +type ItemType struct { + OpenApprovalChangeUser + ItemSpeech string `xml:"ItemSpeech"` //分支审批人审批意见 + ItemStatus int `xml:"ItemStatus"` //分支审批审批操作状态:1-审批中;2-已同意;3-已驳回;4-已转审 + ItemOpTime int64 `xml:"ItemOpTime"` //分支审批人操作时间 +} + +//抄送信息,可能有多个抄送人 +type NotifyNodesType struct { + NotifyNode []OpenApprovalChangeUser `xml:"NotifyNode"` //抄送信息,可能有多个抄送人 +} + +//抄送信息,可能有多个抄送人 +type OpenApprovalChangeUser struct { + ItemName string `xml:"ItemName"` //姓名 + ItemImage string `xml:"ItemImage"` // 头像 + ItemUserId string `xml:"ItemUserId"` //userid +} diff --git a/gin_server_admin/api/wechatapp/sendmessage/examineapprove.go b/gin_server_admin/api/wechatapp/sendmessage/examineapprove.go index 8cab441..87b2e34 100644 --- a/gin_server_admin/api/wechatapp/sendmessage/examineapprove.go +++ b/gin_server_admin/api/wechatapp/sendmessage/examineapprove.go @@ -23,7 +23,8 @@ func (s *TemplatedEtailType) GetTemplatedeTail(appName string) ([]byte, bool, st //获取企业的jsapi_ticket //计算JS-SDK使用权限签名算法 -func JsSdkSignAlgorithm(appName string) (sendUrlstr string, isTrue bool, msg string) { - sendUrlstr, isTrue, msg = sharemethod.GetExamineApproveSign(appName, 1) +func JsSdkSignAlgorithm(appName string, state int) (sendUrlstr string, isTrue bool, msg string) { + // fmt.Printf("1======>%v\n", state) + sendUrlstr, isTrue, msg = sharemethod.GetExamineApproveSign(appName, state) return } diff --git a/gin_server_admin/api/wechatapp/sharemethod/handle.go b/gin_server_admin/api/wechatapp/sharemethod/handle.go index 2245014..bb1e0d0 100644 --- a/gin_server_admin/api/wechatapp/sharemethod/handle.go +++ b/gin_server_admin/api/wechatapp/sharemethod/handle.go @@ -2,6 +2,7 @@ package sharemethod import ( "encoding/json" + "strconv" "github.com/flipped-aurora/gin-vue-admin/server/commonus" "github.com/flipped-aurora/gin-vue-admin/server/global" @@ -105,20 +106,21 @@ func GetExamineApproveSign(appName string, state int) (sendUrlstr string, isTrue } isTrue = true msg = "获取ToKen成功!" - state = 1 + // state = 1 if state != 1 { sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + ton } else { sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=" + ton + "&type=agent_config" } - msg, err = GetJsapiTicket(appName, sendUrlstr) + // fmt.Printf("2======>%v\n", state) + msg, err = GetJsapiTicket(appName, sendUrlstr, state) if err != nil { isTrue = false } return } -func GetJsapiTicket(types, callUrl string) (tokenInfo string, err error) { +func GetJsapiTicket(types, callUrl string, state int) (tokenInfo string, err error) { redisClient := redishandel.RunRedis() redisClient.SetRedisDb(1) @@ -126,20 +128,23 @@ func GetJsapiTicket(types, callUrl string) (tokenInfo string, err error) { redisPrefix := global.GVA_CONFIG.RedisPrefix.PreFix + ":WorkJsapiTicket_" //redis 前缀 switch types { case "maillist": - redisPrefix = redisPrefix + "Mail_" + redisPrefix = redisPrefix + "Mail_" + strconv.Itoa(state) + "_" case "health": - redisPrefix = redisPrefix + "Health_" + redisPrefix = redisPrefix + "Health_" + strconv.Itoa(state) + "_" case "school": - redisPrefix = redisPrefix + "School_" + redisPrefix = redisPrefix + "School_" + strconv.Itoa(state) + "_" default: } + // fmt.Printf("3======>%v\n", redisPrefix) isTrue, tokenInfo = redisClient.Get(redisPrefix + global.GVA_CONFIG.RedisPrefix.Alias) + // fmt.Printf("js_token--110--->%v--->%v--->%v\n", isTrue, tokenInfo, redisPrefix+global.GVA_CONFIG.RedisPrefix.Alias) if isTrue == true { return } else { //企业微信获取token地址 token := commonus.CurlGet(callUrl) //访问token地址 + // fmt.Printf("js_token----->%v\n", string(token)) var callBackData weChatCallBack err = json.Unmarshal(token, &callBackData) if err != nil { @@ -148,7 +153,8 @@ func GetJsapiTicket(types, callUrl string) (tokenInfo string, err error) { if callBackData.Errcode != 0 { return } - tokenInfo = callBackData.Accesstoken + tokenInfo = callBackData.Ticket + // fmt.Printf("js_token--2--->%v\n", callBackData) redisClient.SetRedisTime(7200) redisClient.Set(redisPrefix+global.GVA_CONFIG.RedisPrefix.Alias, tokenInfo) } diff --git a/gin_server_admin/api/wechatapp/sharemethod/type.go b/gin_server_admin/api/wechatapp/sharemethod/type.go index cce9786..b117d2e 100644 --- a/gin_server_admin/api/wechatapp/sharemethod/type.go +++ b/gin_server_admin/api/wechatapp/sharemethod/type.go @@ -6,4 +6,5 @@ type weChatCallBack struct { Errmsg string `json:"errmsg"` Accesstoken string `json:"access_token"` Expiresin int64 `json:"expires_in"` + Ticket string `json:"ticket"` } diff --git a/gin_server_admin/commonus/timeSub.go b/gin_server_admin/commonus/timeSub.go index d445d0f..e419c20 100644 --- a/gin_server_admin/commonus/timeSub.go +++ b/gin_server_admin/commonus/timeSub.go @@ -389,3 +389,13 @@ func GetQuarterDay(t time.Time) (string, int, int64, int64) { quarterEndTime := DateToTimeStamp(lastOfQuarter) return year, currentQuarter, quarterStartTime, quarterEndTime } + +//获取指定时间的前N个月的起止时间 +func AppointTimeFrontMonth(timeVal time.Time, diff int) (startTime, endTime int64) { + diff = diff * -1 + lastMonthFirstDay := timeVal.AddDate(0, diff, -timeVal.Day()+1) + startTime = time.Date(lastMonthFirstDay.Year(), lastMonthFirstDay.Month(), lastMonthFirstDay.Day(), 0, 0, 0, 0, timeVal.Location()).Unix() + lastMonthEndDay := lastMonthFirstDay.AddDate(0, 1, -1) + endTime = time.Date(lastMonthEndDay.Year(), lastMonthEndDay.Month(), lastMonthEndDay.Day(), 23, 59, 59, 0, timeVal.Location()).Unix() + return +} diff --git a/gin_server_admin/initialize/router.go b/gin_server_admin/initialize/router.go index f05245f..8b8f667 100644 --- a/gin_server_admin/initialize/router.go +++ b/gin_server_admin/initialize/router.go @@ -57,6 +57,8 @@ func Routers() *gin.Engine { staffMan := router.RouterGroupApp.StaffRouter.StaffRouter //员工相关操作 + ExamineApprove := router.RouterGroupApp.ExamApprove.ExamApproveRouter //前端审批相关 + /** 企业微信相关 */ @@ -97,7 +99,8 @@ func Routers() *gin.Engine { examtions.InitGroupRouter(PublicGroup) //考试相关 // Questions.InitGroupRouter(PublicGroup) //试题相关 - dutyAssEss.InitAssessmentRouter(PublicGroup) //数据考核 + dutyAssEss.InitAssessmentRouter(PublicGroup) //数据考核 + dutyAssEss.NoInitDutyHandelRouter(PublicGroup) //数据考核无需验证 staffMan.InitStaffRouter(PublicGroup) //员工相关操作 @@ -143,6 +146,8 @@ func Routers() *gin.Engine { // staffMan.InitStaffRouter(MyCustomPrivateGroup) //员工相关操作 dutyAssEss.InitDutyHandelRouter(MyCustomPrivateGroup) //前端数据考核 + + ExamineApprove.InitShiyanRouter(MyCustomPrivateGroup) //前端审批相关 } //自定义后台登录 MyCustomSystemGroup := Router.Group("") diff --git a/gin_server_admin/model/assessmentmodel/dutyclass.go b/gin_server_admin/model/assessmentmodel/dutyclass.go index 32cc0d5..f0a49c7 100644 --- a/gin_server_admin/model/assessmentmodel/dutyclass.go +++ b/gin_server_admin/model/assessmentmodel/dutyclass.go @@ -118,3 +118,22 @@ type Departscores struct { func (Departscores *Departscores) TableName() string { return "departscores" } + +//考核记录 +type AssessmentLog struct { + Id int64 `json:"id" gorm:"column:al_id;type:bigint(20) unsigned;not null;comment:Id"` + Title string `json:"title" gorm:"column:al_title;type:varchar(255);comment:考核标题"` + Assdepart int `json:"assdepart" gorm:"column:al_assdepart;type:int(5) unsigned;default:0;not null;comment:被考核部门"` + ExecutorUser int64 `json:"executorUser" gorm:"column:al_executor_user;type:bigint(20) unsigned;default:0;not null;comment:执行人"` + ExecutorDepart int `json:"executorDepart" gorm:"column:al_executor_depart;type:int(5) unsigned;default:0;not null;comment:执行人部门"` + ExecutorTime int64 `json:"executorTime" gorm:"column:al_executor_time;type:bigint(20) unsigned;default:0;not null;comment:执行时间"` + OrderId int64 `json:"orderId" gorm:"column:al_order_id;type:bigint(20) unsigned;default:0;not null;comment:审批流ID"` + States int64 `json:"states" gorm:"column:al_states;type:int(1) unsigned;default:0;not null;comment:申请单当前审批状态:1-审批中;2-已通过;3-已驳回;4-已取消"` + AddTime int64 `json:"addTime" gorm:"column:al_time;type:bigint(20) unsigned;default:0;not null;comment:添加时间"` + EiteTime int64 `json:"eiteTime" gorm:"column:al_eite_time;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"` + DutyList string `json:"dutyList" gorm:"column:al_duty_list;type:longtext;comment:评价内容"` +} + +func (AssessmentLog *AssessmentLog) TableName() string { + return "assessment_log" +} diff --git a/gin_server_admin/router/assessment/assessmentrouter.go b/gin_server_admin/router/assessment/assessmentrouter.go index a54a1e8..31744ad 100644 --- a/gin_server_admin/router/assessment/assessmentrouter.go +++ b/gin_server_admin/router/assessment/assessmentrouter.go @@ -51,14 +51,32 @@ func (s *AssessmentRouter) InitDutyHandelRouter(Router *gin.RouterGroup) { dutyIndexCodeRouter := Router.Group("dutys") var authorityIndexApi = v2.ApiGroupApp.AssessMentApi.Assessment { - dutyIndexCodeRouter.POST("/", authorityIndexApi.Index) // 入口 - dutyIndexCodeRouter.POST("", authorityIndexApi.Index) // 入口 - dutyIndexCodeRouter.GET("/", authorityIndexApi.Index) // 入口 - dutyIndexCodeRouter.GET("", authorityIndexApi.Index) // 入口 - dutyIndexCodeRouter.POST("myassessmentlist", authorityIndexApi.MyAssEssMentList) // 我需要填写的考核项目 - dutyIndexCodeRouter.POST("getDutydepartlist", authorityIndexApi.GetDutyDepartList) // 根据具体考核项目获取被考核部门 - dutyIndexCodeRouter.POST("addassessmentscore", authorityIndexApi.AddAssessmentScore) //添加考核项目 - dutyIndexCodeRouter.POST("myevaluatelist", authorityIndexApi.MyEvaluateList) //个人考核评价记录 - dutyIndexCodeRouter.POST("getdeparttimeassess", authorityIndexApi.GetDepartTimeAssess) //根据部门和时间获取考核详情 + dutyIndexCodeRouter.POST("/", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.POST("", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.GET("/", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.GET("", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.POST("myassessmentlist", authorityIndexApi.MyAssEssMentList) // 我需要填写的考核项目 + dutyIndexCodeRouter.POST("getDutydepartlist", authorityIndexApi.GetDutyDepartList) // 根据具体考核项目获取被考核部门 + dutyIndexCodeRouter.POST("addassessmentscore", authorityIndexApi.AddAssessmentScore) //添加考核项目 + dutyIndexCodeRouter.POST("myevaluatelist", authorityIndexApi.MyEvaluateList) //个人考核评价记录 + dutyIndexCodeRouter.POST("getdeparttimeassess", authorityIndexApi.GetDepartTimeAssess) //根据部门和时间获取考核详情 + dutyIndexCodeRouter.POST("departmentassess", authorityIndexApi.DepartmentAssess) //根据部门和时间获取考核详情 + dutyIndexCodeRouter.POST("departmentassessdata", authorityIndexApi.DepartmentAssessData) //根据部门和时间写入全部考核项分值 + } +} + +//无需验证 +func (s *AssessmentRouter) NoInitDutyHandelRouter(Router *gin.RouterGroup) { + dutyIndexCodeRouter := Router.Group("noverify") + var authorityIndexApi = v2.ApiGroupApp.AssessMentApi.Assessment + { + dutyIndexCodeRouter.POST("/", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.POST("", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.GET("/", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.GET("", authorityIndexApi.Index) // 入口 + + dutyIndexCodeRouter.POST("lookdepartmentassessinfo", authorityIndexApi.LookDepartmentAssessInfo) // 查看审批考核详细\ + dutyIndexCodeRouter.GET("lookdepartmentassessinfo", authorityIndexApi.LookDepartmentAssessInfo) // 查看审批考核详细 + } } diff --git a/gin_server_admin/router/enter.go b/gin_server_admin/router/enter.go index cb2c506..bb57cd8 100644 --- a/gin_server_admin/router/enter.go +++ b/gin_server_admin/router/enter.go @@ -7,6 +7,7 @@ import ( "github.com/flipped-aurora/gin-vue-admin/server/router/example" "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/shiyan" "github.com/flipped-aurora/gin-vue-admin/server/router/staffrouter" "github.com/flipped-aurora/gin-vue-admin/server/router/system" @@ -30,6 +31,7 @@ type RouterGroup struct { StaffRouter staffrouter.RouterGroup AdminRouter systemadmin.RouterGroup WorkWeChatApp wechatapp.RouterGroup + ExamApprove examapprove.RouterGroup } var RouterGroupApp = new(RouterGroup) diff --git a/gin_server_admin/router/index/examapprove/enter.go b/gin_server_admin/router/index/examapprove/enter.go new file mode 100644 index 0000000..1b409ed --- /dev/null +++ b/gin_server_admin/router/index/examapprove/enter.go @@ -0,0 +1,5 @@ +package examapprove + +type RouterGroup struct { + ExamApproveRouter +} diff --git a/gin_server_admin/router/index/examapprove/examapprouter.go b/gin_server_admin/router/index/examapprove/examapprouter.go new file mode 100644 index 0000000..45051d8 --- /dev/null +++ b/gin_server_admin/router/index/examapprove/examapprouter.go @@ -0,0 +1,22 @@ +package examapprove + +import ( + v2 "github.com/flipped-aurora/gin-vue-admin/server/api/index" + "github.com/gin-gonic/gin" +) + +type ExamApproveRouter struct{} + +//审批 +func (s *ExamApproveRouter) InitShiyanRouter(Router *gin.RouterGroup) { + shiyanCodeRouter := Router.Group("examine") + var authorityApi = v2.ApiGroupApp.ExamApproveApi.ExamineApproveApi + { + shiyanCodeRouter.POST("", authorityApi.Index) // 入口 + shiyanCodeRouter.POST("/", authorityApi.Index) + shiyanCodeRouter.GET("", authorityApi.Index) + shiyanCodeRouter.GET("/", authorityApi.Index) + + shiyanCodeRouter.POST("getconfig", authorityApi.GetConfing) //获取配置参数 + } +} diff --git a/gin_server_admin/router/shiyan/sys_shiyan.go b/gin_server_admin/router/shiyan/sys_shiyan.go index 0969696..f8bf25e 100644 --- a/gin_server_admin/router/shiyan/sys_shiyan.go +++ b/gin_server_admin/router/shiyan/sys_shiyan.go @@ -25,5 +25,6 @@ func (s *ShiyanRouter) InitShiyanRouter(Router *gin.RouterGroup) { shiyanCodeRouter.POST("/sendimagemsgall", authorityApi.SendImageMessageAll) //实验发送按钮操作全按钮 shiyanCodeRouter.POST("/geteatiltemplate", authorityApi.GetEatilTemplate) + shiyanCodeRouter.POST("/getrequestoperation", authorityApi.GetRequestOperation) } } diff --git a/gin_server_admin/其他支持文件/config.yaml b/gin_server_admin/其他支持文件/config.yaml index e02cd13..485befe 100644 --- a/gin_server_admin/其他支持文件/config.yaml +++ b/gin_server_admin/其他支持文件/config.yaml @@ -64,6 +64,10 @@ redis: db: 0 addr: 127.0.0.1:6379 password: "" +rediswechat: + db: 1 + addr: 127.0.0.1:6379 + password: "" redisprefix: prefix: "HXGK_GO_ZhixingCollege" alias: "dev"