zhangxinlei1996 4 vuotta sitten
vanhempi
commit
7d6e95fcf9
32 muutettua tiedostoa jossa 1648 lisäystä ja 33 poistoa
  1. 0 3
      src/jfw/front/bid-fileinter.go
  2. 5 0
      src/jfw/front/dataExport.go
  3. 6 1
      src/jfw/front/shorturl.go
  4. 27 1
      src/jfw/front/swordfish.go
  5. 14 1
      src/jfw/front/wxMyOrder.go
  6. 10 1
      src/jfw/modules/app/src/app/filter/loginfilter.go
  7. 16 0
      src/jfw/modules/app/src/app/front/login.go
  8. 11 5
      src/jfw/modules/app/src/app/front/myorder.go
  9. 2 1
      src/jfw/modules/app/src/config.json
  10. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/commonPay/image/Jianyubi.png
  11. 1 1
      src/jfw/modules/app/src/web/templates/commonPay/bidfile/bidfileDetail.html
  12. 447 0
      src/jfw/modules/app/src/web/templates/commonPay/integral/integralDetail.html
  13. 88 0
      src/jfw/modules/app/src/web/templates/commonPay/myOrder.html
  14. 6 0
      src/jfw/modules/app/src/web/templates/commonPay/paySuccess.html
  15. 3 1
      src/jfw/modules/app/src/web/templates/me/login.html
  16. 10 0
      src/jfw/modules/common/src/app.yhyue.com/moapp/message/model/model.go
  17. 1 0
      src/jfw/modules/common/src/github.com/golang/snappy
  18. 1 0
      src/jfw/modules/common/src/github.com/nsqio/go-nsq
  19. BIN
      src/jfw/modules/common/src/go-nsq-master.zip
  20. 59 0
      src/jfw/modules/common/src/qfw/util/jy/nsq.go
  21. 7 5
      src/jfw/modules/subscribepay/src/config/config.go
  22. 37 4
      src/jfw/modules/subscribepay/src/entity/integral.go
  23. 3 1
      src/jfw/modules/subscribepay/src/integral.json
  24. 1 1
      src/jfw/modules/subscribepay/src/pay/wxPay.go
  25. 6 5
      src/jfw/modules/subscribepay/src/service/integral.go
  26. 2 2
      src/jfw/modules/subscribepay/src/service/payCallback.go
  27. 8 0
      src/jfw/modules/weixin/src/wx/wx.go
  28. BIN
      src/web/staticres/order/image/Jianyubi.png
  29. 334 0
      src/web/templates/order/pc/integral/integralDetail.html
  30. 31 0
      src/web/templates/pc/myOrder.html
  31. 422 0
      src/web/templates/weixin/commonPay/integral/integralDetail.html
  32. 90 0
      src/web/templates/weixin/commonPay/myOrder.html

+ 0 - 3
src/jfw/front/bid-fileinter.go

@@ -1,8 +1,6 @@
 package front
 
 import (
-	"fmt"
-
 	"github.com/go-xweb/xweb"
 )
 
@@ -17,6 +15,5 @@ func init() {
 }
 
 func (b *BidAction) BidFileinter(htmlName string) {
-	fmt.Println(htmlName)
 	b.Render("/bid-fileinter/page_"+htmlName+".html", &b.T)
 }

+ 5 - 0
src/jfw/front/dataExport.go

@@ -49,6 +49,7 @@ type DataExport struct {
 	aiForecastPackDetail xweb.Mapper `xweb:"/front/aiForecastPack/aiForecastPackDetail"` //AI中标预测包订单详情
 	subAccountDetail     xweb.Mapper `xweb:"/front/subAccount/subAccountDetail"`         //子账号订单详情
 	bidfileDetail        xweb.Mapper `xweb:"/front/bidfile/bidfileDetail"`               //招标文件解读详情
+	integralDetail       xweb.Mapper `xweb:"/front/integral/integralDetail"`             //招标文件解读详情
 
 	gettest       xweb.Mapper `xweb:"/front/order/gettest"`         //模拟
 	entDataExport xweb.Mapper `xweb:"/front/entDataExport/(.*)"`    //企业数据导出
@@ -1115,3 +1116,7 @@ func (d *DataExport) SubAccountDetail() {
 func (d *DataExport) BidfileDetail() {
 	d.Render("/order/pc/bidfile/bidfileDetail.html")
 }
+
+func (d *DataExport) IntegralDetail() {
+	d.Render("/order/pc/integral/integralDetail.html")
+}

+ 6 - 1
src/jfw/front/shorturl.go

@@ -40,6 +40,7 @@ var Map_stype = map[string]bool{
 }
 
 func (s *Short) Article(stype, id string) error {
+	fmt.Println(s.Url())
 	//先判断是否有session
 	source := s.GetString("source")
 	disWord := s.GetString("disWord")
@@ -52,6 +53,9 @@ func (s *Short) Article(stype, id string) error {
 	//	}
 	if source != "" {
 		aboutUrl += "?source=" + source
+		if strings.Contains(source, "wx_infocontentshare") {
+			aboutUrl += "&from=" + id
+		}
 	}
 	bm := false
 	userId, _ := s.GetSession("userId").(string)
@@ -124,7 +128,6 @@ func (s *Short) Article(stype, id string) error {
 		client := s.Header("User-Agent")
 		bm = mobileReg.MatchString(client)
 		if s.Session().Get("userId") == nil { //} && !regclient.MatchString(client) { //没有用户session //搜索引擎让过
-			//			fmt.Println("userId==============nil")
 			s.Session().Set("referer", s.Request.RequestURI)
 			if bm { //是否是移动端访问
 				s.Redirect(aboutUrl, 302)
@@ -172,6 +175,8 @@ func (s *Short) Article(stype, id string) error {
 		if ssOpenid != nil && ssOpenid != "" {
 			isSubscribe := CheckUserIsSubscribe(ssOpenid.(string))
 			if !isSubscribe {
+				r := util.DecodeArticleId2ByCheck(id)
+				log.Println(r)
 				return s.Redirect(aboutUrl, 302)
 			}
 			//之前sessionkeep.go中没有放userId,造成关注有问题

+ 27 - 1
src/jfw/front/swordfish.go

@@ -1621,10 +1621,19 @@ func (m *Front) About() error {
 	if !mobileReg.MatchString(m.UserAgent()) && flag == "" {
 		return m.Redirect("/front/aboutus.html" + util.If(code != "", "?code="+code, "").(string))
 	}
-
+	from := m.GetString("from") //三级页获取分享用户的openid
+	from_openid := ""
+	if from != "" {
+		fmt.Println("from:", from, util.DecodeArticleId2ByCheck(from))
+		decodeArr := util.DecodeArticleId2ByCheck(from)
+		if len(decodeArr) > 1 {
+			from_openid = decodeArr[1]
+		}
+	}
 	myopenid, _ := m.Session().Get("s_m_openid").(string)
 	mynickname, _ := m.Session().Get("s_nickname").(string)
 	myavatar, _ := m.Session().Get("s_avatar").(string)
+	fmt.Println(myopenid, mynickname, "~~")
 	isSubscribe := false
 	if myopenid == "" {
 		if m.GetString("state") == "wx" {
@@ -1632,6 +1641,7 @@ func (m *Front) About() error {
 			code := m.GetString("code")
 			if code != "" {
 				myopenid = jyutil.Getopenid(code)
+				fmt.Println("myooooooooooo:", myopenid)
 			}
 		} else {
 			if public.CheckWxBrowser(m.Request) {
@@ -1649,6 +1659,7 @@ func (m *Front) About() error {
 		}
 	}
 	param := m.GetString("param")
+	fmt.Println("param:", param)
 	var openid = ""
 	var activecode = ""
 	//分享后微信新用户打开落地页
@@ -1656,11 +1667,24 @@ func (m *Front) About() error {
 		wxid_code := strings.Split(param, "__")
 		if len(wxid_code) > 0 {
 			openid = wxid_code[0]
+			fmt.Println("分享者id:", openid, se.DecodeString(openid))
+			from_openid = se.DecodeString(openid)
 		}
 		if len(wxid_code) > 1 {
 			activecode = wxid_code[1]
 		}
 	}
+	if from_openid != "" { //分享关联
+		from_userid := ""
+		fromuser, ok := public.MQFW.FindOne("user", map[string]interface{}{"s_m_openid": from_openid})
+		if fromuser != nil && len(*fromuser) > 0 && ok {
+			from_userid = BsonIdToSId((*fromuser)["_id"])
+			ok := redis.Put("other", "share_jyb_"+myopenid, from_userid, 60*5)
+			if !ok {
+				log.Println("分享用户关联redis出错", "分享者:", from_userid, "被分享者:", myopenid)
+			}
+		}
+	}
 	qrcodeType := m.GetString("qrcodeType")
 	if qrcodeType != "" {
 		activecode = qrcodeType
@@ -1673,8 +1697,10 @@ func (m *Front) About() error {
 	m.T["isSubscribe"] = isSubscribe //是否关注
 	if openid == "" && myopenid != "" {
 		m.T["openid"] = se.EncodeString(myopenid)
+		fmt.Println("==", se.EncodeString(myopenid), myopenid)
 	} else {
 		m.T["openid"] = openid
+		fmt.Println("--", openid)
 	}
 	m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
 

+ 14 - 1
src/jfw/front/wxMyOrder.go

@@ -32,7 +32,8 @@ type WxMyOrder struct {
 	memberDetail         xweb.Mapper `xweb:"/front/wxMyOrder/memberDetail/(\\w+)"`         //大会员订单详情页面
 	aiForecastPackdetail xweb.Mapper `xweb:"/front/wxMyOrder/aiForecastPackdetail/(\\w+)"` //大会员订单详情页面
 	subAccountDetail     xweb.Mapper `xweb:"/front/wxMyOrder/subAccountDetail/(\\w+)"`     //子账号订单详情
-	bidfileDetail        xweb.Mapper `xweb:"/front/wxMyOrder/bidfileDetail/(\\w+)"`        //子账号订单详情
+	bidfileDetail        xweb.Mapper `xweb:"/front/wxMyOrder/bidfileDetail/(\\w+)"`        //招标文件解读订单详情
+	integralDetail       xweb.Mapper `xweb:"/front/wxMyOrder/integralDetail/(\\w+)"`       //剑鱼币订单详情
 }
 
 func init() {
@@ -307,3 +308,15 @@ func (t *WxMyOrder) BidfileDetail(order_code string) {
 	t.T["order_code"] = order_code
 	t.Render("/weixin/commonPay/bidfile/bidfiledetail.html", &t.T)
 }
+
+func (t *WxMyOrder) IntegralDetail(order_code string) {
+	myOpenid, _ := t.GetSession("s_m_openid").(string)
+	t.T["signature"] = wx.SignJSSDK(t.Site() + t.Url())
+	t.T["openid"] = se.EncodeString(myOpenid)
+	mynickname, _ := t.Session().Get("s_nickname").(string)
+	myavatar, _ := t.Session().Get("s_avatar").(string)
+	t.T["nickname"] = mynickname
+	t.T["avatar"] = myavatar
+	t.T["order_code"] = order_code
+	t.Render("/weixin/commonPay/integral/integralDetail.html", &t.T)
+}

+ 10 - 1
src/jfw/modules/app/src/app/filter/loginfilter.go

@@ -1,8 +1,10 @@
 package filter
 
 import (
+	"fmt"
 	"net/http"
 	"regexp"
+	"strings"
 )
 
 var urls = []*regexp.Regexp{
@@ -35,7 +37,14 @@ func (l *loginFilter) Do() bool {
 		}
 	}
 	if !isMatch && l.GetSession["userId"] == nil {
-		http.Redirect(l.W, l.R, "/jyapp/free/login?back=index&to=back", 302)
+		loginUrl := "/jyapp/free/login?back=index&to=back"
+		lrurl := l.R.URL.String()
+		if strings.Contains(lrurl, "disWord=") {
+			disWord := strings.Split(lrurl, "disWord=")[1]
+			loginUrl += "&disWord=" + disWord
+		}
+		fmt.Println(loginUrl)
+		http.Redirect(l.W, l.R, loginUrl, 302)
 		return false
 	}
 	return true

+ 16 - 0
src/jfw/modules/app/src/app/front/login.go

@@ -443,6 +443,21 @@ func (l *Login) Register() error {
 
 //微信注册保存并登陆
 func (l *Login) WxLogin() {
+	// userid := l.GetSession("userId").(string)
+	addr := config.Sysconfig["nsq"].(string)
+	disWord := l.GetString("disWord")
+	if disWord != "" {
+		redisDis := redis.GetStr("other", "DIS_"+disWord[1:])
+		fmt.Println(redisDis, strings.Split(redisDis, "##")[1])
+		if redisDisArr := strings.Split(redisDis, "##"); len(redisDisArr) > 1 {
+			fromUserId := redisDisArr[1]
+			fmt.Println("fron:", fromUserId)
+			err := jy.Publish(2, addr, jy.Jywx_subscribe_invite, fromUserId, jy.Jyapp_node1)
+			if err != nil {
+				log.Println("nsq队列写入失败-->", jy.Jyapp_wx_register, fromUserId)
+			}
+		}
+	}
 	defer qutil.Catch()
 	returnSign := ""
 	status := func() int {
@@ -508,6 +523,7 @@ func (l *Login) WxLogin() {
 			returnSign = afterLogin(*user, l.Session(), rid, oid, phoneType, channel, deviceId, 2, false)
 			return 1
 		} else {
+			fmt.Println(l.GetString("disWord"))
 			//创建新用户
 			newUser := map[string]interface{}{
 				"s_jpushid":      rid,

+ 11 - 5
src/jfw/modules/app/src/app/front/myorder.go

@@ -23,11 +23,12 @@ type MyOrder struct {
 	//企业商机管理
 	toEntnicheDetail xweb.Mapper `xweb:"/jyapp/front/myorder/toEntnicheDetail"`
 	//招标文件解读
-	toBidfileDetail xweb.Mapper `xweb:"/jyapp/front/myorder/toBidfileDetail"`
-	getpage         xweb.Mapper `xweb:"/jyapp/front/invoice/showpage"`           //开发票
-	check_invoice   xweb.Mapper `xweb:"/jyapp/front/invoice/check_invoice.html"` //查看发票
-	cantInvoice     xweb.Mapper `xweb:"/jyapp/front/cantInvoice"`
-	viewPdf         xweb.Mapper `xweb:"/jyapp/front/viewPdf"`
+	toBidfileDetail  xweb.Mapper `xweb:"/jyapp/front/myorder/toBidfileDetail"`
+	getpage          xweb.Mapper `xweb:"/jyapp/front/invoice/showpage"`           //开发票
+	check_invoice    xweb.Mapper `xweb:"/jyapp/front/invoice/check_invoice.html"` //查看发票
+	cantInvoice      xweb.Mapper `xweb:"/jyapp/front/cantInvoice"`
+	viewPdf          xweb.Mapper `xweb:"/jyapp/front/viewPdf"`
+	tointegralDetail xweb.Mapper `xweb:"/jyapp/front/myorder/tointegralDetail"`
 }
 
 func init() {
@@ -274,6 +275,11 @@ func (m *MyOrder) ToBidfileDetail() {
 	m.Render("/commonPay/bidfile/bidfileDetail.html", &m.T)
 }
 
+func (m *MyOrder) TointegralDetail() {
+	m.T["order_code"] = m.GetString("order_code")
+	m.Render("/commonPay/integral/integralDetail.html", &m.T)
+}
+
 func (t *MyOrder) Getpage() {
 	order_code := t.GetString("order_code")
 	log.Println("order_code", order_code)

+ 2 - 1
src/jfw/modules/app/src/config.json

@@ -150,5 +150,6 @@
 		"pushGrpcServer":"192.168.20.162:811",
 		"pushGrpcHeartBeat":3
 	},
-    "redisSessionLockSize":20
+    "redisSessionLockSize":20,
+    "nsq":"192.168.3.240:4260"
 }

BIN
src/jfw/modules/app/src/web/staticres/jyapp/commonPay/image/Jianyubi.png


+ 1 - 1
src/jfw/modules/app/src/web/templates/commonPay/bidfile/bidfileDetail.html

@@ -249,7 +249,7 @@
                         $(".remaining").show().text("客服电话:400-108-6670")
 
                         $(".j-footer").show().html("<button class='j-button-confirm' style='width: 100%!important;height: 0.92rem!important;' >再次支付</button>").on("click", function () {
-                            window.location.href = "/jyapp/pay/checkout_member?orderCode=" + orderCode;
+                            window.location.href = "/jyapp/pay/checkout_bidfile?orderCode=" + orderCode;
                         })
                     }
                     if (filterObj.transferV) {

+ 447 - 0
src/jfw/modules/app/src/web/templates/commonPay/integral/integralDetail.html

@@ -0,0 +1,447 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="viewport"
+          content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <title>我的订单</title>
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/rem.js"></script>
+    <link rel="stylesheet" type="text/css"
+          href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" type="text/css"
+          href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css">
+    <link rel="stylesheet" type="text/css"
+          href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/public_.css?v={{Msg "seo" "version"}}">
+
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
+    <link rel="stylesheet" type="text/css"
+          href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" type="text/css"
+          href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
+
+    <link rel="stylesheet" type="text/css"
+          href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/appbutton.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" type="text/css"
+          href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/vip_order_detail.css?v={{Msg "seo" "version"}}">
+</head>
+<style>
+    .j-footer {
+        display: none;
+    }
+
+    .j-body .order-main .list .l-item {
+        display: flex;
+        padding: .12rem 0;
+        font-size: .26rem;
+        line-height: .4rem;
+        color: #5F5E64;
+        border-top: 1px solid #F3F3F3;
+    }
+
+    .page.pinch-zoom-parent {
+        padding: 20px;
+        height: 100vh;
+        width: 100vw;
+        position: absolute;
+        top: 0;
+        background: rgba(0, 0, 0, 44%);
+    }
+
+    .page.pinch-zoom-parent .pinch-zoom-container {
+        height: 100% !important;
+    }
+</style>
+<body>
+<div class="j-container" id="order_detail">
+    <div class="j-header jy-app-header">
+        <span class="header-left iconfont icon-fanhui"></span>
+        <span class="header-title">订单详情</span>
+        <span class="header-right"></span>
+    </div>
+    <div class="j-body">
+        <div id="card-header-bg">
+            <h3 id="pageTitle"></h3>
+            <!-- <h3>待付款</h3> -->
+            <p class="remaining" hidden></p>
+        </div>
+        <div class="order-main">
+            <div class="vip_order">
+                <div class="top">
+                    <div class="order-img">
+                        <img alt="">
+                    </div>
+                    <div class="order-name">
+                        <p class="o-name"></p>
+                        <p class="o-price price"></p>
+                    </div>
+                </div>
+                <div class="middle">
+                    <div class="title">购买信息</div>
+                    <div class="list">
+                        <p class="l-item" style="border-top: 1px solid #fff">
+                            <span class=" label">产品类型:</span>
+                            <span class="value item-list-parents level_value">剑鱼币</span>
+                        </p>
+                        <p class="l-item">
+                            <span>数量:</span>
+                            <span class="item-list-parents count_value value"></span>
+                        </p>
+                        <p class="l-item">
+                            <span>有效日期:</span>
+                            <span class="item-list-parents date_value value">永久</span>
+                        </p>
+                    </div>
+                </div>
+                <div class="bottom">
+                    <div class="title">订单信息</div>
+                    <div class="list">
+                        <p class="l-item" style="border-top: 1px solid #fff">
+                            <span class="label">订单编号:</span>
+                            <span class="orderCode value"></span>
+                        </p>
+                        <p class="l-item">
+                            <span class="label">下单时间:</span>
+                            <span class="prepayTime value"></span>
+                        </p>
+                        <!-- 订单状态为已完成时显示支付时间、支付方式和订单号,状态为待付款时不显示 -->
+                        <p class="l-item line_paytime" style="display:none">
+                            <span class="label" id="paytime">支付时间:</span>
+                            <span class="payTime value"></span>
+                        </p>
+                        <p class="l-item line_payway" style="display:none">
+                            <span class="label">支付方式:</span>
+                            <span class="payWay value"></span>
+                        </p>
+                        <p class="l-item line_transaction" style="display:none">
+                            <span class="label">支付单号:</span>
+                            <span class="transaction_id value"></span>
+                        </p>
+                        <p class="l-item" >
+                            <span class="label">产品类型:</span>
+                            <span class="value">剑鱼币</span>
+                        </p>
+                        <p class="l-item paymoney" style="display: none">
+                            <span class="label" id="price">实付金额:</span>
+                            <span class="price value"></span>
+                        </p>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="j-footer j-button-group"></div>
+</div>
+<div class="page pinch-zoom-parent" style="z-index: -1">
+    <div class="pinch-zoom">
+        <img src="/courseFile/2020/10/28/20201028163700010351920Sv.jpg"/>
+    </div>
+</div>
+</body>
+<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/jquery.min.js"></script>
+<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/pinch-zoom.js?v={{Msg "seo" "version"}}"></script>
+<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+<!--<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/fastclick.min.js"></script>-->
+<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
+<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "mod_version"}}"></script>
+
+</html>
+<script>
+    var orderCode = getParam("order_code");
+    $(function () {
+        $.post("/subscribepay/orderListDetails/getMemberDetail", {"order_code": orderCode}, function (r) {
+            if (r) {
+                console.log(r)
+                //订单信息
+                $(".orderCode").text(orderCode);
+                var filterObj = JSON.parse(r.data.filter);
+                $(".count_value").text(filterObj.score + "次");
+                $(".o-name").text("剑鱼币")
+                $(".order-img > img").attr("src", "/jyapp/commonPay/image/jianyubi.png")
+                if (r.data.vip_endtime != null) {
+                    member_endtime = formatTime(r.data.vip_endtime) + " 到期";
+                }
+                if (r.data.order_status == -1) {
+                    $(".nothing").show();
+                    $("#order_detail").hide();
+                }
+
+                //下单时间
+                if (r.data.create_time) {
+                    $(".prepayTime").text(r.data.create_time.replace("-", "/").replace("-", "/"));
+                }
+                //价格
+                var priceText = "¥ " + formatMoney((r.data.order_money / 100));
+                ;
+                if (r.data.order_status == 1) {
+                    priceText = "¥ " + formatMoney((r.data.pay_money / 100));
+                }
+                $(".price").text(priceText);
+            }
+            //
+            //
+
+            if (r.data.order_status === 1) {
+                $("#card-header-bg").addClass("bg finish-bg")
+                $("#pageTitle").addClass("status")
+                $("#pageTitle").text("已完成");
+
+                //有效周期
+                $(".line_cycle").css("display", "");
+                console.log(r.data.pay_way, r.data.course_status, r.data.pay_way === "transferAccounts", r.data.course_status === 4)
+
+                var pay_again = ""
+                //发票
+                if (r.data.applybill_status === 0) {
+                    //已支付未申请发票
+                    pay_again += "<button class=\"j-button-cancel\" style=\"width: 100%!important;height: 0.92rem!important;\"; onclick='invoiceAdd()'>开发票</button>"
+                } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
+                    //已支付已申请发票
+                    pay_again += "<button class=\"j-button-cancel\" style=\"width: 100%!important;height: 0.92rem!important;\" onclick='checkinvoice(" + r.data.applybill_status + ")'>查看发票</button>"
+                }
+                $('.j-footer').show().html(pay_again);
+
+                //支付方式
+                if (r.data.pay_way.indexOf("wx") > -1) {
+                    $(".line_payway").css("display", "");
+                    $(".payWay").text("微信支付");
+                } else if (r.data.pay_way.indexOf("ali") > -1) {
+                    $(".payWay").text("支付宝支付");
+                    $(".line_payway").css("display", "");
+                } else if (r.data.pay_way === "transferAccounts") {//试用用户
+                    if (filterObj.transferV) {
+                        initImgView(filterObj.transferV)
+                        $(".payWay").html("公对公转账<span style='color: #2ABED1' onclick='showImg()'>&nbsp;查看凭证</span>");
+                    }
+                    $(".line_payway").css("display", "");
+
+                    $(".l-item.paymoney").css("display", "");
+                    $(".price").text("¥ " + formatMoney(r.data.pay_money / 100) + "元");
+                    return
+                } else {//试用用户
+                    $(".invoice").css("display", "none");
+                    return
+                }
+
+                $(".l-item.paymoney").css("display", "");
+                $(".price").text("¥ " + formatMoney(r.data.pay_money / 100) + "元");
+
+                if (r.data.pay_time) {
+                    $(".line_paytime").css("display", "");
+                    $(".payTime").css("display", "").text(r.data.pay_time.replace("-", "/").replace("-", "/"));
+                }
+
+                $(".line_transaction").css("display", "");
+                if (r.data.prepay_id) $(".transaction_id").text(r.data.prepay_id);
+            }
+            if (r.data.order_status == 0) {
+                //未支付
+                $("#card-header-bg").addClass("bg nopay-bg")
+                $("#pageTitle").addClass("status")
+
+                if (r.data.pay_way === "transferAccounts") {
+                    if (r.data.course_status === 2) {
+                        $("#pageTitle").text("转账审核中");
+                    } else if (r.data.course_status === 3) {
+                        $("#pageTitle").text("未收到转账");
+                        $(".remaining").show().text("客服电话:400-108-6670")
+
+                        $(".j-footer").show().html("<button class='j-button-confirm' style='width: 100%!important;height: 0.92rem!important;' >再次支付</button>").on("click", function () {
+                            window.location.href = "/jyapp/pay/checkout_integral?orderCode=" + orderCode;
+                        })
+                    }
+                    if (filterObj.transferV) {
+                        initImgView(filterObj.transferV)
+                        $(".payWay").html("公对公转账<span style='color: #2ABED1' onclick='showImg()'>&nbsp;查看凭证</span>");
+                    }
+                    $(".line_payway").css("display", "");
+
+                    $(".l-item.paymoney").css("display", "");
+                    $(".paymoney .price").text("-");
+                    return
+                }
+
+                $("#pageTitle").text("待付款");
+                $(".remaining").show()
+                var order_create_time = r.data.create_time
+                order_create_time = order_create_time.replace(/-/g, '/')
+                var downtime = r.data.order_countdown.split("h")[0]
+                downtime = downtime * 60 * 60 * 1000
+                var create_unix = new Date(order_create_time).getTime();
+                var t = setInterval(() => {
+                    var nowtime = new Date()  //获取当前时间
+                    endtime = new Date(order_create_time);  //定义结束时间
+                    var lefttime = endtime.getTime() + downtime - nowtime.getTime() //距离结束时间的毫秒数
+                    if (Math.floor(lefttime % 1000) <= 0) {
+                        clearInterval(t)
+                        $.ajax({
+                            type: "post",
+                            url: "/subscribepay/orderListDetails/deleteOrder",
+                            data: {
+                                "id": r.data.order.id,
+                                "pageNum": 1,
+                                "type": 1,
+                                "cancel": "cancel"
+                            },
+                            dataType: 'json',
+                            success: function () {
+                                $(".nopay-bg h3").text("已取消")
+                                $(".remaining").text("")
+                                $(".nopay-bg").removeClass("nopay-bg").addClass("cancel-bg")
+                            }
+                        })
+                    } else {
+                        var hour = Math.floor(lefttime / (1000 * 60 * 60)),  //计算小时数
+                            hour = hour < 10 ? '0' + hour : hour;
+                        var minute = Math.floor(lefttime / (1000 * 60) % 60),  //计算分钟数
+                            minute = minute < 10 ? '0' + minute : minute;
+                        var seconds = Math.floor(lefttime / 1000 % 60);  //计算秒数
+                        seconds = seconds < 10 ? '0' + seconds : seconds;
+                        $(".remaining").text("剩余支付时间" + hour + ":" + minute + ":" + seconds)
+                    }
+                }, 1000)
+                $(".invoice").hide();//隐藏开发票
+                $(".j-footer").show().html("<button class='j-button-confirm' style='width: 100%!important;height: 0.92rem!important;' >去支付</button>").on("click", function () {
+                    window.location.href = "/jyapp/pay/checkout_integral?orderCode=" + orderCode;
+                })
+            }
+            if (r.data.order_status == -2 || r.data.order_status == -3) {
+                $("#card-header-bg").addClass("bg cancel-bg")
+                $("#pageTitle").addClass("status")
+                $("#pageTitle").text("已取消");
+                $(".invoice").css("display", "none");//隐藏开发票
+            }
+        })
+        $(".page.pinch-zoom-parent").on("click", function () {
+            $(this).css("display", "none");
+        })
+    })
+
+    //苹果端  刷新js
+    $(function () {
+        var isPageHide = false;
+        window.addEventListener('pageshow', function () {
+            if (isPageHide) {
+                location.reload();
+            }
+        });
+        window.addEventListener('pagehide', function () {
+            isPageHide = true;
+        });
+    });
+
+    //开发票
+    function invoiceAdd() {
+        $.post("/subscribepay/orderListDetails/isOver", {"order_code": orderCode}, function (data) {
+            if (data.status == 1) {
+                window.location.href = "/jyapp/front/invoice/showpage?order_code=" + orderCode;
+            } else {
+                window.location.href = "/jyapp/front/cantInvoice";
+            }
+            ;
+        })
+    }
+
+    //订单详情
+    $(".icon-fanhui").on("click", function () {
+        history.go(-1)
+    })
+
+    //查看发票
+    function checkinvoice(flag) {
+        if (flag === 2) {
+            weui.alert('您已开具发票<br>如有问题请联系客服<br>400-108-6670', {
+                buttons: [{
+                    label: '我知道了',
+                    type: 'primary'
+                }]
+            });
+            return
+        }
+        window.location.href = "/jyapp/front/invoice/check_invoice.html?order_code=" + orderCode
+    }
+
+    function formatTime(t) {
+        try {
+            return t.substring(0, 10).replace(/\-/g, "/")
+        } catch (e) {
+            if (t === null) {
+                t = "";
+            }
+            return t
+        }
+    }
+
+    //获取url参数
+    function getParam(name) {
+        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+        var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
+        var context = "";
+        if (r != null)
+            context = r[2];
+        reg = null;
+        r = null;
+        return context == null || context == "" || context == "undefined" ? "" : context;
+    }
+
+    // 格式化金钱的函数
+    // s: 金额(number) 必传
+    // n: 保留小数的位数(int:0-100)
+    function formatMoney(s, n) {
+        if (n === undefined) {
+            n = -1
+        } else {
+            n = n > 0 && n <= 20 ? n : 2;
+        }
+        var intS = parseInt(s)
+        var point = '.'
+        var left;
+        var right;
+        s = parseFloat((s + '').replace(/[^\d\.-]/g, ''))
+        // 没传n,默认(如果为整数,则不保留小数。如果为浮点数,则保留两位小数)
+        if (n === -1) {
+            if (s === intS) {
+                n = 0
+                right = ''
+                point = ''
+            } else {
+                n = 2
+                s = s.toFixed(n);
+                right = s.split('.')[1];
+            }
+            s = s + ''
+            left = s.split('.')[0].split("").reverse();
+        } else {
+            s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';
+            left = s.split('.')[0].split('').reverse();
+            right = s.split('.')[1];
+        }
+
+        t = "";
+        for (i = 0; i < left.length; i++) {
+            t += left[i] + ((i + 1) % 3 == 0 && (i + 1) != left.length ? ',' : '');
+        }
+
+        var money = t.split('').reverse().join('') + point + right;
+        return money;
+    }
+
+    function initImgView(imgSrc) {
+        if (imgSrc) {
+            $(".pinch-zoom").html(' <img src="' + imgSrc + '"/>')
+            var el = document.querySelector('div.pinch-zoom');
+            new PinchZoom.default(el, {});
+        }
+    }
+
+    function showImg() {
+        $(".page.pinch-zoom-parent").css("display", "").css("z-index", "999")
+    }
+</script>
+{{include "/common/baiducc.html"}}

+ 88 - 0
src/jfw/modules/app/src/web/templates/commonPay/myOrder.html

@@ -2332,6 +2332,94 @@
                     + '</div>'
                     + lastHtml
                     + '</div>'
+            }else if (obj.product_type === "剑鱼币") {
+                if (typ === 1 || $(".tab-link.active").index() === 1) {	//待付款订单列表页
+                    if (obj.order_status === -2) {
+                        continue;
+                    }
+                }
+                count++;
+                var id = obj.id;
+                //订单编号
+                var orderCode = obj.order_code;
+                //创建时间
+                var createTime = obj.create_time;
+                createTime = createTime.replace(/-/g, ".")
+                var filterObj = JSON.parse(obj.filter);
+
+                var imgurl = "/jyapp/commonPay/image/jianyubi.png"
+                var orderStatus = obj.order_status;
+                var orderStatusHtml = "";
+                var orderStatusHtmls = "";
+                var orderMoney = obj.order_money;
+                var applybill_status = obj.applybill_status;
+                var pushTime = new Date(pushTimeStamp * 1000)
+
+                var lastHtml = "";
+                var orderUrl = "/jyapp/front/myorder/tointegralDetail?order_code=" + orderCode;
+
+                if (orderStatus === 0) {
+                    var payNameTmp = "去支付"
+                    if (obj.pay_way === "transferAccounts") {
+                        orderStatusHtmls = "refund";
+                        if (obj.course_status === 2) {
+                            orderStatusHtml = "转账审核中";
+                        } else if (obj.course_status === 3) {
+                            orderStatusHtml = "未收到转账";
+                            payNameTmp = "再次支付"
+                        }
+                    } else {
+                        orderStatusHtml = "待付款";
+                        orderStatusHtmls = "notpay";
+                    }
+                    if (!(obj.pay_way === "transferAccounts" && (obj.course_status === 2 || obj.course_status === 4))) {
+                        lastHtml = '<div class="card-footer">'
+                            + '<a class="btn cancle" onclick="cancelOrder(' + id + ',this)">取消订单</a>'
+                            + '<a onclick="setSessionStorage()" href="/jyapp/pay/checkout_integral?orderCode=' + orderCode + '" class="btn green-btn">' + payNameTmp + '</a>'
+                            + '</div>';
+                    }
+                } else if (orderStatus === 1) {
+                    orderStatusHtml = "已完成";
+                    orderStatusHtmls = "finish";
+
+                    if (applybill_status === 0) {
+                        lastHtml = '<div class="card-footer">'
+                            + '<a onclick="invoiceAdd(this)" class="btn  gray-btn">开发票</a>'
+                            + '</div>'
+                    } else if (applybill_status === 1 || applybill_status === 2) {
+                        lastHtml = '<div class="card-footer">'
+                            + '<a onclick="checkinvoice(this,' + applybill_status + ')"  class="btn  gray-btn">查看发票</a>'
+                            + '</div>'
+                    }
+                } else {
+                    orderStatusHtml = "已取消";
+                    orderStatusHtmls = "status-text";
+                }
+
+                listhtml += '<div class="card">'
+                    + '<div class="card-header">'
+                    + '<span class="time">' + createTime + '</span>'
+                    + '<span class="status ' + orderStatusHtmls + '">' + orderStatusHtml
+                    + '<a class="shanchu iconfont  icon-shanchu" title="删除订单" onclick="deleteOrder(' + id + ',this)"></a>'
+                    + '</span>'
+                    + '</div>'
+                    + '<div class="card-content">'
+                    + '<a onclick="setSessionStorage()" href="' + orderUrl + '" eid="' + orderCode + '" class="media" datareportOrder="true">'
+                    + '<div class="media-img">'
+                    + '<img src="' + imgurl + '">'
+                    + '</div>'
+                    + '<div class="media-info">'
+                    + '<p class="item-ifo ellipsis">产品类型:剑鱼币 </p>'
+                    + '<p class="item-ifo ellipsis">数量:' + filterObj.score + '枚</p>'
+                    + '<p class="item-ifo ellipsis">有效日期:永久</p>'
+                    + '</div>'
+                    + '</a>'
+                    + '<div class="price">'
+                    + '<strong class="current">¥' + formatMoney(orderMoney) + '</strong>'
+                    + '</div>'
+                    + '</div>'
+                    + lastHtml
+                    + '</div>'
             } //else if  ..end
         }
         //for  ..end

+ 6 - 0
src/jfw/modules/app/src/web/templates/commonPay/paySuccess.html

@@ -82,6 +82,12 @@
                     查看订单
                 </button>
             </div>
+        {{else if eq .T.doType "integral"}}
+            <div class="bottom_button">
+                <button style="margin: 0 .32rem; background-color: #2cb7ca; margin-bottom: 0.45rem;height: 0.92rem;border-radius: 0.16rem;" class="right_btn" onclick="window.location.href = '/jyapp/front/myorder/tointegralDetail?order_code={{.T.orderCode}}'">
+                    查看订单
+                </button>
+            </div>
         {{end}}
     </div>
 </div>

+ 3 - 1
src/jfw/modules/app/src/web/templates/me/login.html

@@ -145,6 +145,7 @@
 		var left_1 = (bodyWidth/2-24) / 2;
 		var left_2 = (bodyWidth/2-24) / 2 + bodyWidth / 2;
 		var isIos = mySysIsIos();
+    var disWord = getParam("disWord");
 		$(function(){
 			// 点击勾选是否同意协议和隐私条款
 			$('.selectcheck').on('click',function(){
@@ -187,6 +188,7 @@
 					window.history.back();
 				}
 			});
+      
 			$("#sendIdentCode").on("tap",function() {
 				if(!dcsOne){
 					return
@@ -393,7 +395,7 @@
 			$.ajax({
 				url: "/jyapp/free/wxLogin",
 				type: "post",
-				data: {param:wxSign,rid:JyObj.getPushRid(),oid:getOtherPushId(),phoneType:getPhoneType(),channel:getChannel(),deviceId:getDeviceId()},
+				data: {param:wxSign,rid:JyObj.getPushRid(),oid:getOtherPushId(),phoneType:getPhoneType(),channel:getChannel(),deviceId:getDeviceId(),disWord:disWord},
 				dataType: "json",
 				success: function(r){
 					if(r.status == 1){

+ 10 - 0
src/jfw/modules/common/src/app.yhyue.com/moapp/message/model/model.go

@@ -0,0 +1,10 @@
+package model
+
+//nsq队列对象
+type Message struct {
+	E_code   string                 //jyweb_article_open/jydocs_doc_open/jywx_subscribe_new/jywx_subscribe_old/jywx_unsubscribe/jyapp_bigmember_order/jyapp_bigmember_pay_success/jyapp_bigmember_pay_fail...
+	E_userId string                 //5ed6cii...
+	E_time   int64                  //1605223065
+	E_app    string                 //jywx_node1/jyweb_node2/jyapp_node1/jysubscribe
+	E_body   map[string]interface{} //选用字段,自定义map { 订单信息/关注信息/页面信息  }
+}

+ 1 - 0
src/jfw/modules/common/src/github.com/golang/snappy

@@ -0,0 +1 @@
+Subproject commit 674baa8c7fc30da5df3074a459494a7e6b427dff

+ 1 - 0
src/jfw/modules/common/src/github.com/nsqio/go-nsq

@@ -0,0 +1 @@
+Subproject commit 63a3a23dab3c2acf918f11f01ebc3ad67dad8b9b

BIN
src/jfw/modules/common/src/go-nsq-master.zip


+ 59 - 0
src/jfw/modules/common/src/qfw/util/jy/nsq.go

@@ -0,0 +1,59 @@
+package jy
+
+import (
+	"encoding/json"
+	"errors"
+	"fmt"
+	"time"
+
+	"app.yhyue.com/moapp/message/model"
+	"github.com/nsqio/go-nsq"
+)
+
+const (
+	Jyweb_article_open     = "jyweb_article_open"     //打开招投标信息三级页
+	Jydocs_doc_open        = "jydocs_doc_open"        //打开文库三级页
+	Jyapp_wx_register      = "jyapp_wx_register"      //app微信注册
+	Jyapp_phone_register   = "jyapp_phone_register"   //app手机号注册
+	Jypc_phone_register    = "jypc_phone_register"    //pc端手机号注册
+	Jywx_subscribe_new     = "jywx_subscribe_new"     //微信新用户关注
+	Jywx_subscribe_invite  = "jywx_subscribe_invite"  //已邀请并产生了新用户
+	Jywx_subscribe_invited = "jywx_subscribe_invited" //被邀请产生新用户
+
+	Jywx_node1  = "jywx_node1"  //微信端
+	Jyweb_node2 = "jyweb_node2" //pc端
+	Jyapp_node1 = "jyapp_node1" //app端
+	Jysubscrib  = "jysubscribe" //支付
+)
+
+//typ 1:jydocs  2:jypoints
+//e_code 
+func Publish(typ int, ip, e_code, e_userid, e_app string) error {
+	topicName := ""
+	if typ == 1 {
+		topicName = "jydocs"
+	} else if typ == 2 {
+		topicName = "jypoints"
+	}
+	if topicName == "" {
+		return errors.New("未找到topicName,请检查tye参数是否正确")
+	}
+	cfg := nsq.NewConfig()
+	producer, err := nsq.NewProducer(ip, cfg)
+	if err != nil {
+		fmt.Println("err1---", err)
+	}
+	msg := &model.Message{
+		E_code:   e_code,
+		E_userId: e_userid,
+		E_time:   time.Now().Unix(), //1605223065
+		E_app:    e_app,
+	}
+	b, _ := json.Marshal(msg)
+	err = producer.Publish(topicName, b)
+	if err != nil {
+		fmt.Println("errr2:", err)
+	}
+	producer.Stop()
+	return err
+}

+ 7 - 5
src/jfw/modules/subscribepay/src/config/config.go

@@ -188,11 +188,13 @@ type Font struct {
 
 //
 type Integral struct {
-	BasicIntegral  int  `json:"basicIntegral"`  //最低积分基础购买额度
-	BasicDiscount  int  `json:"basicDiscount"`  //基础折扣
-	ActiveIng      bool `json:"activeIng"`      //活动是否进行
-	ActiveDiscount int  `json:"activeDiscount"` //活动折扣
-	SlewRate       int  `json:"slewRate"`       //积分购买转换率
+	BasicIntegral       int    `json:"basicIntegral"`       //最低积分基础购买额度
+	BasicDiscount       int    `json:"basicDiscount"`       //基础折扣
+	ActiveIng           bool   `json:"activeIng"`           //活动是否进行
+	ActiveDiscount      int    `json:"activeDiscount"`      //活动折扣
+	SlewRate            int    `json:"slewRate"`            //积分购买转换率
+	IntegralHarvestHref string `json:"integralHarvestHref"` //调用充值积分接口
+	Appid               string `json:"appid"`               //剑鱼标识,默认10000,其余待定
 }
 
 //积分

+ 37 - 4
src/jfw/modules/subscribepay/src/entity/integral.go

@@ -1,11 +1,19 @@
 package entity
 
 import (
+	"config"
 	"encoding/json"
+	"io/ioutil"
 	"log"
+	"net/http"
+	"net/url"
+	"strconv"
+
 	qutil "qfw/util"
 	"time"
 	"util"
+
+	"github.com/nsqio/"
 )
 
 type integral struct{}
@@ -13,7 +21,7 @@ type integral struct{}
 var Integral integral
 var integralServiceId = 11
 
-//招标文件解读支付完成回调方法
+//剑鱼币支付完成回调方法
 func (b *integral) PayCallBack(param *CallBackParam) bool {
 	query := map[string]interface{}{}
 	if param.OrderCode != "" { //线下支付
@@ -21,20 +29,25 @@ func (b *integral) PayCallBack(param *CallBackParam) bool {
 	} else { //支付宝微信回调
 		query["out_trade_no"] = param.OutTradeno
 	}
-	orderdata := util.Mysql.FindOne("dataexport_order", query, "id,filter,order_status,user_id,product_type", "")
+	log.Println("===>", query)
+	log.Println("--->", param)
+	orderdata := util.Mysql.FindOne("dataexport_order", query, "id,filter,order_code,order_status,user_id,product_type", "")
 	if orderdata == nil {
 		return false
 	}
 	userId := qutil.ObjToString((*orderdata)["user_id"])
+	log.Println("userId", userId)
+	log.Println(qutil.IntAll((*orderdata)["order_status"]), orderdata)
 	if qutil.IntAll((*orderdata)["order_status"]) == 0 {
 		now := time.Now()
 		nowFormat := qutil.FormatDate(&now, qutil.Date_Full_Layout)
 		product_type := qutil.ObjToString((*orderdata)["product_type"])
 		var filter map[string]interface{}
 		if err := json.Unmarshal([]byte(qutil.ObjToString((*orderdata)["filter"])), &filter); err != nil {
-			log.Println("招标文件解读支付成功json.Unmarshal出错", err)
+			log.Println("剑鱼币支付解析json.Unmarshal出错", err)
 		} else {
 			score := qutil.IntAll(filter["score"])
+			order_code := qutil.ObjToString((*orderdata)["order_code"])
 			update := util.Mysql.Update("dataexport_order", map[string]interface{}{
 				"id": (*orderdata)["id"],
 			}, map[string]interface{}{
@@ -42,11 +55,31 @@ func (b *integral) PayCallBack(param *CallBackParam) bool {
 				"pay_time":     nowFormat,
 				"order_status": 1,
 			})
+			log.Println("############", update)
 			if update {
 				//取消其他订单
 				go PayCancel(userId, "剑鱼币", "")
 				//调用积分接口 给用户增加积分
-				log.Println(product_type, "-----score--:", score)
+				log.Println(product_type, "-----score--:", score, "---", order_code)
+				href := config.IntegralConfig.IntegralHarvestHref
+				data := url.Values{
+					"userId":        []string{userId},
+					"appId":         []string{config.IntegralConfig.Appid}, //剑鱼标识
+					"pointType":     []string{strconv.Itoa(1001)},          //1001充值
+					"sourceId":      []string{order_code},                  //订单号
+					"sourceType":    []string{"充值"},                        //业务类型
+					"point":         []string{strconv.Itoa(score)},         //积分
+					"operationType": []string{"true"},                      //积分类型永久:true、时效:false
+					"endDate":       []string{""},                          //永久为空
+				}
+				//
+				res, err := http.PostForm(href, data)
+				if err != nil {
+					log.Println(err.Error())
+				}
+				defer res.Body.Close()
+				bs, _ := ioutil.ReadAll(res.Body)
+				log.Println("返回内容:" + string(bs))
 			}
 		}
 	}

+ 3 - 1
src/jfw/modules/subscribepay/src/integral.json

@@ -3,5 +3,7 @@
 	"basicDiscount":1,
 	"activeIng":false,
 	"activeDiscount":1,
-	"slewRate":100
+	"slewRate":100,
+	"integralHarvestHref":"http://0.0.0.0:8888/integralHarvest",
+	"appid":"10000"
 }

+ 1 - 1
src/jfw/modules/subscribepay/src/pay/wxPay.go

@@ -40,7 +40,7 @@ const (
 	WX_BIDFILE_APP           = "r"  //招标文件解读-APP支付
 	WX_BIDFILE_NATIVE        = "S"  //招标文件解读-PC支付
 	WX_INTEGRAL_JSAPI        = "AA" //剑鱼币-微信js支付
-	WX_INTEGRAL_APP          = "ab" //剑鱼币-APP支付
+	WX_INTEGRAL_APP          = "AB" //剑鱼币-APP支付
 	WX_INTEGRAL_NATIVE       = "AC" //剑鱼币-PC支付
 )
 

+ 6 - 5
src/jfw/modules/subscribepay/src/service/integral.go

@@ -13,6 +13,7 @@ import (
 	"github.com/go-xweb/xweb"
 )
 
+//剑鱼积分
 type Integral struct {
 	*xweb.Action
 	createOrder xweb.Mapper `xweb:"/Integral/createOrder"` //创建订单
@@ -65,19 +66,19 @@ func (b *Integral) CreateOrder() {
 	r := func() Result {
 		defer qutil.Catch()
 		userId := qutil.ObjToString(b.GetSession("userId"))
-		if userId == "" {
-			return Result{-1, "未登录", nil}
-		}
 		price, _ := b.GetInteger("price")
 		score, _ := b.GetInteger("score")
+		phone := b.GetString("phone")
 		order_money := getIntegralMoney(userId, price, score)
 		if order_money == -1 {
 			return Result{-1, "剑鱼币生成订单价格计算错误", nil}
 		}
 		code := pay.GetOrderCode(userId)
 		filter_map := map[string]interface{}{
-			"price": price,
-			"score": score,
+			"price":       price,
+			"score":       score,
+			"isPermanent": true,
+			"phone":       phone,
 		}
 		filter, _ := json.Marshal(filter_map)
 		insertObj := map[string]interface{}{

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

@@ -91,12 +91,12 @@ func (this *PayCallBackAction) TestPay() {
 		}
 	} else if typeFlag == "大会员-招标文件解读" || typeFlag == "招标文件解读" {
 		if !entity.Bidfile.PayCallBack(thisParam) {
-			log.Printf("大会员-AI中标预测包更新执行出错 %+v\n", thisParam)
+			log.Printf("招标文件解读更新执行出错 %+v\n", thisParam)
 			return
 		}
 	} else if typeFlag == "剑鱼币" {
 		if !entity.Integral.PayCallBack(thisParam) {
-			log.Printf("大会员-AI中标预测包更新执行出错 %+v\n", thisParam)
+			log.Printf("剑鱼币更新执行出错 %+v\n", thisParam)
 			return
 		}
 	} else {

+ 8 - 0
src/jfw/modules/weixin/src/wx/wx.go

@@ -410,6 +410,14 @@ func saveUser(u *UserInfo, source, pre, RSource string) (bool, string, string) {
 			newUser, pcresult, subkey = pcSetUserKeys(newUser, source, pre)
 			newUser["i_ts_guide"] = 1 //pc订阅关键词,不再走向导页
 		}
+		//看是否有对应关系
+		fromid := redis.Get("other", "share_jyb_"+u.OpenId)
+		//存入关系
+		if fromid != nil {
+			//被邀请新用户
+		} else {
+			//新用户
+		}
 		_id := tools.MQFW.Save("user", newUser)
 		if _id != "" && isJyopUser {
 			go func() {

BIN
src/web/staticres/order/image/Jianyubi.png


+ 334 - 0
src/web/templates/order/pc/integral/integralDetail.html

@@ -0,0 +1,334 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>订单详情</title>
+    <meta content="增值服务" theme="light" name="enable-header"/>
+    <script>
+        var myPageNavIsNormal = true;
+    </script>
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/course/css/bootstrap.min.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/course/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/course/css/reset_pc.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/course/css/order_detail.css?v={{Msg "seo" "version"}}">
+    {{include "/common/pnc.html"}}
+    <link href="{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "vebrsion"}}" rel="stylesheet">
+    <link href="{{Msg "seo" "cdn"}}/css/dev2/reset_pc.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+    <link rel="stylesheet" type="text/css"
+          href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}"/>
+    <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}3"></script>
+    <!--[if lt IE 9]>
+    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.3/html5shiv.js"></script>
+    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
+    <![endif]-->
+    <style>
+        .filter_data p {
+            font-size: 14px;
+            margin-bottom: 10px;
+        }
+
+        #order_detail {
+            line-height: 1;
+            padding-top: 76px;
+            padding-bottom: 0px !important;
+            background-color: #fff;
+        }
+
+        .qxBg {
+            border-top: 2px solid #999999;
+            background-color: #ececec;
+        }
+
+        .qxBgFont {
+            color: #686868;
+        }
+
+        .show_pay_pic {
+            background: #2CB7CA;
+            padding: 1px 8px 1px 8px;
+            border-radius: 2px;
+            color: #fff;
+            cursor: pointer;
+        }
+    </style>
+</head>
+<body>
+{{include "/common/pchead.html"}}
+<!-- header -->
+<!-- main  START -->
+<div class="order_detail" id="order_detail">
+    <div class="w order_crumb">
+        <a href="#" onclick="window.location.href='/front/swordfish/toMyOrder'">我的订单</a><em> > </em>
+        <a href="#" class="active">订单详情</a>
+    </div>
+    <div class="w order_main">
+        <!-- greenBg 为绿色背景及边框 redBg为红色背景及边框 -->
+        <div id="bg" class="o_m_thead greenBg">
+            <p class="order_id"></p>
+            <p class="clearfix order_state">
+                <!--greenFont为绿色字体 redFont为红色字体 -->
+                <span class="greenFont hide" id="status_success">已完成</span>
+                <span class="redFont hide" id="status_wait_pay">待付款</span>
+                <span class="qxBgFont hide" id="status_cancelled">已取消</span>
+
+                <span class="customerTel"
+                      style="display:none;font-weight: normal;font-size: 14px;color: #686868;margin-left: 50px;">客服电话:400-108-6670</span>
+                <a class="go_pay payOrder" style="display: none;">去支付</a>
+
+                <!-- 当状态为已完成时显示开发票 或 查看发票 -->
+                <a class="openinvoice go_pay" style="display: none;">开发票</a>
+                <a class="lookinvoice go_pay" style="display: none;">查看发票</a>
+            </p>
+        </div>
+
+        <!-- ------订单类型为VIP订阅、商机管理时展示的字段 --------->
+        <div class="o_m_tbody">
+            <div class="b_list">
+                <div class="list_thead">
+                    <span class="fl">购买信息</span>
+                </div>
+                <div class="clearfix list_tbody">
+                    <div class="filter_data">
+                        <p><span class="dq_text">产品类型:</span><span class="">剑鱼币</span></p>
+                        <p><span>数量:</span><span class="count"></span></p>
+                        <p><span>有效日期:</span><span>永久</span></p>
+                    </div>
+                </div>
+            </div>
+            <div class="b_list">
+                <div class="list_thead">
+                    <span class="fl">订单信息</span>
+                </div>
+                <div class="clearfix list_tbody">
+                    <div class="filter_data">
+                        <p>订单编号:<span class="order_code"></span></p>
+                        <p>下单时间:<span class="order_time"></span></p>
+                        <p class="pay_time_p" style="display: none;">支付时间:<span class="pay_time"></span></p>
+                        <p class="pay_way_p" style="display:none">支付方式:<span class="pay_way"></span></p>
+                        <p class="pay_num_p" style="display:none">支付单号:<span class="pay_num"></span></p>
+                        <p class="price_p">实付金额:<span class="price"></span>&nbsp; <span class="valuationList"
+                                                                                        style="color:#2CB7CA;display:none;cursor:pointer">计费清单</span>
+                        </p>
+                        <p class="pay_pic" style="display:none">转账凭证:<span class="show_pay_pic">查看凭证</span></p>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+    </div>
+    <div style="margin-top: 20px;"></div>
+    <!-- main END -->
+    {{include "/common/pcbottom.html"}}
+    {{include "/common/baiducc.html"}}
+    <script src="{{Msg "seo" "cdn"}}/course/js/jquery-2.1.4.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="{{Msg "seo" "cdn"}}/course/js/bootstrap.min.js?v={{Msg "seo" "version"}}"></script>
+    <!-- footer -->
+    <script>
+        $(function () {
+            $("#public-nav").css("background", "#fff");
+            $(".public-nav").css("border-bottom", "1px solid #e0e0e0");
+            $("section[id='drder']").css("padding-top", "80px");
+            haslogin({{.T.logid}});
+
+            var orderCode = getParam("order_code");
+            $(".order_id").text("订单编号:" + orderCode);
+            $.post("/subscribepay/orderListDetails/getBidileDetail", {"order_code": orderCode}, function (r) {
+                if (r == '{"error":"需要登录!"}') {
+                    location.href = '/';
+                }
+                if (r) {
+                    //订单信息
+                    $(".order_code").text(orderCode);
+                    var filterObj = JSON.parse(r.data.filter);
+
+                    if (r.data.create_time) {
+                        $(".order_time").text(r.data.create_time.replace("-", ".").replace("-", "."));
+                    }
+
+                    $(".price").text("¥ " + formatMoney(r.data.order_money / 100) + "元");
+
+                    $(".count").text(filterObj.score + "枚");
+                    if (r.data.order_status === 1) {
+                        $("#status_success").removeClass("hide");
+                        $(".pay_time_p").css("display", "");
+                        if (r.data.pay_time) $(".pay_time").text(r.data.pay_time.replace("-", ".").replace("-", "."));
+                        //支付方式
+                        if (r.data.pay_way.indexOf("wx") > -1) {
+                            $(".pay_way_p").css("display", "");
+                            $(".pay_way").text("微信支付");
+                        } else if (r.data.pay_way.indexOf("ali") > -1) {
+                            $(".pay_way").text("支付宝支付");
+                            $(".pay_way_p").css("display", "");
+                        } else if (r.data.pay_way === "transferAccounts") {
+                            $(".pay_time_p").css("display", "none");
+                            $(".pay_num_p").css("display", "none");
+                            if (filterObj.transferV) {
+                                $(".pay_pic").css("display", "")
+                                $(".show_pay_pic").attr("onclick", "showImg('" + filterObj.transferV + "')")
+                            }
+                            $(".pay_way").text("公对公转账");
+                            $(".pay_way_p").css("display", "");
+
+                            $(".price").text("¥ " + formatMoney(r.data.pay_money / 100) + "元");
+                        }
+
+                        if (r.data.prepay_id) {
+                            $(".pay_num").text(r.data.prepay_id);
+                            $(".pay_num_p").show();
+                        }
+                        //发票
+                        if (r.data.applybill_status === 0) {
+                            $(".openinvoice").css("display", "");
+                        } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
+                            $(".lookinvoice").css("display", "").on("click", function () {
+                                checkinvoice(r.data.applybill_status, orderCode)
+                            })
+                        }
+                    }
+                    if (r.data.order_status === -2) {
+                        $("#status_cancelled").removeClass("hide");
+                        $("#bg").addClass("qxBg").removeClass("greenBg");
+                    }
+                    if (r.data.order_status === 0) {
+                        $("#bg").addClass("redBg").removeClass("greenBg");
+                        if (r.data.pay_way === "transferAccounts") {
+                            if (filterObj.transferV) {
+                                $(".pay_pic").css("display", "")
+                                $(".show_pay_pic").attr("onclick", "showImg('" + filterObj.transferV + "')")
+                            }
+                            $(".pay_way").text("公对公转账");
+                            $(".pay_way_p").css("display", "");
+                            if (r.data.course_status === 2) {
+                                $(".order_state .redFont").removeClass("hide").text("转账审核中");
+                            } else if (r.data.course_status === 3) {
+                                $(".order_state .redFont").removeClass("hide").text("未收到转账!");
+                                $(".customerTel").css("display", "");
+                                $(".payOrder").text("再次支付").show();
+                            }
+                            $(".payWay").html("公对公转账<span style='color: #2ABED1' onclick='showImg(\"" + filterObj.transferV + "\")'>&nbsp;查看凭证</span>");
+                            $(".line_payway").css("display", "");
+
+                            $(".price").text("-");
+                            return
+                        }
+                        $("#status_wait_pay").removeClass("hide");
+                        $(".payOrder").show();
+                    }
+                }
+            })
+
+
+            $(".openinvoice").on("click", function () {
+                $.post("/subscribepay/orderListDetails/isOver", {"order_code": orderCode}, function (r) {
+                    if (r.status != 1) {
+                        window.open("/front/order/invoicetimeOut", '_self');
+                    } else {
+                        window.open("/front/order/invoice/" + orderCode, '_self');
+                    }
+                })
+            })
+
+            $(".payOrder").on("click", function () {
+                location.href = "/front/integral/orderPay/" + orderCode
+            })
+        })
+
+        function showImg(imgSrc) {
+            if (!imgSrc) {
+                retunn
+            }
+            $("body").append('<div id="showImgDiv" onclick="$(this).remove()" style="overflow-y:scroll;display: flex;background: #00000070;height: 100%;width: 100%;position: fixed;z-index: 9999;padding: 20px;top: 0px;box-sizing: border-box;align-items: center;justify-content: center;"><img src="' + imgSrc + '"></div>')
+        }
+
+        /******* 获取url参数(正则)********/
+        function getParam(name) {
+            var search = document.location.search;
+            // alert(search);
+            var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g");
+            var matcher = pattern.exec(search);
+            var items = null;
+            if (null != matcher) {
+                try {
+                    items = decodeURIComponent(decodeURIComponent(matcher[1]));
+                } catch (e) {
+                    try {
+                        items = decodeURIComponent(matcher[1]);
+                    } catch (e) {
+                        items = matcher[1];
+                    }
+                }
+            }
+            return items;
+        };
+
+        function formatTime(t) {
+            try {
+                return t.substring(0, 10).replace(/\-/g, "/")
+            } catch (e) {
+                if (t === null) {
+                    t = "";
+                }
+                return t
+            }
+        }
+
+        // 格式化金钱的函数
+        // s: 金额(number) 必传
+        // n: 保留小数的位数(int:0-100)
+        function formatMoney(s, n) {
+            if (n === undefined) {
+                n = -1
+            } else {
+                n = n > 0 && n <= 20 ? n : 2;
+            }
+            var intS = parseInt(s)
+            var point = '.'
+            var left;
+            var right;
+            s = parseFloat((s + '').replace(/[^\d\.-]/g, ''))
+            // 没传n,默认(如果为整数,则不保留小数。如果为浮点数,则保留两位小数)
+            if (n === -1) {
+                if (s === intS) {
+                    n = 0
+                    right = ''
+                    point = ''
+                } else {
+                    n = 2
+                    s = s.toFixed(n);
+                    right = s.split('.')[1];
+                }
+                s = s + ''
+                left = s.split('.')[0].split("").reverse();
+            } else {
+                s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';
+                left = s.split('.')[0].split('').reverse();
+                right = s.split('.')[1];
+            }
+
+            t = "";
+            for (i = 0; i < left.length; i++) {
+                t += left[i] + ((i + 1) % 3 == 0 && (i + 1) != left.length ? ',' : '');
+            }
+
+            var money = t.split('').reverse().join('') + point + right;
+            return money;
+        }
+
+        //查看发票
+        function checkinvoice(flag, orderCode) {
+            if (flag === 2) {
+                var showHtml = '<div style="width: 100%;height: 100%;z-index: 999; position: absolute;top: 0;background: rgba(0, 0, 0, 0.65);">   <div style="position: fixed;z-index: 9999;width: 540px;height: 262px;left: 50%;top: 30%;margin-left: -270px;background-color: #fff;border-radius: 6px;padding: 32px;display: flex;flex-direction: column;justify-items: center;align-items: center;">       <div class="invoice_title" style="color: #1D1D1D;font-size: 18px;line-height: 28px;">提示</div>       <div class="invoice_body"            style="height: 78px;margin: 20px 0px;font-size: 14px;line-height: 24px;text-align: center;">           您已开具发票<br>           如有问题请联系客服<br>           400-108-6670       </div>       <div class="invoice_control"            style="width: 132px;height: 36px;text-align: center;background: #2CB7CA;border-radius: 6px;font-size: 16px;line-height: 36px;color: #FFFFFF;cursor: pointer;"            onclick="document.querySelector(\'#invoice_tip\').remove()"       >           我知道了       </div>   </div>\n</div>'
+                var div_invoice_tip = document.createElement('div');
+                div_invoice_tip.innerHTML = showHtml;
+                div_invoice_tip.id = "invoice_tip"
+                document.body.appendChild(div_invoice_tip)
+                return
+            }
+            window.open("/front/order/check_invoice/" + orderCode, '_self');
+        }
+    </script>
+</body>
+</html>

+ 31 - 0
src/web/templates/pc/myOrder.html

@@ -857,6 +857,35 @@
                                 m_status_html += '<p class="finish_status">已取消</p>'
                             }
                             m_status_html += '<p><a onclick="toDetail(\'' + orderCode + '\',10);">查看详情</a></p>'
+                        }else if  (obj.product_type == "剑鱼币") {
+                           var filter_ = JSON.parse(obj.filter)
+                            console.log(filter_.count)
+                            var imgurl = "/order/image/jianyubi.png";
+                            shop_img_html += '<img src=' + imgurl + ' alt="">'
+                            shop_main_html += '<p style="line-height: 24px;">产品类型:' + obj.product_type + '</p>'
+                                + '<p style="line-height: 24px;">数量:' + filter_.score + '枚</p>'
+                                + '<p style="line-height: 24px;">有效日期:永久</p>'
+                            if (orderStatus === 0) {//0:待付款;
+                                var payNameTmp = "去支付"
+                                m_status_html += '<p class="finish_status">待付款</p>'
+
+                                orderStatusClassOne = "blueColor"
+                                orderStatusClassTwo = "blueBg"
+                                if (!(obj.pay_way === "transferAccounts" && (obj.course_status === 2 || obj.course_status === 4))) {
+                                    m_handle_html += '<p><a href="/front/integral/orderPay/' + orderCode + '" class="go_pay">' + payNameTmp + '</a></p>'
+                                        + '<p><a  orderCode="' + orderCode + '" onclick="toCancel(' + id + ',this,\'\',10)">取消订单</a></p>'
+                                }
+                            } else if (orderStatus === 1) {//已完成
+                                m_status_html += '<p class="finish_status">已完成</p>'
+                                if (obj.applybill_status === 0) {
+                                    m_handle_html += '<p><a onclick="check_over(\'' + orderCode + '\')">开发票</a></p>';
+                                } else if (obj.applybill_status === 1 || obj.applybill_status === 2) {
+                                    m_handle_html += '<p><a onclick="checkinvoice(' + obj.applybill_status + ',\'' + "/front/order/check_invoice/" + orderCode + '\')">发票信息</a></p>'
+                                }
+                            } else if (orderStatus === -2 || orderStatus === -3) {//已取消
+                                m_status_html += '<p class="finish_status">已取消</p>'
+                            }
+                            m_status_html += '<p><a onclick="toDetail(\'' + orderCode + '\',11);">查看详情</a></p>'
                         }
                         if (shop_img_html!=""&&shop_main_html!=""&&priceHtml!=""){
                           var money="¥"+FormatNum(orderMoney);
@@ -1030,6 +1059,8 @@
             window.open("/front/subAccount/subAccountDetail?order_code=" + orderCode);
         } else if (n === 10) {
             window.open("/front/bidfile/bidfileDetail?order_code=" + orderCode);
+        }else if (n===11){
+            window.open("/front/integral/integralDetail?order_code=" + orderCode);
         }
     }
 

+ 422 - 0
src/web/templates/weixin/commonPay/integral/integralDetail.html

@@ -0,0 +1,422 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>订单详情</title>
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="viewport"
+          content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <script src="/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" type="text/css"
+          href="{{Msg "seo" "cdn"}}/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" type="text/css"
+          href="{{Msg "seo" "cdn"}}/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/vip_order_detail.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="/css/wxbutton.css?v={{Msg "seo" "version"}}">
+    {{include "/common/weixin.html"}}
+    <script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
+</head>
+<style>
+    .stop {
+        overflow: hidden;
+        height: 100%;
+    }
+
+    .va-total-container .total-price {
+        font-weight: 400 !important;
+        font-size: 0.36rem !important;
+        color: #FB483D !important;
+    }
+
+    body, html {
+        height: 100%;
+    }
+
+    .bill-origin-price {
+        display: none;
+        align-items: center;
+        justify-content: flex-end;
+        padding: 0 .32rem;
+        color: #9B9CA3;
+        margin-bottom: 0.2rem;
+    }
+
+    .j-button-cancel {
+        margin-right: 0;
+    }
+
+    .bill-origin-price .price-num {
+        text-decoration: line-through;
+    }
+
+    .page.pinch-zoom-parent {
+        padding: 20px;
+        height: 100vh;
+        width: 100vw;
+        position: absolute;
+        top: 0;
+        background: rgba(0, 0, 0, 44%);
+    }
+
+    .page.pinch-zoom-parent .pinch-zoom-container {
+        height: 100% !important;
+    }
+</style>
+<body>
+<div class="j-container" id="order_detail">
+    <div class="j-body">
+        <div id="card-header-bg">
+            <h3 id="pageTitle"></h3>
+            <!-- <h3>待付款</h3> -->
+            <p class="remaining" hidden></p>
+        </div>
+        <div class="order-main">
+            <div class="vip_order">
+                <div class="top">
+                    <div class="order-img">
+                        <img alt="" src="/order/image/zbwjjd_new.png">
+                    </div>
+                    <div class="order-name">
+                        <p class="o-name"></p>
+                        <p class="o-price price"></p>
+                    </div>
+                </div>
+                <div class="middle">
+                    <div class="title">购买信息</div>
+                    <div class="list">
+                        <p class="l-item line_level">
+                            <span>产品类型:</span>
+                            <span class="item-list-parents level_value value">招标文件解读</span>
+                        </p>
+                        <p class="l-item line_count">
+                            <span>购买次数:</span>
+                            <span class="item-list-parents count_value value"></span>
+                        </p>
+                        <p class="l-item line_date">
+                            <span>有效日期:</span>
+                            <span class="item-list-parents date_value value">2021/11/15到期</span>
+                        </p>
+                        </p>
+                    </div>
+                </div>
+                <div class="bottom">
+                    <div class="title">订单信息</div>
+                    <div class="list">
+                        <p class="l-item">
+                            <span class="label">订单编号:</span>
+                            <span class="orderCode value"></span>
+                        </p>
+                        <p class="l-item">
+                            <span class="label">下单时间:</span>
+                            <span class="prepayTime value"></span>
+                        </p>
+                        <!-- 订单状态为已完成时显示支付时间、支付方式和订单号,状态为待付款时不显示 -->
+                        <p class="l-item line_paytime" style="display:none">
+                            <span class="label" id="paytime">支付时间:</span>
+                            <span class="payTime value"></span>
+                        </p>
+                        <p class="l-item line_payway" style="display:none">
+                            <span class="label">支付方式:</span>
+                            <span class="payWay value"></span>
+                        </p>
+                        <p class="l-item line_transaction" style="display:none">
+                            <span class="label">支付单号:</span>
+                            <span class="transaction_id value"></span>
+                        </p>
+                        <p class="l-item paymoney" style="display: none">
+                            <span class="label" id="price">实付金额:</span>
+                            <span class="value price"></span>
+                        </p>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="j-footer j-button-group" style="display: none"></div>
+</div>
+<div class="page pinch-zoom-parent" style="z-index: -1">
+    <div class="pinch-zoom">
+        <img src="/courseFile/2020/10/28/20201028163700010351920Sv.jpg"/>
+    </div>
+</div>
+</body>
+<script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
+<script src="{{Msg "seo" "cdn"}}/big-member/js/pinch-zoom.js?v={{Msg "seo" "version"}}"></script>
+<script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+<script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+<script>
+    var orderCode ={{.T.order_code}};
+    $(function () {
+        $.post("/subscribepay/orderListDetails/getBidileDetail", {"order_code": orderCode}, function (r) {
+            if (r) {
+                //订单信息
+                $(".orderCode").text(orderCode);
+                var filterObj = JSON.parse(r.data.filter);
+                if (r.data.order_status == -1) {
+                    $(".nothing").show();
+                    $("#order_detail").hide();
+                }
+                //下单时间
+                if (r.data.create_time) {
+                    $(".prepayTime").text(r.data.create_time.replace("-", ".").replace("-", "."));
+                }
+                //价格
+                var priceText = "¥ " + formatMoney((r.data.order_money / 100))
+                if (r.data.order_status == 1) {
+                    priceText = "¥ " + formatMoney((r.data.pay_money / 100));
+                }
+                $(".price").text(priceText);
+                $(".count_value").text(filterObj.count + "次");
+            }
+            //
+            if (r.data.order_status == 1) {
+                $("#card-header-bg").addClass("bg finish-bg")
+                $("#pageTitle").addClass("status")
+                $("#pageTitle").text("已完成");
+
+                //有效周期
+                $(".line_cycle").css("display", "");
+
+                var pay_again = ""
+                //发票
+                if (r.data.applybill_status === 0) {
+                    //已支付未申请发票
+                    pay_again += "<button class=\"j-button-cancel\" onclick='invoiceAdd()'>开发票</button>"
+                } else if (r.data.applybill_status === 1 || r.data.applybill_status === 2) {
+                    //已支付已申请发票
+                    pay_again += "<button class=\"j-button-cancel\" onclick='checkInvoice(" + r.data.applybill_status + ")'>查看发票</button>"
+                }
+                $('.j-footer').show().html(pay_again);
+
+                //支付方式
+                if (r.data.pay_way.indexOf("wx") > -1) {
+                    $(".line_payway").css("display", "");
+                    $(".payWay").text("微信支付");
+                } else if (r.data.pay_way.indexOf("ali") > -1) {
+                    $(".payWay").text("支付宝支付");
+                    $(".line_payway").css("display", "");
+                } else if (r.data.pay_way === "transferAccounts") {//试用用户
+                    if (filterObj.transferV) {
+                        initImgView(filterObj.transferV)
+                        $(".payWay").html("公对公转账<span style='color: #2ABED1' onclick='showImg()'>&nbsp;查看凭证</span>");
+                    }
+                    $(".line_payway").css("display", "");
+
+                    $(".l-item.paymoney").css("display", "");
+                    $(".price").text("¥ " + formatMoney(r.data.pay_money / 100) + "元");
+                    return
+                } else {//试用用户
+                    $(".invoice").css("display", "none");
+                    return
+                }
+                $(".l-item.paymoney").css("display", "");
+                $(".price").text("¥ " + formatMoney(r.data.pay_money / 100) + "元");
+                if (r.data.pay_time) {
+                    $(".line_paytime").css("display", "");
+                    $(".payTime").text(r.data.pay_time.replace("-", ".").replace("-", "."));
+                }
+
+                $(".line_transaction").css("display", "");
+                if (r.data.prepay_id) $(".transaction_id").text(r.data.prepay_id);
+
+            }
+            if (r.data.order_status == 0) {
+                //未支付
+                $("#card-header-bg").addClass("bg nopay-bg")
+                $("#pageTitle").addClass("status")
+
+                if (r.data.pay_way === "transferAccounts") {
+                    $(".l-item.paymoney").css("display", "");
+                    $(".paymoney .price").text("-");
+                    if (r.data.course_status === 2) {
+                        $("#pageTitle").text("转账审核中");
+                    } else if (r.data.course_status === 3) {
+                        $("#pageTitle").text("未收到转账");
+                        $(".remaining").show().text("客服电话:400-108-6670")
+
+                        $(".j-footer").show().html("<button class='j-button-confirm' style='width: 100%!important;' >再次支付</button>").on("click", function () {
+                            window.location.href = "/weixin/pay/checkout_member?orderCode=" + orderCode;
+                        })
+                    }
+                    if (filterObj.transferV) {
+                        initImgView(filterObj.transferV)
+                        $(".payWay").html("公对公转账<span style='color: #2ABED1' onclick='showImg()'>&nbsp;查看凭证</span>");
+                    }
+                    $(".line_payway").css("display", "");
+                    return
+                }
+
+                $("#pageTitle").text("待付款");
+                $(".remaining").show()
+                var order_create_time = r.data.create_time
+                order_create_time = order_create_time.replace(/-/g, '/')
+                var downtime = r.data.order_countdown.split("h")[0]
+                downtime = downtime * 60 * 60 * 1000
+                var create_unix = new Date(order_create_time).getTime();
+                var t = setInterval(() => {
+                    var nowtime = new Date()  //获取当前时间
+                    endtime = new Date(order_create_time);  //定义结束时间
+                    var lefttime = endtime.getTime() + downtime - nowtime.getTime() //距离结束时间的毫秒数
+                    if (Math.floor(lefttime % 1000) <= 0) {
+                        clearInterval(t)
+                        $.ajax({
+                            type: "post",
+                            url: "/subscribepay/orderListDetails/deleteOrder",
+                            data: {
+                                "id": r.data.order.id,
+                                "pageNum": 1,
+                                "type": 1,
+                                "cancel": "cancel"
+                            },
+                            dataType: 'json',
+                            success: function () {
+                                $(".nopay-bg h3").text("已取消")
+                                $(".remaining").text("")
+                                $(".nopay-bg").removeClass("nopay-bg").addClass("cancel-bg")
+                            }
+                        })
+                    } else {
+                        var hour = Math.floor(lefttime / (1000 * 60 * 60)),  //计算小时数
+                            hour = hour < 10 ? '0' + hour : hour;
+                        var minute = Math.floor(lefttime / (1000 * 60) % 60),  //计算分钟数
+                            minute = minute < 10 ? '0' + minute : minute;
+                        var seconds = Math.floor(lefttime / 1000 % 60);  //计算秒数
+                        seconds = seconds < 10 ? '0' + seconds : seconds;
+                        $(".remaining").text("剩余支付时间" + hour + ":" + minute + ":" + seconds)
+                    }
+                }, 1000)
+                $(".invoice").hide();//隐藏开发票
+                $(".j-footer").show().html("<button class='j-button-confirm' style='width: 100%!important;' >去支付</button>").on("click", function () {
+                    window.location.href = "/weixin/pay/checkout_bidfile?orderCode=" + orderCode;
+                })
+            }
+            if (r.data.order_status == -2 || r.data.order_status == -3) {
+                $("#card-header-bg").addClass("bg cancel-bg")
+                $("#pageTitle").addClass("status")
+                $("#pageTitle").text("已取消");
+                $(".invoice").css("display", "none");//隐藏开发票
+            }
+        })
+
+        $(".page.pinch-zoom-parent").on("click", function () {
+            $(this).css("display", "none");
+        })
+    })
+
+    //苹果端  刷新js
+    $(function () {
+        var isPageHide = false;
+        window.addEventListener('pageshow', function () {
+            if (isPageHide) {
+                location.reload();
+            }
+        });
+        window.addEventListener('pagehide', function () {
+            isPageHide = true;
+        });
+    });
+
+    //开发票
+    function invoiceAdd() {
+        $.post("/subscribepay/orderListDetails/isOver", {"order_code": orderCode}, function (data) {
+            if (data.status === 1) {
+                window.location.href = "/front/invoice/showpage?order_code=" + orderCode;
+            } else {
+                window.location.href = "/front/invoice/cantInvoice";
+            }
+        })
+    }
+
+    //再次购买
+    function payAgain() {
+        window.location.href = "/front/vipsubscribe/vipsubscribe_new";
+    }
+
+    //查看发票
+    function checkInvoice(flag) {
+        if (flag === 2) {
+            weui.alert('您已开具发票<br>如有问题请联系客服<br>400-108-6670', {
+                buttons: [{
+                    label: '我知道了',
+                    type: 'primary'
+                }]
+            });
+            return
+        }
+        window.location.href = "/front/invoice/check_invoice.html?order_code=" + orderCode
+    }
+
+    function formatTime(t) {
+        try {
+            return t.substring(0, 10).replace(/\-/g, ".")
+        } catch (e) {
+            if (t === null) {
+                t = "";
+            }
+            return t
+        }
+    }
+
+    // 格式化金钱的函数
+    // s: 金额(number) 必传
+    // n: 保留小数的位数(int:0-100)
+    function formatMoney(s, n) {
+        if (n === undefined) {
+            n = -1
+        } else {
+            n = n > 0 && n <= 20 ? n : 2;
+        }
+        var intS = parseInt(s)
+        var point = '.'
+        var left;
+        var right;
+        s = parseFloat((s + '').replace(/[^\d\.-]/g, ''))
+        // 没传n,默认(如果为整数,则不保留小数。如果为浮点数,则保留两位小数)
+        if (n === -1) {
+            if (s === intS) {
+                n = 0
+                right = ''
+                point = ''
+            } else {
+                n = 2
+                s = s.toFixed(n);
+                right = s.split('.')[1];
+            }
+            s = s + ''
+            left = s.split('.')[0].split("").reverse();
+        } else {
+            s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';
+            left = s.split('.')[0].split('').reverse();
+            right = s.split('.')[1];
+        }
+
+        t = "";
+        for (i = 0; i < left.length; i++) {
+            t += left[i] + ((i + 1) % 3 == 0 && (i + 1) != left.length ? ',' : '');
+        }
+
+        var money = t.split('').reverse().join('') + point + right;
+        return money;
+    }
+
+    function initImgView(imgSrc) {
+        if (imgSrc) {
+            $(".pinch-zoom").html(' <img src="' + imgSrc + '"/>')
+            var el = document.querySelector('div.pinch-zoom');
+            new PinchZoom.default(el, {});
+        }
+    }
+
+    function showImg() {
+        $(".page.pinch-zoom-parent").css("display", "").css("z-index", "999")
+    }
+
+
+</script>
+{{include "/common/baiducc.html"}}
+</html>

+ 90 - 0
src/web/templates/weixin/commonPay/myOrder.html

@@ -1873,6 +1873,96 @@
                     + '</div>'
                     + lastHtml
                     + '</div>'
+            }else if (obj.product_type === "剑鱼币") {
+                if (typ === 1 || $(".tab-link.active").index() === 1) {	//待付款订单列表页
+                    if (obj.order_status === -2) {
+                        continue;
+                    }
+                }
+                count++;
+                var id = obj.id;
+                //订单编号
+                var orderCode = obj.order_code;
+                //创建时间
+                var createTime = obj.create_time;
+                createTime = createTime.replace(/-/g, ".")
+                var filterObj = JSON.parse(obj.filter);
+                var level = filterObj.level;
+                var level_map = new Map();
+                var expert = new Map();
+                var imgurl = "/order/image/jianyubi.png";
+                var orderStatus = obj.order_status;
+                var orderStatusHtml = "";
+                var orderStatusHtmls = "";
+                var orderMoney = obj.order_money;
+                var applybill_status = obj.applybill_status;
+                var pushTime = new Date(pushTimeStamp * 1000)
+
+                var lastHtml = "";
+                var orderUrl = "/front/wxMyOrder/integralDetail/" + orderCode;
+
+                if (orderStatus === 0) {
+                    var payNameTmp = "去支付"
+                    if (obj.pay_way === "transferAccounts") {
+                        orderStatusHtmls = "refund";
+                        if (obj.course_status === 2) {
+                            orderStatusHtml = "转账审核中";
+                        } else if (obj.course_status === 3) {
+                            orderStatusHtml = "未收到转账";
+                            payNameTmp = "再次支付"
+                        }
+                    } else {
+                        orderStatusHtml = "待付款";
+                        orderStatusHtmls = "notpay";
+                    }
+                    if (!(obj.pay_way === "transferAccounts" && (obj.course_status === 2 || obj.course_status === 4))) {
+                        lastHtml = '<div class="card-footer">'
+                            + '<a class="btn cancle" onclick="cancelOrder(' + id + ',this)">取消订单</a>'
+                            + '<a onclick="window.location.href=\'' + '/weixin/pay/checkout_bidfile?orderCode=' + orderCode + '\'" class="btn green-btn">' + payNameTmp + '</a>'
+                            + '</div>';
+                    }
+                } else if (orderStatus === 1) {
+                    orderStatusHtml = "已完成";
+                    orderStatusHtmls = "finish";
+
+                    if (applybill_status === 0) {
+                        lastHtml = '<div class="card-footer">'
+                            + '<a onclick="invoiceAdd(this)" class="btn  gray-btn">开发票</a>'
+                            + '</div>'
+                    } else if (applybill_status === 1 || applybill_status === 2) {
+                        lastHtml = '<div class="card-footer">'
+                            + '<a onclick = "checkinvoice(this,' + applybill_status + ')" class="btn  gray-btn">查看发票</a>'
+                            + '</div>'
+                    }
+                } else {
+                    orderStatusHtml = "已取消";
+                    orderStatusHtmls = "status-text";
+                }
+                listhtml += '<div class="card">'
+                    + '<div class="card-header">'
+                    + '<span class="time" style="color:#888888">' + createTime + '</span>'
+                    + '<span class="status ' + orderStatusHtmls + '">'
+                    + '<span class="status-text">' + orderStatusHtml + '</span>'
+                    + '<a class="delete_icon" title="删除订单" onclick="deleteOrder(\'' + id + '\',this)"></a>'
+                    + '</span>'
+                    + '</div>'
+                    + '<div class="card-content">'
+                    + '<a onclick="setSessionStorage()" href="' + orderUrl + '" eid="' + orderCode + '" class="media" datareportOrder="true">'
+                    + '<div class="media-img">'
+                    + '<img src="' + imgurl + '">'
+                    + '</div>'
+                    + '<div class="media-info">'
+                    + '<p class="item-ifo ellipsis">产品类型:剑鱼币</p>'
+                    + '<p class="item-ifo ellipsis">数量:' + filterObj.score + '枚</p>'
+                    + '<p class="item-ifo ellipsis">有效日期:永久</p>'
+                    + '</div>'
+                    + '</a>'
+                    + '<div class="price">'
+                    + '<strong class="current">¥' + formatMoney(orderMoney) + '</strong>'
+                    + '</div>'
+                    + '</div>'
+                    + lastHtml
+                    + '</div>'
             }
         }
         appendList($(listhtml));