|
@@ -14,29 +14,11 @@ import (
|
|
|
var (
|
|
|
JyBxSeoDetailRoot *DetailRoot = &DetailRoot{}
|
|
|
DetailNeedMosaic map[string]interface{}
|
|
|
- PreviewClassTemplate = map[int]string{
|
|
|
- 1: "%s于%s委托%s发布了一条%s信息:%s,请有意向开展业务合作的企业尽快与采购联系人接洽,提前介入,及时跟踪项目进展。本条项目信息由剑鱼标讯%s为您提供。",
|
|
|
- 2: "%s,%s在网上公示了一条招标预告信息:%s,请有意向参与竞标的企业单位,尽快与项目负责人进行业务对接,不要错过投标机会。",
|
|
|
- 3: "%s,%s新增了一项%s信息,项目名称为:%s。项目已具备招标条件,特邀请有意向的潜在投标人积极参与。",
|
|
|
- }
|
|
|
- BidTemplate = map[int]string{
|
|
|
- 1: "%s,%s受招标人%s委托对下列产品及服务进行%s。采购的标的信息为:%s、%s等,请有意向参与竞标的企业单位及时联系招标机构,咨询具体招标要求,妥善准备投标事项。本条项目信息由剑鱼标讯%s为您提供。",
|
|
|
- 2: "本招标项目为%s,项目地点位于%s,项目总投资金额%s元。招标人要求投标单位具备相应的资质和经验,并能够按照招标文件的要求提供详细的技术方案和报价。投标截止日期为%s,中标单位将获得与招标人签订正式合同的机会。有意参与本次招标的单位请在规定时间内提交相关材料。",
|
|
|
- 3: "%s于%s在发布了新的招标公告信息:%s,剑鱼标讯%s为您提供该项目的详细信息。请有意向参与投标的企业尽快联系项目负责人,提前接洽项目具体要求,以免错失投标机会。",
|
|
|
- 4: "%s,%s新增了一项招标公告信息,项目名称为:%s,本条项目信息由剑鱼标讯%s为您提供。",
|
|
|
- }
|
|
|
- WinBidTemplate = map[int]string{
|
|
|
- 1: "剑鱼标讯%s获悉,%s,%s中标结果公布,中标供应商为%s。投标人或者其他利害关系人如果认为该中标结果公告存在违法违规行为的,可以依法向有关行政监督部门投诉。",
|
|
|
- 2: "%s,由%s发起的%s的招标需求,收到多家参与竞标企业的有效投标文件。在经过评标专家委员会的严格评审之后,最终确定了%s作为本次招标项目的中标供应商。",
|
|
|
- 3: "%s 受业主单位%s委托采购的%s评审工作已于%s前完成,中标单位为%s,剑鱼标讯%s为您提供详细的%s公告信息,现将成交供应商名单进行公示。",
|
|
|
- 4: "%s,%s新增了一项%s公告信息,项目名称为:%s。本条项目信息由剑鱼标讯%s为您提供。",
|
|
|
- }
|
|
|
- CreditBidTemplate = map[int]string{
|
|
|
- 1: "%s,%s负责采购的%s发布%s公告,供应商(乙方)为:%s。本项目由剑鱼标讯%s为您提供,查看详情请登录/注册。",
|
|
|
- 2: "%s,%s新增了一条%s公告信息,项目名称为:%s,该项目被%s成功中标。",
|
|
|
- 3: "%s,相关监督管理机构新增一则违规公告信息:%s,违规内容详情请注册/登录后查看。",
|
|
|
- }
|
|
|
- Field = ""
|
|
|
+ PreviewClassTemplate = map[string]string{}
|
|
|
+ BidTemplate = map[string]string{}
|
|
|
+ WinBidTemplate = map[string]string{}
|
|
|
+ CreditBidTemplate = map[string]string{}
|
|
|
+ BottomDescribe string
|
|
|
)
|
|
|
|
|
|
type (
|
|
@@ -46,17 +28,22 @@ type (
|
|
|
// GetDetail 根据seoId查询标讯详情
|
|
|
// seoId 标讯seoId标识
|
|
|
// isLogin 是否登录,未登录内容加密
|
|
|
-func (dRoot *DetailRoot) GetDetail(seoId string, isLogin bool) map[string]interface{} {
|
|
|
- aobj, ok := utility.BiddingMgo.FindById("bidding", seoId, nil)
|
|
|
- if ok && aobj != nil && len(*aobj) > 0 {
|
|
|
- obj := *aobj
|
|
|
+func (dRoot *DetailRoot) GetDetail(ctx context.Context, seoId string, isLogin bool) map[string]interface{} {
|
|
|
+ res, err := g.DB().GetOne(ctx, fmt.Sprintf(`SELECT col.bid_id FROM jyseo.column_bidList col WHERE col.seo_id = '%s'`, seoId))
|
|
|
+ if err != nil || res.IsEmpty() {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ data, ok := utility.BiddingMgo.FindById("bidding", gconv.String(res["bid_id"]), nil)
|
|
|
+ if ok && data != nil && len(*data) > 0 {
|
|
|
+ obj := *data
|
|
|
if !isLogin {
|
|
|
obj = Filter(obj)
|
|
|
}
|
|
|
obj["abstract"] = GetAbstractInfo(obj)
|
|
|
+ obj["time"] = time.Unix(gconv.Int64(obj["publishtime"]), 0).Format(time.DateTime)
|
|
|
+ obj["bottomAbstract"] = fmt.Sprintf(g.Cfg("global").MustGet(context.Background(), "bottomDescribe").String(), "子站名称")
|
|
|
return obj
|
|
|
}
|
|
|
-
|
|
|
return nil
|
|
|
}
|
|
|
|
|
@@ -127,10 +114,11 @@ func GetAbstractInfo(obj map[string]interface{}) string {
|
|
|
topType := gconv.String(obj["toptype"])
|
|
|
switch topType {
|
|
|
case "招标":
|
|
|
+ BidTemplate = g.Cfg("global").MustGet(context.Background(), "bidTemplate").MapStrStr()
|
|
|
subType := gconv.String(obj["subType"])
|
|
|
if subType == "变更" || subType == "单一" || subType == "邀标" {
|
|
|
if gconv.String(obj["buyer"]) != "" && gconv.String(obj["title"]) != "" {
|
|
|
- abs = fmt.Sprintf(BidTemplate[4], date, gconv.String(obj["buyer"]), gconv.String(obj["title"]), "分站名称")
|
|
|
+ abs = fmt.Sprintf(BidTemplate["tmp4"], date, gconv.String(obj["buyer"]), gconv.String(obj["title"]), "分站名称")
|
|
|
}
|
|
|
}
|
|
|
if subType != "变更" && subType != "单一" && subType != "邀标" && gconv.String(obj["agency"]) != "" {
|
|
@@ -138,18 +126,19 @@ func GetAbstractInfo(obj map[string]interface{}) string {
|
|
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
|
number := r.Intn(2) + 2
|
|
|
if number == 2 {
|
|
|
- abs = fmt.Sprintf(BidTemplate[2], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["title"]))
|
|
|
+ abs = fmt.Sprintf(BidTemplate["tmp2"], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["title"]))
|
|
|
} else {
|
|
|
- abs = fmt.Sprintf(BidTemplate[3], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["subtype"]), gconv.String(obj["title"]))
|
|
|
+ abs = fmt.Sprintf(BidTemplate["tmp3"], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["subtype"]), gconv.String(obj["title"]))
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
case "结果":
|
|
|
+ WinBidTemplate = g.Cfg("global").MustGet(context.Background(), "winBidTemplate").MapStrStr()
|
|
|
subType := gconv.String(obj["subtype"])
|
|
|
if subType == "中标" || subType == "成交" {
|
|
|
if gconv.String(obj["agency"]) != "" {
|
|
|
if gconv.String(obj["title"]) != "" && gconv.String(obj["winner"]) != "" {
|
|
|
- abs = fmt.Sprintf(WinBidTemplate[3], gconv.String(obj["agency"]), gconv.String(obj["buyer"]), gconv.String(obj["title"]), dateStr, gconv.String(obj["s_winner"]), "分站名称", gconv.String(obj["subtype"]))
|
|
|
+ abs = fmt.Sprintf(WinBidTemplate["tmp3"], gconv.String(obj["agency"]), gconv.String(obj["buyer"]), gconv.String(obj["title"]), dateStr, gconv.String(obj["s_winner"]), "分站名称", gconv.String(obj["subtype"]))
|
|
|
}
|
|
|
} else {
|
|
|
if gconv.String(obj["buyer"]) != "" && gconv.String(obj["title"]) != "" && gconv.String(obj["s_winner"]) != "" {
|
|
@@ -157,46 +146,49 @@ func GetAbstractInfo(obj map[string]interface{}) string {
|
|
|
number := r.Intn(2) + 1
|
|
|
if number == 1 {
|
|
|
winner := strings.Join(strings.Split(gconv.String(obj["s_winner"]), ","), "、")
|
|
|
- abs = fmt.Sprintf(WinBidTemplate[1], "分站名称", dateStr, gconv.String(obj["title"]), winner)
|
|
|
+ abs = fmt.Sprintf(WinBidTemplate["tmp1"], "分站名称", dateStr, gconv.String(obj["title"]), winner)
|
|
|
} else {
|
|
|
- abs = fmt.Sprintf(WinBidTemplate[2], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["title"]), gconv.String(obj["s_winner"]))
|
|
|
+ abs = fmt.Sprintf(WinBidTemplate["tmp2"], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["title"]), gconv.String(obj["s_winner"]))
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if subType == "流标" || subType == "废标" || subType == "结果变更" {
|
|
|
- abs = fmt.Sprintf(WinBidTemplate[4], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["subtype"]), gconv.String(obj["title"]), "分站名称")
|
|
|
+ abs = fmt.Sprintf(gconv.String(WinBidTemplate["tmp4"]), dateStr, gconv.String(obj["buyer"]), gconv.String(obj["subtype"]), gconv.String(obj["title"]), "分站名称")
|
|
|
}
|
|
|
case "预告":
|
|
|
+
|
|
|
+ PreviewClassTemplate = g.Cfg("global").MustGet(context.Background(), "previewClassTemplate").MapStrStr()
|
|
|
if gconv.String(obj["agency"]) != "" {
|
|
|
if gconv.String(obj["buyer"]) != "" && gconv.String(obj["subtype"]) != "" && gconv.String(obj["title"]) != "" {
|
|
|
- abs = fmt.Sprintf(PreviewClassTemplate[1], gconv.String(obj["buyer"]), dateStr, gconv.String(obj["agency"]), gconv.String(obj["subtype"]), gconv.String(obj["title"]), "分站名称")
|
|
|
+ abs = fmt.Sprintf(PreviewClassTemplate["tmp1"], gconv.String(obj["buyer"]), dateStr, gconv.String(obj["agency"]), gconv.String(obj["subtype"]), gconv.String(obj["title"]), "分站名称")
|
|
|
}
|
|
|
} else {
|
|
|
if gconv.String(obj["buyer"]) != "" && gconv.String(obj["subtype"]) != "" && gconv.String(obj["title"]) != "" {
|
|
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
|
number := r.Intn(2) + 2
|
|
|
if number == 2 {
|
|
|
- abs = fmt.Sprintf(PreviewClassTemplate[2], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["title"]))
|
|
|
+ abs = fmt.Sprintf(PreviewClassTemplate["tmp2"], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["title"]))
|
|
|
} else {
|
|
|
- abs = fmt.Sprintf(PreviewClassTemplate[3], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["subtype"]), gconv.String(obj["title"]))
|
|
|
+ abs = fmt.Sprintf(PreviewClassTemplate["tmp3"], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["subtype"]), gconv.String(obj["title"]))
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
case "其他":
|
|
|
+ CreditBidTemplate = g.Cfg("global").MustGet(context.Background(), "creditBidTemplate").MapStrStr()
|
|
|
subType := gconv.String(obj["subtype"])
|
|
|
if subType == "合同" || subType == "验收" {
|
|
|
if gconv.String(obj["buyer"]) != "" && gconv.String(obj["title"]) != "" && gconv.String(obj["subtype"]) != "" && gconv.String(obj["s_winner"]) != "" {
|
|
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
|
number := r.Intn(2) + 1
|
|
|
if number == 1 {
|
|
|
- abs = fmt.Sprintf(CreditBidTemplate[1], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["title"]), gconv.String(obj["subtype"]), gconv.String(obj["s_winner"]), "分站名称")
|
|
|
+ abs = fmt.Sprintf(CreditBidTemplate["tmp1"], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["title"]), gconv.String(obj["subtype"]), gconv.String(obj["s_winner"]), "分站名称")
|
|
|
} else {
|
|
|
- abs = fmt.Sprintf(CreditBidTemplate[2], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["subtype"]), gconv.String(obj["title"]), gconv.String(obj["s_winner"]))
|
|
|
+ abs = fmt.Sprintf(CreditBidTemplate["tmp2"], dateStr, gconv.String(obj["buyer"]), gconv.String(obj["subtype"]), gconv.String(obj["title"]), gconv.String(obj["s_winner"]))
|
|
|
}
|
|
|
}
|
|
|
} else if subType == "违规" {
|
|
|
- abs = fmt.Sprintf(CreditBidTemplate[2], dateStr, gconv.String(obj["title"]))
|
|
|
+ abs = fmt.Sprintf(CreditBidTemplate["tmp2"], dateStr, gconv.String(obj["title"]))
|
|
|
}
|
|
|
}
|
|
|
return abs
|