Browse Source

查看审批详情

qin_1
超级管理员 4 years ago
parent
commit
5008cb2de6
  1. 345
      gin_server_admin/api/index/assessment/assesshandle.go
  2. 64
      gin_server_admin/api/index/assessment/assesstype.go
  3. 8
      gin_server_admin/api/index/enter.go
  4. 6
      gin_server_admin/api/index/examineandapprove/enter.go
  5. 61
      gin_server_admin/api/index/examineandapprove/examapp.go
  6. 9
      gin_server_admin/api/index/examineandapprove/type.go
  7. 30
      gin_server_admin/api/v1/shiyan/shiyan.go
  8. 4
      gin_server_admin/api/wechatapp/callback/apphandle.go
  9. 55
      gin_server_admin/api/wechatapp/callback/eventprocessing.go
  10. 60
      gin_server_admin/api/wechatapp/callback/type.go
  11. 5
      gin_server_admin/api/wechatapp/sendmessage/examineapprove.go
  12. 20
      gin_server_admin/api/wechatapp/sharemethod/handle.go
  13. 1
      gin_server_admin/api/wechatapp/sharemethod/type.go
  14. 10
      gin_server_admin/commonus/timeSub.go
  15. 7
      gin_server_admin/initialize/router.go
  16. 19
      gin_server_admin/model/assessmentmodel/dutyclass.go
  17. 36
      gin_server_admin/router/assessment/assessmentrouter.go
  18. 2
      gin_server_admin/router/enter.go
  19. 5
      gin_server_admin/router/index/examapprove/enter.go
  20. 22
      gin_server_admin/router/index/examapprove/examapprouter.go
  21. 1
      gin_server_admin/router/shiyan/sys_shiyan.go
  22. 4
      gin_server_admin/其他支持文件/config.yaml

345
gin_server_admin/api/index/assessment/assesshandle.go

@ -1,6 +1,7 @@
package assessment package assessment
import ( import (
"encoding/json"
"strconv" "strconv"
"time" "time"
@ -27,6 +28,21 @@ func (a *Assessment) MyAssEssMentList(c *gin.Context) {
// response.Result(101, err, "参数错误!请重新提交!", c) // response.Result(101, err, "参数错误!请重新提交!", c)
// return // 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 { if requestData.PageSize == 0 {
requestData.PageSize = 20 requestData.PageSize = 20
} }
@ -73,7 +89,7 @@ func (a *Assessment) MyAssEssMentList(c *gin.Context) {
assessOutCont.AssessTitle = assessClassCont.Title assessOutCont.AssessTitle = assessClassCont.Title
} }
assIsTrue, assDepartList := GetAssDepart(val.Id) assIsTrue, assDepartList := GetAssDepart(val.Id, monthData)
// fmt.Printf("------------->%v-------->%v\n", assIsTrue, assDepartList) // fmt.Printf("------------->%v-------->%v\n", assIsTrue, assDepartList)
if assIsTrue == true { if assIsTrue == true {
assessOutCont.AssessDepart = assDepartList 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 isTrue = false
var departDuty []assessmentmodel.DepartDuty var departDuty []assessmentmodel.DepartDuty
assDepartErr := global.GVA_DB_Performanceappraisal.Where("`de_duty` = ? AND `de_satte` = 1", dutyid).Find(&departDuty).Error 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.DutyId = val.DutyId
assInfo.Rescore = val.Rescore assInfo.Rescore = val.Rescore
assInfo.Group = val.Group assInfo.Group = val.Group
assInfo.IsTrue = JudgeResAssEssExam(val.DutyId, val.PartId, dataStr)
assessDepartstr = append(assessDepartstr, assInfo) assessDepartstr = append(assessDepartstr, assInfo)
} }
@ -116,6 +133,24 @@ func GetAssDepart(dutyid int64) (isTrue bool, assessDepartstr []assessDepart) {
return 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) { func (a *Assessment) GetDutyDepartList(c *gin.Context) {
var requestData assessDepartRequest var requestData assessDepartRequest
@ -133,7 +168,9 @@ func (a *Assessment) GetDutyDepartList(c *gin.Context) {
response.Result(103, err, "参数错误!请重新提交!", c) response.Result(103, err, "参数错误!请重新提交!", c)
return return
} }
isTrue, departList := GetAssDepart(id) dayTime := time.Now()
monthData := commonus.TimeStampToDate(dayTime.Unix(), 10) //当月
isTrue, departList := GetAssDepart(id, monthData)
if isTrue != true { if isTrue != true {
response.Result(104, departList, "获取失败!", c) response.Result(104, departList, "获取失败!", c)
return return
@ -555,3 +592,305 @@ func GetDutyInfoCont(id int64) (isTrue bool, outAssDutyInfo outAessDuty) {
isTrue = true isTrue = true
return 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)
}

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

@ -1,6 +1,8 @@
package assessment package assessment
import ( import (
"sync"
"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/model/assessmentmodel" "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel"
) )
@ -8,10 +10,27 @@ import (
//考核 //考核
type Assessment struct{} 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 { type getAssEssList struct {
commonus.PageSetLimt commonus.PageSetLimt
BranchFactoryId int `json:"branchFactoryId"` BranchFactoryId int `json:"branchFactoryId"`
DayState int `json:"daystate"`
} }
//考核项目输出 //考核项目输出
@ -35,6 +54,7 @@ type assessDepart struct {
DutyId int64 `json:"dutyId"` DutyId int64 `json:"dutyId"`
Rescore int64 `json:"rescore"` Rescore int64 `json:"rescore"`
Group int64 `json:"group"` Group int64 `json:"group"`
IsTrue bool `json:"istrue"`
} }
//更具具体考核项目获取考核部门 //更具具体考核项目获取考核部门
@ -145,3 +165,47 @@ type departDutyList struct {
type commentUser struct { type commentUser struct {
UserKey int64 `json:"userkey" gorm:"column:s_comment_user;type:bigint(20) unsigned;default:0;not null;comment:评论人"` 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"`
}

8
gin_server_admin/api/index/enter.go

@ -1,9 +1,13 @@
package index 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 { type ApiGroup struct {
AssessMentApi assessment.ApiGroup AssessMentApi assessment.ApiGroup
ExamApproveApi examineandapprove.ApiGroup
} }
var ApiGroupApp = new(ApiGroup) var ApiGroupApp = new(ApiGroup)

6
gin_server_admin/api/index/examineandapprove/enter.go

@ -0,0 +1,6 @@
package examineandapprove
//审批相关
type ApiGroup struct {
ExamineApproveApi
}

61
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&timestamp=%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)
}

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

30
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) { func (a *ShiyanApi) GetRequestOperation(c *gin.Context) {
id := c.Query("id") id := c.Query("id")
fmt.Printf("====>%v\n", id) fmt.Printf("====>%v\n", id)
// strconv.Atoi(id)
idint, _ := strconv.Atoi(id)
GetNextMonth(idint)
response.Ok(c) 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请求获参 //get请求获参
type postGroupCanshu struct { type postGroupCanshu struct {
Id int `json:"id" from:"id"` Id int `json:"id" from:"id"`
@ -1220,7 +1236,17 @@ func (s *ShiyanApi) GetEatilTemplate(c *gin.Context) {
} }
// msgbtye, isTrue, msg := requestData.GetTemplatedeTail("school") // 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&timestamp=%v&url=%v", msges, noncestr, timestamp, url)
// jiamistr = "jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value"
jiamistrHa1 := commonus.Sha1Encryption(jiamistr)
outData := commonus.MapOut() outData := commonus.MapOut()
// outData["msgbtye"] = msgbtye // outData["msgbtye"] = msgbtye
@ -1229,5 +1255,7 @@ func (s *ShiyanApi) GetEatilTemplate(c *gin.Context) {
outData["msgbtyees"] = msgbtyees outData["msgbtyees"] = msgbtyees
outData["isTruees"] = isTruees outData["isTruees"] = isTruees
outData["msges"] = msges outData["msges"] = msges
outData["jiamistr"] = jiamistr
outData["jiamistrHa1"] = jiamistrHa1
response.Result(0, outData, "查询成功", c) response.Result(0, outData, "查询成功", c)
} }

4
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_photo_or_album": //弹出拍照或者相册发图的事件推送
case "pic_weixin": //弹出微信相册发图器的事件推送 case "pic_weixin": //弹出微信相册发图器的事件推送
case "location_select": //弹出地理位置选择器的事件推送 case "location_select": //弹出地理位置选择器的事件推送
case "open_approval_change": //审批状态通知事件 case "open_approval_change": //审批状态通知事件 自建应用
OpenApprovalChange(decryptMsg)
case "sys_approval_change": //系统审批应用
case "share_agent_change": //企业互联共享应用事件回调 case "share_agent_change": //企业互联共享应用事件回调
case "share_chain_change": //上下游共享应用事件回调 case "share_chain_change": //上下游共享应用事件回调
case "template_card_event": //模板卡片事件推送 case "template_card_event": //模板卡片事件推送

55
gin_server_admin/api/wechatapp/callback/eventprocessing.go

@ -4,16 +4,16 @@ import (
"encoding/json" "encoding/json"
"encoding/xml" "encoding/xml"
"fmt" "fmt"
"strconv"
"time" "time"
"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/utils/redishandel" "github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel"
) )
//相关事件处理 //相关事件处理
func GeographicalPosition(eventMsg []byte) { func GeographicalPosition(eventMsg []byte) { //进入应用上报地址位置
var msgContent GeographicalPositionType var msgContent GeographicalPositionType
err := xml.Unmarshal(eventMsg, &msgContent) err := xml.Unmarshal(eventMsg, &msgContent)
if nil != err { if nil != err {
@ -34,7 +34,7 @@ func GeographicalPosition(eventMsg []byte) {
redisPrefix := "Location:GeographicalPosition_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":userId_" + msgContent.FromUsername //redis KEY redisPrefix := "Location:GeographicalPosition_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":userId_" + msgContent.FromUsername //redis KEY
redisClient := redishandel.RunRedis() redisClient := redishandel.RunRedis()
redisClient.SetRedisDb(1) redisClient.SetRedisDb(1)
// fmt.Printf("button===101===>%v\n", string(marshal)) // fmt.Printf("button===101===>%v\n", redisClient)
locationJson, locationErr := redisClient.Lindex(redisPrefix, 0) locationJson, locationErr := redisClient.Lindex(redisPrefix, 0)
// fmt.Printf("button===102===>%v===>%v\n", locationJson, locationErr) // 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) // fmt.Printf("button===2===>%v===>%v\n", jsonErr, locationJson)
} else { } else {
timeVal := geographicalPositionRedis.Time timeVal := geographicalPositionRedis.Time
if time.Now().Unix()-timeVal >= 1800 { if time.Now().Unix()-timeVal >= 300 {
redisClient.Lpush(redisPrefix, string(marshal)) redisClient.Lpush(redisPrefix, string(marshal))
// fmt.Printf("button===4===>%v\n", marshal) // fmt.Printf("button===4===>%v\n", marshal)
} else { } else {
@ -60,8 +60,47 @@ func GeographicalPosition(eventMsg []byte) {
} }
} }
} }
longFloat, _ := strconv.ParseFloat(msgContent.Longitude, 64) // longFloat, _ := strconv.ParseFloat(msgContent.Longitude, 64)
latFloat, _ := strconv.ParseFloat(msgContent.Latitude, 64) // latFloat, _ := strconv.ParseFloat(msgContent.Latitude, 64)
long, latg := commonus.GCJ02toBD09(longFloat, latFloat) // long, latg := commonus.GCJ02toBD09(longFloat, latFloat)
fmt.Printf("button======>%v======>%v======>%v\n", msgContent, long, latg) // 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))
} }

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

@ -101,3 +101,63 @@ type SelectedItemList struct {
type OptionIdsStr struct { type OptionIdsStr struct {
OptionId string `xml:"OptionId"` 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
}

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

@ -23,7 +23,8 @@ func (s *TemplatedEtailType) GetTemplatedeTail(appName string) ([]byte, bool, st
//获取企业的jsapi_ticket //获取企业的jsapi_ticket
//计算JS-SDK使用权限签名算法 //计算JS-SDK使用权限签名算法
func JsSdkSignAlgorithm(appName string) (sendUrlstr string, isTrue bool, msg string) { func JsSdkSignAlgorithm(appName string, state int) (sendUrlstr string, isTrue bool, msg string) {
sendUrlstr, isTrue, msg = sharemethod.GetExamineApproveSign(appName, 1) // fmt.Printf("1======>%v\n", state)
sendUrlstr, isTrue, msg = sharemethod.GetExamineApproveSign(appName, state)
return return
} }

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

@ -2,6 +2,7 @@ package sharemethod
import ( import (
"encoding/json" "encoding/json"
"strconv"
"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"
@ -105,20 +106,21 @@ func GetExamineApproveSign(appName string, state int) (sendUrlstr string, isTrue
} }
isTrue = true isTrue = true
msg = "获取ToKen成功!" msg = "获取ToKen成功!"
state = 1 // state = 1
if state != 1 { if state != 1 {
sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + ton sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + ton
} else { } else {
sendUrlstr = "https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=" + ton + "&type=agent_config" 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 { if err != nil {
isTrue = false isTrue = false
} }
return 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 := redishandel.RunRedis()
redisClient.SetRedisDb(1) redisClient.SetRedisDb(1)
@ -126,20 +128,23 @@ func GetJsapiTicket(types, callUrl string) (tokenInfo string, err error) {
redisPrefix := global.GVA_CONFIG.RedisPrefix.PreFix + ":WorkJsapiTicket_" //redis 前缀 redisPrefix := global.GVA_CONFIG.RedisPrefix.PreFix + ":WorkJsapiTicket_" //redis 前缀
switch types { switch types {
case "maillist": case "maillist":
redisPrefix = redisPrefix + "Mail_" redisPrefix = redisPrefix + "Mail_" + strconv.Itoa(state) + "_"
case "health": case "health":
redisPrefix = redisPrefix + "Health_" redisPrefix = redisPrefix + "Health_" + strconv.Itoa(state) + "_"
case "school": case "school":
redisPrefix = redisPrefix + "School_" redisPrefix = redisPrefix + "School_" + strconv.Itoa(state) + "_"
default: default:
} }
// fmt.Printf("3======>%v\n", redisPrefix)
isTrue, tokenInfo = redisClient.Get(redisPrefix + global.GVA_CONFIG.RedisPrefix.Alias) 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 { if isTrue == true {
return return
} else { } else {
//企业微信获取token地址 //企业微信获取token地址
token := commonus.CurlGet(callUrl) //访问token地址 token := commonus.CurlGet(callUrl) //访问token地址
// fmt.Printf("js_token----->%v\n", string(token))
var callBackData weChatCallBack var callBackData weChatCallBack
err = json.Unmarshal(token, &callBackData) err = json.Unmarshal(token, &callBackData)
if err != nil { if err != nil {
@ -148,7 +153,8 @@ func GetJsapiTicket(types, callUrl string) (tokenInfo string, err error) {
if callBackData.Errcode != 0 { if callBackData.Errcode != 0 {
return return
} }
tokenInfo = callBackData.Accesstoken tokenInfo = callBackData.Ticket
// fmt.Printf("js_token--2--->%v\n", callBackData)
redisClient.SetRedisTime(7200) redisClient.SetRedisTime(7200)
redisClient.Set(redisPrefix+global.GVA_CONFIG.RedisPrefix.Alias, tokenInfo) redisClient.Set(redisPrefix+global.GVA_CONFIG.RedisPrefix.Alias, tokenInfo)
} }

1
gin_server_admin/api/wechatapp/sharemethod/type.go

@ -6,4 +6,5 @@ type weChatCallBack struct {
Errmsg string `json:"errmsg"` Errmsg string `json:"errmsg"`
Accesstoken string `json:"access_token"` Accesstoken string `json:"access_token"`
Expiresin int64 `json:"expires_in"` Expiresin int64 `json:"expires_in"`
Ticket string `json:"ticket"`
} }

10
gin_server_admin/commonus/timeSub.go

@ -389,3 +389,13 @@ func GetQuarterDay(t time.Time) (string, int, int64, int64) {
quarterEndTime := DateToTimeStamp(lastOfQuarter) quarterEndTime := DateToTimeStamp(lastOfQuarter)
return year, currentQuarter, quarterStartTime, quarterEndTime 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
}

7
gin_server_admin/initialize/router.go

@ -57,6 +57,8 @@ func Routers() *gin.Engine {
staffMan := router.RouterGroupApp.StaffRouter.StaffRouter //员工相关操作 staffMan := router.RouterGroupApp.StaffRouter.StaffRouter //员工相关操作
ExamineApprove := router.RouterGroupApp.ExamApprove.ExamApproveRouter //前端审批相关
/** /**
企业微信相关 企业微信相关
*/ */
@ -97,7 +99,8 @@ func Routers() *gin.Engine {
examtions.InitGroupRouter(PublicGroup) //考试相关 examtions.InitGroupRouter(PublicGroup) //考试相关
// Questions.InitGroupRouter(PublicGroup) //试题相关 // Questions.InitGroupRouter(PublicGroup) //试题相关
dutyAssEss.InitAssessmentRouter(PublicGroup) //数据考核 dutyAssEss.InitAssessmentRouter(PublicGroup) //数据考核
dutyAssEss.NoInitDutyHandelRouter(PublicGroup) //数据考核无需验证
staffMan.InitStaffRouter(PublicGroup) //员工相关操作 staffMan.InitStaffRouter(PublicGroup) //员工相关操作
@ -143,6 +146,8 @@ func Routers() *gin.Engine {
// staffMan.InitStaffRouter(MyCustomPrivateGroup) //员工相关操作 // staffMan.InitStaffRouter(MyCustomPrivateGroup) //员工相关操作
dutyAssEss.InitDutyHandelRouter(MyCustomPrivateGroup) //前端数据考核 dutyAssEss.InitDutyHandelRouter(MyCustomPrivateGroup) //前端数据考核
ExamineApprove.InitShiyanRouter(MyCustomPrivateGroup) //前端审批相关
} }
//自定义后台登录 //自定义后台登录
MyCustomSystemGroup := Router.Group("") MyCustomSystemGroup := Router.Group("")

19
gin_server_admin/model/assessmentmodel/dutyclass.go

@ -118,3 +118,22 @@ type Departscores struct {
func (Departscores *Departscores) TableName() string { func (Departscores *Departscores) TableName() string {
return "departscores" 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"
}

36
gin_server_admin/router/assessment/assessmentrouter.go

@ -51,14 +51,32 @@ func (s *AssessmentRouter) InitDutyHandelRouter(Router *gin.RouterGroup) {
dutyIndexCodeRouter := Router.Group("dutys") dutyIndexCodeRouter := Router.Group("dutys")
var authorityIndexApi = v2.ApiGroupApp.AssessMentApi.Assessment var authorityIndexApi = v2.ApiGroupApp.AssessMentApi.Assessment
{ {
dutyIndexCodeRouter.POST("/", authorityIndexApi.Index) // 入口 dutyIndexCodeRouter.POST("/", authorityIndexApi.Index) // 入口
dutyIndexCodeRouter.POST("", authorityIndexApi.Index) // 入口 dutyIndexCodeRouter.POST("", authorityIndexApi.Index) // 入口
dutyIndexCodeRouter.GET("/", authorityIndexApi.Index) // 入口 dutyIndexCodeRouter.GET("/", authorityIndexApi.Index) // 入口
dutyIndexCodeRouter.GET("", authorityIndexApi.Index) // 入口 dutyIndexCodeRouter.GET("", authorityIndexApi.Index) // 入口
dutyIndexCodeRouter.POST("myassessmentlist", authorityIndexApi.MyAssEssMentList) // 我需要填写的考核项目 dutyIndexCodeRouter.POST("myassessmentlist", authorityIndexApi.MyAssEssMentList) // 我需要填写的考核项目
dutyIndexCodeRouter.POST("getDutydepartlist", authorityIndexApi.GetDutyDepartList) // 根据具体考核项目获取被考核部门 dutyIndexCodeRouter.POST("getDutydepartlist", authorityIndexApi.GetDutyDepartList) // 根据具体考核项目获取被考核部门
dutyIndexCodeRouter.POST("addassessmentscore", authorityIndexApi.AddAssessmentScore) //添加考核项目 dutyIndexCodeRouter.POST("addassessmentscore", authorityIndexApi.AddAssessmentScore) //添加考核项目
dutyIndexCodeRouter.POST("myevaluatelist", authorityIndexApi.MyEvaluateList) //个人考核评价记录 dutyIndexCodeRouter.POST("myevaluatelist", authorityIndexApi.MyEvaluateList) //个人考核评价记录
dutyIndexCodeRouter.POST("getdeparttimeassess", authorityIndexApi.GetDepartTimeAssess) //根据部门和时间获取考核详情 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) // 查看审批考核详细
} }
} }

2
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/example"
"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/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"
@ -30,6 +31,7 @@ type RouterGroup struct {
StaffRouter staffrouter.RouterGroup StaffRouter staffrouter.RouterGroup
AdminRouter systemadmin.RouterGroup AdminRouter systemadmin.RouterGroup
WorkWeChatApp wechatapp.RouterGroup WorkWeChatApp wechatapp.RouterGroup
ExamApprove examapprove.RouterGroup
} }
var RouterGroupApp = new(RouterGroup) var RouterGroupApp = new(RouterGroup)

5
gin_server_admin/router/index/examapprove/enter.go

@ -0,0 +1,5 @@
package examapprove
type RouterGroup struct {
ExamApproveRouter
}

22
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) //获取配置参数
}
}

1
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("/sendimagemsgall", authorityApi.SendImageMessageAll) //实验发送按钮操作全按钮
shiyanCodeRouter.POST("/geteatiltemplate", authorityApi.GetEatilTemplate) shiyanCodeRouter.POST("/geteatiltemplate", authorityApi.GetEatilTemplate)
shiyanCodeRouter.POST("/getrequestoperation", authorityApi.GetRequestOperation)
} }
} }

4
gin_server_admin/其他支持文件/config.yaml

@ -64,6 +64,10 @@ redis:
db: 0 db: 0
addr: 127.0.0.1:6379 addr: 127.0.0.1:6379
password: "" password: ""
rediswechat:
db: 1
addr: 127.0.0.1:6379
password: ""
redisprefix: redisprefix:
prefix: "HXGK_GO_ZhixingCollege" prefix: "HXGK_GO_ZhixingCollege"
alias: "dev" alias: "dev"

Loading…
Cancel
Save