|
@@ -1,21 +1,25 @@
|
|
|
package service
|
|
|
|
|
|
import (
|
|
|
+ "bytes"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"github.com/go-xweb/xweb"
|
|
|
"github.com/tealeg/xlsx"
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
|
+ "io"
|
|
|
"io/ioutil"
|
|
|
"log"
|
|
|
mu "mfw/util"
|
|
|
"mongodb"
|
|
|
"net"
|
|
|
+ "net/http"
|
|
|
qu "qfw/util"
|
|
|
"qfw/util/elastic"
|
|
|
"qfw/util/redis"
|
|
|
"regexp"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
"udptask"
|
|
@@ -54,11 +58,13 @@ type RepairRule struct {
|
|
|
repairNewAdd xweb.Mapper `xweb:"/service/jy/repair/newAdd"`
|
|
|
repairPub xweb.Mapper `xweb:"/service/jy/repair/pubSave"`
|
|
|
|
|
|
- redisRepair xweb.Mapper `xweb:"/service/jy/repair/redis"`
|
|
|
- esDel xweb.Mapper `xweb:"/service/jy/repair/es/del"`
|
|
|
- esDelRecord xweb.Mapper `xweb:"/service/jy/repair/es/del/record"`
|
|
|
- esCount xweb.Mapper `xweb:"/service/jy/repair/es/count/byField"`
|
|
|
- esDelBy xweb.Mapper `xweb:"/service/jy/repair/es/del/byField"`
|
|
|
+ redisRepair xweb.Mapper `xweb:"/service/jy/repair/redis"`
|
|
|
+ upFile xweb.Mapper `xweb:"/service/jy/repair/upfile"`
|
|
|
+ upFileRecord xweb.Mapper `xweb:"/service/jy/repair/upfile/record"`
|
|
|
+ esDel xweb.Mapper `xweb:"/service/jy/repair/es/del"`
|
|
|
+ esDelRecord xweb.Mapper `xweb:"/service/jy/repair/es/del/record"`
|
|
|
+ esCount xweb.Mapper `xweb:"/service/jy/repair/es/count/byField"`
|
|
|
+ esDelBy xweb.Mapper `xweb:"/service/jy/repair/es/del/byField"`
|
|
|
}
|
|
|
|
|
|
func (jy *RepairRule) RepairList() {
|
|
@@ -1108,3 +1114,148 @@ func (jy *RepairRule) EsDelRecord() {
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func (jy *RepairRule) UpFileRecord() {
|
|
|
+ defer qu.Catch()
|
|
|
+ if jy.Method() == "POST" {
|
|
|
+ start, _ := jy.GetInteger("start")
|
|
|
+ limit, _ := jy.GetInteger("length")
|
|
|
+ draw, _ := jy.GetInteger("draw")
|
|
|
+ searchStr := jy.GetString("search[value]")
|
|
|
+ search := strings.TrimSpace(searchStr)
|
|
|
+ query := bson.M{}
|
|
|
+ if search != "" {
|
|
|
+ query["$or"] = []interface{}{
|
|
|
+ //bson.M{"s_customer": bson.M{"$regex": search}},
|
|
|
+ //bson.M{"s_tagname": bson.M{"$regex": search}},
|
|
|
+ }
|
|
|
+ }
|
|
|
+ data, _ := Mgo.Find("jy_upfile_log", query, `{"createtime": -1}`, nil, false, start, limit)
|
|
|
+ count := Mgo.Count("jy_upfile_log", query)
|
|
|
+ jy.ServeJson(map[string]interface{}{
|
|
|
+ "draw": draw,
|
|
|
+ "data": data,
|
|
|
+ "recordsFiltered": count,
|
|
|
+ "recordsTotal": count,
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (jy *RepairRule) UpFile() {
|
|
|
+ defer qu.Catch()
|
|
|
+ if jy.Method() == "POST" {
|
|
|
+ identity := jy.GetString("identity")
|
|
|
+ var id string
|
|
|
+ if len(identity) == 24 {
|
|
|
+ id = identity
|
|
|
+ } else {
|
|
|
+ identity = rpre.ReplaceAllString(identity, "")
|
|
|
+ identity = rsuf.ReplaceAllString(identity, "")
|
|
|
+ id = qu.CommonDecodeArticle("content", identity)[0]
|
|
|
+ }
|
|
|
+ qu.Debug("download --- url/id ---", id)
|
|
|
+ files := jy.GetString("files")
|
|
|
+ var fileArr []map[string]interface{}
|
|
|
+ if err := json.Unmarshal([]byte(files), &fileArr); err != nil {
|
|
|
+ qu.Debug("UserInfo Unmarshal Failed:", err)
|
|
|
+ jy.ServeJson(map[string]interface{}{
|
|
|
+ "rep": false,
|
|
|
+ "msg": "用户信息解析失败",
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ InitOss()
|
|
|
+ var atts []map[string]interface{}
|
|
|
+ for _, m := range fileArr {
|
|
|
+ download := qu.ObjToString(m["org_url"])
|
|
|
+ filename := qu.ObjToString(m["filename"])
|
|
|
+ res, err := http.Get(download)
|
|
|
+ if err != nil {
|
|
|
+ qu.Debug("Download url error ---", download)
|
|
|
+ jy.ServeJson(map[string]interface{}{
|
|
|
+ "rep": false,
|
|
|
+ "msg": "文件下载失败",
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ bt, _ := ioutil.ReadAll(res.Body)
|
|
|
+ key := GetHashKey(bt) + TypeByExt(filename)
|
|
|
+ b, err := OssPutObject(key, io.Reader(res.Body))
|
|
|
+ if b {
|
|
|
+ tmp := make(map[string]interface{})
|
|
|
+ tmp["org_url"] = download
|
|
|
+ tmp["filename"] = filename
|
|
|
+ tmp["ftype"] = TypeByExt(filename)
|
|
|
+ tmp["fid"] = key
|
|
|
+ tmp["url"] = "oss"
|
|
|
+ br := bytes.NewReader(bt)
|
|
|
+ tmp["size"] = qu.ConvertFileSize(br.Len())
|
|
|
+ atts = append(atts, tmp)
|
|
|
+ } else {
|
|
|
+ qu.Debug("File upload error ---", err)
|
|
|
+ jy.ServeJson(map[string]interface{}{
|
|
|
+ "rep": false,
|
|
|
+ "msg": "文件上传失败",
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ coll := ""
|
|
|
+ if id > "5a862e7040d2d9bbe88e3b1f" {
|
|
|
+ coll = "bidding"
|
|
|
+ } else {
|
|
|
+ coll = "bidding_back"
|
|
|
+ }
|
|
|
+ info, _ := JYMgo.FindById(coll, id, map[string]interface{}{"projectinfo": 1})
|
|
|
+ if len(*info) > 0 {
|
|
|
+ if (*info)["projectinfo"] != nil {
|
|
|
+ if attsMap := (*info)["projectinfo"].(map[string]interface{}); attsMap["attachments"] != nil {
|
|
|
+ maps := attsMap["attachments"].(map[string]interface{})
|
|
|
+ max := 0
|
|
|
+ for k, _ := range maps {
|
|
|
+ if qu.IntAll(k) > max {
|
|
|
+ max = qu.IntAll(k)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for i, att := range atts {
|
|
|
+ maps[strconv.Itoa(i+max+1)] = att
|
|
|
+ }
|
|
|
+ attsMap["attachments"] = maps
|
|
|
+ } else {
|
|
|
+ tmp := make(map[string]interface{})
|
|
|
+ for i, att := range atts {
|
|
|
+ tmp[strconv.Itoa(i)] = att
|
|
|
+ }
|
|
|
+ attsMap["attachments"] = tmp
|
|
|
+ }
|
|
|
+ delete(*info, "_id")
|
|
|
+ JYMgo.UpdateById(coll, id, map[string]interface{}{"$set": *info})
|
|
|
+ } else {
|
|
|
+ tmp := make(map[string]interface{})
|
|
|
+ for i, att := range atts {
|
|
|
+ tmp[strconv.Itoa(i+1)] = att
|
|
|
+ }
|
|
|
+ attsmap := make(map[string]interface{})
|
|
|
+ attsmap["attachments"] = tmp
|
|
|
+ updateMap := make(map[string]interface{})
|
|
|
+ updateMap["projectinfo"] = attsmap
|
|
|
+ JYMgo.UpdateById(coll, id, map[string]interface{}{"$set": updateMap})
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ jy.ServeJson(map[string]interface{}{
|
|
|
+ "rep": false,
|
|
|
+ "msg": "id查询失败, " + id,
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ jy.ServeJson(map[string]interface{}{
|
|
|
+ "rep": true,
|
|
|
+ })
|
|
|
+ Mgo.Save("jy_upfile_log", bson.M{"infoid": id, "value": "上传附件", "createtime": time.Now().Unix()})
|
|
|
+
|
|
|
+ } else {
|
|
|
+ _ = jy.Render("repair/jy_file_upload.html")
|
|
|
+ }
|
|
|
+}
|