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

Merge branch 'dev2.1.1' of http://192.168.3.207:10080/qmx/jy into dev2.1.1

zhangjinkun 7 жил өмнө
parent
commit
0cb23f0fc4
100 өөрчлөгдсөн 562 нэмэгдсэн , 275 устгасан
  1. 105 14
      src/config.json
  2. 1 1
      src/jfw/filter/logfilter.go
  3. 143 0
      src/jfw/front/front.go
  4. 3 2
      src/jfw/front/search.go
  5. 33 6
      src/jfw/front/shorturl.go
  6. 85 27
      src/jfw/front/swordfish.go
  7. 2 2
      src/jfw/jgpush/jgpush.go
  8. 2 2
      src/jfw/modules/app/src/config.json
  9. 8 8
      src/jfw/modules/app/src/jfw/followent/followent.go
  10. 2 2
      src/jfw/modules/app/src/jfw/followent/myfwent.go
  11. 0 62
      src/jfw/modules/app/src/jfw/front/follow.go
  12. 86 57
      src/jfw/modules/app/src/jfw/front/login.go
  13. 0 2
      src/jfw/modules/app/src/jfw/tag/msg.go
  14. 1 1
      src/jfw/modules/app/src/main.go
  15. 1 1
      src/jfw/modules/app/src/seo.json
  16. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/animate.css
  17. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/bootstrap.min.css
  18. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/bootswatch.min.css
  19. 2 2
      src/jfw/modules/app/src/web/staticres/jyapp/css/common.css
  20. 14 14
      src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/biddingSearch.css
  21. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/reset.css
  22. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/reset_pc.css
  23. 6 6
      src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/search-index.css
  24. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/superSearch.css
  25. 4 4
      src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/syz-public-href.css
  26. 6 6
      src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/syzindex.css
  27. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/css/dropload.css
  28. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/follow.css
  29. 10 10
      src/jfw/modules/app/src/web/staticres/jyapp/css/font.css
  30. 5 5
      src/jfw/modules/app/src/web/staticres/jyapp/css/jy.css
  31. 30 29
      src/jfw/modules/app/src/web/staticres/jyapp/css/layout.css
  32. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/mobile.css
  33. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/reset.css
  34. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/unicorn.grey.css
  35. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/unicorn.main.css
  36. 2 1
      src/jfw/modules/app/src/web/staticres/jyapp/css/wxkeyset.css
  37. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/wxlist.css
  38. 10 10
      src/jfw/modules/app/src/web/staticres/jyapp/css/wxsearch.css
  39. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/favicon.ico
  40. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/followent/css/follow.css
  41. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/followent/images/wx/d.png
  42. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/followent/images/wx/jyclock.png
  43. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/followent/images/wx/jydustbin.png
  44. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/followent/images/wx/jyprompt.png
  45. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/followent/images/wx/nullxx.png
  46. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/followent/mobiscroll/mobiscroll.min.css
  47. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/followent/mobiscroll/mobiscroll.min.js
  48. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts.zip
  49. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/glyphicons-halflings-regular.eot
  50. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/glyphicons-halflings-regular.svg
  51. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/glyphicons-halflings-regular.ttf
  52. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/glyphicons-halflings-regular.woff
  53. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/glyphicons-halflings-regular.woff2
  54. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/jyAPP.eot
  55. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/jyAPP.svg
  56. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/jyAPP.ttf
  57. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/jyAPP.woff
  58. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/qimingxing.eot
  59. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/qimingxing.svg
  60. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/qimingxing.ttf
  61. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/fonts/qimingxing.woff
  62. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/aboutus.png
  63. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/aboutustext.png
  64. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/allcover-1.png
  65. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/bg.png
  66. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/feedback.png
  67. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/free-1.png
  68. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/help.png
  69. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/linecircle-1.png
  70. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/linecircle-2.png
  71. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/map.png
  72. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/newmap.png
  73. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/openwx-1.png
  74. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/push-1.png
  75. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/sign.png
  76. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/subscribe-1.png
  77. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/target.png
  78. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/whatisjy.png
  79. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/adv-wxggfw.jpg
  80. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/adv.jpg
  81. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/advert.png
  82. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/jyqingchu.png
  83. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/jysorry_1.png
  84. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/jywxjs.png
  85. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/jyyjfk.png
  86. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/sys-jt-bottom.png
  87. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/sys-jt-bottom2.png
  88. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/help-b.png
  89. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/icon-like.png
  90. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/icon-right-bg.png
  91. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/loading.gif
  92. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/search/dy_close.png
  93. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/search/history.png
  94. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/search/history_clean.png
  95. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/search/icon-right-bg.png
  96. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/search/msgset.png
  97. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/search/search-index-bg.png
  98. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/search/search-index-clear.png
  99. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/search/search-index-submit-right.png
  100. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/images/search/search-index-submit.png

+ 105 - 14
src/config.json

@@ -4,18 +4,18 @@
     "mongodbName": "qfw",
     "influxaddr": "http://192.168.3.207:8086",
     "influxdb": "jy_logs",
-	"qrModelID":"2",
-	"numTimeNumber":15,
-	"strTimeNumber":30,
-    "elasticsearch": "http://192.168.3.18:9200",
+    "qrModelID": "2",
+    "numTimeNumber": 15,
+    "strTimeNumber": 30,
+    "elasticsearch": "http://192.168.3.18:9800",
     "elasticPoolSize": 30,
-    "redisaddrs": "other=192.168.3.14:3379,push=192.168.3.14:3379,sso=192.168.3.14:3379,session=192.168.3.14:3379",
+    "redisaddrs": "other=192.168.3.18:3379,push=192.168.3.18:3379,sso=192.168.3.18:3379,session=192.168.3.18:3379,recovery=192.168.3.18:3380",
     "webport": "8089",
     "webrpcport": "8084",
     "weixinrpc": "127.0.0.1:8083",
     "cacheflag": false,
     "agreement": "http",
-    "webdomain": "http://webwcj.qmx.top",
+    "webdomain": "http://webws.qmx.top",
     "redirect": {
         "searchinfo": "/jylab/mainSearch",
         "rssset": "/wxkeyset/keyset/index",
@@ -23,8 +23,8 @@
         "wxpushlist": "/wxpush/bidinfo/%s",
         "share": "/swordfish/guide/share",
         "myfollow": "/follow/list",
-		"newInfoFollow": "/jylab/followent/newInfo/%s",
-		"entListFollow": "/jylab/followent/entList",
+        "newInfoFollow": "/jylab/followent/newInfo/%s",
+        "entListFollow": "/jylab/followent/entList",
         "pcmyfollow": "/follow/set/list/%s",
         "feedback": "/swordfish/feedback",
         "wxpushfollowlist": "/follow/notice/%s/%s",
@@ -35,10 +35,10 @@
         "followset": "/follow/set/%s/%s",
         "myfeedbacks": "/swordfish/myFeedbacks",
         "zqluckdraw": "/active/zqLuckdraw",
-		"followent":"/jylab/followent/entList",
-		"labindex":"/jylab/index",
-		"qrToLab":"/jylab/qrToLab/%s",
-		"searchKeyword":"/jylab/searchKeyword/%s"
+        "followent": "/jylab/followent/entList",
+        "labindex": "/jylab/index",
+        "qrToLab": "/jylab/qrToLab/%s",
+        "searchKeyword": "/jylab/searchKeyword/%s"
     },
     "jy_activeset": {
         "activitystartcode": "3201000000",
@@ -95,6 +95,97 @@
         "弹指一挥间,剑鱼因你而不同!",
         "携手同行,认真对待每一次招投标"
     ],
+    "recoveryText": [
+        "火眼金睛的你,已超越99%的同行!",
+        "剑鱼君知错了,这就去改。",
+        "感谢你及时纠正了我的胡说八道!",
+        "剑鱼已收到指示,并给你手动点赞。",
+        "感谢纠错,剑鱼正在火速补救。",
+        "听说帮剑鱼纠错的人最后都中了标!",
+        "你帮助了众多投标人,很棒棒哟!",
+        "不嫌千辛万苦来纠错,剑鱼给你小心心!",
+        "感谢你的火眼金睛,剑鱼光速更新中...",
+        "老铁,我已收到,欢迎将纠错进行到底。"
+    ],
+    "recoveryRight": [
+        "火眼金睛的你,已超越99%的同行!",
+        "剑鱼已收到指示,并给你手动点赞。",
+        "你帮助了众多投标人,很棒棒哟!"
+    ],
+    "recoveryField": {
+        "招标": [
+            {
+                "proportion": 15,
+                "field": "projectname"
+            },
+            {
+                "proportion": 5,
+                "field": "budget"
+            },
+            {
+                "proportion": 15,
+                "field": "buyer"
+            },
+            {
+                "proportion": 5,
+                "field": "agency"
+            },
+            {
+                "proportion": 15,
+                "field": "winner"
+            },
+            {
+                "proportion": 15,
+                "field": "bidopentime"
+            },
+            {
+                "proportion": 15,
+                "field": "buyerperson"
+            },
+            {
+                "proportion": 15,
+                "field": "buyertel"
+            }
+        ],
+        "其他": [
+            {
+                "proportion": 8,
+                "field": "projectname"
+            },
+            {
+                "proportion": 12,
+                "field": "budget"
+            },
+            {
+                "proportion": 8,
+                "field": "buyer"
+            },
+            {
+                "proportion": 12,
+                "field": "agency"
+            },
+            {
+                "proportion": 12,
+                "field": "winner"
+            },
+            {
+                "proportion": 12,
+                "field": "bidamount"
+            },
+            {
+                "proportion": 12,
+                "field": "bidopentime"
+            },
+            {
+                "proportion": 12,
+                "field": "buyerperson"
+            },
+            {
+                "proportion": 12,
+                "field": "buyertel"
+            }
+        ]
+    },
     "advertImg": "/images/advert.png",
     "advertName": "广告",
     "advertUrl": "/swordfish/about",
@@ -109,6 +200,6 @@
             "detailmsg": "招标推送信息[%s] 打赏%s元钱"
         }
     },
-	"industry":"分类综合测试",
-    "recommendEntLimit":"50"
+    "industry": "分类综合测试",
+    "recommendEntLimit": "50"
 }

+ 1 - 1
src/jfw/filter/logfilter.go

@@ -72,7 +72,7 @@ var lock sync.Mutex
 
 //用线程处理,增加日志
 const (
-	URL = "127.0.0.1-www.zhaobiao.info"
+	URL = "127.0.0.1-www.jianyu360.com"
 )
 
 func addLog(l *logfilter, session *httpsession.Session, req *http.Request) {

+ 143 - 0
src/jfw/front/front.go

@@ -9,6 +9,8 @@ import (
 	"jfw/tools"
 	"jfw/wx"
 	"log"
+	"math/rand"
+	"strconv"
 	//"math/rand"
 	"qfw/util"
 	"qfw/util/elastic"
@@ -109,6 +111,7 @@ type Front struct {
 	advservices     xweb.Mapper `xweb:"/front/advservices.html"` //广告服务
 	extension       xweb.Mapper `xweb:"/extension/(.*).html"`    //推广页面
 	//getQR           xweb.Mapper `xweb:"/front/getQR"`            //取二维码
+	recInof xweb.Mapper `xweb:"/front/recovery/info"` //纠错记录
 }
 
 var sewx util.SimpleEncrypt //微信的加密方法
@@ -129,6 +132,146 @@ func init() {
 	//up.user = make(map[string]*map[string]interface{})
 }
 
+//
+func (f *Front) RecInof() error {
+	var msg = ""
+	var flag = true
+	var tyflag = false
+	id := util.DecodeArticleId2ByCheck(f.GetString("id"))[0] //文章id
+	fieldName := f.GetString("fieldName")                    //纠错字段
+	fwtScode := f.GetString("fwtscode")                      //纠错前权重最低字段
+	if strings.Contains(fieldName, "price") || strings.Contains(fieldName, "bidamount") || strings.Contains(fieldName, "budget") {
+		//tyflag = true
+	}
+	reccont := f.GetString("reccont")           //纠错之后的内容
+	originalcont := f.GetString("originalcont") //纠错之前的内容
+	//纠错随机回复
+	recoveryText, _ := config.Sysconfig["recoveryText"].([]interface{})
+	recVal := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(recoveryText))
+	msg = util.ObjToString(recoveryText[recVal])
+	myopenid, _ := f.Session().Get("s_m_openid").(string)
+	data := make(map[string]interface{})
+	var obj map[string]interface{}
+	if myopenid != "" && fieldName != "" {
+		data["s_nickname"] = util.ObjToString(f.GetSession("s_nickname"))
+		data["s_openid"] = myopenid
+		fields := strings.Split(fieldName, "-")
+		if len(fields) == 1 {
+			data["s_field"] = fieldName //纠错字段
+		} else if len(fields) == 2 {
+			var fdone = fields[0]
+			var fdtwo = fields[1]
+			if strings.Contains(fdone, "winnerorder") {
+				fdone = fdone[len(fdone)-1 : len(fdone)]
+				data["s_field"] = "winnerorder." + fdone + "." + fdtwo //纠错字段
+			} else {
+				data["s_field"] = "package." + fdone + "." + fdtwo //纠错字段
+			}
+		} else if len(fields) == 3 {
+			var fdone = fields[0]
+			var fdtwo = fields[1]
+			var fdthree = fields[2]
+			data["s_field"] = "package." + fdone + ".winnerorder." + fdtwo + "." + fdthree //纠错字段
+		}
+		data["s_beforecont"] = originalcont
+		data["s_aftercont"] = reccont
+		data["s_id"] = id                          //纠错文章id
+		data["l_recoverydate"] = time.Now().Unix() //纠错时间
+		rrid := mongodb.Save("recoveryrecord", data)
+		if len(rrid) > 0 {
+			//log.Println("用户纠错记录保存成功!")
+		}
+		brobj, ok := mongodb.Find("bidding_rec", bson.M{"s_id": id}, `{"l_recoverydate":-1}`, nil, false, 0, 1)
+		if ok && (*brobj) != nil && len(*brobj) == 1 && (*brobj)[0] != nil {
+			obj = (*brobj)[0]
+		} else {
+			aobj, ok := mongodb.FindById("bidding", id, nil)
+			if ok && (aobj == nil || *aobj == nil || len(*aobj) == 0) {
+				aobj, ok = mongodb.FindById("bidding_back", id, nil)
+			}
+			obj = *aobj
+		}
+		if ok && obj != nil && len(obj) != 0 {
+			obj["s_id"] = id
+			obj["l_recoverydate"] = time.Now().Unix()
+			var packageArr = util.ObjToMap(obj["package"])
+			if len(fields) == 1 {
+				if tyflag {
+					obj[fieldName], _ = strconv.ParseFloat(reccont, 64)
+				} else {
+					obj[fieldName] = reccont
+				}
+			} else if len(fields) == 2 {
+				var fdone = fields[0]
+				var fdtwo = fields[1]
+				if strings.Contains(fdone, "winnerorder") {
+					var winnerorderArr = obj["winnerorder"].([]interface{})
+					fdone = fdone[len(fdone)-1 : len(fdone)]
+					kk, _ := strconv.Atoi(fdone)
+					if len(winnerorderArr) > 0 {
+						for k, v := range winnerorderArr {
+							if k == kk {
+								if tyflag {
+									v.(map[string]interface{})[fdtwo], _ = strconv.ParseFloat(reccont, 64)
+								} else {
+									v.(map[string]interface{})[fdtwo] = reccont
+								}
+								break
+							}
+						}
+					}
+				} else {
+					var pkgdata = (*packageArr)[fdone].(map[string]interface{})
+					if tyflag {
+						pkgdata[fdtwo], _ = strconv.ParseFloat(reccont, 64)
+					} else {
+						pkgdata[fdtwo] = reccont
+					}
+				}
+			} else if len(fields) == 3 {
+				var fdone = fields[0]
+				var fdtwo, _ = strconv.Atoi(fields[1])
+				var fdthree = fields[2]
+				var pkgdata = (*packageArr)[fdone].(map[string]interface{})
+				var pkgchilddata = pkgdata["winnerorder"].([]interface{})
+				if len(pkgchilddata) > 0 {
+					for k, v := range pkgchilddata {
+						if k == fdtwo {
+							if tyflag {
+								v.(map[string]interface{})[fdthree], _ = strconv.ParseFloat(reccont, 64)
+							} else {
+								v.(map[string]interface{})[fdthree] = reccont
+							}
+							break
+						}
+					}
+				}
+			}
+			brid := mongodb.Save("bidding_rec", obj)
+			if len(brid) > 0 {
+				redis.Del("other", "jypcdetail__rec"+id)
+				updateLastWrongField(id, fwtScode)
+			}
+		}
+	}
+	f.ServeJson(map[string]interface{}{"msg": msg, "flag": flag})
+	return nil
+}
+
+//更新取到的权重最低的字段到bidding表
+func updateLastWrongField(id, result string) {
+	if result == "" {
+		return
+	}
+	mongodb.Update("bidding", map[string]interface{}{
+		"_id": bson.ObjectIdHex(id),
+	}, map[string]interface{}{
+		"$set": map[string]interface{}{
+			"lastwrongfield": result,
+		},
+	}, false, false)
+}
+
 //轮询查登录状态
 func (f *Front) AjaxPolling() {
 	reqType, _ := f.GetInteger("reqType")

+ 3 - 2
src/jfw/front/search.go

@@ -1,12 +1,13 @@
 package front
 
 import (
-	"github.com/go-xweb/xweb"
-	"gopkg.in/mgo.v2/bson"
 	"jfw/wx"
 	"qfw/util"
 	"qfw/util/redis"
 	"strings"
+
+	"github.com/go-xweb/xweb"
+	"gopkg.in/mgo.v2/bson"
 )
 
 type Search struct {

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

@@ -7,15 +7,16 @@ import (
 	"jfw/config"
 	"jfw/tools"
 	"jfw/wx"
-	//"math/rand"
+	"math/rand"
 	"net/http"
 	"qfw/util"
 	"qfw/util/redis"
 	"regexp"
 	"strings"
-	//"time"
+	"time"
 
 	"github.com/go-xweb/xweb"
+	"gopkg.in/mgo.v2/bson"
 )
 
 var Wxoauth, Wxoauthinfo string
@@ -73,6 +74,8 @@ func (s *Short) Article(stype, id string) error {
 			return nil
 		}
 	}
+	ssOpenid := s.Session().Get("s_m_openid")
+	//redis.Put("recovery", "rec-"+ssOpenid.(string), "T", 60*60*30)
 	if bm {
 		surl := s.GetString("url")
 		kds := s.GetString("keywords")
@@ -108,18 +111,35 @@ func (s *Short) Article(stype, id string) error {
 		s.T["avatar"] = myavatar
 		s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
 		userId, _ := s.GetSession("userId").(string)
+		if userId == "" && ssOpenid != "" {
+			data1, _ := mongodb.FindOneByField("user", bson.M{"s_m_openid": ssOpenid}, `{"_id":1}`)
+			userId = util.BsonIdToSId((*data1)["_id"])
+		}
 		var obj map[string]interface{}
 		obj = wxvisitD(sid, userId, myopenid)
 		if len(obj) > 0 {
 			//获取打赏文案
 			//util.ReadConfig(&config.Sysconfig)
 			s.T["rewardText"], s.T["advertText"] = getRewardText()
+			//纠错随机回复
+			recoveryRight, _ := config.Sysconfig["recoveryRight"].([]interface{})
+			recVal := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(recoveryRight))
+			s.T["recVal"] = util.ObjToString(recoveryRight[recVal])
 			s.T["advertImg"] = config.Sysconfig["advertImg"]
 			s.T["advertName"] = config.Sysconfig["advertName"]
 			s.T["advertUrl"] = config.Sysconfig["advertUrl"]
 			obj["industry"] = industry
+			if ssOpenid != nil {
+				obj["ucbsId"] = util.EncodeArticleId2ByCheck("ucbs#" + ssOpenid.(string) + "#" + id)
+			}
 			s.T["obj"] = obj
-			content, _ := s.Render4Cache("/weixin/wxinfocontent.html", &s.T)
+			var rec = ""
+			if ssOpenid != nil && ssOpenid != "" {
+				if redis.Get("recovery", "rec-"+ssOpenid.(string)) != nil {
+					rec = "_rec"
+				}
+			}
+			content, _ := s.Render4Cache("/weixin/wxinfocontent"+rec+".html", &s.T)
 			//	redis.Put("other", "jywxdetail_"+sid+kds, string(content), 60*60*2)
 			return s.SetBody(content)
 			//}
@@ -137,7 +157,13 @@ func (s *Short) Article(stype, id string) error {
 		//log.Println("sid", sid)
 		kds := s.GetString("kds")
 		industry := s.GetString("industry")
-		res := redis.Get("other", "jypcdetail_"+sid)
+		var rec = ""
+		if ssOpenid != nil && ssOpenid != "" {
+			if redis.Get("recovery", "rec-"+ssOpenid.(string)) != nil {
+				rec = "_rec"
+			}
+		}
+		res := redis.Get("other", "jypcdetail_"+rec+sid)
 		var shareid = s.GetString("id")
 		if len(shareid) == 0 {
 			shareid = "10"
@@ -179,12 +205,13 @@ func (s *Short) Article(stype, id string) error {
 					}
 					jyutil.BidListConvert(industry,&objList)*/
 				obj["industry"] = industry
+				obj["ucbsId"] = util.EncodeArticleId2ByCheck("ucbs#" + ssOpenid.(string) + "#" + id)
 				s.T["obj"] = obj
 				if obj["projectname"] != nil {
 					s.SetSession("projectname", obj["projectname"])
 				}
-				content, _ := s.Render4Cache("/pc/biddetail.html", &s.T)
-				redis.Put("other", "jypcdetail_"+sid, string(content), 60*60*2)
+				content, _ := s.Render4Cache("/pc/biddetail"+rec+".html", &s.T)
+				redis.Put("other", "jypcdetail_"+rec+sid, string(content), 60*60*2)
 				return s.SetBody(content)
 			}
 		} else {

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

@@ -1066,13 +1066,24 @@ func wxvisitD(sid, userId, openId string) (objdata map[string]interface{}) {
 	defer util.Catch()
 	var obj map[string]interface{}
 	if len(sid) > 5 {
-		aobj, ok := mongodb.FindById("bidding", sid, nil)
-		if ok && (aobj == nil || *aobj == nil || len(*aobj) == 0) {
-			aobj, ok = mongodb.FindById("bidding_back", sid, nil)
+		brobj, ok := mongodb.Find("bidding_rec", bson.M{"s_id": sid}, `{"l_recoverydate":-1}`, nil, false, 0, 1)
+		if ok && (*brobj) != nil && len(*brobj) == 1 && (*brobj)[0] != nil {
+			obj = (*brobj)[0]
+		} else {
+			aobj, ok := mongodb.FindById("bidding", sid, nil)
+			if ok && (aobj == nil || *aobj == nil || len(*aobj) == 0) {
+				aobj, ok = mongodb.FindById("bidding_back", sid, nil)
+			}
+			//aobj, ok := elastic.GetByIdField("bidding", "bidding", sid, ""), true
+			obj = *aobj
 		}
-		//aobj, ok := elastic.GetByIdField("bidding", "bidding", sid, ""), true
-		obj = *aobj
 		if ok && obj != nil && len(obj) >= 3 {
+			fwt := util.ObjToString(obj["subtype"])
+			ltfd := getLowestField(fwt)
+			if ltfd != "" {
+				obj["fwtsname"] = obj[ltfd]
+				obj["fwtscode"] = ltfd
+			}
 			obj["_id"] = util.EncodeArticleId2ByCheck(sid)
 			obj["url"] = obj["href"]
 			pt := obj["publishtime"]
@@ -1100,6 +1111,39 @@ func wxvisitD(sid, userId, openId string) (objdata map[string]interface{}) {
 	return obj
 }
 
+//获取权重最低的字段
+func getLowestField(subtype string) string {
+	fields := util.ObjToMap(config.Sysconfig["recoveryField"])
+	result := ""
+	if subtype != "招标" {
+		subtype = "其他"
+	}
+	var fieldsArr = util.ObjArrToMapArr((*fields)[subtype].([]interface{}))
+	i := getWeightRandom(fieldsArr)
+	for k, v := range fieldsArr {
+		if k == i {
+			result = util.ObjToString(v["field"])
+		}
+	}
+	return result
+}
+
+//根据权重随机获取数组的索引
+func getWeightRandom(array []map[string]interface{}) int {
+	var weightSum, stepWeightSum float64
+	for _, v := range array {
+		weightSum += v["proportion"].(float64)
+	}
+	randVal := rand.New(rand.NewSource(time.Now().UnixNano())).Float64()
+	for i := 0; i < len(array); i++ {
+		stepWeightSum += array[i]["proportion"].(float64)
+		if randVal <= stepWeightSum/weightSum {
+			return i
+		}
+	}
+	return 0
+}
+
 func MFollow(userId, pname, pcode, title, openid string) (bool, string) {
 	defer util.Catch()
 	var followId string
@@ -1177,31 +1221,45 @@ func (m *Front) PcVisitRedirect(sid string) {
 func pcVRT(sid, industry string) (po, bo, wo []map[string]interface{}, objdata map[string]interface{}) {
 	defer util.Catch()
 	var projectOther, buyerOther, winnerOther []map[string]interface{}
+	var obj map[string]interface{}
 	if len(sid) > 5 {
 		coll := "bidding"
-		obj, ok := mongodb.FindById(coll, sid, nil)
-		if ok && (obj == nil || *obj == nil || len(*obj) == 0) {
-			coll = "bidding_back"
-			obj, ok = mongodb.FindById(coll, sid, nil)
+		brobj, ok := mongodb.Find("bidding_rec", bson.M{"s_id": sid}, `{"l_recoverydate":-1}`, nil, false, 0, 1)
+		if ok && (*brobj) != nil && len(*brobj) == 1 && (*brobj)[0] != nil {
+			obj = (*brobj)[0]
+		} else {
+			aobj, ok := mongodb.FindById(coll, sid, nil)
+			if ok && (aobj == nil || *aobj == nil || len(*aobj) == 0) {
+				coll = "bidding_back"
+				aobj, ok = mongodb.FindById(coll, sid, nil)
+			}
+			obj = *aobj
 		}
 		//obj, ok := elastic.GetByIdField("bidding", "bidding", sid, ""), true
-		if ok && obj != nil && len(*obj) > 0 {
+		if ok && obj != nil && len(obj) > 0 {
 			//DealInfo(obj, coll)
-			(*obj)["_id"] = util.EncodeArticleId2ByCheck(sid)
-			var infoformat = (*obj)["infoformat"]
+			//fwt := util.ObjToString(obj["fieldweights"])
+			//lwf := util.ObjToString(obj["lastwrongfield"])
+			//ltfd := getLowestField(fwt, lwf)
+			//if ltfd != "" {
+			//	obj["fwtsname"] = obj[ltfd]
+			//	obj["fwtscode"] = ltfd
+			//}
+			obj["_id"] = util.EncodeArticleId2ByCheck(sid)
+			var infoformat = obj["infoformat"]
 			if infoformat != nil && infoformat != "" {
-				(*obj)["infoformat"] = util.IntAll(infoformat)
+				obj["infoformat"] = util.IntAll(infoformat)
 			}
-			if strings.Trim(util.ObjToString((*obj)["detail"]), " ") == "" {
-				(*obj)["detail"] = ""
+			if strings.Trim(util.ObjToString(obj["detail"]), " ") == "" {
+				obj["detail"] = ""
 			}
-			area := (*obj)["area"].(string)
-			finalType, _ := (*obj)["subtype"].(string)
+			area := obj["area"].(string)
+			finalType, _ := obj["subtype"].(string)
 			if finalType == "" {
-				finalType = util.ObjToString((*obj)["toptype"])
+				finalType = util.ObjToString(obj["toptype"])
 			}
 			if finalType == "" {
-				finalType = util.ObjToString((*obj)["type"])
+				finalType = util.ObjToString(obj["type"])
 				if finalType == "bid" {
 					finalType = "中标"
 				} else if finalType == "tender" {
@@ -1211,7 +1269,7 @@ func pcVRT(sid, industry string) (po, bo, wo []map[string]interface{}, objdata m
 				}
 			}
 			if industry == "" {
-				industry = util.ObjToString((*obj)["s_subscopeclass"])
+				industry = util.ObjToString(obj["s_subscopeclass"])
 				if industry != "" {
 					if strings.Contains(industry, "它") {
 						industry = strings.Replace(industry, "它", "他", -1)
@@ -1219,16 +1277,16 @@ func pcVRT(sid, industry string) (po, bo, wo []map[string]interface{}, objdata m
 					industry = strings.Split(industry, ",")[0]
 				}
 			}
-			(*obj)["stypeadd"], (*obj)["areaadd"], (*obj)["indadd"] = classify(finalType, area, industry)
+			obj["stypeadd"], obj["areaadd"], obj["indadd"] = classify(finalType, area, industry)
 			//增加处理信息逻辑
-			objdata = *obj
+			objdata = obj
 			queryStr := ""
 			commonQuery := func(mustquery string) *[]map[string]interface{} {
 				return elastic.GetPage("bidding", "bidding", queryStr, bidSearch_sort, `"_id","title","publishtime","toptype","subtype","type","area","href","s_subscopeclass"`, 0, 11)
 			}
 			//同一个项目的其他招标信息
-			projectName, _ := (*obj)["projectname"].(string)
-			projectCode, _ := (*obj)["projectcode"].(string)
+			projectName, _ := obj["projectname"].(string)
+			projectCode, _ := obj["projectcode"].(string)
 			if projectName != "" || projectCode != "" {
 				if projectName != "" && projectCode != "" {
 					queryStr = `{"$or":[{"TERM_projectname":"` + projectName + `"},{"TERM_projectcode":"` + projectCode + `"}]}`
@@ -1240,14 +1298,14 @@ func pcVRT(sid, industry string) (po, bo, wo []map[string]interface{}, objdata m
 				projectOther = bidDataConvert(sid, commonQuery(queryStr))
 			}
 			//同一个业主最近的其他招标信息
-			buyer, _ := (*obj)["buyer"].(string) //采购单位
+			buyer, _ := obj["buyer"].(string) //采购单位
 			if buyer != "" {
 				queryStr = `{"TERM_buyer":"` + buyer + `"}`
 				buyerOther = bidDataConvert(sid, commonQuery(queryStr))
 			}
 			//同一中标人最近中标的其他信息
-			subtype, _ := (*obj)["subtype"].(string) //信息类型
-			winner, _ := (*obj)["winner"].(string)   //中标人
+			subtype, _ := obj["subtype"].(string) //信息类型
+			winner, _ := obj["winner"].(string)   //中标人
 			if winner != "" && subtype == "中标" {
 				queryStr = `{"TERM_winner":"` + winner + `"}`
 				winnerOther = bidDataConvert(sid, commonQuery(queryStr))

+ 2 - 2
src/jfw/jgpush/jgpush.go

@@ -57,7 +57,7 @@ func JgpushNc(alert, infotype string, ids []string, extras map[string]interface{
 	if tmp, ok := android.(map[string]interface{}); ok {
 		tmp["title"] = Jgconfig.Title[infotype]
 		tmp["alert"] = shorAlert(alert, Jgconfig.Alertlen)
-		//extras["descript"] = tmp["alert"]
+		extras["descript"] = tmp["alert"]
 		tmp["extras"] = map[string]interface{}{
 			"type": infotype,
 			"info": extras,
@@ -294,7 +294,7 @@ func JPush() {
 func shorAlert(alert string, l int) string {
 	lg := len([]rune(alert))
 	if lg > l {
-		return string([]rune(alert)[:l])
+		return string([]rune(alert)[:l]) + "..."
 	} else {
 		return alert
 	}

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

@@ -14,7 +14,7 @@
     "webdomain": "http://webwcj.qmx.top",
 	"redirect": {
         "wxpushlist": "/jyapp/wxpush/bidinfo/%s",
-		"newInfoFollow": "/jyapp/jylab/followent/newInfo/%s",
+		"newInfoFollow": "/jyapp/followent/newInfo/%s",
         "wxpushfollowlist": "/jyapp/follow/notice/%s/%s",
         "followset": "/jyapp/follow/set/%s/%s"
     },
@@ -62,6 +62,6 @@
 	"update":{
 		"version": "1.0.0",
 		"mustupdate": false,
-		"apkurl": "http://webwcj.qmx.top/jyapp.apk"
+		"apkurl": "http://webwcj.qmx.top/jyapp/res/jyapp.apk"
 	}
 }

+ 8 - 8
src/jfw/modules/app/src/jfw/followent/followent.go

@@ -21,14 +21,14 @@ var se = util.SE
 type FollowEnt struct {
 	*xweb.Action
 
-	entList    xweb.Mapper `xweb:"/jyapp/jylab/followent/entList"`        //获取关注企业列表
-	addEnt     xweb.Mapper `xweb:"/jyapp/jylab/followent/addEnt"`         //添加关注企业页面
-	newInfo    xweb.Mapper `xweb:"/jyapp/jylab/followent/newInfo/(.*)"`   //企业最新信息
-	recList    xweb.Mapper `xweb:"/jyapp/jylab/followent/recList"`        //获取推荐企业列表
-	saveEnt    xweb.Mapper `xweb:"/jyapp/jylab/followent/saveEnt"`        //保存关注企业
-	qgFollow   xweb.Mapper `xweb:"/jyapp/jylab/followent/qgFollow"`       //取消关注
-	visited    xweb.Mapper `xweb:"/jyapp/jylab/followent/notice/visited"` //用户是否已查看
-	ajaxSearch xweb.Mapper `xweb:"/jyapp/jylab/followent/ajaxSearch"`     //用户是否关注企业
+	entList    xweb.Mapper `xweb:"/jyapp/followent/entList"`        //获取关注企业列表
+	addEnt     xweb.Mapper `xweb:"/jyapp/followent/addEnt"`         //添加关注企业页面
+	newInfo    xweb.Mapper `xweb:"/jyapp/followent/newInfo/(.*)"`   //企业最新信息
+	recList    xweb.Mapper `xweb:"/jyapp/followent/recList"`        //获取推荐企业列表
+	saveEnt    xweb.Mapper `xweb:"/jyapp/followent/saveEnt"`        //保存关注企业
+	qgFollow   xweb.Mapper `xweb:"/jyapp/followent/qgFollow"`       //取消关注
+	visited    xweb.Mapper `xweb:"/jyapp/followent/notice/visited"` //用户是否已查看
+	ajaxSearch xweb.Mapper `xweb:"/jyapp/followent/ajaxSearch"`     //用户是否关注企业
 
 }
 

+ 2 - 2
src/jfw/modules/app/src/jfw/followent/myfwent.go

@@ -17,8 +17,8 @@ import (
 type Myfwent struct {
 	*xweb.Action
 
-	addfwent           xweb.Mapper `xweb:"/jyapp/jylab/followent/addfwent"`
-	delOvertimeCompany xweb.Mapper `xweb:"/jyapp/jylab/followent/delOvertimeCompany"`
+	addfwent           xweb.Mapper `xweb:"/jyapp/followent/addfwent"`
+	delOvertimeCompany xweb.Mapper `xweb:"/jyapp/followent/delOvertimeCompany"`
 }
 
 //

+ 0 - 62
src/jfw/modules/app/src/jfw/front/follow.go

@@ -31,7 +31,6 @@ type Follow struct {
 	mylist        xweb.Mapper `xweb:"/jyapp/follow/mylist"`
 	checkFPStatus xweb.Mapper `xweb:"/jyapp/follow/checkFPStatus"`
 	checkCStatus  xweb.Mapper `xweb:"/jyapp/follow/checkCStatus"`
-	shareFW       xweb.Mapper `xweb:"/jyapp/follow/shareFW/([^.]*)"` //信息三级页,没登录的情况下,有链接跳转到这
 }
 
 var followLimit int
@@ -180,67 +179,6 @@ func (m *Follow) Fwsave() {
 	})
 }
 
-//分享关注项目
-func (m *Follow) ShareFW(tp string) error {
-	defer util.Catch()
-	tpm := strings.Split(tp, "__")
-	id := util.DecodeArticleId2ByCheck(tpm[0])[0]
-	projectname := tpm[1]
-	openid := tpm[2]
-	userId := m.GetSession("userId")
-	if userId != "" && userId != nil {
-		m.T["userId"] = userId.(string)
-	}
-	projectcode := ""
-	m.T["projectname"] = projectname
-	m.T["projectcode"] = projectcode
-	m.T["fg"] = "F"
-	fields := `"_id","title","comeintime","projectcode","projectname","bidopentime","projectcode","area","toptype","subtype","type","href","publishtime","area"`
-	data := elastic.GetByIdField("bidding", "bidding", id, fields)
-	bidopentime := (*data)["bidopentime"]
-	if bidopentime != nil {
-		m.T["bidopentime"] = util.FormatDateWithObj(&bidopentime, "2006年01月02日 15时") + " " + convertWeekday(time.Unix(util.Int64All(bidopentime), 0).Weekday().String())
-		m.T["l_bidopentime"] = bidopentime
-	}
-	if remindtime := (*data)["remindtime"]; remindtime != nil {
-		m.T["remindtime"] = util.FormatDateWithObj(&remindtime, "2006年01月02日 15时") + " " + convertWeekday(time.Unix(util.Int64All(remindtime), 0).Weekday().String())
-		m.T["l_remindtime"] = remindtime
-	} else if bidopentime != nil {
-		date := time.Unix(util.Int64All(bidopentime), 0).AddDate(0, 0, -1)
-		m.T["remindtime"] = util.FormatDate(&date, "2006年01月02日 15时") + " " + convertWeekday(date.Weekday().String())
-		m.T["l_remindtime"] = date.Unix()
-	}
-	mySelf := make(bson.M)
-	mySelf["s_projectname"] = projectname
-	mySelf["s_title"] = (*data)["title"]
-	mySelf["type"] = (*data)["type"]
-	mySelf["subtype"] = (*data)["subtype"]
-	mySelf["toptype"] = (*data)["toptype"]
-	mySelf["area"] = (*data)["area"]
-	mySelf["s_projectcode"] = projectcode
-	mySelf["s_url"] = (*data)["href"]
-	mySelf["s_id"] = id
-	mySelf["l_publishtime"] = (*data)["publishtime"]
-	if len(projectname) > 0 || len(projectcode) > 0 {
-		res, _ := tools.FollowPush(&rpc.FollowPush{
-			ProjectName: projectname,
-			ProjectCode: projectcode,
-			InfoId:      id,
-			FollowId:    "",
-			OpenId:      "",
-			Flag:        1,
-		})
-		if len(res) > 0 || len(mySelf) > 0 {
-			m.T["fg"] = "T"
-			m.T["data"] = res
-			m.T["id"] = id
-			m.T["mySelf"] = mySelf
-			m.T["openid"] = openid
-		}
-	}
-	return m.Render("/weixin/follow/shareset.html", &m.T)
-}
-
 //未关注项目
 func (m *Follow) Photo(tp string) error {
 	defer util.Catch()

+ 86 - 57
src/jfw/modules/app/src/jfw/front/login.go

@@ -5,6 +5,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"jfw/config"
+	"jfw/jyutil"
 	"log"
 	"net/http"
 	qutil "qfw/util"
@@ -46,12 +47,12 @@ type UserSign struct {
 //注册登录 手机号登录 微信注册并登录 微信登录 签名登录
 type Login struct {
 	*xweb.Action
-	login      xweb.Mapper `xweb:"/jyapp/free/login"`      //登录
-	register   xweb.Mapper `xweb:"/jyapp/free/register"`   //注册
-	wxRegister xweb.Mapper `xweb:"/jyapp/free/wxRegister"` //
-	signOut    xweb.Mapper `xweb:"/jyapp/free/signOut"`    //退出
-	forgetPwd  xweb.Mapper `xweb:"/jyapp/forgetPwd"`       //忘记密码
-	sess       xweb.Mapper `xweb:"/jyapp/free/sess/(.*)"`  //微信跳转session登录
+	login     xweb.Mapper `xweb:"/jyapp/free/login"`     //登录
+	register  xweb.Mapper `xweb:"/jyapp/free/register"`  //注册
+	wxLogin   xweb.Mapper `xweb:"/jyapp/free/wxLogin"`   //
+	signOut   xweb.Mapper `xweb:"/jyapp/free/signOut"`   //退出
+	forgetPwd xweb.Mapper `xweb:"/jyapp/free/forgetPwd"` //忘记密码
+	sess      xweb.Mapper `xweb:"/jyapp/free/sess/(.*)"` //微信跳转session登录
 }
 
 var (
@@ -67,13 +68,27 @@ func init() {
 func (l *Login) Login() error {
 	defer qutil.Catch()
 	if l.Method() == "GET" {
-		return l.Render("/me/login.html")
+		sign := l.GetString("sign")
+		//普通登录,跳转到登录页面
+		if sign == "" {
+			return l.Render("/me/login.html")
+		} else { //带有签名的登录
+			url := l.GetString("url")
+			if url == "" {
+				log.Println("自动登录需要跳转的url为空!")
+			} else {
+				status := autoLogin(sign, l.Session(), nil)
+				if status == 1 {
+					return l.Redirect(url)
+				}
+			}
+			return l.Redirect("/jyapp/free/me")
+		}
 	}
 	returnSign := ""
 	userInfo := map[string]interface{}{}
 	status := func() int {
 		reqType := l.GetString("reqType")
-		rid := l.GetString("rid")
 		if reqType == "phoneLogin" {
 			phone := l.GetString("phone")
 			password := l.GetString("password")
@@ -89,43 +104,12 @@ func (l *Login) Login() error {
 			user, ok := mongodb.FindOne("user", query)
 			//登录成功
 			if ok && user != nil && len(*user) > 0 {
-				returnSign = afterLogin(*user, query, l.Session(), phone, rid, 1)
+				returnSign = afterLogin(*user, query, l.Session(), phone, l.GetString("rid"), 1)
 				return 1
 			}
 			return -1 //用户名或密码不正确
 		} else if reqType == "signLogin" {
-			if l.GetSession("s_m_openid") != nil {
-				return 1
-			}
-			param := l.GetString("param")
-			if param == "" {
-				return 0
-			}
-			param = se.DecodeString(param)
-			log.Println("登录签名:", param)
-			u := &UserSign{}
-			err := json.Unmarshal([]byte(param), &u)
-			if err != nil {
-				log.Println(err)
-				return -1
-			}
-			if u.Sign != getSign(u) {
-				log.Println("登录签名不对!")
-				return -2 //签名不对
-			}
-			query := map[string]interface{}{
-				"s_m_openid": u.OpenId,
-				"i_appid":    2,
-				"i_type":     u.Type,
-			}
-			user, ok := mongodb.FindOne("user", query)
-			if ok && user != nil && len(*user) > 0 {
-				afterLogin(*user, query, l.Session(), "", rid, -1)
-				userInfo["headimageurl"] = (*user)["s_headimageurl"]
-				userInfo["nickname"] = l.GetSession("s_nickname")
-				return 1
-			}
-			return 0
+			return autoLogin(l.GetString("sign"), l.Session(), &userInfo)
 		}
 		return 0
 	}()
@@ -192,7 +176,6 @@ func (l *Login) Register() error {
 	defer qutil.Catch()
 	if l.Method() == "GET" {
 		if l.GetString("step") == "2" {
-			log.Println(l.GetSession("registerStep") == "2")
 			if l.GetSession("registerStep") == "2" {
 				return l.Render("/me/setpwd.html")
 			}
@@ -241,6 +224,7 @@ func (l *Login) Register() error {
 			data := map[string]interface{}{
 				"i_type":        1, //手机注册
 				"i_appid":       2,
+				"i_ispush":      1,
 				"s_m_openid":    phone,
 				"s_unionid":     phone,
 				"s_phone":       phone,
@@ -253,7 +237,7 @@ func (l *Login) Register() error {
 					"i_ratemode":   1,
 					"l_modifydate": time.Now().Unix(),
 				},
-				"o_log": getPhoneInfo(l.Request),
+				"o_log": reqPhoneInfo(l.Request),
 			}
 			_id := mongodb.Save("user", data)
 			if _id != "" {
@@ -279,17 +263,16 @@ func (l *Login) Register() error {
 }
 
 //微信注册保存并登陆
-func (l *Login) WxRegister() {
+func (l *Login) WxLogin() {
 	defer qutil.Catch()
 	returnSign := ""
 	status := func() int {
-		log.Println(l.GetString("param"))
 		b, err := base64.StdEncoding.DecodeString(l.GetString("param"))
 		if err != nil {
 			log.Println(err)
 			return -1
 		}
-		log.Println("微信注册:", string(b))
+		log.Println("微信登录:", string(b))
 		u := &WxUserInfo{}
 		err = json.Unmarshal(b, &u)
 		if err != nil {
@@ -302,7 +285,20 @@ func (l *Login) WxRegister() {
 			log.Println("微信注册签名错误!")
 			return -2
 		}
-		query := bson.M{"s_m_openid": u.OpenId, "i_appid": 2}
+		query := bson.M{"s_unionid": u.UnionId, "i_appid": 2}
+		user, ok := mongodb.FindOne("user", query)
+		if !ok {
+			return 0
+		}
+		rid := l.GetString("rid")
+		if user != nil && len(*user) > 0 {
+			//登录
+			returnSign = afterLogin(*user, query, l.Session(), u.OpenId, rid, qutil.IntAll((*user)["i_type"]))
+			return 1
+		} else {
+			return -3
+		}
+		/*query := bson.M{"s_m_openid": u.OpenId, "i_appid": 2}
 		user, ok := mongodb.FindOne("user", query)
 		if !ok {
 			return 0
@@ -322,6 +318,7 @@ func (l *Login) WxRegister() {
 			newUser["i_appid"] = 2
 			newUser["i_type"] = 2 //微信注册
 			newUser["i_ts_guide"] = 2
+			newUser["i_ispush"] = 1
 			newUser["s_m_openid"] = u.OpenId
 			newUser["s_unionid"] = u.UnionId
 			newUser["l_registedate"] = time.Now().Unix()
@@ -336,12 +333,12 @@ func (l *Login) WxRegister() {
 				"i_ratemode":   1,
 				"l_modifydate": time.Now().Unix(),
 			}
-			newUser["o_log"] = getPhoneInfo(l.Request)
+			newUser["o_log"] = reqPhoneInfo(l.Request)
 			if mongodb.Save("user", newUser) != "" {
 				returnSign = afterLogin(newUser, nil, l.Session(), u.OpenId, rid, 2)
 				return 1
 			}
-		}
+		}*/
 		return 0
 	}()
 	//返回
@@ -426,7 +423,7 @@ func SendIdentCode(title, phone string, session *httpsession.Session) bool {
 	lastSentTime, _ := session.Get("identCodeTime").(int64)
 	//60秒之内不允许重复发
 	if lastSentTime > 0 && time.Now().Unix()-lastSentTime <= 60 {
-		//return false
+		return false
 	}
 	s_ranNum := qutil.GetRandom(6) //生成随机数
 	session.Set("identCodeValue", s_ranNum)
@@ -435,9 +432,8 @@ func SendIdentCode(title, phone string, session *httpsession.Session) bool {
 	//发送短信
 	param := make(map[string]string)
 	param["code"] = s_ranNum
-	param["company"] = "剑鱼"
 	log.Println("验证码", phone, s_ranNum)
-	//jyutil.SendSMS("1", phone, param)
+	jyutil.SendSMS("2175916", phone, param)
 	return true
 }
 
@@ -543,16 +539,16 @@ func afterLogin(user, query map[string]interface{}, session *httpsession.Session
 					"s_jpushid": rid,
 				},
 			}, false, false)
-			mongodb.Update("follow_project", map[string]interface{}{"s_openid": openid}, map[string]interface{}{
+			mongodb.Update("follow_project", map[string]interface{}{"s_openid": qutil.ObjToString(query["s_m_openid"])}, map[string]interface{}{
 				"$set": map[string]interface{}{
 					"s_jpushid": rid,
 				},
-			}, false, false)
-			mongodb.Update("jylab_followent", map[string]interface{}{"s_openid": openid}, map[string]interface{}{
+			}, false, true)
+			mongodb.Update("jylab_followent", map[string]interface{}{"s_openid": qutil.ObjToString(query["s_m_openid"])}, map[string]interface{}{
 				"$set": map[string]interface{}{
 					"s_jpushid": rid,
 				},
-			}, false, false)
+			}, false, true)
 		}()
 	}
 	if openid != "" {
@@ -584,7 +580,7 @@ func clearRidByRid(rid string) {
 }
 
 //获取保存用户日志
-func getPhoneInfo(req *http.Request) map[string]interface{} {
+func reqPhoneInfo(req *http.Request) map[string]interface{} {
 	return map[string]interface{}{
 		"s_ip":       req.Proto,
 		"s_describe": req.Form,
@@ -592,3 +588,36 @@ func getPhoneInfo(req *http.Request) map[string]interface{} {
 		"s_method":   req.Method,
 	}
 }
+
+//解析签名
+func autoLogin(sign string, session *httpsession.Session, userInfo *map[string]interface{}) int {
+	if session.Get("s_m_openid") != nil {
+		return 1
+	}
+	sign = se.DecodeString(sign)
+	log.Println("登录签名:", sign)
+	u := &UserSign{}
+	err := json.Unmarshal([]byte(sign), &u)
+	if err != nil {
+		log.Println(err)
+		return -1
+	}
+	if u.Sign != getSign(u) {
+		log.Println("登录签名不对!")
+		return -2 //签名不对
+	}
+	query := map[string]interface{}{
+		"s_m_openid": u.OpenId,
+		"i_appid":    2,
+	}
+	user, ok := mongodb.FindOne("user", query)
+	if ok && user != nil && len(*user) > 0 {
+		afterLogin(*user, query, session, "", u.Rid, -1)
+		if userInfo != nil {
+			(*userInfo)["headimageurl"] = (*user)["s_headimageurl"]
+			(*userInfo)["nickname"] = session.Get("s_nickname")
+		}
+		return 1
+	}
+	return 0
+}

+ 0 - 2
src/jfw/modules/app/src/jfw/tag/msg.go

@@ -1,7 +1,6 @@
 package tag
 
 import (
-	"fmt"
 	"jfw/config"
 	"qfw/util"
 	"strconv"
@@ -61,7 +60,6 @@ func readproperty(mtype, key string) string {
 			return ret
 		}
 	case "date":
-		fmt.Println(key, "--------")
 		timedate := "30秒前"
 		if len(key) > 0 {
 			var date1 int64

+ 1 - 1
src/jfw/modules/app/src/main.go

@@ -26,7 +26,7 @@ func main() {
 	//开启web
 	go func() {
 		mux1 := http.NewServeMux()
-		mux1.Handle("/res/", http.StripPrefix("/res/", http.FileServer(http.Dir("web/staticres/res"))))
+		mux1.Handle("/jyapp/res/", http.StripPrefix("/jyapp/res/", http.FileServer(http.Dir("web/staticres/jyapp/res"))))
 		xweb.RunBase(":"+Sysconfig["webport"].(string), mux1)
 	}()
 	b := make(chan bool, 1)

+ 1 - 1
src/jfw/modules/app/src/seo.json

@@ -12,7 +12,7 @@
             "title": "招标搜索结果_剑鱼招标订阅,全行业招标信息智能推送领导者!"
         }
     },
-	"version":"1401",
+	"version":"1405",
 	"industry":{
 		"JZGC":{"NAME":"建筑工程_勘察设计,建筑工程_工程施工,建筑工程_监理咨询,建筑工程_材料设备,建筑工程_机电安装",
 				"TITLE":"建筑工程_剑鱼招标订阅,全行业招标信息智能推送领导者!",

+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/animate.css → src/jfw/modules/app/src/web/staticres/jyapp/css/animate.css


+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/bootstrap.min.css → src/jfw/modules/app/src/web/staticres/jyapp/css/bootstrap.min.css


+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/bootswatch.min.css → src/jfw/modules/app/src/web/staticres/jyapp/css/bootswatch.min.css


+ 2 - 2
src/jfw/modules/app/src/web/staticres/css/common.css → src/jfw/modules/app/src/web/staticres/jyapp/css/common.css

@@ -1,5 +1,5 @@
-@import url(/css/layout.css);
-@import url(/css/font.css);
+@import url(/jyapp/css/layout.css);
+@import url(/jyapp/css/font.css);
 body{
 	margin: 0px;
 	font-family: tahoma, arial, 'Hiragino Sans GB', 'Microsoft YaHei', 宋体, sans-serif;

+ 14 - 14
src/jfw/modules/app/src/web/staticres/css/dev2/biddingSearch.css → src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/biddingSearch.css

@@ -36,12 +36,12 @@
   padding: 7px 13px 7px 32px;
   font-size: 14px;
   color: #2CB7CA;
-  background: transparent url("/images/biddingSearch/sea-header-btnImg.png") 12px center no-repeat;
+  background: transparent url("/jyapp/images/biddingSearch/sea-header-btnImg.png") 12px center no-repeat;
   background-size: 15px 16px;
 }
 
 #searchInner .searchHeader .searchHeader-container .control-tabBtn a.on {
-  background: #2cb7ca url(/images/biddingSearch/sea-header-btnImg-bai.png) 12px center no-repeat;
+  background: #2cb7ca url(/jyapp/images/biddingSearch/sea-header-btnImg-bai.png) 12px center no-repeat;
   background-size: 15px 16px;
   color: #ffffff;
   text-decoration: none;
@@ -63,7 +63,7 @@
   box-sizing: border-box;
   padding-left: 58px;
 padding-right:26px;
-  background: #fff url("/images/biddingSearch/search-icon1.png") 18px center no-repeat;
+  background: #fff url("/jyapp/images/biddingSearch/search-icon1.png") 18px center no-repeat;
   border: 2px solid #2cb7ca;
   font-size: 16px;
 }
@@ -134,12 +134,12 @@ padding-right:26px;
   line-height: 46px;
   text-align: center;
   color: #2cb7ca;
-  background: url("/images/biddingSearch/screen-down.png") 58px center no-repeat;
+  background: url("/jyapp/images/biddingSearch/screen-down.png") 58px center no-repeat;
   cursor: pointer;
 }
 
 #searchInner .searchHeader .searchHeader-container .searchInput .screen.down {
-  background: url("/images/biddingSearch/screen-up.png") 58px center no-repeat;
+  background: url("/jyapp/images/biddingSearch/screen-up.png") 58px center no-repeat;
 }
 
 #searchInner .searchHeader .searchHeader-container .searchInput .superSearch {
@@ -154,14 +154,14 @@ padding-right:26px;
   color: #252627;
   padding-left: 22px;
   box-sizing: border-box;
-  background: #ffffff url(/images/biddingSearch/sea-header-btnImg.png) 16px center no-repeat;
+  background: #ffffff url(/jyapp/images/biddingSearch/sea-header-btnImg.png) 16px center no-repeat;
   background-size: 15px 16px;
   cursor: pointer;
 border-radius:2px;
 }
 
 #searchInner .searchHeader .searchHeader-container .searchInput .superSearch.active {
-  background: #2cb7ca url(/images/biddingSearch/sea-header-btnImg-bai.png) 16px center no-repeat;
+  background: #2cb7ca url(/jyapp/images/biddingSearch/sea-header-btnImg-bai.png) 16px center no-repeat;
   color: #ffffff;
   background-size: 15px 16px;
   border-radius: 2px;
@@ -303,13 +303,13 @@ border-radius:2px;
   top: 23px;
   padding-right: 15px;
   color: #686868;
-  background: url("/images/biddingSearch/more.png") right center no-repeat;
+  background: url("/jyapp/images/biddingSearch/more.png") right center no-repeat;
   background-size: 10px 6px;
   cursor: pointer;
 }
 
 #searchInner .searchControl .searchTender .industry .stop.up {
-  background: url("/images/biddingSearch/moreup.png") right center no-repeat;
+  background: url("/jyapp/images/biddingSearch/moreup.png") right center no-repeat;
   background-size: 10px 6px;
 }
 
@@ -633,24 +633,24 @@ border-radius:2px;
 }
 
 #searchInner .searchControl .seaTender-inner .tabTitle .right-tabBtn button:nth-of-type(1) {
-  background: transparent url("/images/biddingSearch/tab-icon4.png") 10px center no-repeat;
+  background: transparent url("/jyapp/images/biddingSearch/tab-icon4.png") 10px center no-repeat;
   background-size: 16px 14px;
 margin-right:20px;
 }
 
 #searchInner .searchControl .seaTender-inner .tabTitle .right-tabBtn button:nth-of-type(1).active {
-  background: #2cb7ca url("/images/biddingSearch/tab-icon3.png") 10px center no-repeat;
+  background: #2cb7ca url("/jyapp/images/biddingSearch/tab-icon3.png") 10px center no-repeat;
   color: #ffffff;
   background-size: 16px 14px;
 }
 
 #searchInner .searchControl .seaTender-inner .tabTitle .right-tabBtn button:nth-of-type(2) {
-  background: transparent url("/images/biddingSearch/tab-icon2.png") 10px center no-repeat;
+  background: transparent url("/jyapp/images/biddingSearch/tab-icon2.png") 10px center no-repeat;
   background-size: 16px 14px;
 }
 
 #searchInner .searchControl .seaTender-inner .tabTitle .right-tabBtn button:nth-of-type(2).active {
-  background: #2cb7ca url("/images/biddingSearch/tab-icon1.png") 10px center no-repeat;
+  background: #2cb7ca url("/jyapp/images/biddingSearch/tab-icon1.png") 10px center no-repeat;
   color: #ffffff;
   background-size: 16px 14px;
 }
@@ -774,7 +774,7 @@ width:1160px;
   display: inline-block;
   padding-left: 26px;
   color: #888888;
-  background: transparent url("/images/biddingSearch/lists-timeImg.png") 6px center no-repeat;
+  background: transparent url("/jyapp/images/biddingSearch/lists-timeImg.png") 6px center no-repeat;
     color: #686868;
     margin-left: 3px;
 }

+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/dev2/reset.css → src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/reset.css


+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/dev2/reset_pc.css → src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/reset_pc.css


+ 6 - 6
src/jfw/modules/app/src/web/staticres/css/dev2/search-index.css → src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/search-index.css

@@ -23,7 +23,7 @@ body {
   box-sizing: border-box;
   width: 100%;
   height: 4rem;
-  background: #f5f4f9 url(/images/search/search-index-bg.png) 0 0 no-repeat;
+  background: #f5f4f9 url(/jyapp/images/search/search-index-bg.png) 0 0 no-repeat;
   background-size: 100% 4rem;
 }
 
@@ -48,7 +48,7 @@ body {
   top: .23rem;
   width: .38rem;
   height: .38rem;
-  background: url(/images/search/search-index-clear.png) 0 0 no-repeat;
+  background: url(/jyapp/images/search/search-index-clear.png) 0 0 no-repeat;
   background-size: .38rem .38rem;
 }
 
@@ -75,7 +75,7 @@ body {
   width: 0.38rem;
   height: 0.4rem;
   border: none;
-  background: url("/images/search/search-index-submit.png") 0 0 no-repeat;
+  background: url("/jyapp/images/search/search-index-submit.png") 0 0 no-repeat;
   background-size: 0.38rem 0.4rem;
 }
 
@@ -83,7 +83,7 @@ body {
   display: inline-block;
   width: 0.46rem;
   height: 0.46rem;
-  background: url("/images/search/search-index-submit-right.png") 0 0 no-repeat;
+  background: url("/jyapp/images/search/search-index-submit-right.png") 0 0 no-repeat;
   background-size: 0.46rem 0.46rem;
   margin-top: 0.25rem;
   margin-right: 0.2rem;
@@ -122,11 +122,11 @@ body {
 }
 
 #searchIndex .content li:nth-of-type(1) a {
-  background: url(/images/search/search-sousuo.png) 0.3rem 0.26rem no-repeat, url(/images/search/search-lists-rightBg.png) right bottom no-repeat;
+  background: url(/jyapp/images/search/search-sousuo.png) 0.3rem 0.26rem no-repeat, url(/images/search/search-lists-rightBg.png) right bottom no-repeat;
   background-size: 0.57rem 0.57rem,1.39rem 1.39rem;
 }
 
 #searchIndex .content li:nth-of-type(2) a {
-  background: url(/images/search/search-zhongqy.png) 0.3rem 0.26rem no-repeat, url(/images/search/search-lists-rightBg.png) right bottom no-repeat;
+  background: url(/jyapp/images/search/search-zhongqy.png) 0.3rem 0.26rem no-repeat, url(/images/search/search-lists-rightBg.png) right bottom no-repeat;
   background-size: 0.57rem 0.57rem,1.39rem 1.39rem;
 }

+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/dev2/superSearch.css → src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/superSearch.css


+ 4 - 4
src/jfw/modules/app/src/web/staticres/css/dev2/syz-public-href.css → src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/syz-public-href.css

@@ -261,7 +261,7 @@ margin-bottom:12px;
   -webkit-box-pack: center;
           justify-content: center;
   padding-right: 0.44rem;
-  background: #fff url("/images/syzindex/sys-jt-top.png") 58% center no-repeat;
+  background: #fff url("/jyapp/images/syzindex/sys-jt-top.png") 58% center no-repeat;
   background-size: 0.2rem 0.12rem;
   height: 1rem;
   color: #888888;
@@ -269,7 +269,7 @@ margin-bottom:12px;
 }
 
 #syz-secondHtml .details .details-inner .iner-title span.on {
-  background: #fff url("/images/syzindex/sys-jt-bottom.png") 58% center no-repeat;
+  background: #fff url("/jyapp/images/syzindex/sys-jt-bottom.png") 58% center no-repeat;
   background-size: 0.2rem 0.12rem;
 }
 
@@ -311,14 +311,14 @@ margin-bottom:12px;
 #syz-secondHtml .feedback div i {
   width: 0.32rem;
   height: 0.34rem;
-  background: url("/images/syzindex/sys-dianzan.png") 0 0 no-repeat;
+  background: url("/jyapp/images/syzindex/sys-dianzan.png") 0 0 no-repeat;
   background-size: 0.32rem 0.34rem;
 }
 
 #syz-secondHtml .feedback div i.on {
   width: 0.32rem;
   height: 0.34rem;
-  background: url("/images/syzindex/sys-dianzan-on.png") 0 0 no-repeat;
+  background: url("/jyapp/images/syzindex/sys-dianzan-on.png") 0 0 no-repeat;
   background-size: 0.32rem 0.34rem;
 }
 

+ 6 - 6
src/jfw/modules/app/src/web/staticres/css/dev2/syzindex.css → src/jfw/modules/app/src/web/staticres/jyapp/css/dev2/syzindex.css

@@ -14,7 +14,7 @@
 /*文字高亮*/
 /*白色字体*/
 body {
-  background: #2cb7ca url(/images/syzindex/syz-bg.png) 95% 0.5rem no-repeat;
+  background: #2cb7ca url(/jyapp/images/syzindex/syz-bg.png) 95% 0.5rem no-repeat;
 }
 
 #sys-main {
@@ -98,7 +98,7 @@ body {
 }
 
 #sys-main .content li:nth-of-type(1) a {
-  background: #fff url(/images/syzindex/sys-index-icon1.png) 0.3rem 0.26rem no-repeat;
+  background: #fff url(/jyapp/images/syzindex/sys-index-icon1.png) 0.3rem 0.26rem no-repeat;
   background-size: .57rem .57rem;
 }
 
@@ -107,7 +107,7 @@ body {
 }
 
 #sys-main .content li:nth-of-type(2) a {
-  background: #fff url(/images/syzindex/sys-index-icon2.png) 0.3rem 0.26rem no-repeat;
+  background: #fff url(/jyapp/images/syzindex/sys-index-icon2.png) 0.3rem 0.26rem no-repeat;
   background-size: .57rem .57rem;
 }
 
@@ -116,7 +116,7 @@ body {
 }
 
 #sys-main .content li:nth-of-type(3) a {
-  background: #fff url(/images/syzindex/sys-index-icon3.png) 0.3rem 0.26rem no-repeat;
+  background: #fff url(/jyapp/images/syzindex/sys-index-icon3.png) 0.3rem 0.26rem no-repeat;
   background-size: .57rem .57rem;
 }
 
@@ -125,7 +125,7 @@ body {
 }
 
 #sys-main .content li:nth-of-type(4) a {
-  background: #fff url(/images/syzindex/sys-index-icon4.png) 0.3rem 0.26rem no-repeat;
+  background: #fff url(/jyapp/images/syzindex/sys-index-icon4.png) 0.3rem 0.26rem no-repeat;
   background-size: .57rem .57rem;
 }
 
@@ -134,6 +134,6 @@ body {
 }
 
 #sys-main .content li:nth-of-type(5) a {
-  background: #fff url(/images/syzindex/sys-index-icon5.png) 0.3rem 0.26rem no-repeat;
+  background: #fff url(/jyapp/images/syzindex/sys-index-icon5.png) 0.3rem 0.26rem no-repeat;
   background-size: .57rem .57rem;
 }

+ 1 - 1
src/jfw/modules/app/src/web/staticres/css/dropload.css → src/jfw/modules/app/src/web/staticres/jyapp/css/dropload.css

@@ -8,7 +8,7 @@
     transform:translateZ(0);
 }
 .dropload-down{
-    height: 350px;
+    height: 50px;
 }
 .dropload-refresh,.dropload-update,.dropload-load,.dropload-noData{
     height: 50px;

+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/follow.css → src/jfw/modules/app/src/web/staticres/jyapp/css/follow.css


+ 10 - 10
src/jfw/modules/app/src/web/staticres/css/font.css → src/jfw/modules/app/src/web/staticres/jyapp/css/font.css

@@ -1,11 +1,11 @@
 /*字体图标*/
 @font-face {
 	font-family: 'qimingxing';
-	src: url('/fonts/qimingxing.eot');
-	src: url('/fonts/qimingxing.eot?#iefix') format('embedded-opentype'),
-		url('/fonts/qimingxing.woff') format('woff'),
-		url('/fonts/qimingxing.ttf') format('truetype'),
-		url('/fonts/qimingxing.svg') format('svg');
+	src: url('/jyapp/fonts/qimingxing.eot');
+	src: url('/jyapp/fonts/qimingxing.eot?#iefix') format('embedded-opentype'),
+		url('/jyapp/fonts/qimingxing.woff') format('woff'),
+		url('/jyapp/fonts/qimingxing.ttf') format('truetype'),
+		url('/jyapp/fonts/qimingxing.svg') format('svg');
 }
 
 .glyphicon {
@@ -564,11 +564,11 @@
 	
 @font-face {
 	font-family: 'jyapp';
-	src: url('/fonts/jyAPP.eot');
-	src: url('/fonts/jyAPP.eot?#iefix') format('embedded-opentype'),
-	url('/fonts/jyAPP.woff') format('woff'), 
-	url('/fonts/jyAPP.ttf') format('truetype'),
-	url('/fonts/jyAPP.svg') format('svg');
+	src: url('/jyapp/fonts/jyAPP.eot');
+	src: url('/jyapp/fonts/jyAPP.eot?#iefix') format('embedded-opentype'),
+	url('/jyapp/fonts/jyAPP.woff') format('woff'), 
+	url('/jyapp/fonts/jyAPP.ttf') format('truetype'),
+	url('/jyapp/fonts/jyAPP.svg') format('svg');
 }
 
 .jyapp-icon {

+ 5 - 5
src/jfw/modules/app/src/web/staticres/css/jy.css → src/jfw/modules/app/src/web/staticres/jyapp/css/jy.css

@@ -272,11 +272,11 @@ a{
 /*字体图标*/
 @font-face {
 	font-family: 'qimingxing';
-	src: url('/fonts/qimingxing.eot');
-	src: url('/fonts/qimingxing.eot?#iefix') format('embedded-opentype'),
-		url('/fonts/qimingxing.woff') format('woff'),
-		url('/fonts/qimingxing.ttf') format('truetype'),
-		url('/fonts/qimingxing.svg') format('svg');
+	src: url('/jyapp/fonts/qimingxing.eot');
+	src: url('/jyapp/fonts/qimingxing.eot?#iefix') format('embedded-opentype'),
+		url('/jyapp/fonts/qimingxing.woff') format('woff'),
+		url('/jyapp/fonts/qimingxing.ttf') format('truetype'),
+		url('/jyapp/fonts/qimingxing.svg') format('svg');
 }
 .glyphicon {
 	position: relative;

+ 30 - 29
src/jfw/modules/app/src/web/staticres/css/layout.css → src/jfw/modules/app/src/web/staticres/jyapp/css/layout.css

@@ -1,43 +1,44 @@
 /*****app 第一版 布局*****/
 .app-layout-header{
 	line-height: 1.1rem;
-	background-color: #FFFFFF;
-	text-align: center;
-	border-bottom: 1px solid #CCCCCC;
-	font-size: 0.4rem;
-	position: relative;
-	padding-top: 20px;
-	z-index: 1;
+    background-color: #FFFFFF;
+    text-align: center;
+    border-bottom: 1px solid #E6E6E6;
+    font-size: 0.45rem;
+    position: fixed;
+    padding-top: 20px;
+    z-index: 1;
+    left: 0;
+    right: 0;
+    top: 0;
 }
 .app-layout-header>.app-back{
 	position: absolute;
-	left: 0.36rem;
-	line-height: 1.1rem;
-	padding-top: 20px;
+    left: 0rem;
+    font-size: 0.4rem;
+    line-height: 1.1rem;
+    padding-top: 20px;
+    padding-left: 0.36rem;
+    padding-right: 0.36rem;
+    top: 5px;
+    bottom: 0px;
 }
 .app-layout-content-a,.app-layout-content-b{
-	position: absolute;
-	left: 0px;
-	right: 0px;
-	top: 1.1rem;
-	overflow-y: auto;
-	padding-top: 20px;
+    margin-top: 1.1rem;
+    padding-top: 20px;
 }
 .app-layout-content-a{
-	bottom: 1rem;
-}
-.app-layout-content-b{
-	bottom: 0px;
+	margin-bottom: 1.2rem;
 }
 .app-layout-footer {
   width: 100%;
-  height: 1rem;
+  height: 1.2rem;
   background: #fff;
   position: fixed;
   left: 0;
   bottom: 0;
   z-index: 99;
-  border-top: 1px solid #c3c3c7;
+  border-top: 1px solid #E6E6E6;
   box-sizing: border-box;
 }
 .app-layout-footer a{
@@ -46,30 +47,30 @@
 }
 .app-layout-footer ul {
   width: 100%;
-  height: 1rem;
+  height: 1.2rem;
 }
 
 .app-layout-footer ul li {
   width: 25%;
   float: left;
-  font-size: 0.2rem;
+  font-size: 0.35rem;
   text-align: center;
 }
 
 .app-layout-footer ul li a span {
-  font-size: 0.44rem;
+  font-size: 0.47rem;
   display: block;
   width: 100%;
-  line-height: 0.6rem;
+  line-height: 0.7rem;
   color: #aaa9a9;
   text-align: center;
-  margin-top: 0.1rem;
+  margin-top: 0.15rem;
 }
 
 .app-layout-footer ul li a p {
   color: #888888;
-  line-height: 0.1rem;
-   margin: 0;
+  line-height: 0.25rem;
+  margin: 0;
 }
 
 .app-layout-footer ul li.active a span {

+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/mobile.css → src/jfw/modules/app/src/web/staticres/jyapp/css/mobile.css


+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/reset.css → src/jfw/modules/app/src/web/staticres/jyapp/css/reset.css


+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/unicorn.grey.css → src/jfw/modules/app/src/web/staticres/jyapp/css/unicorn.grey.css


+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/unicorn.main.css → src/jfw/modules/app/src/web/staticres/jyapp/css/unicorn.main.css


+ 2 - 1
src/jfw/modules/app/src/web/staticres/css/wxkeyset.css → src/jfw/modules/app/src/web/staticres/jyapp/css/wxkeyset.css

@@ -66,8 +66,9 @@ html.hidden,body.hidden,.keysetpage .keyWordContent.adjustment{
 	position: absolute;
     left: 0px;
     right: 0px;
-    top: 0px;
+    top: 1.1rem;
 	z-index: 1;
+	margin-top: 20px;
 }
 .keysetpage .keyWordContent.adjustment{
 	height: 200px;

+ 0 - 0
src/jfw/modules/app/src/web/staticres/css/wxlist.css → src/jfw/modules/app/src/web/staticres/jyapp/css/wxlist.css


+ 10 - 10
src/jfw/modules/app/src/web/staticres/css/wxsearch.css → src/jfw/modules/app/src/web/staticres/jyapp/css/wxsearch.css

@@ -193,7 +193,7 @@ form{
 	margin-top: -23px;
 }
 .operation>.parent-node>.on-off{
-	background-image: url("/wxswordfish/images/off.png");
+	background-image: url("/jyapp/wxswordfish/images/off.png");
 	background-size: 100% 100%;
 }
 
@@ -201,7 +201,7 @@ form{
 	height:30px;
 }
 .operation .on-off.open{
-	background-image: url("/wxswordfish/images/on.png");
+	background-image: url("/jyapp/wxswordfish/images/on.png");
 	right: 3px;
 	width: 62px;
 }
@@ -931,7 +931,7 @@ form{
 }
 .wxsearch .shaixcl{
 	color:#2cb7ca;
-	background-image: url(/images/search/sys-jt-bottom2.png);
+	background-image: url(/jyapp/images/search/sys-jt-bottom2.png);
 }
 .wxsearch .jydq-dialog .btn,.wxsearch .jytype-dialog .btn,.wxsearch .money .btn{
 	padding: 5px 10px;
@@ -1039,7 +1039,7 @@ form{
 	margin-bottom: 30px;
 }
 .jy_rssetbj{
-	background-image: url("/images/wx/jysubcribe.png");
+	background-image: url("/jyapp/images/wx/jysubcribe.png");
 	background-size:100% 100%;
 	height:135px;
 	width:100%;
@@ -1225,7 +1225,7 @@ form{
 	position: absolute;
 	display: block;
 	height: 6px;
-	background-image:url(/images/wx/pc_8.png);
+	background-image:url(/jyapp/images/wx/pc_8.png);
 	background-repeat:no-repeat;
 }
 .jyabout .aOne{
@@ -1517,7 +1517,7 @@ form{
 .jyshaxuan div{
 	font-size: 14px;
 	color: #888;
-	background: url(/images/search/sys-jt-bottom.png)right center no-repeat;
+	background: url(/jyapp/images/search/sys-jt-bottom.png)right center no-repeat;
 	background-size: 9px 5px;
 	padding-right: 12px;
 }
@@ -1742,20 +1742,20 @@ body{
 	padding-left: 30px;
 }
 .showType .showlist{
-	background: url(/images/search/showList.png)10px center no-repeat;
+	background: url(/jyapp/images/search/showList.png)10px center no-repeat;
 	background-size: 30%;
 }
 .showType .showtable{
-	background: url(/images/search/showTable.png)10px center no-repeat;
+	background: url(/jyapp/images/search/showTable.png)10px center no-repeat;
 	background-size: 30%;
 }
 .showType .showlist.on{
-	background: url(/images/search/showList_on.png)10px center no-repeat;
+	background: url(/jyapp/images/search/showList_on.png)10px center no-repeat;
 	background-size: 30%;
 	color: #2cb7ca;
 }
 .showType .showtable.on{
-	background: url(/images/search/showTable_on.png)10px center no-repeat;
+	background: url(/jyapp/images/search/showTable_on.png)10px center no-repeat;
 	background-size: 30%;
 	color: #2cb7ca;
 }

+ 0 - 0
src/jfw/modules/app/src/web/staticres/favicon.ico → src/jfw/modules/app/src/web/staticres/jyapp/favicon.ico


+ 0 - 0
src/jfw/modules/app/src/web/staticres/jylab/followent/css/follow.css → src/jfw/modules/app/src/web/staticres/jyapp/followent/css/follow.css


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/wx/d.png → src/jfw/modules/app/src/web/staticres/jyapp/followent/images/wx/d.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/wx/jyclock.png → src/jfw/modules/app/src/web/staticres/jyapp/followent/images/wx/jyclock.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/wx/jydustbin.png → src/jfw/modules/app/src/web/staticres/jyapp/followent/images/wx/jydustbin.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/wx/jyprompt.png → src/jfw/modules/app/src/web/staticres/jyapp/followent/images/wx/jyprompt.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/jylab/followent/images/wx/nullxx.png → src/jfw/modules/app/src/web/staticres/jyapp/followent/images/wx/nullxx.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/jylab/followent/mobiscroll/mobiscroll.min.css → src/jfw/modules/app/src/web/staticres/jyapp/followent/mobiscroll/mobiscroll.min.css


+ 0 - 0
src/jfw/modules/app/src/web/staticres/jylab/followent/mobiscroll/mobiscroll.min.js → src/jfw/modules/app/src/web/staticres/jyapp/followent/mobiscroll/mobiscroll.min.js


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts.zip → src/jfw/modules/app/src/web/staticres/jyapp/fonts.zip


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/glyphicons-halflings-regular.eot → src/jfw/modules/app/src/web/staticres/jyapp/fonts/glyphicons-halflings-regular.eot


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/glyphicons-halflings-regular.svg → src/jfw/modules/app/src/web/staticres/jyapp/fonts/glyphicons-halflings-regular.svg


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/glyphicons-halflings-regular.ttf → src/jfw/modules/app/src/web/staticres/jyapp/fonts/glyphicons-halflings-regular.ttf


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/glyphicons-halflings-regular.woff → src/jfw/modules/app/src/web/staticres/jyapp/fonts/glyphicons-halflings-regular.woff


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/glyphicons-halflings-regular.woff2 → src/jfw/modules/app/src/web/staticres/jyapp/fonts/glyphicons-halflings-regular.woff2


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/jyAPP.eot → src/jfw/modules/app/src/web/staticres/jyapp/fonts/jyAPP.eot


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/jyAPP.svg → src/jfw/modules/app/src/web/staticres/jyapp/fonts/jyAPP.svg


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/jyAPP.ttf → src/jfw/modules/app/src/web/staticres/jyapp/fonts/jyAPP.ttf


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/jyAPP.woff → src/jfw/modules/app/src/web/staticres/jyapp/fonts/jyAPP.woff


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/qimingxing.eot → src/jfw/modules/app/src/web/staticres/jyapp/fonts/qimingxing.eot


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/qimingxing.svg → src/jfw/modules/app/src/web/staticres/jyapp/fonts/qimingxing.svg


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/qimingxing.ttf → src/jfw/modules/app/src/web/staticres/jyapp/fonts/qimingxing.ttf


+ 0 - 0
src/jfw/modules/app/src/web/staticres/fonts/qimingxing.woff → src/jfw/modules/app/src/web/staticres/jyapp/fonts/qimingxing.woff


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/aboutus.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/aboutus.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/aboutustext.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/aboutustext.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/allcover-1.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/allcover-1.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/bg.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/bg.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/feedback.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/feedback.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/free-1.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/free-1.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/help.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/help.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/linecircle-1.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/linecircle-1.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/linecircle-2.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/linecircle-2.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/map.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/map.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/newmap.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/newmap.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/openwx-1.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/openwx-1.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/push-1.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/push-1.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/sign.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/sign.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/subscribe-1.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/subscribe-1.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/target.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/target.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/aboutus/whatisjy.png → src/jfw/modules/app/src/web/staticres/jyapp/images/aboutus/whatisjy.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/adv-wxggfw.jpg → src/jfw/modules/app/src/web/staticres/jyapp/images/adv-wxggfw.jpg


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/adv.jpg → src/jfw/modules/app/src/web/staticres/jyapp/images/adv.jpg


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/advert.png → src/jfw/modules/app/src/web/staticres/jyapp/images/advert.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/entsearch/jyqingchu.png → src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/jyqingchu.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/entsearch/jysorry_1.png → src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/jysorry_1.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/entsearch/jywxjs.png → src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/jywxjs.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/entsearch/jyyjfk.png → src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/jyyjfk.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/entsearch/sys-jt-bottom.png → src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/sys-jt-bottom.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/entsearch/sys-jt-bottom2.png → src/jfw/modules/app/src/web/staticres/jyapp/images/entsearch/sys-jt-bottom2.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/help-b.png → src/jfw/modules/app/src/web/staticres/jyapp/images/help-b.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/icon-like.png → src/jfw/modules/app/src/web/staticres/jyapp/images/icon-like.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/icon-right-bg.png → src/jfw/modules/app/src/web/staticres/jyapp/images/icon-right-bg.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/loading.gif → src/jfw/modules/app/src/web/staticres/jyapp/images/loading.gif


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/search/dy_close.png → src/jfw/modules/app/src/web/staticres/jyapp/images/search/dy_close.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/search/history.png → src/jfw/modules/app/src/web/staticres/jyapp/images/search/history.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/search/history_clean.png → src/jfw/modules/app/src/web/staticres/jyapp/images/search/history_clean.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/search/icon-right-bg.png → src/jfw/modules/app/src/web/staticres/jyapp/images/search/icon-right-bg.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/search/msgset.png → src/jfw/modules/app/src/web/staticres/jyapp/images/search/msgset.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/search/search-index-bg.png → src/jfw/modules/app/src/web/staticres/jyapp/images/search/search-index-bg.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/search/search-index-clear.png → src/jfw/modules/app/src/web/staticres/jyapp/images/search/search-index-clear.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/search/search-index-submit-right.png → src/jfw/modules/app/src/web/staticres/jyapp/images/search/search-index-submit-right.png


+ 0 - 0
src/jfw/modules/app/src/web/staticres/images/search/search-index-submit.png → src/jfw/modules/app/src/web/staticres/jyapp/images/search/search-index-submit.png


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно