浏览代码

json字段空值不隐藏

kobe6258 7 月之前
父节点
当前提交
4201b29244

+ 29 - 0
domian/config/permission_service.go

@@ -0,0 +1,29 @@
+package config
+
+import (
+	permissionDao "eta/eta_mini_ht_api/models/config"
+)
+
+type PermissionDTO struct {
+	PermissionId   int    `json:"permissionId"`
+	PermissionName string `json:"permissionName"`
+	ParentId       int    `json:"parentId"`
+	Sort           int    `json:"sort"`
+}
+
+func SyncPermission(list []PermissionDTO) (err error) {
+	var permissionList []permissionDao.Permission
+	for _, dto := range list {
+		permission := convert(dto)
+		permissionList = append(permissionList, permission)
+	}
+	return permissionDao.BatchInsertOrUpdate(permissionList)
+}
+func convert(dto PermissionDTO) permissionDao.Permission {
+	return permissionDao.Permission{
+		PermissionId: dto.PermissionId,
+		Name:         dto.PermissionName,
+		ParentId:     dto.ParentId,
+		Sort:         dto.Sort,
+	}
+}

+ 4 - 4
domian/report/report_service.go

@@ -67,10 +67,10 @@ type ReportDTO struct {
 	PublishedTime    string          `json:"publishedTime"`
 	SecondPermission map[int]string  `json:"-"`
 	Permissions      map[int]string  `json:"-"`
-	PermissionNames  interface{}     `json:"permissionNames,omitempty"`
-	Highlight        []string        `json:"highlight,omitempty"`
-	Detail           json.RawMessage `json:"detail,omitempty"`
-	PdfUrl           string          `json:"pdfUrl,omitempty"`
+	PermissionNames  interface{}     `json:"permissionNames"`
+	Highlight        []string        `json:"highlight"`
+	Detail           json.RawMessage `json:"detail"`
+	PdfUrl           string          `json:"pdfUrl"`
 	CoverSrc         int             `json:"coverSrc"`
 	CoverUrl         string          `json:"coverUrl"`
 	Login            bool            `json:"login"`

+ 2 - 2
middleware/auth_middleware.go

@@ -130,7 +130,7 @@ func AuthMiddleware() web.FilterFunc {
 				}
 			}
 			//详情信息需要登录token才能看到全部
-			if detail(path) {
+			if loginForDetail(path) {
 				if info.TokenType != jwt.AccessToken || info.Mobile == "-" || info.Mobile == "" {
 					ctx.Input.SetData("detailType", "logout")
 				} else {
@@ -200,7 +200,7 @@ func allowed(path string) bool {
 	return false
 }
 
-func detail(path string) bool {
+func loginForDetail(path string) bool {
 	for _, p := range detailRoutes {
 		if stringUtils.IsBlank(p) {
 			continue

+ 38 - 0
models/config/permission.go

@@ -0,0 +1,38 @@
+package config
+
+import (
+	"eta/eta_mini_ht_api/models"
+	"gorm.io/gorm"
+	"gorm.io/gorm/clause"
+	"time"
+)
+
+// Permission 定义权限表的结构
+type Permission struct {
+	Id           int       `gorm:"primaryKey;autoIncrement"`
+	PermissionId int       `gorm:"type:int"`
+	Name         string    `gorm:"type:varchar(255)"`
+	ParentId     int       `gorm:"default:null"`
+	RiskLevel    string    `gorm:"type:varchar(10)"`
+	Sort         int       `gorm:"default:null"`
+	CreateTime   time.Time `gorm:"default:null"`
+	UpdateTime   time.Time `gorm:"default:null;onUpdate:CURRENT_TIMESTAMP"`
+}
+
+// BeforeCreate 钩子用于在创建记录前设置 CreateTime
+func (p *Permission) BeforeCreate(tx *gorm.DB) (err error) {
+	p.CreateTime = time.Now()
+	return
+}
+
+func BatchInsertOrUpdate(list []Permission) (err error) {
+	db := models.Main()
+	OnConflictFunc := clause.OnConflict{
+		Columns:   []clause.Column{{Name: "permission_id"}},
+		DoUpdates: clause.AssignmentColumns([]string{"name", "status", "deleted"}),
+	}
+
+	// 执行批量插入或更新操作
+	err = db.Clauses(OnConflictFunc).Create(&list).Error
+	return
+}

+ 11 - 0
models/eta/eta_permission.go

@@ -7,6 +7,7 @@ import (
 
 const (
 	Columns                 = "chart_permission_id,permission_name,parent_id"
+	SyncColumns             = "chart_permission_id,permission_name,parent_id,sort"
 	FirstPermissionsColumns = "DISTINCT parent_id"
 )
 
@@ -15,6 +16,7 @@ type ChartPermission struct {
 	ChartPermissionID int    `gorm:"primaryKey;autoIncrement;column:chart_permission_id;comment:主键"`
 	PermissionName    string `gorm:"size:50;default:'';column:permission_name;comment:权限名"`
 	ParentID          int    `gorm:"size:11;default:0;column:parent_id;comment:父级权限id"`
+	Sort              int    `gorm:"default:null"`
 }
 
 // TableName sets the insert table name for this struct type
@@ -30,6 +32,15 @@ func GetChartPermissionList() (chartPermissionList []ChartPermission, err error)
 	}
 	return
 }
+
+func GetSyncPermissionList() (chartPermissionList []ChartPermission, err error) {
+	db := models.ETA()
+	err = db.Select(SyncColumns).Find(&chartPermissionList).Error
+	if err == nil && chartPermissionList == nil {
+		chartPermissionList = []ChartPermission{}
+	}
+	return
+}
 func GetPermissionNamesByClassifyID(ids []int) (chartPermissionNames []string, err error) {
 	sql := "select chart_permission_id, permission_name from chart_permission WHERE chart_permission_id in ?"
 	err = doSql(sql, &chartPermissionNames, ids)

+ 59 - 0
task/eta/permission/eta_permission_task.go

@@ -0,0 +1,59 @@
+package permission
+
+import (
+	"encoding/json"
+	logger "eta/eta_mini_ht_api/common/component/log"
+	"eta/eta_mini_ht_api/common/contants"
+	configService "eta/eta_mini_ht_api/domian/config"
+	"eta/eta_mini_ht_api/models/eta"
+	"eta/eta_mini_ht_api/task/base"
+)
+
+var (
+	taskName base.TaskType = "ETAPermissionSyncTask"
+	cron                   = "0/60 * * * * *"
+)
+
+// Execute Task ETA取研报的数据
+func (pr *PermissionTask) Execute(taskDetail *base.TaskDetail) error {
+	logger.Info(contants.TaskFormat, "同步ETA品种开始")
+	permissionList, err := eta.GetSyncPermissionList()
+	if err != nil {
+		logger.Error("获取ETA品种列表失败:%v", err)
+		return err
+	}
+	if len(permissionList) > 0 {
+		var list []byte
+		list, err = json.Marshal(permissionList)
+		if err == nil {
+			taskDetail.Content = string(list)
+		}
+		var permissionDTOList []configService.PermissionDTO
+		for _, permisson := range permissionList {
+			permissionDTOList = append(permissionDTOList, convert(permisson))
+		}
+		err = configService.SyncPermission(permissionDTOList)
+		if err != nil {
+			logger.Error("同步ETA研报列表失败:%v", err)
+			return err
+		}
+	}
+	logger.Info(contants.TaskFormat, "同步ETA作者结束")
+	return nil
+}
+
+type PermissionTask struct {
+}
+
+func convert(permission eta.ChartPermission) configService.PermissionDTO {
+	return configService.PermissionDTO{
+		PermissionId:   permission.ChartPermissionID,
+		PermissionName: permission.PermissionName,
+		ParentId:       permission.ParentID,
+		Sort:           permission.Sort,
+	}
+}
+func init() {
+	permissionTask := base.NewTask(taskName, cron, new(PermissionTask), base.PROD)
+	base.RegisterTask(&permissionTask)
+}