wangchuanjin 4 hónapja
szülő
commit
0086ab56e9
10 módosított fájl, 147 hozzáadás és 25 törlés
  1. 39 5
      client/client.go
  2. 6 1
      client/client_restful_test.go
  3. 3 2
      client/client_rpc_test.go
  4. 11 3
      config.json
  5. 13 0
      config/config.go
  6. 12 9
      constant/constant.go
  7. 1 0
      main.go
  8. 23 2
      oss/http.go
  9. 17 3
      oss/oss.go
  10. 22 0
      oss/rpc.go

+ 39 - 5
client/client.go

@@ -63,9 +63,7 @@ func UpLoadByRestful(domain, bucketId, objectName string, stream []byte, gzip bo
  * @param domain 域名,例如:https://ossservice.jianyu360.cn
  * @param bucketId 桶id
  * @param objectName 对象名称
- * @param fileBt 文件流
- * @param gzip 是否压缩
- * @return {"error_code":0,"error_msg":"上传成功"}
+ * @return {"error_code":0,"error_msg":"下载成功"}
  */
 func DownloadByRestful(domain, bucketId, objectName string) (reply *api.Result) {
 	reply = &api.Result{}
@@ -77,6 +75,7 @@ func DownloadByRestful(domain, bucketId, objectName string) (reply *api.Result)
 	if respBody, err := post(domain+constant.DownloadUrl, writer, body); err != nil {
 		reply.Error_msg = err.Error()
 	} else {
+		reply.Error_msg = constant.DownloadSuccess
 		reply.Data = respBody
 	}
 	return
@@ -86,8 +85,6 @@ func DownloadByRestful(domain, bucketId, objectName string) (reply *api.Result)
  * @param domain 域名,例如:https://ossservice.jianyu360.cn
  * @param bucketId 桶id
  * @param objectName 对象名称
- * @param fileBt 文件流
- * @param gzip 是否压缩
  * @return {"error_code":0,"error_msg":"上传成功"}
  */
 func DeleteByRestful(domain, bucketId, objectName string) (reply *api.Result) {
@@ -105,6 +102,28 @@ func DeleteByRestful(domain, bucketId, objectName string) (reply *api.Result) {
 	return
 }
 
+/* restful方式获取标讯正文
+ * @param domain 域名,例如:https://ossservice.jianyu360.cn
+ * @param bucketId 桶id
+ * @param objectName 对象名称
+ * @return {"error_code":0,"error_msg":"获取正文成功","data":"正文内容"}
+ */
+func GetBidDetailByRestful(domain, bucketId, objectName string) (reply *api.Result) {
+	reply = &api.Result{}
+	// 创建一个缓冲区来存储表单数据
+	body := &bytes.Buffer{}
+	writer := multipart.NewWriter(body)
+	writer.WriteField("bucket_id", bucketId)
+	writer.WriteField("object_name", objectName)
+	if respBody, err := post(domain+constant.GetBidDetailUrl, writer, body); err != nil {
+		reply.Error_msg = err.Error()
+	} else {
+		reply.Error_msg = constant.GetBidDetailSuccess
+		reply.Data = string(respBody)
+	}
+	return
+}
+
 func post(url string, writer *multipart.Writer, body *bytes.Buffer) ([]byte, error) {
 	// 关闭表单写入器
 	if err := writer.Close(); err != nil {
@@ -183,6 +202,21 @@ func DeleteByRpc(address string, args *entity.Args) (api.Result, error) {
 	err := rpcCall(address, "OSSService.Delete", args, &reply)
 	return reply, err
 }
+
+/*
+ *rpc方式获取标讯正文
+ * @param address 域名,例如:192.168.3.206:8110
+ * @param args 参数
+ * @param args.BucketID 文件名
+ * @param args.objectName 对象名称
+ * @return {"error_code":0,"error_msg":"下载成功","data":"正文内容"}
+ * @return error 错误信息
+ */
+func GetBidDetailByRpc(address string, args *entity.Args) (api.Result, error) {
+	var reply api.Result
+	err := rpcCall(address, "OSSService.GetBidDetail", args, &reply)
+	return reply, err
+}
 func rpcCall(address, serviceMethod string, args any, reply any) error {
 	client, err := rpc.DialHTTP("tcp", address)
 	if err != nil {

+ 6 - 1
client/client_restful_test.go

@@ -17,7 +17,7 @@ func TestUploadFileByRestful(t *testing.T) {
 
 // restful方式上传正文
 func TestUploadTextByRestful(t *testing.T) {
-	b := []byte("这是一段标讯正文")
+	b := []byte(textDetail)
 	t.Log(UpLoadByRestful(restfulAddress, bucketID, txtFileName, b, false))
 }
 
@@ -30,3 +30,8 @@ func TestDownloadTextByRestful(t *testing.T) {
 func TestDeleteByRestful(t *testing.T) {
 	t.Log(DeleteByRestful(restfulAddress, bucketID, txtFileName))
 }
+
+// restful方式获取标讯正文
+func TestGetBidDetailByRestful(t *testing.T) {
+	t.Log(GetBidDetailByRestful(restfulAddress, bucketID, txtFileId))
+}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 3 - 2
client/client_rpc_test.go


+ 11 - 3
config.json

@@ -2,7 +2,7 @@
   "port": ":8011",
   "oss_accounts": [
     {
-      "id": "main",
+      "id": "account_detail",
       "endpoint": "oss-cn-beijing.aliyuncs.com",
       "access_key_id": "LTAI4G5x9aoZx8dDamQ7vfZi",
       "access_key_secret": "Bk98FsbPYXcJe72n1bG3Ssf73acuNh"
@@ -10,8 +10,8 @@
   ],
   "buckets": [
     {
-      "bucket_id": "all",
-      "account_id": "main",
+      "bucket_id": "detail",
+      "account_id": "account_detail",
       "bucket_name": "jytest2022"
     }
   ],
@@ -22,6 +22,14 @@
     "address": "172.20.45.129:1712",
     "password": ""
   },
+  "elasticSearch": {
+    "address": "http://172.20.45.129:9206,http://172.20.45.130:9306",
+    "size": 10,
+    "version": "v7",
+    "userName": "",
+    "password": "",
+    "indexName": "bidding"
+  },
   "email": {
     "mails":[
       {

+ 13 - 0
config/config.go

@@ -2,6 +2,8 @@ package config
 
 import (
 	. "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/es"
+	"app.yhyue.com/moapp/jybase/go-xweb/log"
 	"app.yhyue.com/moapp/jybase/mail"
 	"gopkg.in/natefinch/lumberjack.v2"
 )
@@ -42,6 +44,14 @@ type Config struct {
 		Address  string `json:"address"`
 		Password string `json:"password"`
 	} `json:"redis"`
+	ElasticSearch struct {
+		Address   string `json:"address"`
+		Size      int    `json:"size"`
+		Version   string `json:"version"`
+		UserName  string `json:"userName"`
+		Password  string `json:"password"`
+		IndexName string `json:"indexName"`
+	} `json:"elasticSearch"`
 	Email struct {
 		Mails      []*PushMail `json:"mails"`
 		Title      string      `json:"title"`
@@ -74,4 +84,7 @@ func init() {
 			ReTry:    v.MailReTry,
 		}
 	}
+	log.Println("开始初始化elasticSearch。。。")
+	es.NewEs(AppConfig.ElasticSearch.Version, AppConfig.ElasticSearch.Address, AppConfig.ElasticSearch.Size, AppConfig.ElasticSearch.UserName, AppConfig.ElasticSearch.Password)
+	log.Println("初始化elasticSearch结束。。。")
 }

+ 12 - 9
constant/constant.go

@@ -1,13 +1,16 @@
 package constant
 
 const (
-	UploadUrl       = "/ossservice/upload"
-	DownloadUrl     = "/ossservice/download"
-	DeleteUrl       = "/ossservice/delete"
-	UploadSuccess   = "上传成功"
-	DownloadSuccess = "下载成功"
-	DeleteSuccess   = "删除成功"
-	UploadFail      = "上传失败:%v"
-	DownloadFail    = "下载失败:%v"
-	DeleteFail      = "删除失败:%v"
+	UploadUrl           = "/ossservice/upload"
+	DownloadUrl         = "/ossservice/download"
+	DeleteUrl           = "/ossservice/delete"
+	GetBidDetailUrl     = "/ossservice/biddetail"
+	UploadSuccess       = "上传成功"
+	DownloadSuccess     = "下载成功"
+	DeleteSuccess       = "删除成功"
+	GetBidDetailSuccess = "获取正文成功"
+	UploadFail          = "上传失败:%v"
+	DownloadFail        = "下载失败:%v"
+	DeleteFail          = "删除失败:%v"
+	BidDetailFail       = "获取正文失败:%v"
 )

+ 1 - 0
main.go

@@ -53,6 +53,7 @@ func main() {
 	http.HandleFunc(constant.DownloadUrl, ossService.DownloadHandler)
 	http.HandleFunc(constant.DeleteUrl, ossService.DeleteHandler)
 	http.HandleFunc("/ossservice/nodes", ossService.NodesHandler)
+	http.HandleFunc(constant.GetBidDetailUrl, ossService.BidDetailHandler)
 	log.Println("HTTP server started on " + config.AppConfig.Port)
 	if err := endless.ListenAndServe(config.AppConfig.Port, nil, func() {}); err != nil {
 		log.Fatalln("HTTP server error: %v", err)

+ 23 - 2
oss/http.go

@@ -55,7 +55,7 @@ func UploadHandler(w http.ResponseWriter, r *http.Request) {
 /* restful方式下载
  * @param bucket_id 桶id
  * @param object_name 对象名称
- * @return {"error_code":0,"error_msg":"上传成功"}
+ * @return 文件内容
  */
 func DownloadHandler(w http.ResponseWriter, r *http.Request) {
 	bucketID := r.FormValue("bucket_id")
@@ -81,7 +81,7 @@ func DownloadHandler(w http.ResponseWriter, r *http.Request) {
 /* restful方式删除
  * @param bucket_id 桶id
  * @param object_name 对象名称
- * @return {"error_code":0,"error_msg":"上传成功"}
+ * @return {"error_code":0,"error_msg":"删除成功"}
  */
 func DeleteHandler(w http.ResponseWriter, r *http.Request) {
 	if !api.R.CheckReqParam(w, r, "bucket_id", "object_name") {
@@ -111,3 +111,24 @@ func NodesHandler(w http.ResponseWriter, r *http.Request) {
 	w.Header().Set("Content-Type", "application/json")
 	w.Write(nodes)
 }
+
+/* 根据标讯id获取正文
+ * @param bucket_id 桶id
+ * @param object_name 对象名称
+ * @return 标讯正文内容
+ */
+func BidDetailHandler(w http.ResponseWriter, r *http.Request) {
+	bucketID := r.FormValue("bucket_id")
+	if bucketID == "" {
+		http.Error(w, api.Error_msg_1002+"bucket_id", http.StatusInternalServerError)
+		return
+	}
+	objectName := r.FormValue("object_name")
+	if objectName == "" {
+		http.Error(w, api.Error_msg_1002+"object_name", http.StatusInternalServerError)
+		return
+	}
+	objectName += ".txt"
+	log.Println(GetIp(r), "根据标讯id获取正文", bucketID, objectName)
+	w.Write(GetBidDetail(bucketID, objectName))
+}

+ 17 - 3
oss/oss.go

@@ -1,16 +1,16 @@
 package oss
 
 import (
+	"app.yhyue.com/moapp/jybase/es"
 	"bytes"
 	"compress/gzip"
 	"fmt"
+	ossSDK "github.com/aliyun/aliyun-oss-go-sdk/oss"
 	"io"
 	"io/ioutil"
+	"jygit.jydev.jianyu360.cn/BaseService/ossService/config"
 	"log"
 	"sync"
-
-	ossSDK "github.com/aliyun/aliyun-oss-go-sdk/oss"
-	"jygit.jydev.jianyu360.cn/BaseService/ossService/config"
 )
 
 // bucketMap 用来缓存bucket配置,避免重复查询数据库
@@ -151,3 +151,17 @@ func LoadOSSAccounts() {
 		accountMap.Store(acc.ID, acc)
 	}
 }
+
+// 获取标讯正文,优先从oss中取,再从es中取
+func GetBidDetail(bucketID, objectName string) []byte {
+	b, e := DownloadAttachment(bucketID, objectName)
+	if e == nil && b != nil && len(b) > 0 {
+		return b
+	}
+	list := es.VarEs.Get(config.AppConfig.ElasticSearch.IndexName, config.AppConfig.ElasticSearch.IndexName, fmt.Sprintf(`{"query":{"bool":{"filter":{"term":{"_id":"%s"}}}},"_source":["detail"]}`, objectName))
+	if list != nil && len(*list) > 0 {
+		detail, _ := (*list)[0]["detail"].(string)
+		return []byte(detail)
+	}
+	return nil
+}

+ 22 - 0
oss/rpc.go

@@ -101,3 +101,25 @@ func (s *OSSService) checkArgs(args *entity.Args) error {
 	}
 	return nil
 }
+
+/* rpc方式获取标讯正文
+ * @param args 参数
+ * @param args.BucketID 文件名
+ * @param args.ObjectName 对象名称
+ * @param reply 返回结果
+ * @param reply.Error_code 错误代码 0:成功
+ * @param reply.Error_msg 错误信息
+ * @param reply.Data 标讯正文
+ * @return error 错误信息
+ */
+func (s *OSSService) GetBidDetail(args *entity.Args, reply *api.Result) error {
+	if err := s.checkArgs(args); err != nil {
+		log.Println(constant.BidDetailFail, err)
+		return err
+	}
+	log.Println("rpc方式获取正文", args.BucketID, args.ObjectName)
+	args.ObjectName += ".txt"
+	reply.Data = string(GetBidDetail(args.BucketID, args.ObjectName))
+	reply.Error_msg = constant.GetBidDetailSuccess
+	return nil
+}

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott