|
@@ -58,10 +58,18 @@ type DeleteChartReq struct {
|
|
|
|
|
|
// UploadChart 上传图表接口
|
|
|
func UploadChart(chartInfoId int, description string, uploaderInfo *system.Admin) (err error, errMsg string) {
|
|
|
+ // 设置缓存 防止重复上传
|
|
|
+ cacheKey := "eta_forum_task:UploadChart:" + strconv.Itoa(chartInfoId)
|
|
|
+ if utils.Rc.Get(cacheKey) != nil {
|
|
|
+ err = fmt.Errorf("系统处理中,请稍后重试!")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ utils.Rc.SetNX(cacheKey, 1, 30*time.Second)
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
|
go alarm_msg.SendAlarmMsg(fmt.Sprintf("上传图表至社区失败:Err:%v,ErrMsg:%s", err, errMsg), 3)
|
|
|
}
|
|
|
+ utils.Rc.Delete(cacheKey)
|
|
|
}()
|
|
|
// 查询图表信息
|
|
|
chartInfo, err := data_manage.GetChartInfoById(chartInfoId)
|
|
@@ -176,10 +184,18 @@ func UploadChart(chartInfoId int, description string, uploaderInfo *system.Admin
|
|
|
|
|
|
// UpdateChart 更新社区里的图表接口
|
|
|
func UpdateChart(chartInfoId int) (err error, errMsg string) {
|
|
|
+ // 设置缓存 防止重复更新
|
|
|
+ cacheKey := "eta_forum_task:UpdateChart:" + strconv.Itoa(chartInfoId)
|
|
|
+ if utils.Rc.Get(cacheKey) != nil {
|
|
|
+ err = fmt.Errorf("系统处理中,请稍后重试!")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ utils.Rc.SetNX(cacheKey, 1, 30*time.Second)
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
|
go alarm_msg.SendAlarmMsg(fmt.Sprintf("同步图表信息至社区失败:Err:%v,ErrMsg:%s", err, errMsg), 3)
|
|
|
}
|
|
|
+ utils.Rc.Delete(cacheKey)
|
|
|
}()
|
|
|
// 查询图表信息
|
|
|
chartInfo, err := data_manage.GetChartInfoById(chartInfoId)
|
|
@@ -399,6 +415,19 @@ func traceEdbInfoByEdbInfoId(edbInfoId int, hasFindMap map[int]struct{}, edbInfo
|
|
|
|
|
|
// DeleteChart 上传图表接口
|
|
|
func DeleteChart(chartInfoId int) (err error, errMsg string) {
|
|
|
+ // 设置缓存 防止重复撤回
|
|
|
+ cacheKey := "eta_forum_task:DeleteChart:" + strconv.Itoa(chartInfoId)
|
|
|
+ if utils.Rc.Get(cacheKey) != nil {
|
|
|
+ err = fmt.Errorf("系统处理中,请稍后重试!")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ utils.Rc.SetNX(cacheKey, 1, 30*time.Second)
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go alarm_msg.SendAlarmMsg(fmt.Sprintf("撤回图表失败:%v,ErrMsg:%s", err, errMsg), 3)
|
|
|
+ }
|
|
|
+ utils.Rc.Delete(cacheKey)
|
|
|
+ }()
|
|
|
// 查询图表信息
|
|
|
chartInfo, err := data_manage.GetChartInfoById(chartInfoId)
|
|
|
if err != nil {
|
|
@@ -601,14 +630,14 @@ func ChartThemeTypeSave(theme *chart_theme.ChartThemeType) (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// ChartBatchUpdate 批量更新图表信息
|
|
|
-func ChartBatchUpdate(chartClassifyId int) (err error) {
|
|
|
+// ChartBatchUpdate 批量上传和更新图表信息
|
|
|
+func ChartBatchUpdateAndUpload(chartClassifyInfo *data_manage.ChartClassify, sysUser *system.Admin) (err error) {
|
|
|
if utils.BusinessCode == "" || (utils.BusinessCode != utils.BusinessCodeRelease && utils.BusinessCode != utils.BusinessCodeDebug && utils.BusinessCode != utils.BusinessCodeSandbox) {
|
|
|
return
|
|
|
}
|
|
|
var tmpErr []error
|
|
|
deleteCache := true
|
|
|
- cacheKey := "eta_forum_task:EtaForumChartUpdateByClassifyId:" + strconv.Itoa(chartClassifyId)
|
|
|
+ cacheKey := "eta_forum_task:EtaForumChartUpdateByClassifyId:" + strconv.Itoa(chartClassifyInfo.ChartClassifyId)
|
|
|
defer func() {
|
|
|
if deleteCache {
|
|
|
_ = utils.Rc.Delete(cacheKey)
|
|
@@ -632,20 +661,18 @@ func ChartBatchUpdate(chartClassifyId int) (err error) {
|
|
|
err = fmt.Errorf("系统处理中,请稍后重试!")
|
|
|
return
|
|
|
}
|
|
|
- // 获取当前分类以及子分类下的所有图表ID
|
|
|
- chartClassifyInfo, err := data_manage.GetChartClassifyById(chartClassifyId)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
chartClassifyInfoList, err := data_manage.GetChartClassifyByLevelPath(chartClassifyInfo.LevelPath)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
chartClassifyIdList := make([]string, 0)
|
|
|
+ upChartClassifyIdList := make([]string, 0)
|
|
|
for _, v := range chartClassifyInfoList {
|
|
|
chartClassifyIdList = append(chartClassifyIdList, strconv.Itoa(v.ChartClassifyId))
|
|
|
+ if v.ResourceStatus == utils.ChartClassifyResourceStatusUp {
|
|
|
+ upChartClassifyIdList = append(upChartClassifyIdList, strconv.Itoa(v.ChartClassifyId))
|
|
|
+ }
|
|
|
}
|
|
|
- // 设置缓存判断处理中则不更新
|
|
|
condition := " and forum_chart_info_id > 0 and source=1 and chart_classify_id in ?"
|
|
|
// 查询需要更新的图表信息总数
|
|
|
total, err := data_manage.GetChartInfoCountByCondition(condition, []interface{}{chartClassifyIdList})
|
|
@@ -683,89 +710,32 @@ func ChartBatchUpdate(chartClassifyId int) (err error) {
|
|
|
offset = (i + 1) * pageSize
|
|
|
}
|
|
|
fmt.Println("更新图表数据完成, 更新图表数据总数:", success)
|
|
|
- return
|
|
|
-}
|
|
|
|
|
|
-// 批量上传图表分类信息
|
|
|
-func ChartInfoSaveBatch(chartClassifyInfo *data_manage.ChartClassify, sysUser *system.Admin) (err error) {
|
|
|
- if utils.BusinessCode == "" || (utils.BusinessCode != utils.BusinessCodeRelease && utils.BusinessCode != utils.BusinessCodeDebug && utils.BusinessCode != utils.BusinessCodeSandbox) {
|
|
|
- return
|
|
|
- }
|
|
|
- var tmpErr []error
|
|
|
- deleteCache := true
|
|
|
- cacheKey := "eta_forum_task:ChartInfoSaveBatch:" + strconv.Itoa(chartClassifyInfo.ChartClassifyId)
|
|
|
- defer func() {
|
|
|
- if deleteCache {
|
|
|
- _ = utils.Rc.Delete(cacheKey)
|
|
|
- }
|
|
|
- stack := ""
|
|
|
- if err != nil {
|
|
|
- stack = fmt.Sprintln(stack + err.Error())
|
|
|
- }
|
|
|
- if len(tmpErr) > 0 {
|
|
|
- for _, v := range tmpErr {
|
|
|
- stack = fmt.Sprintln(stack + v.Error())
|
|
|
- }
|
|
|
- }
|
|
|
- if stack != "" {
|
|
|
- utils.FileLog.Error("批量上传资源库图表信息失败"+"<br/>"+stack)
|
|
|
- go alarm_msg.SendAlarmMsg("批量上传资源库图表信息失败"+"<br/>"+stack, 3)
|
|
|
- }
|
|
|
- }()
|
|
|
- if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
|
|
|
- deleteCache = false
|
|
|
- err = fmt.Errorf("系统处理中,请稍后重试!")
|
|
|
- return
|
|
|
- }
|
|
|
- classifyCondition := " AND source=? and is_selected=1 and resource_status=1 and level_path like '" + chartClassifyInfo.LevelPath + "%'"
|
|
|
- var classifyPars []interface{}
|
|
|
- classifyPars = append(classifyPars, chartClassifyInfo.Source)
|
|
|
- classifyList, err := data_manage.GetChartClassifyListByCondition(classifyCondition, classifyPars)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- chartClassifyIdList := make([]string, 0)
|
|
|
- for _, v := range classifyList {
|
|
|
- chartClassifyIdList = append(chartClassifyIdList, strconv.Itoa(v.ChartClassifyId))
|
|
|
- }
|
|
|
- // 批量上传图表信息
|
|
|
- condition := " and source=1 and chart_classify_id in ?"
|
|
|
- // 查询需要更新的图表信息总数
|
|
|
- total, err := data_manage.GetChartInfoCountByCondition(condition, []interface{}{chartClassifyIdList})
|
|
|
+ // 批量上传已经上架的分类下的图表到资源库中
|
|
|
+ // 查询需要新增的图表ID
|
|
|
+ condition = " and source=1 and forum_chart_info_id=0 and chart_classify_id in ?"
|
|
|
+ total, err = data_manage.GetChartInfoCountByCondition(condition, []interface{}{upChartClassifyIdList})
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
if total == 0 {
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- // 批量上传图表信息
|
|
|
- offset := 0
|
|
|
- pageSize := 100
|
|
|
- success := 0
|
|
|
-
|
|
|
- // 循环更新100个图表数据
|
|
|
+ offset = 0
|
|
|
+ pageSize = 100
|
|
|
+ success = 0
|
|
|
for i := 0; offset < total; i++ {
|
|
|
- // 查询需要更新的图表信息
|
|
|
- chartInfos, e := data_manage.GetChartInfoListByCondition(condition, []interface{}{chartClassifyIdList}, offset, pageSize)
|
|
|
+ chartInfos, e := data_manage.GetChartInfoListByCondition(condition, []interface{}{upChartClassifyIdList}, offset, pageSize)
|
|
|
if e != nil {
|
|
|
- err = fmt.Errorf("查询需要更新的图表信息失败: %v", e)
|
|
|
+ err = fmt.Errorf("查询需要新增的图表信息失败: %v", e)
|
|
|
return
|
|
|
}
|
|
|
// 循环更新图表数据
|
|
|
for _, chartInfo := range chartInfos {
|
|
|
- var er error
|
|
|
- var msg string
|
|
|
- if chartInfo.ForumChartInfoId == 0 {
|
|
|
- // 更新图表数据
|
|
|
- er, msg = UploadChart(chartInfo.ChartInfoId, "", sysUser)
|
|
|
- }else if chartInfo.ForumChartInfoId > 0 {
|
|
|
- // 更新图表数据
|
|
|
- er, msg = UpdateChart(chartInfo.ChartInfoId)
|
|
|
- }
|
|
|
-
|
|
|
+ // 更新图表数据
|
|
|
+ er, msg := UploadChart(chartInfo.ChartInfoId, "", sysUser)
|
|
|
if er != nil {
|
|
|
- er = fmt.Errorf("图表ID %d, 更新图表数据失败: %s, %v", chartInfo.ChartInfoId, msg, er)
|
|
|
+ er = fmt.Errorf("图表ID %d, 上传图表数据失败: %s, %v", chartInfo.ChartInfoId, msg, er)
|
|
|
tmpErr = append(tmpErr, er)
|
|
|
continue
|
|
|
}
|
|
@@ -774,7 +744,7 @@ func ChartInfoSaveBatch(chartClassifyInfo *data_manage.ChartClassify, sysUser *s
|
|
|
|
|
|
offset = (i + 1) * pageSize
|
|
|
}
|
|
|
- fmt.Println("更新图表数据完成, 更新图表数据总数:", success)
|
|
|
+ fmt.Println("批量上传已经上架的分类下的图表到资源库中完成, 新增图表数据总数:", success)
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -879,7 +849,7 @@ func SetChartClassifyResourceStatusUp(chartClassifyInfo *data_manage.ChartClassi
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- go ChartInfoSaveBatch(chartClassifyInfo, sysUser)
|
|
|
+ go ChartBatchUpdateAndUpload(chartClassifyInfo, sysUser)
|
|
|
|
|
|
return
|
|
|
}
|