|
@@ -2,6 +2,7 @@ package main
|
|
|
|
|
|
import (
|
|
|
util "app.yhyue.com/data_processing/common_utils"
|
|
|
+ "app.yhyue.com/data_processing/common_utils/log"
|
|
|
"app.yhyue.com/data_processing/common_utils/mongodb"
|
|
|
"app.yhyue.com/data_processing/common_utils/redis"
|
|
|
"app.yhyue.com/data_processing/common_utils/udp"
|
|
@@ -10,8 +11,9 @@ import (
|
|
|
"github.com/goinggo/mapstructure"
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
|
- "log"
|
|
|
+ "go.uber.org/zap"
|
|
|
"math"
|
|
|
+ "project/config"
|
|
|
"reflect"
|
|
|
"sort"
|
|
|
"strings"
|
|
@@ -30,7 +32,7 @@ func (p *ProjectTask) modifyUpdate(pid string, index, position int, tmpPro, modi
|
|
|
updateSet := UpdateValue(tmpPro, index, position, modifyProMap)
|
|
|
updateSet["list"] = tmpPro["list"]
|
|
|
// 1-2 修改mgo
|
|
|
- bol := MongoTool.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": updateSet})
|
|
|
+ bol := MgoP.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": updateSet})
|
|
|
if bol {
|
|
|
// 1-3 修改es
|
|
|
by, _ := json.Marshal(map[string]interface{}{
|
|
@@ -41,7 +43,7 @@ func (p *ProjectTask) modifyUpdate(pid string, index, position int, tmpPro, modi
|
|
|
}},
|
|
|
"stype": "project",
|
|
|
})
|
|
|
- util.Debug(string(by))
|
|
|
+ log.Info(string(by))
|
|
|
_ = udpclient.WriteUdp(by, udp.OP_TYPE_DATA, toaddr[1])
|
|
|
}
|
|
|
// 修改内存
|
|
@@ -53,7 +55,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
|
info := ParseInfo(tmp)
|
|
|
//项目中list大小等于1
|
|
|
if len(proList) == 1 {
|
|
|
- log.Println("list大小等于1 合并", "------1------")
|
|
|
+ log.Info("list大小等于1 合并" + "------1------")
|
|
|
// 2.1 重新合并
|
|
|
merge := p.ReMerge(info, tmp, tmpPro)
|
|
|
if merge {
|
|
@@ -89,11 +91,11 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
|
flag := true // 标记是否需要删除原有项目信息
|
|
|
for _, v := range proList {
|
|
|
v1 := v.(map[string]interface{})
|
|
|
- temp, _ := MongoTool.FindById(ExtractColl, util.ObjToString(v1["infoid"]), nil)
|
|
|
+ temp, _ := MgoB.FindById(BiddingColl, util.ObjToString(v1["infoid"]), nil)
|
|
|
if len(*temp) == 0 {
|
|
|
- temp, _ = MongoTool.FindById(ExtractColl1, util.ObjToString(v1["infoid"]), nil)
|
|
|
+ temp, _ = MgoB.FindById("bidding_back", util.ObjToString(v1["infoid"]), nil)
|
|
|
if len(*temp) == 0 {
|
|
|
- util.Debug("extract not find id...", v1["infoid"])
|
|
|
+ log.Info("extract not find id...", zap.Any("id", v1["infoid"]))
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
@@ -111,7 +113,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
|
} else {
|
|
|
//合并到原有项目中, 不用继续重新合并, 原有项目内部合并即可
|
|
|
p.innerMerge(proList, tmpPro)
|
|
|
- bol := MongoTool.UpdateById(ProjectColl, pInfoId, map[string]interface{}{"$set": tmpPro})
|
|
|
+ bol := MgoP.UpdateById(ProjectColl, pInfoId, map[string]interface{}{"$set": tmpPro})
|
|
|
if bol {
|
|
|
by, _ := json.Marshal(map[string]interface{}{
|
|
|
"query": map[string]interface{}{
|
|
@@ -121,7 +123,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
|
}},
|
|
|
"stype": "project",
|
|
|
})
|
|
|
- util.Debug(string(by))
|
|
|
+ log.Info(string(by))
|
|
|
_ = udpclient.WriteUdp(by, udp.OP_TYPE_DATA, toaddr[1])
|
|
|
}
|
|
|
// 修改内存
|
|
@@ -145,7 +147,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
|
backupPro(tmpPro)
|
|
|
delete(tmpPro, "reason")
|
|
|
p.innerMerge1(proList, util.ObjToString(tmp["infoid"]), tmpPro)
|
|
|
- bol := MongoTool.UpdateById(ProjectColl, pInfoId, map[string]interface{}{"$set": tmpPro})
|
|
|
+ bol := MgoP.UpdateById(ProjectColl, pInfoId, map[string]interface{}{"$set": tmpPro})
|
|
|
if bol {
|
|
|
by, _ := json.Marshal(map[string]interface{}{
|
|
|
"query": map[string]interface{}{
|
|
@@ -155,7 +157,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
|
}},
|
|
|
"stype": "project",
|
|
|
})
|
|
|
- util.Debug(string(by))
|
|
|
+ log.Info(string(by))
|
|
|
_ = udpclient.WriteUdp(by, udp.OP_TYPE_DATA, toaddr[1])
|
|
|
}
|
|
|
} else {
|
|
@@ -174,7 +176,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
|
w := len(proList) - 1
|
|
|
proList = deleteSlice1(proList, proList[w])
|
|
|
p.innerMerge(proList, tmpPro)
|
|
|
- bol := MongoTool.UpdateById(ProjectColl, pInfoId, map[string]interface{}{"$set": tmpPro})
|
|
|
+ bol := MgoP.UpdateById(ProjectColl, pInfoId, map[string]interface{}{"$set": tmpPro})
|
|
|
if bol {
|
|
|
by, _ := json.Marshal(map[string]interface{}{
|
|
|
"query": map[string]interface{}{
|
|
@@ -184,7 +186,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
|
}},
|
|
|
"stype": "project",
|
|
|
})
|
|
|
- util.Debug(string(by))
|
|
|
+ log.Info(string(by))
|
|
|
_ = udpclient.WriteUdp(by, udp.OP_TYPE_DATA, toaddr[1])
|
|
|
}
|
|
|
} else {
|
|
@@ -198,17 +200,17 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
|
|
|
|
// 删除
|
|
|
func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
|
- tmpPro, _ := MongoTool.FindById(ProjectColl, pid, nil)
|
|
|
+ tmpPro, _ := MgoP.FindById(ProjectColl, pid, nil)
|
|
|
ids := (*tmpPro)["ids"].([]interface{})
|
|
|
proList := (*tmpPro)["list"].([]interface{})
|
|
|
if len(ids) == 1 {
|
|
|
(*tmpPro)["reason"] = "删除项目信息"
|
|
|
backupPro(*tmpPro)
|
|
|
- c := MongoTool.Delete(ProjectColl, map[string]interface{}{"_id": mongodb.StringTOBsonId(pid)})
|
|
|
+ c := MgoP.Delete(ProjectColl, map[string]interface{}{"_id": mongodb.StringTOBsonId(pid)})
|
|
|
if c > 0 {
|
|
|
client := Es.GetEsConn()
|
|
|
defer Es.DestoryEsConn(client)
|
|
|
- Es.DelById(Itype, pid)
|
|
|
+ Es.DelById(config.Conf.DB.Es.Index, pid)
|
|
|
}
|
|
|
return
|
|
|
}
|
|
@@ -233,11 +235,11 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
|
flag := true // 标记是否需要删除原有项目信息
|
|
|
for _, v := range proList {
|
|
|
v1 := v.(map[string]interface{})
|
|
|
- temp, _ := MongoTool.FindById(ExtractColl, util.ObjToString(v1["infoid"]), nil)
|
|
|
+ temp, _ := MgoB.FindById(BiddingColl, util.ObjToString(v1["infoid"]), nil)
|
|
|
if len(*temp) == 0 {
|
|
|
- temp, _ = MongoTool.FindById(ExtractColl1, util.ObjToString(v1["infoid"]), nil)
|
|
|
+ temp, _ = MgoB.FindById("bidding_back", util.ObjToString(v1["infoid"]), nil)
|
|
|
if len(*temp) == 0 {
|
|
|
- util.Debug("extract not find id...", v1["infoid"])
|
|
|
+ log.Info("extract not find id...", zap.Any("id", v1["infoid"]))
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
@@ -254,7 +256,7 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
|
delOldPro(pid)
|
|
|
} else {
|
|
|
*tmpPro, pro = p.innerMerge(proList, *tmpPro)
|
|
|
- bol := MongoTool.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": tmpPro})
|
|
|
+ bol := MgoP.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": tmpPro})
|
|
|
if bol {
|
|
|
by, _ := json.Marshal(map[string]interface{}{
|
|
|
"query": map[string]interface{}{
|
|
@@ -264,7 +266,6 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
|
}},
|
|
|
"stype": "project",
|
|
|
})
|
|
|
- util.Debug(string(by))
|
|
|
_ = udpclient.WriteUdp(by, udp.OP_TYPE_DATA, toaddr[1])
|
|
|
}
|
|
|
// 修改内存
|
|
@@ -280,7 +281,7 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
|
delete(*tmpPro, "reason")
|
|
|
var pro *ProjectCache
|
|
|
*tmpPro, pro = p.innerMerge1(proList, infoid, *tmpPro)
|
|
|
- bol := MongoTool.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": tmpPro})
|
|
|
+ bol := MgoP.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": tmpPro})
|
|
|
if bol {
|
|
|
by, _ := json.Marshal(map[string]interface{}{
|
|
|
"query": map[string]interface{}{
|
|
@@ -290,7 +291,6 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
|
}},
|
|
|
"stype": "project",
|
|
|
})
|
|
|
- util.Debug(string(by))
|
|
|
_ = udpclient.WriteUdp(by, udp.OP_TYPE_DATA, toaddr[1])
|
|
|
}
|
|
|
// 内存
|
|
@@ -307,7 +307,7 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
|
proList = deleteSlice1(proList, proList[w])
|
|
|
var pro *ProjectCache
|
|
|
*tmpPro, pro = p.innerMerge(proList, *tmpPro)
|
|
|
- bol := MongoTool.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": tmpPro})
|
|
|
+ bol := MgoP.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": tmpPro})
|
|
|
if bol {
|
|
|
by, _ := json.Marshal(map[string]interface{}{
|
|
|
"query": map[string]interface{}{
|
|
@@ -317,7 +317,6 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
|
}},
|
|
|
"stype": "project",
|
|
|
})
|
|
|
- util.Debug(string(by))
|
|
|
_ = udpclient.WriteUdp(by, udp.OP_TYPE_DATA, toaddr[1])
|
|
|
}
|
|
|
// 内存
|
|
@@ -462,11 +461,10 @@ func (p *ProjectTask) innerMerge(infoList []interface{}, tmpPro map[string]inter
|
|
|
var p1 *ProjectCache
|
|
|
for k, m := range infoList {
|
|
|
m1 := m.(map[string]interface{})
|
|
|
- temp, _ := MongoTool.FindById(ExtractColl, util.ObjToString(m1["infoid"]), nil)
|
|
|
+ temp, _ := MgoB.FindById(BiddingColl, util.ObjToString(m1["infoid"]), nil)
|
|
|
if len(*temp) == 0 {
|
|
|
- temp, _ = MongoTool.FindById(ExtractColl1, util.ObjToString(m1["infoid"]), nil)
|
|
|
+ temp, _ = MgoB.FindById("bidding_back", util.ObjToString(m1["infoid"]), nil)
|
|
|
if len(*temp) == 0 {
|
|
|
- util.Debug("extract not find id...", m1["infoid"])
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
@@ -489,11 +487,11 @@ func (p *ProjectTask) innerMerge1(infoList []interface{}, infoid string, tmpPro
|
|
|
if m1["infoid"] == infoid {
|
|
|
continue
|
|
|
}
|
|
|
- temp, _ := MongoTool.FindById(ExtractColl, util.ObjToString(m1["infoid"]), nil)
|
|
|
+ temp, _ := MgoB.FindById(BiddingColl, util.ObjToString(m1["infoid"]), nil)
|
|
|
if len(*temp) == 0 {
|
|
|
- temp, _ = MongoTool.FindById(ExtractColl1, util.ObjToString(m1["infoid"]), nil)
|
|
|
+ temp, _ = MgoB.FindById("bidding_back", util.ObjToString(m1["infoid"]), nil)
|
|
|
if len(*temp) == 0 {
|
|
|
- util.Debug("extract not find id...", m1["infoid"])
|
|
|
+ log.Info("extract not find id...", zap.Any("id", m1["infoid"]))
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
@@ -515,7 +513,7 @@ func (p *ProjectTask) updateProFiled(tmp map[string]interface{}, thisinfo *Info,
|
|
|
var project *Project
|
|
|
err := json.Unmarshal(bys, &project)
|
|
|
if err != nil {
|
|
|
- util.Debug("project Unmarshal err,", err)
|
|
|
+ log.Info("project Unmarshal err," + err.Error())
|
|
|
return
|
|
|
}
|
|
|
set := map[string]interface{}{}
|
|
@@ -564,9 +562,13 @@ func (p *ProjectTask) updateProFiled(tmp map[string]interface{}, thisinfo *Info,
|
|
|
project.Jgtime = thisinfo.Publishtime
|
|
|
}
|
|
|
}
|
|
|
- if thisinfo.Bidopentime > project.Bidopentime {
|
|
|
- project.Bidopentime = thisinfo.Bidopentime
|
|
|
- set["bidopentime"] = thisinfo.Bidopentime
|
|
|
+ if thisinfo.BidOpenTime > project.BidOpenTime {
|
|
|
+ project.BidOpenTime = thisinfo.BidOpenTime
|
|
|
+ set["bidopentime"] = thisinfo.BidOpenTime
|
|
|
+ }
|
|
|
+ if thisinfo.BidEndTime > 0 {
|
|
|
+ project.BidEndTime = thisinfo.BidEndTime
|
|
|
+ set["bidendtime"] = project.BidEndTime
|
|
|
}
|
|
|
// bidtype、bidstatus
|
|
|
pInfo.Bidtype, pInfo.Bidstatus = p.GetBidTypeAndBidStatus(thisinfo)
|
|
@@ -775,7 +777,7 @@ func (p *ProjectTask) updateProFiled(tmp map[string]interface{}, thisinfo *Info,
|
|
|
"list": push,
|
|
|
"ids": thisinfo.Id,
|
|
|
}
|
|
|
- bol := MongoTool.UpdateById(ProjectColl, pInfo.Id.Hex(), update)
|
|
|
+ bol := MgoP.UpdateById(ProjectColl, pInfo.Id.Hex(), update)
|
|
|
if bol {
|
|
|
by, _ := json.Marshal(map[string]interface{}{
|
|
|
"query": map[string]interface{}{
|
|
@@ -785,7 +787,7 @@ func (p *ProjectTask) updateProFiled(tmp map[string]interface{}, thisinfo *Info,
|
|
|
}},
|
|
|
"stype": "project",
|
|
|
})
|
|
|
- util.Debug(string(by))
|
|
|
+ log.Info(string(by))
|
|
|
_ = udpclient.WriteUdp(by, udp.OP_TYPE_DATA, toaddr[1])
|
|
|
}
|
|
|
}
|
|
@@ -911,7 +913,7 @@ func (p *ProjectTask) updateOldProField(pInfo *ProjectCache, thisinfo *Info, tmp
|
|
|
var project *Project
|
|
|
err := json.Unmarshal(bys, &project)
|
|
|
if err != nil {
|
|
|
- util.Debug("project Unmarshal err,", err)
|
|
|
+ log.Error("project Unmarshal err," + err.Error())
|
|
|
return
|
|
|
}
|
|
|
if len(pInfo.Ids) > 30 {
|
|
@@ -957,9 +959,13 @@ func (p *ProjectTask) updateOldProField(pInfo *ProjectCache, thisinfo *Info, tmp
|
|
|
project.Jgtime = thisinfo.Publishtime
|
|
|
}
|
|
|
}
|
|
|
- if thisinfo.Bidopentime > project.Bidopentime {
|
|
|
- project.Bidopentime = thisinfo.Bidopentime
|
|
|
- tmpPro["bidopentime"] = thisinfo.Bidopentime
|
|
|
+ if thisinfo.BidOpenTime > project.BidOpenTime {
|
|
|
+ project.BidOpenTime = thisinfo.BidOpenTime
|
|
|
+ tmpPro["bidopentime"] = thisinfo.BidOpenTime
|
|
|
+ }
|
|
|
+ if thisinfo.BidEndTime > 0 {
|
|
|
+ project.BidEndTime = thisinfo.BidEndTime
|
|
|
+ tmpPro["bidendtime"] = thisinfo.BidEndTime
|
|
|
}
|
|
|
// bidtype、bidstatus
|
|
|
pInfo.Bidtype, pInfo.Bidstatus = p.GetBidTypeAndBidStatus(thisinfo)
|
|
@@ -1212,20 +1218,18 @@ func backupPro(tmp map[string]interface{}) {
|
|
|
for k, v := range tmp {
|
|
|
tmp1[k] = v
|
|
|
}
|
|
|
- if Sysconfig["backupFlag"].(bool) {
|
|
|
+ if config.Conf.Serve.BackupFlag {
|
|
|
tmp1["sourceprojectid"] = mongodb.BsonIdToSId(tmp1["_id"])
|
|
|
delete(tmp1, "_id")
|
|
|
- MongoTool.Save(BackupColl, tmp1)
|
|
|
+ MgoP.Save(BackupColl, tmp1)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 删除原有项目数据
|
|
|
func delOldPro(pid string) {
|
|
|
- t := MongoTool.Delete(ProjectColl, map[string]interface{}{"_id": mongodb.StringTOBsonId(pid)})
|
|
|
+ t := MgoP.Delete(ProjectColl, map[string]interface{}{"_id": mongodb.StringTOBsonId(pid)})
|
|
|
if t >= 0 {
|
|
|
- client := Es.GetEsConn()
|
|
|
- defer Es.DestoryEsConn(client)
|
|
|
- Es.DelById(Index, pid)
|
|
|
+ Es.DelById(config.Conf.DB.Es.Index, pid)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1235,7 +1239,7 @@ func (p *ProjectTask) modifyMem(tmpPro map[string]interface{}) {
|
|
|
var pro ProjectCache
|
|
|
err := mapstructure.Decode(tmpPro, &pro)
|
|
|
if err != nil {
|
|
|
- util.Debug(err)
|
|
|
+ log.Info(err.Error())
|
|
|
}
|
|
|
pro.Id = mongodb.StringTOBsonId(pid)
|
|
|
tmpMap := make(map[string]InfoField)
|
|
@@ -1258,7 +1262,7 @@ func (p *ProjectTask) modifyMem(tmpPro map[string]interface{}) {
|
|
|
func (p *ProjectTask) printMemPro(pid string) {
|
|
|
p.AllIdsMapLock.Lock()
|
|
|
if v, ok := p.AllIdsMap[pid]; ok {
|
|
|
- util.Debug("mem pro ----------", *v.P)
|
|
|
+ log.Info("mem pro ----------", zap.Any("pro", *v.P))
|
|
|
}
|
|
|
p.AllIdsMapLock.Unlock()
|
|
|
}
|
|
@@ -1266,9 +1270,9 @@ func (p *ProjectTask) printMemPro(pid string) {
|
|
|
// @Description id不变,内容变化 重新进行项目合并
|
|
|
// @Author J 2022/8/10 14:51
|
|
|
func (p *ProjectTask) taskinfo(id string) {
|
|
|
- tmpPro, _ := MongoTool.FindOneByField(ProjectColl, map[string]interface{}{"ids": id}, nil)
|
|
|
+ tmpPro, _ := MgoP.FindOneByField(ProjectColl, map[string]interface{}{"ids": id}, nil)
|
|
|
if tmpPro == nil || len(*tmpPro) == 0 {
|
|
|
- util.Debug(fmt.Sprintf("taskinfo bidding id=%s 未查询到项目数据", id))
|
|
|
+ log.Info(fmt.Sprintf("taskinfo bidding id=%s 未查询到项目数据", id))
|
|
|
return
|
|
|
}
|
|
|
pid := mongodb.BsonIdToSId((*tmpPro)["_id"])
|
|
@@ -1278,11 +1282,11 @@ func (p *ProjectTask) taskinfo(id string) {
|
|
|
var newP map[string]interface{}
|
|
|
var p1 *ProjectCache
|
|
|
for i, s := range ids {
|
|
|
- temp, _ := MongoTool.FindById(ExtractColl, s, nil)
|
|
|
+ temp, _ := MgoB.FindById(BiddingColl, s, nil)
|
|
|
if temp == nil || len(*temp) == 0 {
|
|
|
- temp, _ = MongoTool.FindById(ExtractColl1, s, nil)
|
|
|
+ temp, _ = MgoB.FindById("bidding_back", s, nil)
|
|
|
if temp == nil || len(*temp) == 0 {
|
|
|
- util.Debug("extract not find id...", s)
|
|
|
+ log.Info("extract not find id..." + s)
|
|
|
return
|
|
|
}
|
|
|
}
|
|
@@ -1529,7 +1533,7 @@ func (p *ProjectTask) updatePro(set, tmp map[string]interface{}, pInfo *ProjectC
|
|
|
var project *Project
|
|
|
err := json.Unmarshal(bys, &project)
|
|
|
if err != nil {
|
|
|
- util.Debug("project Unmarshal err,", err)
|
|
|
+ log.Info("project Unmarshal err," + err.Error())
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -1576,9 +1580,13 @@ func (p *ProjectTask) updatePro(set, tmp map[string]interface{}, pInfo *ProjectC
|
|
|
set["jgtime"] = tmp["publishtime"]
|
|
|
}
|
|
|
}
|
|
|
- if thisinfo.Bidopentime > project.Bidopentime {
|
|
|
- project.Bidopentime = thisinfo.Bidopentime
|
|
|
- set["bidopentime"] = project.Bidopentime
|
|
|
+ if thisinfo.BidOpenTime > project.BidOpenTime {
|
|
|
+ project.BidOpenTime = thisinfo.BidOpenTime
|
|
|
+ set["bidopentime"] = project.BidOpenTime
|
|
|
+ }
|
|
|
+ if thisinfo.BidEndTime > 0 {
|
|
|
+ project.BidEndTime = thisinfo.BidEndTime
|
|
|
+ set["bidendtime"] = project.BidEndTime
|
|
|
}
|
|
|
|
|
|
bt := util.ObjToString(tmp["toptype"])
|