Browse Source

增加配置

kobe6258 3 months ago
parent
commit
15affec175

+ 2 - 0
common/contants/sys_config_enum.go

@@ -15,6 +15,7 @@ const (
 	HTCPELoginUrl = "HtCpeLoginUrl"
 	authToken     = "int"
 	byte          = "byte"
+	ShowMediaView = "ShowMediaView"
 )
 
 // SysConfigMap 用于存储错误码和错误信息的映射
@@ -22,6 +23,7 @@ var SysConfigMap = map[string]*Config{
 	HTCPELoginUrl: {ConfigId: 1000, ConfigType: ConfigTypeStr},
 	authToken:     {ConfigId: 1001, ConfigType: ConfigTypeInt},
 	byte:          {ConfigId: 1002, ConfigType: ConfigTypeByte},
+	ShowMediaView: {ConfigId: 1003, ConfigType: ConfigTypeInt},
 }
 
 func GetConfig(code string) *Config {

+ 12 - 0
common/exception/exc_enums.go

@@ -163,6 +163,13 @@ const (
 	RefundDealFail
 )
 
+const (
+	BookMarkErrCode int = iota + 120000 // iota 自动递增,从 1 开始
+	IllegalSourceType
+	IllegalSourceId
+	BookMarkFailed
+)
+
 // ErrorMap 用于存储错误码和错误信息的映射
 var ErrorMap = map[int]string{
 	SysError:              "系统异常",
@@ -273,6 +280,11 @@ var ErrorMap = map[int]string{
 	PaymentProcessingError:   "支付订单处理中",
 	PaymentDoneError:         "订单已完成支付",
 	RefundDealFail:           "处理退款应答失败",
+
+	//收藏
+	IllegalSourceType: "非法的资源类型",
+	IllegalSourceId:   "非法的资源ID",
+	BookMarkFailed:    "收藏失败",
 }
 
 func Equals(code int, message string) bool {

+ 132 - 0
controllers/user/bookmark_controller.go

@@ -0,0 +1,132 @@
+package user
+
+import (
+	"eta/eta_mini_ht_api/common/component/cache"
+	"eta/eta_mini_ht_api/common/exception"
+	"eta/eta_mini_ht_api/controllers"
+	"eta/eta_mini_ht_api/service/user"
+	userService "eta/eta_mini_ht_api/service/user"
+)
+
+// BookMarkController Operations about bookmark
+type BookMarkController struct {
+	controllers.BaseController
+	redis *cache.RedisCache
+}
+
+func (u *BookMarkController) Prepare() {
+	u.redis = cache.GetInstance()
+}
+
+type BookMarkReq struct {
+	SourceType  string `json:"sourceType"`
+	SourceId    int    `json:"sourceId"`
+	ChartImage  string `json:"chartImage"`
+	ChartInfoId int    `json:"chartInfoId"`
+	ChartName   string `json:"chartName"`
+}
+
+// BookMark  收藏
+// @Summary 收藏
+// @Description 收藏
+// @Success 200 {object} controllers.BaseResponse
+// @router /bookMark [post]
+func (u *BookMarkController) BookMark() {
+	controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
+		result = u.InitWrapData("收藏失败")
+		bookMark := new(BookMarkReq)
+		u.GetPostParams(bookMark)
+		var userInfo user.User
+		userInfo = u.Data["user"].(user.User)
+		if bookMark.SourceType == "" {
+			u.FailedResult("收藏失败", result)
+			err = exception.New(exception.IllegalSourceType)
+			return
+		}
+		if bookMark.SourceId == 0 {
+			u.FailedResult("收藏失败", result)
+			err = exception.New(exception.IllegalSourceId)
+			return
+		}
+		err = userService.BookMark(userInfo.Id, bookMark.SourceId, bookMark.SourceType)
+		if err != nil {
+			err = exception.NewWithException(exception.FeedBackError, err.Error())
+			u.FailedResult("收藏失败", result)
+			return
+		}
+		u.SuccessResult("收藏成功", nil, result)
+		return
+	})
+}
+
+// UnBookMark  取消收藏
+// @Summary 取消收藏
+// @Description 取消收藏
+// @Success 200 {object} controllers.BaseResponse
+// @router /unBookMark [post]
+func (u *BookMarkController) UnBookMark() {
+	controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
+		result = u.InitWrapData("取消收藏失败")
+		bookMark := new(BookMarkReq)
+		u.GetPostParams(bookMark)
+		var userInfo user.User
+		userInfo = u.Data["user"].(user.User)
+		if bookMark.SourceType == "" {
+			u.FailedResult("取消收藏失败", result)
+			err = exception.New(exception.IllegalSourceType)
+			return
+		}
+		if bookMark.SourceId == 0 {
+			u.FailedResult("取消收藏失败", result)
+			err = exception.New(exception.IllegalSourceId)
+			return
+		}
+		err = userService.UnBookMark(userInfo.Id, bookMark.SourceId, bookMark.SourceType)
+		if err != nil {
+			err = exception.NewWithException(exception.FeedBackError, err.Error())
+			u.FailedResult("取消收藏失败", result)
+			return
+		}
+		u.SuccessResult("收藏成功", nil, result)
+		return
+	})
+}
+
+type CheckBookMarkResp struct {
+	IsBookMarked bool `json:"isBookMarked"`
+}
+
+// CheckBookMark  取消收藏
+// @Summary 取消收藏
+// @Description 取消收藏
+// @Success 200 {object} controllers.BaseResponse
+// @router /checkBookMark [post]
+func (u *BookMarkController) CheckBookMark() {
+	controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
+		result = u.InitWrapData("取消收藏失败")
+		bookMark := new(BookMarkReq)
+		u.GetPostParams(bookMark)
+		var userInfo user.User
+		userInfo = u.Data["user"].(user.User)
+		if bookMark.SourceType == "" {
+			u.FailedResult("获取是否收藏失败", result)
+			err = exception.New(exception.IllegalSourceType)
+			return
+		}
+		if bookMark.SourceId == 0 {
+			u.FailedResult("获取是否收藏失败", result)
+			err = exception.New(exception.IllegalSourceId)
+			return
+		}
+		isBookMarked, err := userService.CheckBookMarkStatus(userInfo.Id, bookMark.SourceId, bookMark.SourceType)
+		if err != nil {
+			err = exception.NewWithException(exception.FeedBackError, err.Error())
+			u.FailedResult("获取是否收藏失败", result)
+			return
+		}
+		u.SuccessResult("获取是否收藏成功", &CheckBookMarkResp{
+			IsBookMarked: isBookMarked,
+		}, result)
+		return
+	})
+}

+ 55 - 0
domian/user/bookmark_service.go

@@ -0,0 +1,55 @@
+package user
+
+import (
+	"errors"
+	logger "eta/eta_mini_ht_api/common/component/log"
+	userDao "eta/eta_mini_ht_api/models/user"
+	"gorm.io/gorm"
+)
+
+var (
+	sourceTransMap = map[string]userDao.SourceType{
+		"chart":  userDao.Chart,
+		"report": userDao.Report,
+	}
+)
+
+func BookMark(templateUserId int, sourceId int, sourceType string) (err error) {
+	sourceTypeItem := sourceTransMap[sourceType]
+	if sourceTypeItem == "" {
+		logger.Error("非法的资源类型")
+		err = errors.New("非法的资源类型")
+		return
+	}
+	return userDao.BookMark(templateUserId, sourceId, sourceTypeItem)
+}
+
+func UnBookMark(templateUserId int, sourceId int, sourceType string) (err error) {
+	sourceTypeItem := sourceTransMap[sourceType]
+	if sourceTypeItem == "" {
+		logger.Error("非法的资源类型")
+		err = errors.New("非法的资源类型")
+		return
+	}
+	return userDao.UnBookMark(templateUserId, sourceId, sourceTypeItem)
+}
+
+func CheckBookMarkStatus(templateUserId int, sourceId int, sourceType string) (status string, err error) {
+	sourceTypeItem := sourceTransMap[sourceType]
+	if sourceTypeItem == "" {
+		logger.Error("非法的资源类型")
+		err = errors.New("非法的资源类型")
+		return
+	}
+	bookmark, err := userDao.CheckBookMarkStatus(templateUserId, sourceId, sourceTypeItem)
+	if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+		logger.Error("获取用户收藏状态失败:%v", err)
+		return
+	}
+	if errors.Is(err, gorm.ErrRecordNotFound) {
+		status = string(userDao.Unmark)
+		return
+	}
+	status = string(bookmark.Status)
+	return
+}

+ 59 - 0
models/user/user_bookmark.go

@@ -0,0 +1,59 @@
+package user
+
+import (
+	"eta/eta_mini_ht_api/models"
+	"gorm.io/gorm/clause"
+	"time"
+)
+
+type Status string
+type SourceType string
+
+const (
+	Marked Status     = "marked"
+	Unmark Status     = "unmark"
+	Report SourceType = "report"
+	Chart  SourceType = "chart"
+)
+
+type UserBookmark struct {
+	ID          int        `gorm:"primaryKey;column:id;type:int(11);not null;comment:主键"`
+	UserID      int        `gorm:"column:user_id;type:int(11);not null;comment:用户Id"`
+	SourceID    int        `gorm:"column:source_id;type:int(11);not null;comment:资源Id"`
+	SourceType  SourceType `gorm:"column:source_type;type:enum('report','chart');not null;comment:资源类型:report-研报 chart-图表"`
+	Status      Status     `gorm:"column:status;type:enum('marked','unmark');not null;comment:是否收藏 :marked-收藏 ,unmark-取消收藏"`
+	CreatedTime time.Time  `gorm:"column:created_time;type:datetime;comment:创建时间"`
+	UpdatedTime time.Time  `gorm:"column:updated_time;type:datetime;default:null;onUpdate:CURRENT_TIMESTAMP;comment:更新时间"`
+}
+
+func (UserBookmark) TableName() string {
+	return "user_bookmarks"
+}
+
+func BookMark(templateUserId int, sourceId int, sourceType SourceType) (err error) {
+	db := models.Main()
+	OnConflictFunc := clause.OnConflict{
+		Columns:   []clause.Column{{Name: "source_id"}, {Name: "source_type"}},
+		DoUpdates: clause.AssignmentColumns([]string{"status"}),
+	}
+	err = db.Clauses(OnConflictFunc).Create(&UserBookmark{
+		UserID:      templateUserId,
+		SourceID:    sourceId,
+		SourceType:  sourceType,
+		Status:      Marked,
+		CreatedTime: time.Now(),
+	}).Error
+	return
+}
+
+func UnBookMark(templateUserId int, sourceId int, sourceType SourceType) (err error) {
+	db := models.Main()
+	err = db.Model(&UserBookmark{}).Where("user_id = ? AND source_id = ? AND source_type = ?", templateUserId, sourceId, sourceType).Update("status", Unmark).Error
+	return
+}
+
+func CheckBookMarkStatus(templateUserId int, sourceId int, sourceType SourceType) (bookmark UserBookmark, err error) {
+	db := models.Main()
+	err = db.Model(&UserBookmark{}).Select("*").Where("user_id = ? AND source_id = ? AND source_type = ?", templateUserId, sourceId, sourceType).First(&bookmark).Error
+	return
+}

+ 27 - 0
routers/commentsRouter.go

@@ -413,6 +413,33 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:BookMarkController"] = append(beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:BookMarkController"],
+        beego.ControllerComments{
+            Method: "BookMark",
+            Router: `/bookMark`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:BookMarkController"] = append(beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:BookMarkController"],
+        beego.ControllerComments{
+            Method: "CheckBookMark",
+            Router: `/checkBookMark`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:BookMarkController"] = append(beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:BookMarkController"],
+        beego.ControllerComments{
+            Method: "UnBookMark",
+            Router: `/unBookMark`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:UserController"] = append(beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:UserController"],
         beego.ControllerComments{
             Method: "Get",

+ 1 - 0
routers/router.go

@@ -35,6 +35,7 @@ func init() {
 		web.NSNamespace("/user",
 			web.NSInclude(
 				&user.UserController{},
+				&user.BookMarkController{},
 			),
 		),
 		web.NSNamespace("/home",

+ 19 - 0
service/user/user_service.go

@@ -8,6 +8,7 @@ import (
 	analystService "eta/eta_mini_ht_api/domian/financial_analyst"
 	userService "eta/eta_mini_ht_api/domian/user"
 	merchantDao "eta/eta_mini_ht_api/models/merchant"
+	userDao "eta/eta_mini_ht_api/models/user"
 	"eta/eta_mini_ht_api/service/config"
 	"gorm.io/gorm"
 	"sort"
@@ -485,3 +486,21 @@ func GetUserScribeStatus(productId int, templateUserId int) (subscribe string) {
 		return UnSubscribe
 	}
 }
+
+func BookMark(templateUserId int, sourceId int, sourceType string) error {
+	return userService.BookMark(templateUserId, sourceId, sourceType)
+}
+
+func UnBookMark(templateUserId int, sourceId int, sourceType string) error {
+	return userService.UnBookMark(templateUserId, sourceId, sourceType)
+}
+
+func CheckBookMarkStatus(templateUserId int, sourceId int, sourceType string) (isBookMarked bool, err error) {
+	status, err := userService.CheckBookMarkStatus(templateUserId, sourceId, sourceType)
+	if err != nil {
+		logger.Error("获取收藏状态失败:%v", err)
+		return
+	}
+	isBookMarked = status == string(userDao.Marked)
+	return
+}