蛋蛋星球-客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

hdl_comm.go 4.2 KiB

1 个月前
4 周前
4 周前
1周前
1 个月前
4 周前
1 个月前
1 个月前
4 周前
1 个月前
4 周前
1 个月前
3 周前
1 个月前
4 周前
1周前
1 个月前
4 周前
1 个月前
4 周前
1 个月前
4 周前
1 个月前
4 周前
1 个月前
4 周前
1 个月前
4 周前
3 周前
4 周前
1 个月前
4 周前
4 周前
4 周前
4 周前
1周前
1周前
1周前
1周前
1周前
1周前
4 周前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package comm
  2. import (
  3. "applet/app/db"
  4. "applet/app/e"
  5. "applet/app/md"
  6. "applet/app/md/comm"
  7. "applet/app/svc"
  8. "applet/app/svc/sys_cfg"
  9. "applet/app/utils/cache"
  10. "code.fnuoos.com/EggPlanet/egg_models.git/src/implement"
  11. "code.fnuoos.com/EggPlanet/egg_models.git/src/model"
  12. enum2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/enum"
  13. "fmt"
  14. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  15. "github.com/gin-gonic/gin"
  16. "time"
  17. )
  18. // GetOssUrl
  19. // @Summary 通用请求-对象存储-上传许可链接(获取)
  20. // @Tags 对象存储
  21. // @Description 上传许可链接(获取)
  22. // @Accept json
  23. // @Produce json
  24. // @param Authorization header string true "验证参数Bearer和token空格拼接"
  25. // @Param req body comm.ImgReqUploadReq true "签名上传url"
  26. // @Success 200 {string} "许可链接"
  27. // @Failure 400 {object} md.Response "具体错误"
  28. // @Router /api/v1/comm/getOssUrl [POST]
  29. func GetOssUrl(c *gin.Context) {
  30. var args comm.ImgReqUploadReq
  31. err := c.ShouldBindJSON(&args)
  32. if err != nil {
  33. err = svc.HandleValidateErr(err)
  34. err1 := err.(e.E)
  35. e.OutErr(c, err1.Code, err1.Error())
  36. return
  37. }
  38. sysCfgDb := sys_cfg.NewSysCfgDb(db.Db)
  39. sysCfgs, err := sysCfgDb.SysCfgGetAll()
  40. if err != nil {
  41. e.OutErr(c, e.ERR_DB_ORM, err.Error())
  42. return
  43. }
  44. if sysCfgs == nil {
  45. e.OutErr(c, e.ERR_CFG_CACHE, nil)
  46. return
  47. }
  48. cfgMap := make(map[string]string, len(*sysCfgs))
  49. for _, cfg := range *sysCfgs {
  50. cfgMap[cfg.Key] = cfg.Val
  51. }
  52. endpoint := cfgMap[enum2.AliyunOssEndpoint]
  53. bucketName := cfgMap[enum2.AliyunOssBucketName]
  54. ossBucketScheme := cfgMap[enum2.AliyunOssBucketScheme]
  55. accessKeyID := cfgMap[enum2.AliyunOssAccessKeyID]
  56. accessKeySecret := cfgMap[enum2.AliyunOssAccessKeySecret]
  57. // 创建OSSClient实例。
  58. client, err := oss.New(ossBucketScheme+"://"+endpoint, accessKeyID, accessKeySecret)
  59. if err != nil {
  60. e.OutErr(c, e.ERR, err.Error())
  61. return
  62. }
  63. // 获取存储空间。
  64. bucket, err := client.Bucket(bucketName)
  65. if err != nil {
  66. e.OutErr(c, e.ERR, err.Error())
  67. return
  68. }
  69. options := []oss.Option{
  70. oss.ContentType(args.ContentType),
  71. }
  72. signedURL, err := bucket.SignURL(args.FileName, oss.HTTPPut, 60*5, options...)
  73. if err != nil {
  74. e.OutErr(c, e.ERR_AES_ENCODE, err.Error())
  75. return
  76. }
  77. e.OutSuc(c, signedURL, nil)
  78. }
  79. // AccessRecords
  80. // @Summary 通用请求-访问记录-页面记录
  81. // @Tags 访问记录
  82. // @Description 页面记录
  83. // @Accept json
  84. // @Produce json
  85. // @param Authorization header string true "验证参数Bearer和token空格拼接"
  86. // @Param req body comm.AccessRecordsReq true "页面标识"
  87. // @Success 200 {string} "success"
  88. // @Success 200 {string} "data exist"
  89. // @Failure 400 {object} md.Response "具体错误"
  90. // @Router /api/v1/comm/accessRecords [POST]
  91. func AccessRecords(c *gin.Context) {
  92. var req *comm.AccessRecordsReq
  93. if err1 := c.ShouldBindJSON(&req); err1 != nil {
  94. e.OutErr(c, e.ERR_INVALID_ARGS, err1.Error())
  95. return
  96. }
  97. user := svc.GetUser(c)
  98. date := time.Now().Format("2006-01-02")
  99. cacheKey := fmt.Sprintf(md.UserAccessRecordsKey, date, req.Index)
  100. if !cache.Exists(cacheKey) {
  101. ttl := 24 * 60 * 60 // 记录保存24小时
  102. _, err := cache.SetEx(cacheKey, nil, ttl)
  103. if err != nil {
  104. e.OutErr(c, e.ERR, err.Error())
  105. return
  106. }
  107. }
  108. get, err1 := cache.GetBit(cacheKey, user.Id)
  109. if err1 != nil || get == 0 {
  110. // 更新页面记录
  111. recordsDb := implement.NewEggAccessRecordsDb(db.Db)
  112. exist, err := recordsDb.EggAccessRecordsExist(user.Id, date, req.Index)
  113. if err != nil {
  114. e.OutErr(c, e.ERR_DB_ORM, nil)
  115. }
  116. if !exist {
  117. m := model.EggAccessRecords{
  118. Uid: user.Id,
  119. PageIndex: req.Index,
  120. Date: date,
  121. }
  122. _, err = recordsDb.EggAccessRecordsInsert(&m)
  123. if err != nil {
  124. e.OutErr(c, e.ERR_DB_ORM, nil)
  125. return
  126. }
  127. }
  128. _, err = cache.SetBit(cacheKey, user.Id, 1)
  129. if err != nil {
  130. e.OutErr(c, e.ERR, err.Error())
  131. return
  132. }
  133. // 更新浏览记录总表
  134. year, week := time.Now().ISOWeek()
  135. totalDb := implement.NewEggAccessTotalDb(db.Db)
  136. _, err = totalDb.EggAccessTotalAddOrDefault(user.Id, year, week)
  137. if err != nil {
  138. e.OutErr(c, e.ERR_DB_ORM, err.Error())
  139. return
  140. }
  141. }
  142. e.OutSuc(c, "success", nil)
  143. }