From 55e6ffc04235693a1c620e47e639546fee79b5a0 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Wed, 13 Apr 2022 08:01:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B2=A1=E4=BB=80=E4=B9=88=E5=A5=BD=E5=86=99?= =?UTF-8?q?=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/admin/dutyassess/assesstype.go | 18 + .../api/admin/dutyassess/dutyhandle.go | 128 ++++++- .../api/index/evaluation/assessment.go | 3 + gin_server_admin/api/index/evaluation/type.go | 1 + .../api/v1/assessment/dutytype.go | 1 + .../assessment/set_evaluation_objectives.go | 29 ++ .../api/v1/custom/customhandle.go | 6 +- .../api/wechatapp/callback/apphandle.go | 1 + .../api/wechatapp/callback/updatehandle.go | 5 +- gin_server_admin/commonus/publichaneld.go | 34 +- gin_server_admin/middleware/myjwt.go | 4 +- .../model/assessmentmodel/dutyclass.go | 2 + .../router/systemadmin/dutyassess.go | 2 + ...ca1b48ca640bbd5232e4a81_20220407115300.jpg | Bin 0 -> 16841 bytes ...ca1b48ca640bbd5232e4a81_20220412084422.jpg | Bin 0 -> 16841 bytes .../其他支持文件/config_2022.04.05.yaml | 313 ++++++++++++++++++ 16 files changed, 535 insertions(+), 12 deletions(-) create mode 100644 gin_server_admin/uploads/file/004bac1e7ca1b48ca640bbd5232e4a81_20220407115300.jpg create mode 100644 gin_server_admin/uploads/file/004bac1e7ca1b48ca640bbd5232e4a81_20220412084422.jpg create mode 100644 gin_server_admin/其他支持文件/config_2022.04.05.yaml diff --git a/gin_server_admin/api/admin/dutyassess/assesstype.go b/gin_server_admin/api/admin/dutyassess/assesstype.go index a8fe438..2d468f9 100644 --- a/gin_server_admin/api/admin/dutyassess/assesstype.go +++ b/gin_server_admin/api/admin/dutyassess/assesstype.go @@ -168,6 +168,7 @@ type QualEvalArrt struct { Icon string `json:"icon"` Number string `json:"number"` DepartmentMap []string `json:"departmentmap"` + Operator []string `json:"operator"` //操作人 } //输出定性考核列表 @@ -456,3 +457,20 @@ type EitrDepartExplan struct { QualEvalId string `json:"qualevalid"` Content string `json:"content"` //指标说明 } + +//获取 +type LookTargetContListSun struct { + LookTargetContList + SunTargetId string `json:"suntargetid"` //子栏目 +} + +// +type EiteTargetContListSun struct { + Id string `json:"id"` + Name string `json:"name"` + Group string `json:"group"` //集团 + Dimension string `json:"dimension"` //维度 + TargetId string `json:"targetid"` //指标ID + DepartmentMap []string `json:"departmentmap"` + Operator []string `json:"operator"` //操作人 +} diff --git a/gin_server_admin/api/admin/dutyassess/dutyhandle.go b/gin_server_admin/api/admin/dutyassess/dutyhandle.go index 02c87ca..2b7183f 100644 --- a/gin_server_admin/api/admin/dutyassess/dutyhandle.go +++ b/gin_server_admin/api/admin/dutyassess/dutyhandle.go @@ -409,20 +409,70 @@ func NewEiteData(getData GetEiteTargetCont, oldData assessmentmodel.QualitativeE //修改子栏目名称 func (d *DutyAssessApi) EiteSunTargetName(c *gin.Context) { - var requestData QualEvalArrt + var requestData EiteTargetContListSun err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "数据获取失败!", c) return } if requestData.Id == "" { - response.Result(102, err, "参数错误!请重新提交!", c) + response.Result(102, requestData, "参数错误!请重新提交!", c) return } if requestData.Name == "" { response.Result(103, err, "参数错误!请重新提交!", c) return } + if requestData.Group == "" { + response.Result(104, err, "参数错误!无法获取数据", c) + return + } + if requestData.Dimension == "" { + response.Result(105, err, "参数错误!无法获取数据", c) + return + } + if requestData.TargetId == "" { + response.Result(106, err, "参数错误!无法获取数据", c) + return + } + if len(requestData.Operator) < 1 { + response.Result(107, err, "没有执行人!", c) + return + } + + var assCont assessmentmodel.Assesstarget + assErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ? AND `suntargetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId, requestData.Id).First(&assCont).Error + + if assErr != nil { + response.Result(104, err, "没有该数据!", c) + return + } + + var userMap []DutyAssEssTarget + + jsonErr := json.Unmarshal([]byte(assCont.Content), &userMap) + var detaTargetid []int64 + if jsonErr == nil { + var saveUserAry []DutyAssEssTarget + for _, um_v := range userMap { + var saveUserCont DutyAssEssTarget + saveUserCont.Id = um_v.Id + saveUserCont.Operator = requestData.Operator + saveUserAry = append(saveUserAry, saveUserCont) + detaTargetid = append(detaTargetid, um_v.Id) + } + if len(saveUserAry) > 0 { + eiteAssCont := commonus.MapOut() + eiteAssCont["time"] = time.Now().Unix() + eiteUserJson, _ := json.Marshal(saveUserAry) + eiteAssCont["content"] = string(eiteUserJson) + global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`at_id` = ?", assCont.Id).Updates(eiteAssCont) + } + // if len(detaTargetid) > 0{ + // global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Where("`dt_id` IN ?", detaTargetid).Updates(eiteAssCont) + // } + } + var oldId int64 errCont := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Select("q_id").Where("`q_id` = ?", requestData.Id).First(&oldId).Error if errCont != nil { @@ -1313,8 +1363,10 @@ func GetTargetGroup(group, dimensionId, departID string) (contAry []DepartTarget var rationId []int64 gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Select("et_id").Where("`et_type` = 2 AND `et_state` = 1 AND `et_dimension` = ?", dimensionId) if departID != "" { - sqlOrStr := fmt.Sprintf("FIND_IN_SET(%v,`et_relevant_departments`)", departID) - sqlOrStr = fmt.Sprintf("`et_share` = 1 OR (`et_share` = 2 AND (%v))", sqlOrStr) + // sqlOrStr := fmt.Sprintf("FIND_IN_SET(%v,`et_relevant_departments`)", departID) + // sqlOrStr = fmt.Sprintf("`et_share` = 1 OR (`et_share` = 2 AND (%v))", sqlOrStr) + + sqlOrStr := fmt.Sprintf("`et_relevant_departments` = '' OR FIND_IN_SET(%v,`et_relevant_departments`)", departID) gormDb = gormDb.Where(sqlOrStr) } listErr := gormDb.Find(&rationId).Error @@ -1648,3 +1700,71 @@ func (d *DutyAssessApi) NewAddDepartDuty(c *gin.Context) { } response.Result(0, saveDataAry, "数据添加成功", c) } + +//获取考核方法要修改的数据 +func (d *DutyAssessApi) GetEiteSunTarterInfo(c *gin.Context) { + var requestData LookTargetContListSun + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Group == "" { + response.Result(102, err, "参数错误!无法获取数据", c) + return + } + if requestData.Dimension == "" { + response.Result(103, err, "参数错误!无法获取数据", c) + return + } + if requestData.TargetId == "" { + response.Result(104, err, "参数错误!无法获取数据", c) + return + } + // var assessInfoList assessmentmodel.Assesstarget + var userStr string + assErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Select("content").Where("`group` = ? AND `dimension` = ? AND `targetid` = ? AND `suntargetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId, requestData.SunTargetId).First(&userStr).Error + if assErr != nil { + response.Result(105, assErr, "没有获取到数据!", c) + return + } + var userMap []DutyAssEssTarget + + jsonErr := json.Unmarshal([]byte(userStr), &userMap) + if jsonErr != nil { + response.Result(104, jsonErr, "没有数据", c) + return + } + var userAry []string + for _, v := range userMap { + for _, o_v := range v.Operator { + if commonus.IsItTrueString(o_v, userAry) == false { + userAry = append(userAry, o_v) + } + } + } + response.Result(0, userAry, "没有数据", c) +} + +//修改考核方法指标审核人 +func (d *DutyAssessApi) EiteSunTarterInfoUser(c *gin.Context) { + var requestData EiteTargetContListSun + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Group == "" { + response.Result(102, err, "参数错误!无法获取数据", c) + return + } + if requestData.Dimension == "" { + response.Result(103, err, "参数错误!无法获取数据", c) + return + } + if requestData.TargetId == "" { + response.Result(104, err, "参数错误!无法获取数据", c) + return + } + // if +} diff --git a/gin_server_admin/api/index/evaluation/assessment.go b/gin_server_admin/api/index/evaluation/assessment.go index b399d48..6ee4f20 100644 --- a/gin_server_admin/api/index/evaluation/assessment.go +++ b/gin_server_admin/api/index/evaluation/assessment.go @@ -79,6 +79,9 @@ func (e *EvaluationInterface) NewGetQualDetailedTarget(c *gin.Context) { var qualEvaList []NewQualDetailOutList gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id,qe_group,qe_accept_evaluation,qe_dimension,qe_target,et_title,qe_detailed_target,dt_title,qe_target_sun").Joins("left join evaluationtarget on evaluationtarget.et_id = qualitative_evaluation.qe_target").Joins("left join detailed_target on detailed_target.dt_id = qualitative_evaluation.qe_detailed_target").Where("`qe_type` = 1 AND `qe_state` = 1 AND FIND_IN_SET(?,`qe_operator`)", userCont.Key) gormDb = gormDb.Where("`qe_group` = ?", requestData.Group).Where("`qe_accept_evaluation` = ?", requestData.Department).Where("`qe_target` = ?", requestData.Target) + if requestData.Title != "" { + gormDb = gormDb.Where("`dt_title` LIKE ?", "%"+requestData.Title+"%") + } errList := gormDb.Order("qe_group ASC,qe_accept_evaluation ASC,qe_dimension ASC,qe_target ASC,qe_detailed_target ASC").Find(&qualEvaList).Error if errList != nil || len(qualEvaList) < 1 { response.Result(102, isTrue, "您没有要参加的考核项目!", c) diff --git a/gin_server_admin/api/index/evaluation/type.go b/gin_server_admin/api/index/evaluation/type.go index 30d5e86..44eb42e 100644 --- a/gin_server_admin/api/index/evaluation/type.go +++ b/gin_server_admin/api/index/evaluation/type.go @@ -264,6 +264,7 @@ type NewQualDetailTar struct { Group string `json:"group"` //集团 Department string `json:"department"` //部门 Target string `json:"targets"` //指标id + Title string `json:"title"` } //新型定性考核细则列表输出 diff --git a/gin_server_admin/api/v1/assessment/dutytype.go b/gin_server_admin/api/v1/assessment/dutytype.go index 8e74d30..fcef0ae 100644 --- a/gin_server_admin/api/v1/assessment/dutytype.go +++ b/gin_server_admin/api/v1/assessment/dutytype.go @@ -765,4 +765,5 @@ type CycleAddedType struct { Id int64 `json:"id"` Zeroprize int64 `json:"zeroprize"` //零奖值"` Allprize int64 `json:"allprize"` //全奖值"` + Capping int64 `json:"capping"` //封顶值"` } diff --git a/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go b/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go index 33d0494..ce95ca6 100644 --- a/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go +++ b/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go @@ -114,6 +114,13 @@ func (d *DutyHandle) SetEvaluationObjectives(c *gin.Context) { saveDataCont.Allprize = v.Allprize * 100 } } + if v.Capping > 0 { + saveDataCont.Capping = 1 + saveDataCont.CappingVal = v.Capping * 100 + } else { + saveDataCont.Capping = 2 + saveDataCont.CappingVal = 0 + } saveDataCont.Time = time.Now().Unix() saveDataCont.State = 1 saveData = append(saveData, saveDataCont) @@ -157,6 +164,13 @@ func (d *DutyHandle) SetEvaluationObjectives(c *gin.Context) { saveDataCont.Allprize = v.Allprize * 100 } } + if v.Capping > 0 { + saveDataCont.Capping = 1 + saveDataCont.CappingVal = v.Capping * 100 + } else { + saveDataCont.Capping = 2 + saveDataCont.CappingVal = 0 + } saveDataCont.Time = time.Now().Unix() saveDataCont.State = 1 saveData = append(saveData, saveDataCont) @@ -201,6 +215,13 @@ func (d *DutyHandle) SetEvaluationObjectives(c *gin.Context) { saveDataCont.Allprize = v.Allprize * 100 } } + if v.Capping > 0 { + saveDataCont.Capping = 1 + saveDataCont.CappingVal = v.Capping * 100 + } else { + saveDataCont.Capping = 2 + saveDataCont.CappingVal = 0 + } saveDataCont.Time = time.Now().Unix() saveDataCont.State = 1 saveData = append(saveData, saveDataCont) @@ -226,6 +247,14 @@ func (d *DutyHandle) SetEvaluationObjectives(c *gin.Context) { eiteDataMap["allprize"] = v.Allprize * 100 } } + if v.Capping > 0 { + + eiteDataMap["capping"] = 1 + eiteDataMap["capping_val"] = v.Capping * 100 + } else { + eiteDataMap["capping"] = 2 + eiteDataMap["capping_val"] = 0 + } eiteDataMap["time"] = time.Now().Unix() gromDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QuantitativeConfig{}).Select("Timecopy").Where("`group` = ? AND `departmentid` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `type` = ?", requestData.Group, requestData.DepartMent, requestData.Dimension, requestData.Target, requestData.Year, requestData.Cycle) if requestData.TargetDetails != "" { diff --git a/gin_server_admin/api/v1/custom/customhandle.go b/gin_server_admin/api/v1/custom/customhandle.go index 5384d65..0c55672 100644 --- a/gin_server_admin/api/v1/custom/customhandle.go +++ b/gin_server_admin/api/v1/custom/customhandle.go @@ -60,7 +60,7 @@ func (cu *CustomHandle) CustomLogin(c *gin.Context) { saveData["userinfo"] = user redisClient := redishandel.RunRedis() - redisClient.SetRedisTime(10800) + redisClient.SetRedisTime(86400) // redisClient.SetRedisTime(60) writeRedisData := map[string]interface{}{ "userkey": user.KeyStr, @@ -136,7 +136,7 @@ func (cu *CustomHandle) SystemLogin(c *gin.Context) { saveData["userinfo"] = user redisClient := redishandel.RunRedis() - redisClient.SetRedisTime(10800) + redisClient.SetRedisTime(86400) writeRedisData := map[string]interface{}{ "userkey": user.KeyStr, "usernumber": user.Name, @@ -316,7 +316,7 @@ func (cu *CustomHandle) SingleSignOn(c *gin.Context) { "userpwd": userConting.Password, "usertoken": sha1Token, } - redisClient.SetRedisTime(10800) + redisClient.SetRedisTime(86400) redisKey := fmt.Sprintf("system:Identification_%v_%v", global.GVA_CONFIG.RedisPrefix.Alias, userInfo.Key) redisClient.HashMsetAdd(redisKey, writeRedisData) diff --git a/gin_server_admin/api/wechatapp/callback/apphandle.go b/gin_server_admin/api/wechatapp/callback/apphandle.go index ed3f060..2051887 100644 --- a/gin_server_admin/api/wechatapp/callback/apphandle.go +++ b/gin_server_admin/api/wechatapp/callback/apphandle.go @@ -138,6 +138,7 @@ func (c *CallBackData) DecryptMessage(cs *gin.Context) (echoMsg string) { // return default: } + // fmt.Printf("yyyyyyyy------------->%v\n", 123456) go func() { var callbackLog wechatcallback.CallbackLog diff --git a/gin_server_admin/api/wechatapp/callback/updatehandle.go b/gin_server_admin/api/wechatapp/callback/updatehandle.go index 119b7c9..53a21bf 100644 --- a/gin_server_admin/api/wechatapp/callback/updatehandle.go +++ b/gin_server_admin/api/wechatapp/callback/updatehandle.go @@ -383,6 +383,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt //责任部门审批(部门负责人) orderIdInt, _ := strconv.ParseInt(orderId, 10, 64) //流程Key commonus.StepAddData(orderIdInt, 16182159043990656, 7, 7, 1, 2, 6, strconv.FormatInt(userContInfo.Key, 10)) + sendButtonIsTrue, sendButtonList := commonus.GetSendMsgUserAry(16182159043990656, userContInfo.DepartmentId) //获取发起人部门负责人 if sendButtonIsTrue == true { buttonClickNAmeOtherEs := fmt.Sprintf("%v%v", userContInfo.Name, "已批准") @@ -462,6 +463,9 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt case 7: //发起人验收 + orderIdInt, _ := strconv.ParseInt(orderId, 10, 64) //流程Key + commonus.StepAddData(orderIdInt, 0, 0, 1, 1, 2, 7, strconv.FormatInt(userContInfo.Key, 10)) + fmt.Printf("执行第七步操作--------------->%v\n", userContInfo.Key) //1、修改审批流 scoreFlowMap := commonus.MapOut() scoreFlowMap["sf_reply"] = 3 @@ -490,7 +494,6 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt sendUserAry = append(sendUserAry, dutyOff_v) } } - commonus.StepAddData(scoreFlowInfo.Id, 0, 0, 1, 1, 2, 7, strconv.FormatInt(userContInfo.Key, 10)) //步骤内容写入 diff --git a/gin_server_admin/commonus/publichaneld.go b/gin_server_admin/commonus/publichaneld.go index ffb6179..249e3b3 100644 --- a/gin_server_admin/commonus/publichaneld.go +++ b/gin_server_admin/commonus/publichaneld.go @@ -1027,6 +1027,21 @@ func GetQualitativeTargetInfo(id int64) (content assessmentmodel.QualitativeTarg func GetDetailedTargetInfo(id int64) (content assessmentmodel.DetailedTarget, isTrue bool) { isTrue = false err := global.GVA_DB_Performanceappraisal.Where("dt_id = ?", id).First(&content).Error + + if err == nil { + isTrue = true + } + return +} + +//获取考核指标细则 +func GetDetailedTargetInfoTitle(id int64, title string) (content assessmentmodel.DetailedTarget, isTrue bool) { + isTrue = false + gormDb := global.GVA_DB_Performanceappraisal + if title != "" { + gormDb = gormDb.Where("dt_title LIKE ?", title) + } + err := gormDb.Where("dt_id = ?", id).First(&content).Error if err == nil { isTrue = true } @@ -1497,6 +1512,20 @@ func StepAddData(flowID, roleGroupId int64, nextStep, stepName, typeclass, state saveData["ep_state"] = state saveData["ep_next_cont"] = InsetFlowLog(state, stepInt, userKey, evalProCont.NextContent) fmt.Printf("Flow---Map:--->%v\n", saveData) + + caozuoMap := MapOut() + caozuoMap["flowID"] = flowID + caozuoMap["roleGroupId"] = roleGroupId + caozuoMap["nextStep"] = nextStep + caozuoMap["stepName"] = stepName + caozuoMap["typeclass"] = typeclass + caozuoMap["state"] = state + caozuoMap["stepInt"] = stepInt + caozuoMap["userKey"] = userKey + caozuoMap["NextContent"] = evalProCont.NextContent + mapJson, _ := json.Marshal(caozuoMap) + fmt.Printf("Flow---Map:--Out---->%v\n", string(mapJson)) + // flowID, roleGroupId int64, nextStep, stepName, typeclass, state, stepInt int, userKey string EiteDutiesInfoes(evalProCont.Id, saveData) } } @@ -1955,11 +1984,12 @@ func GetSetpName(setId int) (setpName string) { case 4: setpName = "整改措施" case 5: - setpName = "验收" + setpName = "整改验收" case 6: setpName = "抄送" case 7: - setpName = "部门负责人" + // setpName = "部门负责人" + setpName = "审核确认" default: setpName = "创建申请" } diff --git a/gin_server_admin/middleware/myjwt.go b/gin_server_admin/middleware/myjwt.go index 007c539..c130d4a 100644 --- a/gin_server_admin/middleware/myjwt.go +++ b/gin_server_admin/middleware/myjwt.go @@ -60,7 +60,7 @@ func MyAuthentication() gin.HandlerFunc { return } } - redisClient.SetRedisTime(10800) + redisClient.SetRedisTime(86400) // redisClient.SetRedisTime(60) writeRedisData := map[string]interface{}{ "userkey": myCustomIdentify.UserKey, @@ -148,7 +148,7 @@ func SystemAuthentication() gin.HandlerFunc { return } } - redisClient.SetRedisTime(10800) + redisClient.SetRedisTime(86400) writeRedisData := map[string]interface{}{ "userkey": myCustomIdentify.UserKey, "usernumber": myCustomIdentify.UserNumber, diff --git a/gin_server_admin/model/assessmentmodel/dutyclass.go b/gin_server_admin/model/assessmentmodel/dutyclass.go index 8768fea..c9904f2 100644 --- a/gin_server_admin/model/assessmentmodel/dutyclass.go +++ b/gin_server_admin/model/assessmentmodel/dutyclass.go @@ -361,6 +361,8 @@ type QuantitativeConfig struct { Allprize int64 `json:"allprize" gorm:"column:allprize;type:int(7) unsigned;default:0;not null;comment:全奖值"` Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` State int `json:"state" gorm:"column:state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` + Capping int `json:"capping" gorm:"column:capping;type:int(1) unsigned;default:2;not null;comment:是否封顶(1、是;2:否)"` + CappingVal int64 `json:"cappingval" gorm:"column:capping_val;type:bigint(20) unsigned;default:0;not null;comment:封顶值"` } func (QuantitativeConfig *QuantitativeConfig) TableName() string { diff --git a/gin_server_admin/router/systemadmin/dutyassess.go b/gin_server_admin/router/systemadmin/dutyassess.go index c208291..21a1497 100644 --- a/gin_server_admin/router/systemadmin/dutyassess.go +++ b/gin_server_admin/router/systemadmin/dutyassess.go @@ -48,6 +48,8 @@ func (a *AdminRouter) InitStaffRouter(Router *gin.RouterGroup) { adminRouter.POST("onoffdepartdutyversio", authorityApi.OnOffDepartDutyVersio) //启用禁用删除(待版本号的版本) adminRouter.POST("eitedepartexplain", authorityApi.EiteDepartExplain) //修改部门考核方案内的说明(待版本号的版本) + adminRouter.POST("geteitesuntarterinfo", authorityApi.GetEiteSunTarterInfo) //获取考核方法要修改的数据 + } } diff --git a/gin_server_admin/uploads/file/004bac1e7ca1b48ca640bbd5232e4a81_20220407115300.jpg b/gin_server_admin/uploads/file/004bac1e7ca1b48ca640bbd5232e4a81_20220407115300.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f2f14bba737145fc22ec1739abddd6a025f8548 GIT binary patch literal 16841 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 HAfEpP>00Z< literal 0 HcmV?d00001 diff --git a/gin_server_admin/uploads/file/004bac1e7ca1b48ca640bbd5232e4a81_20220412084422.jpg b/gin_server_admin/uploads/file/004bac1e7ca1b48ca640bbd5232e4a81_20220412084422.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f2f14bba737145fc22ec1739abddd6a025f8548 GIT binary patch literal 16841 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 HAfEpP>00Z< literal 0 HcmV?d00001 diff --git a/gin_server_admin/其他支持文件/config_2022.04.05.yaml b/gin_server_admin/其他支持文件/config_2022.04.05.yaml new file mode 100644 index 0000000..68b3bb0 --- /dev/null +++ b/gin_server_admin/其他支持文件/config_2022.04.05.yaml @@ -0,0 +1,313 @@ +aliyun-oss: + endpoint: yourEndpoint + access-key-id: yourAccessKeyId + access-key-secret: yourAccessKeySecret + bucket-name: yourBucketName + bucket-url: yourBucketUrl + base-path: yourBasePath +autocode: + transfer-restart: true + root: l:\任官钰\代码\gin-vue-admin-master\gin-vue-admin-master + server: /server + server-api: /api/v1/autocode + server-initialize: /initialize + server-model: /model/autocode + server-request: /model/autocode/request/ + server-router: /router/autocode + server-service: /service/autocode + web: /web/src + web-api: /api + web-form: /view + web-table: /view +captcha: + key-long: 6 + img-width: 240 + img-height: 80 +casbin: + model-path: ./resource/rbac_model.conf +email: + to: xxx@qq.com + port: 465 + from: xxx@163.com + host: smtp.163.com + is-ssl: true + secret: xxx + nickname: test +excel: + dir: ./resource/excel/ +jwt: + buffer-time: 86400 + expires-time: 604800 + issuer: qmPlus + signing-key: a77a9442-4c2b-466b-a650-9495e04d285c +local: + path: uploads/file +mysql: + path: 127.0.0.1:3306 + config: charset=utf8mb4&parseTime=True&loc=Local + db-name: gva + username: gva + password: "YNsk3zbP4sTASmzJ" + max-idle-conns: 0 + max-open-conns: 0 + log-mode: "" + log-zap: false +qiniu: + zone: ZoneHuaDong + bucket: "" + img-path: "" + use-https: false + access-key: "" + secret-key: "" + use-cdn-domains: false +redis: + db: 0 + addr: 127.0.0.1:6379 + password: "" +rediswechat: + db: 1 + addr: 127.0.0.1:6379 + password: "" +rediswechat2: + db: 2 + addr: 127.0.0.1:6379 + password: "" +redisprefix: + prefix: "HXGK_GO_ZhixingCollege" + alias: "dev" + +system: + env: public + addr: 8888 + db-type: mysql + oss-type: local + use-multipoint: true + iplimit-count: 15000 + iplimit-time: 3600 +tencent-cos: + bucket: xxxxx-10005608 + region: ap-shanghai + secret-id: xxxxxxxx + secret-key: xxxxxxxx + base-url: https://gin.vue.admin + path-prefix: github.com/flipped-aurora/gin-vue-admin/server +timer: + start: true + spec: '@daily' + detail: + - tableName: sys_operation_records + compareField: created_at + interval: 2160h + - tableName: jwt_blacklists + compareField: created_at + interval: 168h +zap: + level: info + format: console + prefix: '[github.com/flipped-aurora/gin-vue-admin/server]' + director: log + showLine: true + encode-level: LowercaseColorLevelEncoder + stacktrace-key: stacktrace + log-in-console: true + + +# mysql connect configuration +# 其他数据库配置 +#app主数据库 +mysqlMaster: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'hengxingaoke_tes' + username: 'hengxingaoke_tes' + password: 'JsTt6iTpkZ85wDnF' + max-idle-conns: 10 + max-open-conns: 100 + log-mode: false + log-zap: "" + +#文档属性数据库 +mysqlBookDate: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'learnmessage' + username: 'learnmessage' + password: 'JyppSdcLT27f7dpB' + max-idle-conns: 10 + max-open-conns: 100 + log-mode: false + log-zap: "" + +#微信员工信息表 +mysqlWatchDate: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'wechatuser' + username: 'wechatuser' + password: '8jrFG2AzpJPxs88m' + max-idle-conns: 10 + max-open-conns: 100 + log-mode: false + log-zap: "" + +#错题库 +mysqlErrorSubjectDate: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'errorsubject' + username: 'errorsubject' + password: 'abRcXzraCMFYC4Me' + max-idle-conns: 10 + max-open-conns: 100 + log-mode: false + log-zap: "" + +#自我测验 +mysqlMyTestDate: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'selftestdatabase' + username: 'selftestdatabase' + password: 'mXDWEBJCd5acnCjD' + max-idle-conns: 10 + max-open-conns: 100 + log-mode: false + log-zap: "" + +#图文信息数据库 +mysqlBooImgkDate: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'readdocument' + username: 'readdocument' + password: 'CY2yanCmAP8p8bxj' + max-idle-conns: 10 + max-open-conns: 100 + log-mode: false + log-zap: "" + +#计分明细数据库 +mysqlIntegralDate: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'leaguetabledata' + username: 'leaguetabledata' + password: 'PxeX8Dnw88G4Jpnr' + max-idle-conns: 10 + max-open-conns: 100 + log-mode: false + log-zap: "" + +#趣味问答 +mysqlQADate: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'ques_and_answers' + username: 'ques_and_answers' + password: 'CT7XGBrAwdnXkTNX' + max-idle-conns: 10 + max-open-conns: 100 + log-mode: false + log-zap: "" + +#风云榜统计数据库 +mysqlBillboardDate: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'statisticsing' + username: 'statisticsing' + password: '4iMZNtMT8fk8imEb' + max-idle-conns: 10 + max-open-conns: 100 + log-mode: false + log-zap: "" + +#健康上报数据库 +mysqlHealthReportDate: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'location' + username: 'location' + password: 'XreBJrkYh7K3jfbm' + max-idle-conns: 10 + max-open-conns: 100 + log-mode: false + log-zap: "" + + #审批流程数据库 +mysqlApprovalProcess: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'workflow' + username: 'workflow' + password: 'kSwXD3LBsnJ8dsz4' + max-idle-conns: 100 + max-open-conns: 1500 + log-mode: false + log-zap: "" + + #绩效考核数据库 +mysqlPerformanceappraisal: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'perform' + username: 'perform' + password: 'amtzSrN5WnMsS4hb' + max-idle-conns: 100 + max-open-conns: 1500 + log-mode: false + log-zap: "" + #企业微信回调记录 +mysqlWechatCallBack: + path: '127.0.0.1:3306' + config: 'charset=utf8mb4&parseTime=True&loc=Local' + db-name: 'wechatlog' + username: 'wechatlog' + password: 'j7Hs8Tb6SkZzy2ee' + max-idle-conns: 100 + max-open-conns: 1500 + log-mode: false + log-zap: "" + + + +#企业微信相关设置 +workwechatid: + companyid: 'ww02f310301953277a' #企业ID + + +workwechatschool: #知行学院 + agentid: 1000008 + secretstr: 'YJOHrmHtvevAdctg-06TMLnPokIaLHdfrQMyQolZQC8' + #知行学院API接收消息 + wechattokening: 'kkUA3s2s3' #Token + encodingaeskey: 'ZI29of85mTgQPik8LLjDnYKlAECDbI23Pq886VJ9Azf' #EncodingAESKey + +workwechatappmaillist: #通讯录 + secretstr: 'yjcQXkh6_116QKjfZfbRSyzdrFFZ9jbVlKJtL2tn3OU' + +healthreport: #健康上报 + secretstr: 'smjpGmFo5wp18BZGiLaECFr84Blv429v_GFdKp4_0YQ' + +#测试企业 +workwechatids: + companyid: 'ww708746402de33ba7' #企业ID + + +workwechatschools: #测试 + agentid: 1000021 + secretstr: 'rbqos2un6vVY5k_c2aOFK6HUuONeJsiBqwRZXTDVBKU' + #知行学院API接收消息 + wechattokening: 'kkUA3s2s3' #Token + encodingaeskey: 'ZI29of85mTgQPik8LLjDnYKlAECDbI23Pq886VJ9Azf' #EncodingAESKey + +workwechatappmaillists: #通讯录 + secretstr: 'TSSsJXiqh3RKl0NYIoB-sPc43MUIRJ1ppALWtzyLY94' + +healthreports: #健康上报 + secretstr: 'smjpGmFo5wp18BZGiLaECFr84Blv429v_GFdKp4_0YQ' + +privateConfig: #私人配置 + visit: 'http://docu.hxgk.net/uploadfileing/uploadimging' + # visit: 'http://docs.hxgk.group/uploadfileing/uploadimging' + appKey: 'heng_xin_gao_ke_AppKey' \ No newline at end of file