master
kgdxpr 4 years ago
parent 88d4e9de35
commit 5367a813e4

@ -2,13 +2,10 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="0d4ad043-ffc9-484f-90ab-0d2e603f76d4" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/Business/MinIORelate/MinIORelateController/MinIORelateController.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../dsBigData/go.mod" beforeDir="false" afterPath="$PROJECT_DIR$/../dsBigData/go.mod" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../dsBigData/go.sum" beforeDir="false" afterPath="$PROJECT_DIR$/../dsBigData/go.sum" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Business/FileUpLoad/FileUpLoadController/FileUpLoadController.go" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Business/MinIORelate/MinIORelateController/MinIORelateController.go" beforeDir="false" afterPath="$PROJECT_DIR$/Business/MinIORelate/MinIORelateController/MinIORelateController.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Config/Config.ini" beforeDir="false" afterPath="$PROJECT_DIR$/Config/Config.ini" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Router/CommonToolsRouter.go" beforeDir="false" afterPath="$PROJECT_DIR$/Router/CommonToolsRouter.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Utils/CommonUtil/CommonUtil.go" beforeDir="false" afterPath="$PROJECT_DIR$/Utils/CommonUtil/CommonUtil.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Utils/ConfigUtil/ConfigUtil.go" beforeDir="false" afterPath="$PROJECT_DIR$/Utils/ConfigUtil/ConfigUtil.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/go.mod" beforeDir="false" afterPath="$PROJECT_DIR$/go.mod" afterDir="false" />
<change beforePath="$PROJECT_DIR$/go.sum" beforeDir="false" afterPath="$PROJECT_DIR$/go.sum" afterDir="false" />

@ -1,11 +1,13 @@
package MinIORelateController
import (
"dsCommonTools/Business/MinIORelate/MinIORelateDao"
"dsCommonTools/Utils/CommonUtil"
"dsCommonTools/Utils/ConfigUtil"
"dsCommonTools/Utils/MinioUtil"
"dsCommonTools/Utils/ObsUtil"
"dsCommonTools/Utils/ObsUtil/obs"
"dsCommonTools/Utils/RedisUtil"
"fmt"
"github.com/gin-gonic/gin"
"github.com/minio/minio-go/v6"
@ -21,19 +23,93 @@ func Routers(r *gin.RouterGroup) {
rr.GET("/getPostPolicyInfo", getPostPolicyInfo)
rr.GET("/GeneratePreviewUrl", GeneratePreviewUrl)
rr.GET("/SaveFileInfo", SaveFileInfo)
return
}
/**
2021-07-06
*/
func SaveFileInfo(c *gin.Context) {
id := c.Query("id")
if id == "" {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "文件id参数不允许为空"})
return
}
systemId := c.Query("systemid")
if systemId == "" {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "系统ID不允许为空"})
return
}
redisFileMap := RedisUtil.HMGETALL("file_" + id)
if len(redisFileMap) == 0 {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "文件id不存在"})
return
}
fileKey := redisFileMap["key"]
fileOriginName := redisFileMap["origin_name"]
fileUrlPrefix := redisFileMap["url"]
fileBucket := redisFileMap["bucket"]
minioClient, err := MinioUtil.GetMinioClient()
if err != nil {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "minio无法连接"})
return
}
//获取文件信息
objInfo, objErr := minioClient.StatObject(fileBucket, fileKey, minio.StatObjectOptions{})
if objErr != nil {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "在存储中未找到文件!"})
return
}
fileSize := CommonUtil.ConvertInt64ToString(objInfo.Size)
fileMd5 := objInfo.ETag
fileMap := make(map[string]string)
fileMap["id"] = id
fileMap["origin_name"] = fileOriginName
fileMap["storage_key"] = fileKey
fileMap["storage_bucket"] = fileBucket
fileMap["storage_url_prefix"] = fileUrlPrefix
fileMap["file_size"] = fileSize
fileMap["file_md5"] = fileMd5
fileMap["system_id"] = systemId
insertErr := MinIORelateDao.InsertFileInfo(fileMap)
if insertErr != nil {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "写入数据库失败!"})
return
}
//删除redis中的信息
RedisUtil.DEL("file_" + id)
c.JSON(http.StatusOK, gin.H{"success": true, "info": "成功!"})
}
/**
2021-07-05
*/
func GeneratePreviewUrl(c *gin.Context) {
key := c.Query("key")
if key == "" {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "key参数不允许为空"})
id := c.Query("id")
if id == "" {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "id参数不允许为空"})
return
}
key, err := MinIORelateDao.GetFileKey(id)
if err != nil {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "获取存储中的key异常" + err.Error()})
return
}
@ -85,12 +161,13 @@ func GeneratePreviewUrl(c *gin.Context) {
2021-07-05
*/
func getPostPolicyInfo(c *gin.Context) {
filename := c.Query("filename")
if filename == "" {
fileName := c.Query("filename")
if fileName == "" {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "文件名称不允许为空!"})
return
}
extension := path.Ext(filename)
extension := path.Ext(fileName)
minioClient, err := MinioUtil.GetMinioClient()
if err != nil {
@ -99,12 +176,12 @@ func getPostPolicyInfo(c *gin.Context) {
}
//生成一个文件名
objectKey := CommonUtil.GetUUID()
id := CommonUtil.GetUUID()
policy := minio.NewPostPolicy()
//Bucket名称
policy.SetBucket(ConfigUtil.MinioBucket)
policy.SetKey(objectKey[0:2] + "/" + objectKey + extension)
policy.SetKey(id[0:2] + "/" + id + extension)
//1天有效期
policy.SetExpires(time.Now().UTC().AddDate(0, 0, 1))
url, formData, err := minioClient.PresignedPostPolicy(policy)
@ -117,6 +194,13 @@ func getPostPolicyInfo(c *gin.Context) {
policyMap[strings.Replace(k, "-", "_", -1)] = v
}
policyMap["url"] = fmt.Sprintf("%s", url)
policyMap["id"] = id
policyMap["origin_name"] = fileName
//将生产的签名存入redis中以备后用
RedisUtil.HMSET("file_"+id, policyMap)
//设置redis中的KEY有效期为1个小时
RedisUtil.EXPIRE("file_"+id, 3600)
policyMap["success"] = true
c.JSON(http.StatusOK, policyMap)

@ -0,0 +1,28 @@
package MinIORelateDao
import (
"dsCommonTools/Utils/DbUtil"
)
var db = DbUtil.Engine
func TestSqlJson() (string, error) {
sql := "select * from t_complaint_info"
results, err := db.SQL(sql).Query().Json()
return results, err
}
func InsertFileInfo(fileMap map[string]string) error {
sql := "insert into t_base_file (id, origin_name, storage_key, storage_bucket, storage_url_prefix, file_size, file_md5, system_id)" +
" values (?,?,?,?,?,?,?,?)"
_, err := db.Exec(sql, fileMap["id"], fileMap["origin_name"], fileMap["storage_key"], fileMap["storage_bucket"], fileMap["storage_url_prefix"], fileMap["file_size"], fileMap["file_md5"], fileMap["system_id"])
return err
}
func GetFileKey(id string) (string, error) {
sql := "select storage_key from t_base_file where id=?"
var key string
_, err := db.SQL(sql, id).Get(&key)
return key, err
}

@ -22,6 +22,11 @@ db_name = base_db_dev
user = root
pwd = DsideaL147258369
[redis]
ip = 10.10.14.175
port = 18890
db = 0
#minio配置
[minio]
minio_endpoint = 10.10.14.231:9000

@ -7,6 +7,7 @@ import (
"fmt"
uuid "github.com/satori/go.uuid"
"os"
"strconv"
"strings"
)
@ -61,3 +62,15 @@ func JsonStringToMap(jsonStr string) (map[string]string, error) {
}
return m, nil
}
//将字符串转为int32整数
func ConvertStringToInt32(s string) int32 {
i, _ := strconv.Atoi(s)
return int32(i)
}
//将整数64转为字符串
func ConvertInt64ToString(i int64) string {
s := strconv.FormatInt(i, 10)
return s
}

@ -28,6 +28,11 @@ var (
MysqlUser string
MysqlPwd string
//REDIS配置
RedisIp string
RedisPort string
RedisDb string
//minio
MinioEndPoint string
MinioAccessKeyId string
@ -96,6 +101,11 @@ func init() {
MysqlUser = iniParser.GetString("mysql", "user")
MysqlPwd = iniParser.GetString("mysql", "pwd")
//读取redis配置
RedisIp = iniParser.GetString("redis", "ip")
RedisPort = iniParser.GetString("redis", "port")
RedisDb = iniParser.GetString("redis", "db")
//minio
MinioEndPoint = iniParser.GetString("minio", "minio_endpoint")
MinioAccessKeyId = iniParser.GetString("minio", "minio_accessKeyId")

@ -0,0 +1,49 @@
package RedisUtil
import (
"dsCommonTools/Utils/ConfigUtil"
"github.com/go-redis/redis"
"time"
)
var (
RedisClient *redis.Client
RedisHost string
RedisDb int
)
func init() {
// 从配置文件获取redis的ip以及db
RedisHost = ConfigUtil.RedisIp + ":" + ConfigUtil.RedisPort
RedisClient = redis.NewClient(&redis.Options{
Addr: RedisHost,
DB: 0, // use default DB
})
}
func SET(key string, value string, expiration time.Duration) {
RedisClient.Set(key, value, expiration*time.Second)
}
func GET(key string) (string, error) {
val, err := RedisClient.Get(key).Result()
return val, err
}
func EXPIRE(key string, expiration time.Duration) {
RedisClient.Expire(key, expiration*time.Second)
}
func DEL(key string) {
RedisClient.Del(key)
}
func HMSET(key string, fields map[string]interface{}) {
RedisClient.HMSet(key, fields)
}
func HMGETALL(key string) map[string]string {
resMap, _ := RedisClient.HGetAll(key).Result()
return resMap
}

@ -12,6 +12,7 @@ require (
github.com/fatih/structs v1.1.0 // indirect
github.com/fsnotify/fsnotify v1.4.9 // indirect
github.com/gin-gonic/gin v1.7.2 // indirect
github.com/go-redis/redis v6.15.9+incompatible // indirect
github.com/go-sql-driver/mysql v1.6.0 // indirect
github.com/minio/minio-go/v6 v6.0.57 // indirect
github.com/satori/go.uuid v1.2.0 // indirect

@ -30,6 +30,8 @@ github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD87
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg=
github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=

Loading…
Cancel
Save