Эх сурвалжийг харах

Merge remote-tracking branch 'origin/feature/v4.10.9' into feature/v4.10.9

jianghan 4 сар өмнө
parent
commit
c254b22fe9

+ 6 - 5
src/jfw/front/front.go

@@ -1224,6 +1224,7 @@ func (f *Front) Transfer() error {
 	return f.Redirect(f.GetString("url"))
 }
 func (f *Front) SubscribeTransfer() error {
+	pushtime := f.GetString("pushtime")
 	vt := f.GetString("t")
 	switch vt {
 	case "member":
@@ -1236,25 +1237,25 @@ func (f *Front) SubscribeTransfer() error {
 		vt = "s"
 	}
 	if vt != "" {
-		return f.Redirect(fmt.Sprintf("/page_workDesktop/work-bench/app/big/big_subscribe?vt=%s", vt))
+		return f.Redirect(fmt.Sprintf("/page_workDesktop/work-bench/app/big/big_subscribe?vt=%s&pushtime=%s", vt, pushtime))
 	}
 	//查询用户状态
 	bigPower := jy.GetBigVipUserBaseMsg(f.Session(), *config.Middleground)
 	if bigPower.Status > 0 {
 		//大会员用户
-		return f.Redirect(fmt.Sprintf("/page_workDesktop/work-bench/app/big/big_subscribe?vt=m"))
+		return f.Redirect(fmt.Sprintf("/page_workDesktop/work-bench/app/big/big_subscribe?vt=m&pushtime=%s", pushtime))
 	}
 	IsEntPower := bigPower.Data.Entniche.IsEntPower
 	if bigPower.EntnicheStatus == 1 && IsEntPower > 0 {
 		//商机管理
-		return f.Redirect(fmt.Sprintf("/page_workDesktop/work-bench/app/big/big_subscribe?vt=s"))
+		return f.Redirect(fmt.Sprintf("/page_workDesktop/work-bench/app/big/big_subscribe?vt=s&pushtime=%s", pushtime))
 	}
 	if bigPower.VipStatus > 0 {
 		//超级订阅
-		return f.Redirect(fmt.Sprintf("/page_workDesktop/work-bench/app/big/big_subscribe?vt=v"))
+		return f.Redirect(fmt.Sprintf("/page_workDesktop/work-bench/app/big/big_subscribe?vt=v&pushtime=%s", pushtime))
 	}
 	//免费用户
-	return f.Redirect(fmt.Sprintf("/page_workDesktop/work-bench/app/big/big_subscribe?vt=f"))
+	return f.Redirect(fmt.Sprintf("/page_workDesktop/work-bench/app/big/big_subscribe?vt=f&pushtime=%s", pushtime))
 }
 
 // 关于我们

+ 19 - 15
src/jfw/front/org_structure.go

@@ -197,21 +197,25 @@ func (this *OrgStructure) AutoLogon() error {
 			}); resp != nil && resp.Data.Id > 0 {
 				data["base_user_id"] = resp.Data.Id
 				if id := mongodb.Save("user", data); id != "" {
-					referer := this.Refer()
-					go jy.SaveUserLog(public.Mgo_Log,
-						id,
-						phone,
-						"phone",
-						jyutil.IsAndroidOrIOS(this.UserAgent()),
-						source,
-						openId,
-						jyutil.GetSearchEngine(gconv.String(this.GetSession("RSource"))),
-						gconv.String(this.GetSession("RSource")),
-						util.GetIp(this.Request),
-						this.UserAgent(),
-						"",
-						"",
-						referer)
+                    referer := this.Refer()
+                    var Rref = this.GetString("rref")
+                    if this.GetSession("RReferer") != nil && util.ObjToString(this.GetSession("RReferer")) != "" {
+                        Rref = gconv.String(this.GetSession("RReferer"))
+                    }
+                    go jy.SaveUserLog(public.Mgo_Log,
+                        id,
+                        phone,
+                        "phone",
+                        jyutil.IsAndroidOrIOS(this.UserAgent()),
+                        source,
+                        openId,
+                        Rref,
+                        gconv.String(this.GetSession("RSource")),
+                        util.GetIp(this.Request),
+                        this.UserAgent(),
+                        "",
+                        "",
+                        referer)
 					nsqPath, _ := config.Sysconfig["nsq"].(string)
 					nsq_topic, _ := config.Sysconfig["nsq_topic"].(string)
 					jy.Publish(public.Mgo_Log, nsqPath, nsq_topic, "task", id, jy.Jyweb_node2, map[string]interface{}{

+ 21 - 17
src/jfw/front/otherAct.go

@@ -155,23 +155,27 @@ func (f *Front) Lpsubmit() error {
 			}
 			_id := mongodb.Save("user", data)
 			if _id != "" {
-				//用户日志保存
-				referer := f.Refer()
-				source := f.GetString("source")
-				go jy.SaveUserLog(public.Mgo_Log,
-					_id,
-					phoneNum,
-					"phone",
-					jyutil.IsAndroidOrIOS(f.UserAgent()),
-					source,
-					"",
-					jyutil.GetSearchEngine(gconv.String(f.GetSession("RSource"))),
-					util.ObjToString(f.GetSession("RSource")),
-					util.GetIp(f.Request),
-					f.UserAgent(),
-					"",
-					"",
-					referer)
+                //用户日志保存
+                referer := f.Refer()
+                source := f.GetString("source")
+                var Rref = f.GetString("rref")
+                if f.GetSession("RReferer") != nil && util.ObjToString(f.GetSession("RReferer")) != "" {
+                    Rref = gconv.String(f.GetSession("RReferer"))
+                }
+                go jy.SaveUserLog(public.Mgo_Log,
+                    _id,
+                    phoneNum,
+                    "phone",
+                    jyutil.IsAndroidOrIOS(f.UserAgent()),
+                    source,
+                    "",
+                    Rref,
+                    util.ObjToString(f.GetSession("RSource")),
+                    util.GetIp(f.Request),
+                    f.UserAgent(),
+                    "",
+                    "",
+                    referer)
 				deleteIdentSession(f.Session())
 				return "y"
 			}

+ 20 - 16
src/jfw/front/pchelper.go

@@ -154,22 +154,26 @@ func (l *PcHelper) Login() error {
 						}
 						_id := mongodb.Save("user", data)
 						if _id != "" {
-							referer := l.Refer()
-							source := l.GetString("source")
-							go jy.SaveUserLog(public.Mgo_Log,
-								_id,
-								phone,
-								"phone",
-								"pc",
-								source,
-								"",
-								jyutil.GetSearchEngine(gconv.String(l.GetSession("RSource"))),
-								gconv.String(l.GetSession("RSource")),
-								util.GetIp(l.Request),
-								l.UserAgent(),
-								"jybx",
-								"",
-								referer)
+                            referer := l.Refer()
+                            source := l.GetString("source")
+                            var Rref = l.GetString("rref")
+                            if l.GetSession("RReferer") != nil && util.ObjToString(l.GetSession("RReferer")) != "" {
+                                Rref = gconv.String(l.GetSession("RReferer"))
+                            }
+                            go jy.SaveUserLog(public.Mgo_Log,
+                                _id,
+                                phone,
+                                "phone",
+                                "pc",
+                                source,
+                                "",
+                                Rref,
+                                gconv.String(l.GetSession("RSource")),
+                                util.GetIp(l.Request),
+                                l.UserAgent(),
+                                "jybx",
+                                "",
+                                referer)
 							jy.ClearPhoneIdentSession(l.Session())
 							reToken = getUToken(mac, phone)
 							reOpenId = phone

+ 9 - 20
src/jfw/jyutil/jyutil.go

@@ -361,24 +361,13 @@ func GetES(state int) *JyES {
 	return ESInfo
 }
 func IsAndroidOrIOS(s string) string {
-	typ := ""
-	if strings.Contains(s, "Android") {
-		typ = "Android"
-	} else if strings.Contains(s, "iPhone") || strings.Contains(s, "iPad") {
-		typ = "IOS"
-	} else {
-		typ = "other"
-	}
-	return typ
-}
-func GetSearchEngine(promotion string) string {
-	search_engine := ""
-	refererlist := config.Seoconfig["referer"].(map[string]interface{})
-	for k, v := range refererlist {
-		if promotion == v {
-			search_engine = k
-			break
-		}
-	}
-	return search_engine
+    typ := ""
+    if strings.Contains(s, "Android") {
+        typ = "Android"
+    } else if strings.Contains(s, "iPhone") || strings.Contains(s, "iPad") {
+        typ = "IOS"
+    } else {
+        typ = "other"
+    }
+    return typ
 }

+ 122 - 0
src/jfw/modules/app/src/web/templates/commonPay/bidCreditReport/orderDetail.html

@@ -0,0 +1,122 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+<head>
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+    <title>订单详情</title>
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/order-list/css/order-detail.css?v={{Msg "seo" "version"}}' />
+</head>
+
+<body>
+    <div class="j-container transparent-header">
+        <div class="j-header jy-app-header border-line-b transparent-header">
+            <span class="header-left">
+                <span class="van-icon van-icon-arrow-left"></span>
+            </span>
+            <span class="header-title title-left">订单详情</span>
+            <span class="header-right"></span>
+        </div>
+        <div class="j-main order-detail" id="app" v-cloak>
+            <div class="j-container">
+                <div class="j-main no-scrollbar">
+                    <div class="wrapper">
+                        <div class="header-pic arc-container" :class="orderStateMap[orderInfo.state].bgcClassName">
+                            <div class="order-state">${ orderStateMap[orderInfo.state].text }</div>
+                            <div class="surplus-time" v-if="orderStateMap[orderInfo.state].surplusTimeShow && orderInfo.surplusTime > 0">
+                                <span>剩余支付时间:</span>
+                                <van-count-down @finish="onCountdownFinish" :time="orderInfo.surplusTime"></van-count-down>
+                            </div>
+                        </div>
+                        <div class="card-list">
+                            <div class="j-card report-p">
+                                <span class="rp-left" :class="'badge-' + (orderInfoFilter.badge || '')">
+                                    <img class="card-l-pic" :src="orderInfo.headerImg">
+                                </span>
+                                <span class="rp-right">
+                                    <span class="product-type">${ orderInfo.productType }</span>
+                                    <span class="pay-money">&yen; ${ orderInfo.payMoney }</span>
+                                    <span v-if="orderInfo.refund_status && orderInfo.refund_status > 0" class="refund-success-tip">退款成功</span>
+                                </span>
+                            </div>
+                            <div class="j-card product-info" v-if="orderInfo.productInfoList.length">
+                                <div class="j-card-title">购买信息</div>
+                                <div class="j-card-items">
+                                    <div
+                                        class="j-card-item"
+                                        :class="item.className"
+                                        v-for="(item, index) in orderInfo.productInfoList"
+                                        :key="index"
+                                        v-show="item.text"
+                                    >
+                                        <span class="card-item-l">${ item.label + item.split }</span>
+                                        <span class="card-item-r" v-html="item.text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="j-card report-info">
+                                <div class="j-card-title">订单信息</div>
+                                <div class="j-card-items">
+                                    <div
+                                        class="j-card-item"
+                                        :class="item.className"
+                                        v-for="(item, index) in orderInfo.orderInfoList"
+                                        :key="index"
+                                        v-show="item.text"
+                                    >
+                                        <span class="card-item-l">${ item.label + item.split }</span>
+                                        <span class="card-item-r" v-html="item.text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="j-button-group j-footer" v-show="buttonGroupShow">
+                    <button
+                        class="j-button-confirm pay"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.pay"
+                        @click="onConfirmPay">立即支付</button>
+                    <button
+                        class="j-button-cancel invoke"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.invoke && !orderInfo.refund_status"
+                        @click="lookInvoke">${ invokeButtonText }</button>
+                        <button
+                        class="j-button-cancel invoke"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.lookInvoice && !orderInfo.refund_status"
+                        @click="lookInvoke('look')">查看发票</button>
+                    <button
+                        class="j-button-confirm buy-again"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.buyAgain"
+                        @click="buyAgain">再次购买</button>
+                    <!-- <button
+                            class="j-button-confirm renew"
+                            v-if="orderStateMap[orderInfo.state].bottomButtonShow.renew"
+                            @click="renew">续费</button> -->
+                </div>
+            </div>
+        </div>
+    </div>
+    <!--S-当前页面的资源-->
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
+    {{include "/big-member/commonjs.html"}}
+    <script>
+        var pageInfo = {
+            platform: 'app',
+            version: {{Msg "seo" "version"}},
+        }
+    </script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/order-list/js/order-list-config.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/order-list/js/order-detail.js?v={{Msg "seo" "version"}}'></script>
+    <!--E-当前页面的资源-->
+    {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 12 - 6
src/jfw/modules/distribution/src/timetask/timetask.go

@@ -1,6 +1,7 @@
 package timetask
 
 import (
+	. "app.yhyue.com/moapp/jybase/date"
 	"bytes"
 	"database/sql"
 	"fmt"
@@ -13,7 +14,6 @@ import (
 	"time"
 
 	util "app.yhyue.com/moapp/jybase/common"
-	. "app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 	"github.com/tealeg/xlsx"
 )
@@ -87,7 +87,7 @@ func init() {
 	go util.SimpleCrontab(true, TimetaskConf.FlyerUserTime, Getshareinfo)
 }
 
-//4号结算上个月的佣金
+// 4号结算上个月的佣金
 func settlement() {
 	var err error
 	fx, err = xlsx.OpenFile("./res/settlement/settlement.xlsx")
@@ -294,7 +294,7 @@ func TaxPayable(commission float64) int64 {
 	return int64(util.RetainDecimal(tax_cash, 2) * 100)
 }
 
-//虚拟分享次数
+// 虚拟分享次数
 func shareCount(product string, shareAutoIncs []*shareAutoInc) {
 	defer util.Catch()
 	hour := time.Now().Hour()
@@ -385,8 +385,14 @@ func Getshareinfo() {
 	ShareUser = []map[string]interface{}{}
 	data, ok := MQFW.Find("user", map[string]interface{}{
 		"$or": []map[string]interface{}{
-			map[string]interface{}{"s_headimageurl": map[string]interface{}{"$exists": true}},
-			map[string]interface{}{"s_headimage": map[string]interface{}{"$exists": true}},
+			{"s_headimageurl": map[string]interface{}{
+				"$exists": true,
+				"$ne":     "",
+			}},
+			{"s_headimage": map[string]interface{}{
+				"$exists": true,
+				"$ne":     "",
+			}},
 		},
 		"i_appid": 2,
 	}, `{"l_registedate":-1}`, `{"s_headimageurl":1,"s_headimage":1,"s_phone":1,"s_m_phone":1,"s_nickname":1}`, false, 0, 300)
@@ -538,7 +544,7 @@ func createSettlementFx(sFxs []*settlementFx) []byte {
 	return w.Byte.Bytes()
 }
 
-//20号把已结算的佣金转入可提现金额
+// 20号把已结算的佣金转入可提现金额
 func toCashOut() {
 	util.SimpleCrontab(false, TimetaskConf.ToCashout.Time, func() {
 		defer util.Catch()

+ 2 - 2
src/jfw/modules/subscribepay/src/config.yaml

@@ -71,9 +71,9 @@ bidCreditReport:
   sendMailRetry: 10
   appendUserMail:
   mailSubject: "投标企业信用报告(%s)"
-  mailContent: '<body style="background-color:#F5F5FB;padding:15px 0px 30px 0px;"><style> *,body,html{margin:0;padding:0;font-family:Microsoft YaHei;font-size:16px;color:#1d1d1d;text-decoration:none;}#all{border-radius:8px;padding:0px 40px;background-color: #fff;margin:0px auto;width:1200px;overflow:hidden;border-top:5px #2CB7CA solid;padding-bottom:150px;}a,a:hover{text-decoration:none !important;}.detail{border: 1px solid #E0E0E0;border-top: 2px solid #AAAAAA;font-size:14px;}.detail span,.detail a{display:block;}</style><div id="all"><div style="border-bottom: 1px solid #F6F6F6;"><IMG style="margin:auto;display:block;" width="150px" src="https://www.jianyu360.cn/images/swordfish/sf_01.png" /></div><div style="padding:30px 50px;"><div style="line-height: 25px;">尊敬的剑鱼标讯用户:<br>您好,感谢您购买剑鱼标讯投标企业信用报告,您的报告已发送到您的邮箱,请查收!如有问题,可拨打客服热线:400-108-6670。</div><a href="%s" style="display:inline-block;margin-top: 30px;padding: 5px 15px;color:#ffffff;background-color:#2ABED1;font-size:14px;border-radius: 5px;">投标企业信用报告下载</a><div style="height:1px;background-color:#F6F6F6;margin: 40px 0px;"></div><div class="detail"><div style="background-color: #F5F5FB;padding: 5px 25px;line-height:30px;"><span style="float:left;">报告详情</span><a href="%s/xxx?id=%s" style="float:right;color:#2ABED1;">在线查看报告</a><a style="clear:both;"></a></div><span style="padding: 30px 25px;line-height:30px;">投标企业名称:%s<br>招标单位名称:%s</span></div></div></div></body>'
+  mailContent: '<body style="background-color:#F5F5FB;padding:15px 0px 30px 0px;"><style> *,body,html{margin:0;padding:0;font-family:Microsoft YaHei;font-size:16px;color:#1d1d1d;text-decoration:none;}#all{border-radius:8px;padding:0px 40px;background-color: #fff;margin:0px auto;width:1200px;overflow:hidden;border-top:5px #2CB7CA solid;padding-bottom:150px;}a,a:hover{text-decoration:none !important;}.detail{border: 1px solid #E0E0E0;border-top: 2px solid #AAAAAA;font-size:14px;}.detail span,.detail a{display:block;}</style><div id="all"><div style="border-bottom: 1px solid #F6F6F6;"><IMG style="margin:auto;display:block;" width="150px" src="https://www.jianyu360.cn/images/swordfish/sf_01.png" /></div><div style="padding:30px 50px;"><div style="line-height: 25px;">尊敬的剑鱼标讯用户:<br>您好,感谢您购买剑鱼标讯投标企业信用报告,您的报告已发送到您的邮箱,请查收!如有问题,可拨打客服热线:400-108-6670。</div><a href="%s" style="display:inline-block;margin-top: 30px;padding: 5px 15px;color:#ffffff;background-color:#2ABED1;font-size:14px;border-radius: 5px;">投标企业信用报告下载</a><div style="height:1px;background-color:#F6F6F6;margin: 40px 0px;"></div><div class="detail"><div style="background-color: #F5F5FB;padding: 5px 25px;line-height:30px;"><span style="float:left;">报告详情</span><a href="%s" style="float:right;color:#2ABED1;">在线查看报告</a><a style="clear:both;"></a></div><span style="padding: 30px 25px;line-height:30px;">投标企业名称:%s<br>招标单位名称:%s</span></div></div></div></body>'
   warnMailSubject: "投标企业信用报告来新订单了"
-  warnMailContent: '<body style="background-color:#F5F5FB;padding:15px 0px 30px 0px;"><style> *,body,html{margin:0;padding:0;font-family:Microsoft YaHei;font-size:16px;color:#1d1d1d;text-decoration:none;}#all{border-radius:8px;padding:0px 40px;background-color: #fff;margin:0px auto;width:1200px;overflow:hidden;border-top:5px #2CB7CA solid;padding-bottom:150px;}a,a:hover{text-decoration:none !important;}.detail{border: 1px solid #E0E0E0;border-top: 2px solid #AAAAAA;font-size:14px;}.detail span,.detail a{display:block;}</style><div id="all"><div style="border-bottom: 1px solid #F6F6F6;"><IMG style="margin:auto;display:block;" width="150px" src="https://www.jianyu360.cn/images/swordfish/sf_01.png" /></div><div style="padding:30px 50px;"><div style="line-height: 25px;">亲爱的剑鱼标讯运维工作人员:<br>这里有一个新的投标企业信用报告订单需要您处理,请点击下面链接去完善生成报告所需的内容。</div><a href="%s/xxx/xxx?id=%d" style="display:inline-block;margin-top: 30px;padding: 5px 15px;color:#ffffff;background-color:#2ABED1;font-size:14px;border-radius: 5px;">点击去完善</a><div style="height:1px;background-color:#F6F6F6;margin: 40px 0px;"></div><div class="detail"><div style="background-color: #F5F5FB;padding: 5px 25px;line-height:30px;"><span>报告详情</span></div><span style="padding: 30px 25px;line-height:30px;">订单编号:%s<br>投标企业名称:%s<br>招标单位名称:%s</span></div><div style="margin-top: 30px;font-weight: bold;color: red;font-size: 16px;">每一份努力都在为未来的成功积攒能量,你今天流下的每一滴汗水,都会在明天浇灌出最绚烂的花朵。继续加油,你的坚持定有回报!</div></div></div></body>'
+  warnMailContent: '<body style="background-color:#F5F5FB;padding:15px 0px 30px 0px;"><style> *,body,html{margin:0;padding:0;font-family:Microsoft YaHei;font-size:16px;color:#1d1d1d;text-decoration:none;}#all{border-radius:8px;padding:0px 40px;background-color: #fff;margin:0px auto;width:1200px;overflow:hidden;border-top:5px #2CB7CA solid;padding-bottom:150px;}a,a:hover{text-decoration:none !important;}.detail{border: 1px solid #E0E0E0;border-top: 2px solid #AAAAAA;font-size:14px;}.detail span,.detail a{display:block;}</style><div id="all"><div style="border-bottom: 1px solid #F6F6F6;"><IMG style="margin:auto;display:block;" width="150px" src="https://www.jianyu360.cn/images/swordfish/sf_01.png" /></div><div style="padding:30px 50px;"><div style="line-height: 25px;">亲爱的剑鱼标讯运维工作人员:<br>这里有一个新的投标企业信用报告订单需要您处理,请点击下面链接去完善生成报告所需的内容。</div><a href="%s/swordfish/page_big_pc/free/report/examine?id=%d" style="display:inline-block;margin-top: 30px;padding: 5px 15px;color:#ffffff;background-color:#2ABED1;font-size:14px;border-radius: 5px;">点击去完善</a><div style="height:1px;background-color:#F6F6F6;margin: 40px 0px;"></div><div class="detail"><div style="background-color: #F5F5FB;padding: 5px 25px;line-height:30px;"><span>报告详情</span></div><span style="padding: 30px 25px;line-height:30px;">订单编号:%s<br>投标企业名称:%s<br>招标单位名称:%s</span></div><div style="margin-top: 30px;font-weight: bold;color: red;font-size: 16px;">每一份努力都在为未来的成功积攒能量,你今天流下的每一滴汗水,都会在明天浇灌出最绚烂的花朵。继续加油,你的坚持定有回报!</div></div></div></body>'
   warnIntervalMinute: 15
   warnStart: "09:00"
   warnEnd: "21:00"

+ 8 - 4
src/jfw/modules/subscribepay/src/entity/bidCreditReport/bidCreditReport.go

@@ -103,12 +103,15 @@ func (b *bidCreditReport) EntHasRisk(userId, certNo string) bool {
 func (b *bidCreditReport) CallBack(from url.Values) bool {
 	log.Println("芝麻企业信用服务变化通知", from)
 	verifySign := b.Client.VerifySign(from)
-	go util.Mgo_log.Save("bidcredit_report_log", map[string]interface{}{
+	logData := map[string]interface{}{
 		"createTime": time.Now().Unix(),
 		"from":       from,
 		"method":     "zhima.credit.ep.acceptance.notify",
-		"verifySign": verifySign,
-	})
+	}
+	if verifySign != nil {
+		logData["verifySign"] = verifySign.Error()
+	}
+	go util.Mgo_log.Save("bidcredit_report_log", logData)
 	if verifySign != nil {
 		log.Println(from, "芝麻企业信用服务变化通知验签失败", verifySign)
 		return false
@@ -190,7 +193,8 @@ func (b *bidCreditReport) ReportQuery(orderNo string) bool {
 // 发邮件
 func (b *bidCreditReport) sendMail(userId, userMail, entName, buyer, downloadUrl, orderCode string) bool {
 	ctx := gctx.New()
-	content := fmt.Sprintf(g.Config().MustGet(ctx, "bidCreditReport.mailContent").String(), downloadUrl, config.Config.WebDomain, orderCode, entName, buyer)
+	previewUrl := fmt.Sprintf("%s/swordfish/page_big_pc/free/report/preview?url=%s", config.Config.WebDomain, url.QueryEscape(downloadUrl))
+	content := fmt.Sprintf(g.Config().MustGet(ctx, "bidCreditReport.mailContent").String(), downloadUrl, previewUrl, entName, buyer)
 	log.Println("开始给", userId, orderCode, userMail, "发送招投标企业信用报告邮件。。。")
 	if util.SendRetryMail(g.Config().MustGet(ctx, "bidCreditReport.sendMailRetry").Int(), userMail, fmt.Sprintf(g.Config().MustGet(ctx, "bidCreditReport.mailSubject").String(), entName), content, "", nil, config.GmailAuth) {
 		log.Println("给", userId, orderCode, userMail, "发送招投标企业信用报告邮件成功。。。")

+ 7 - 0
src/jfw/modules/subscribepay/src/entity/bidCreditReport/bidCreditReport_test.go

@@ -2,6 +2,7 @@ package bidCreditReport
 
 import (
 	"log"
+	"net/url"
 	"testing"
 	"time"
 )
@@ -39,3 +40,9 @@ func TestCreate(t *testing.T) {
 func TestNewOrderWarn(t *testing.T) {
 	BidCreditReport.NewOrderWarn()
 }
+
+func TestCallBack(t *testing.T) {
+	from := make(url.Values)
+	log.Println(BidCreditReport.CallBack(from))
+	time.Sleep(time.Minute)
+}

+ 2 - 2
src/jfw/modules/subscribepay/src/service/bidCreditReport.go

@@ -52,7 +52,7 @@ func (this *BidCreditReport) GetReport() {
 	for _, adminId := range adminIdArr {
 		if userId == adminId {
 			fool = false
-			continue
+			break
 		}
 	}
 	if fool {
@@ -86,7 +86,7 @@ func (this *BidCreditReport) UpdateReport() {
 	for _, adminId := range adminIdArr {
 		if userId == adminId {
 			fool = false
-			continue
+			break
 		}
 	}
 	if fool {

BIN
src/web/staticres/common-module/order-list/image/bidCreditReport.png


+ 25 - 2
src/web/staticres/common-module/order-list/js/order-list-config.js

@@ -14,7 +14,8 @@ var assetsConf = {
     '剑鱼文库会员': 'docMemberLink',
     '市场分析定制报告下载包':'marketAnalysisLink',
     '企业中标分析报告下载包':'enterpriseAnalysisLink',
-    '业主采购分析报告下载包':'ownerAnalysisLink'
+    '业主采购分析报告下载包':'ownerAnalysisLink',
+    '投标企业信用报告':'bidCreditReportLink'
   },
   // 产品集合
   productionTypeList: [
@@ -39,7 +40,8 @@ var assetsConf = {
     '剑鱼文库会员',
     '市场分析定制报告下载包',
     '企业中标分析报告下载包',
-    '业主采购分析报告下载包'
+    '业主采购分析报告下载包',
+    '投标企业信息报告'
   ],
   // 支持再次购买的产品集合
   canBuyAgainProductions: [
@@ -565,7 +567,28 @@ var assetsConf = {
           app: '/common-module/order-list/image/ownerAnalysis.png'
         }
       }
+    },
+    // 投标企业信用报告
+  bidCreditReportLink: {
+    pay: {
+      wx: '/weixin/pay/checkout_bidcreditreport',
+      app: '/jyapp/pay/checkout_bidcreditreport'
+    },
+    // buyAgain: {
+    //   wx: '/jy_mobile/order/create/bidcreditreport',
+    //   app: '/jy_mobile/order/create/bidcreditreport'
+    // },
+    orderDetail: {
+      wx: '/weixin/common/bidCreditReport/orderDetail',
+      app: '/jyapp/common/bidCreditReport/orderDetail'
+    },
+    imgMap: {
+      headerImg: {
+        wx: '/common-module/order-list/image/bidCreditReport.png',
+        app: '/common-module/order-list/image/bidCreditReport.png'
+      }
     }
+  }
 }
 
 

+ 33 - 0
src/web/staticres/common-module/order-list/js/order-list.js

@@ -666,6 +666,16 @@ var vm = new Vue({
           }
           break
         }
+        case '投标企业信用报告': {
+          try {
+            info.contentImgUrl = assetsConf.bidCreditReportLink.imgMap.headerImg[platform]
+            info.contentList = this.getBidCreditReportInfo(order)
+          } catch (error) {
+            info.contentList = []
+            console.log(error)
+          }
+          break
+        }
         case '大会员': {
           var filterInfo = JSON.parse(order.filter)
           var level = filterInfo.level
@@ -1660,6 +1670,13 @@ var vm = new Vue({
           }
           break
         }
+        case '投标企业信用报告': {
+          var href = assetsConf.bidCreditReportLink.orderDetail[platform]
+          if (href) {
+            goToFn(`${href}?order_code=${orderCode}`)
+          }
+          break
+        }
         default: {
           break
         }
@@ -2586,6 +2603,22 @@ var vm = new Vue({
 
       return [entName, teamCount, userDate]
     },
+    // 投标企业信用报告
+    getBidCreditReportInfo: function (order) {
+
+      var entName = {
+        label: '产品类型:',
+        split: ':',
+        text: order.product_type
+      }
+      var teamCount = {
+        label: '报告下载份数',
+        split: ':',
+        text: order.buy_count + '份'
+      }
+
+      return [entName, teamCount]
+    },
     // 大会员订单卡片信息整理
     getBigMemberInfo: function (order) {
       var filterInfo = JSON.parse(order.filter)

+ 128 - 0
src/web/templates/weixin/commonPay/bidCreditReport/orderDetail.html

@@ -0,0 +1,128 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+<head>
+  <meta charset="utf-8">
+  <meta name="keywords" content="剑鱼标讯">
+  <meta name="description" content="剑鱼标讯">
+  <meta name="author" content="剑鱼标讯">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+  <meta name="browsermode" content="application">
+  <meta name="x5-orientation" content="portrait">
+  <meta name="screen-orientation" content="portrait">
+  <meta name="x5-page-mode" content="app">
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black">
+  <meta name="format-detection" content="telephone=no">
+  <title>订单详情</title>
+  <!--S-当前页面的css资源-->
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/public.css?v={{Msg "seo" "version"}}'>
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/order-list/css/order-detail.css?v={{Msg "seo" "version"}}' />
+</head>
+
+<body>
+    <div class="j-container transparent-header">
+        <div class="j-main order-detail" id="app" v-cloak>
+            <div class="j-container">
+                <div class="j-main no-scrollbar">
+                    <div class="wrapper">
+                        <div class="header-pic arc-container" :class="orderStateMap[orderInfo.state].bgcClassName">
+                            <div class="order-state">${ orderStateMap[orderInfo.state].text }</div>
+                            <div class="surplus-time" v-if="orderStateMap[orderInfo.state].surplusTimeShow && orderInfo.surplusTime > 0">
+                                <span>剩余支付时间:</span>
+                                <van-count-down @finish="onCountdownFinish" :time="orderInfo.surplusTime"></van-count-down>
+                            </div>
+                        </div>
+                        <div class="card-list">
+                            <div class="j-card report-p">
+                                <span class="rp-left" :class="'badge-' + (orderInfoFilter.badge || '')">
+                                    <img class="card-l-pic" :src="orderInfo.headerImg">
+                                </span>
+                                <span class="rp-right">
+                                    <span class="product-type">${ orderInfo.productType }</span>
+                                    <span class="pay-money">&yen; ${ orderInfo.payMoney }</span>
+                                    <span v-if="orderInfo.refund_status && orderInfo.refund_status > 0" class="refund-success-tip">退款成功</span>
+                                </span>
+                            </div>
+                            <div class="j-card product-info" v-if="orderInfo.productInfoList.length">
+                                <div class="j-card-title">购买信息</div>
+                                <div class="j-card-items">
+                                    <div
+                                        class="j-card-item"
+                                        :class="item.className"
+                                        v-for="(item, index) in orderInfo.productInfoList"
+                                        :key="index"
+                                        v-show="item.text"
+                                    >
+                                        <span class="card-item-l">${ item.label + item.split }</span>
+                                        <span class="card-item-r" v-html="item.text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="j-card report-info">
+                                <div class="j-card-title">订单信息</div>
+                                <div class="j-card-items">
+                                    <div
+                                        class="j-card-item"
+                                        :class="item.className"
+                                        v-for="(item, index) in orderInfo.orderInfoList"
+                                        :key="index"
+                                        v-show="item.text"
+                                    >
+                                        <span class="card-item-l">${ item.label + item.split }</span>
+                                        <span class="card-item-r" v-html="item.text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="j-button-group j-footer" v-show="buttonGroupShow">
+                    <button
+                        class="j-button-confirm pay"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.pay"
+                        @click="onConfirmPay">立即支付</button>
+                    <button
+                        class="j-button-cancel invoke"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.invoke && !orderInfo.refund_status"
+                        @click="lookInvoke">${ invokeButtonText }</button>
+                        <button
+                        class="j-button-cancel invoke"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.lookInvoice && !orderInfo.refund_status"
+                        @click="lookInvoke('look')">查看发票</button>
+                    <button
+                        class="j-button-confirm buy-again"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.buyAgain"
+                        @click="buyAgain">再次购买</button>
+                    <!-- <button
+                            class="j-button-confirm renew"
+                            v-if="orderStateMap[orderInfo.state].bottomButtonShow.renew"
+                            @click="renew">续费</button> -->
+                </div>
+            </div>
+        </div>
+    </div>
+    <!--S-当前页面的资源-->
+    <script src="/big-member/js/rem.js"></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+    <!--E-当前页面的资源-->
+    <script>
+        var pageInfo = {
+            platform: 'wx',
+            version: {{Msg "seo" "version"}},
+        }
+    </script>
+    <script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/order-list/js/order-list-config.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/order-list/js/order-detail.js?v={{Msg "seo" "version"}}'></script>
+    {{include "/common/baiducc.html"}}
+</body>
+
+</html>