renzheng 9 жил өмнө
parent
commit
33af038c12

+ 6 - 0
common/src/qfw/util/common.go

@@ -5,6 +5,7 @@ import (
 	cryptoRand "crypto/rand"
 	"encoding/hex"
 	"encoding/json"
+	"fmt"
 	"github.com/dchest/captcha"
 	"io"
 	"log"
@@ -356,3 +357,8 @@ func InterfaceArrTointArr(arr []interface{}) []int {
 	}
 	return tmp
 }
+
+//Mongo id -> string
+func MId2String(src interface{}) string {
+	return fmt.Sprintf("%s", src)
+}

+ 2 - 0
common/src/qfw/util/elastic/elasticutil.go

@@ -580,6 +580,8 @@ func ConverData(ent *map[string]interface{}) map[string]interface{} {
 	tmp2["OpScope"] = tmp["OpScope"]
 	tmp2["OpState"] = tmp["OpState"]
 	tmp2["s_submitid"] = tmp["s_submitid"]
+	tmp2["l_submittime"] = tmp["l_submittime"]
+	tmp2["s_submitname"] = tmp["s_submitname"]
 	//增加营业状态排序
 	if tmp2["OpState"] == "06" {
 		tmp2["OpSint"] = true

+ 6 - 0
common/src/qfw/util/elastic/elasticutil_test.go

@@ -183,3 +183,9 @@ func Test_date(t *testing.T) {
 	s := time.Now().UnixNano()
 	log.Println(s, time.Now().Unix(), fmt.Sprintf("%d", s)[4:12], 999999/60/60)
 }
+
+func Test_Getpage(t *testing.T) {
+	InitElasticSize("http://192.168.3.18:9800", 1)
+	data := *GetPage("enterprise", "enterprise", `{"s_action":"01"}`, `{"l_submittime":-1}`, `"EntName","l_submittime","_id"`, 0, 8)
+	log.Println("data:", data)
+}

+ 66 - 4
core/src/qfw/active/activemanage.go

@@ -6,11 +6,14 @@ package active
 import (
 	"fmt"
 	"github.com/go-xweb/xweb"
+	"gopkg.in/mgo.v2/bson"
 	"math/rand"
 	. "qfw/coreconfig"
+	"qfw/coreutil"
 	mob "qfw/mobile"
 	. "qfw/util"
 	. "qfw/util/mongodb"
+	qrpc "qfw/util/rpc"
 	"strconv"
 	"time"
 )
@@ -26,13 +29,24 @@ func (a *Activemanage) Luckdraw(activecode, id string) error {
 	if activecode == "topcj" {
 		se := SimpleEncrypt{Key: "topnet2015topnet2015"}
 		openid := se.DecodeString(id)
+		f := FindOne("user", "{'s_m_openid':'"+openid+"'}")
+		username := (*f)["s_bindweixin"]
+		userid := (*f)["_id"]
+		if *f == nil {
+			a.T["flog"] = "B"
+			a.T["msg"] = "您的微信号无效!!"
+			return a.Render("/active/luckdraw.html", &a.T)
+		}
 		a.T["signature"] = mob.GetSignature(a.Url())
 		u := FindOne("winningrecord", "{'s_openid':'"+openid+"'}")
 		if *u != nil {
 			//a.T = *u
 			a.T["flog"] = "A"
+			a.T["msg"] = "小主莫贪心,每人只有一次抽奖机会呦!<br/><br/>  小主翻个牌子,动动小手分享活动,么么哒……(分享点击页面右上方···分享到朋友圈)"
 			return a.Render("/active/luckdraw.html", &a.T)
 		}
+		a.SetSession("username", username)
+		a.SetSession("userid", userid)
 		a.SetSession("openid", openid)
 		a.SetSession("s_actcode", activecode)
 		return a.Render("/active/luckdraw.html", &a.T)
@@ -44,22 +58,28 @@ func (a *Activemanage) Luckdraw(activecode, id string) error {
 //
 func (a *Activemanage) Getluckdraw() error {
 	flog := "F"
+	//提示语
+	msg := ""
 	id := ""
+	today := time.Now()
 	openid := a.GetSession("openid").(string)
 	s_actcode := a.GetSession("s_actcode").(string)
 	if openid == "" {
-		return a.Write(`{"flog":"` + flog + `"}`)
+		msg = "  小主你太长时间没点击开始抽奖了,重新进来吧!"
+		return a.Write(`{"flog":"` + flog + `","msg":"` + msg + `"}`)
 	} else {
 		u := FindOne("winningrecord", "{'s_openid':'"+openid+"'}")
 		if *u != nil {
 			flog = "A"
-			return a.Write(`{"flog":"` + flog + `"}`)
+			msg = "  小主莫贪心,每人只有一次抽奖机会呦!<br/><br/>  小主翻个牌子,动动小手分享活动,么么哒……(分享点击页面右上方···分享到朋友圈)"
+			return a.Write(`{"flog":"` + flog + `","msg":"` + msg + `"}`)
 		}
 	}
 	data := make(map[string]interface{})
 	data["s_openid"] = openid
 	data["s_actcode"] = s_actcode
 	i := getLuckDraw()
+
 	s_prize := getPrize(i)
 	data["s_prize"] = s_prize
 	data["l_timestamp"] = time.Now().Unix()
@@ -67,12 +87,54 @@ func (a *Activemanage) Getluckdraw() error {
 	enddate := LuckDraw.EndDate
 	if nowdate < enddate {
 		id = Save("winningrecord", data)
-		fmt.Println("nowdate:", nowdate, "enddate:", enddate, len(id))
 	}
 	if len(id) > 0 {
 		flog = "T"
 	}
-	return a.Write(`{"flog":"` + flog + `","prize":"` + s_prize + `","rotate":` + strconv.Itoa(int(i)) + `}`)
+	if i > 185 && i < 220 {
+		amount := 500 //红包金额以“元”为单位,微信红包以“分”为单位
+		bm := qrpc.BonusMsg{Mchbillno: fmt.Sprint(today.Unix()),
+			Sendname:    LuckDraw.Weixin["sendname"].(string),
+			Reopenid:    openid,
+			Totalamount: amount,
+			Totalnum:    1,
+			Wishing:     "企明星新年大抽奖",
+			Actname:     "企明星新年大抽奖",
+			Remark:      "欢迎参加企明星新年大抽奖活动!",
+		}
+		if coreutil.PayBonus(&bm) {
+			redpackage := make(bson.M)
+			redpackage["s_userid"] = a.GetSession("userid")
+			redpackage["s_username"] = a.GetSession("username")
+			redpackage["s_openid"] = openid
+			redpackage["i_amount"] = amount
+			redpackage["s_billno"] = bm.Mchbillno
+			redpackage["s_name"] = bm.Actname
+			redpackage["l_createdate"] = today.Unix()
+			redpackage["i_year"] = today.Year()
+			redpackage["i_month"] = today.Month()
+			redpackage["i_day"] = today.Day()
+			redpackage["s_actcode"] = s_actcode
+			Save("redpackage", redpackage)
+		}
+	}
+	if i > 185 && i < 220 {
+		msg = "  小主是真真的好运气,五元现金红包落入您囊中!<br/><br/>  小主翻个牌子,动动小手分享活动,么么哒……(分享点击页面右上方···分享到朋友圈)"
+	} else if (i > 275 && i < 310) || (i > 95 && i < 130) {
+		//时间判断,提醒不同
+		now := time.Now()
+		//不在工作时间
+		if now.Weekday() == 6 || now.Weekday() == 0 || (now.Hour() > 18 || now.Hour() < 9) {
+			//
+			msg = "  小主是真真的好运气," + s_prize + "落入您囊中!<br/>  请在微信留下您的联系方式(手机号或qq号),企明星客服会在下一个工作日9:00-17:00给小主回复哦!<br/>  小主翻个牌子,动动小手分享活动,么么哒……(分享点击页面右上方···分享到朋友圈)"
+		} else { //在工作时间
+			msg = "  小主是真真的好运气," + s_prize + "落入您囊中,请速速微信联系企明星确认领奖事宜!<br/><br/>  小主翻个牌子,动动小手分享活动,么么哒……(分享点击页面右上方···分享到朋友圈)"
+		}
+
+	} else { //不中奖
+		msg = "  小主不要桑心,这次没有中奖不代表什么,猴年依然会好运气爆棚滴~~<br/><br/>  小主翻个牌子,动动小手分享活动,么么哒……(分享点击页面右上方···分享到朋友圈)"
+	}
+	return a.Write(`{"flog":"` + flog + `","msg":"` + msg + `","rotate":` + strconv.Itoa(int(i)) + `}`)
 
 }
 

+ 36 - 1
core/src/qfw/front/index.go

@@ -56,13 +56,48 @@ func (i *Index) LoadIndex() error {
 		return i.SetBody([]byte(ret.(string)))
 	} else {
 		i.T["serviceClassify"] = coreconfig.ServiceClassify
+		//企业快报
 		querymap := map[string]string{
 			"perPage":     i.GetString("perPage"),
 			"currentPage": i.GetString("currentPage"),
 			"contentType": "qykb",
 			"query":       i.GetString("query")}
 		data, pagination := searhWebContent(querymap)
-		content, _ := i.Render4Cache("/index.html", &xweb.T{"data": data, "pagination": pagination})
+		//知识库
+		zkquerymap := map[string]string{
+			"perPage":     "8",
+			"currentPage": i.GetString("currentPage"),
+			"contentType": "zhsk",
+			"query":       i.GetString("query")}
+		zkdata, _ := searhWebContent(zkquerymap)
+		if zkdata != nil {
+			for _, v := range *zkdata {
+				release := v["releasetime"].(string)
+				v["releasetime"] = release[:4] + "." + release[5:7] + "." + release[8:10]
+			}
+		}
+		//认证企业
+		entquery := `{"i_identificationstatus":1,"i_freeze":{"$ne":2}}`
+		entdata := *Find("identification", entquery, []string{"-l_auditdate"}, `{"s_enterprisename":1,"l_auditdate":1,"s_enterpriseid":1}`, false, 0, 8)
+		if entdata != nil {
+			for _, v := range entdata {
+				auditdate := v["l_auditdate"].(int64)
+				v["l_auditdate"] = time.Unix(auditdate, 0).Format("2006.01.02")
+			}
+		}
+		//剑鱼最新消息
+		now := time.Now()
+		unix := time.Date(now.Year(), now.Month(), now.Day(), now.Hour()-2, now.Minute(), now.Second(), now.Nanosecond(), time.Local).Unix()
+		sfdata := *Find("bidding", M{"comeintime": M{"$lte": unix}}, `{"comeintime":-1}`, `{"title":1,"href":1,"publishtime":1}`, false, 0, 8)
+		if sfdata != nil {
+			for _, v := range sfdata {
+				publishtime := v["publishtime"].(int64)
+				//:= util.FormatDateWithObj(&data_2, util.Date_Short_Layout)
+				v["publishtime"] = time.Unix(publishtime, 0).Format("2006.01.02")
+			}
+		}
+		//
+		content, _ := i.Render4Cache("/index.html", &xweb.T{"data": data, "pagination": pagination, "zkdata": zkdata, "entdata": entdata, "sfdata": sfdata})
 		redis.Put("other", "/", string(content), 0) //设置首页缓存
 		return i.SetBody(content)
 	}

+ 2 - 1
core/src/qfw/manage/auditing.go

@@ -548,7 +548,7 @@ func (s *SystemManage) Updateaudit() error {
 				tm := fmt.Sprintf("%d", time.Now().Unix())
 				Update("enterprise", &map[string]interface{}{
 					"_id": ObjectIdHex(s_enterpriseid),
-				}, `{'$set':{'s_action':'`+s_action+`','s_avatar':'`+s_avatar+`','EntName':'`+s_enterprisename+`','RegNo':'`+s_id+`','s_submitid':'`+s_submitid+`','s_submitname':'`+s_submitname+`','l_timestamp':`+tm+`}}`, false, false)
+				}, `{'$set':{'s_action':'`+s_action+`','s_avatar':'`+s_avatar+`','EntName':'`+s_enterprisename+`','RegNo':'`+s_id+`','s_submitid':'`+s_submitid+`','s_submitname':'`+s_submitname+`','l_submittime':`+tm+`}}`, false, false)
 				elastic.UpdateEntDoc(s_enterpriseid)
 				if i_identificationtype == "5" {
 					per := FindOne("enterprise", M{"RegNo": s_id_new})
@@ -738,6 +738,7 @@ func (s *SystemManage) Updateaudit() error {
 				}
 				m.SaveMsg()
 			}
+			redis.Del("other", "/")
 			flag = "true"
 			msg = "审核成功!"
 			if (*f)["s_m_openid"] != nil {

+ 2 - 1
core/src/timetask.json

@@ -1 +1,2 @@
-{"comment":{"c_rate":720,"commentrate":900},"market":{"demand":{"attr":["i_hits","i_bids","i_status"],"timepoint":"2016-01-18 14:14:51"},"service":{"attr":["i_hits","i_sales","i_comments","i_score","i_appcounts"],"timepoint":"2016-01-18 14:14:51"}},"marketisstart":true,"marketrate":300}
+{"comment":{"c_rate":720,"commentrate":900},"market":{"demand":{"attr":["i_hits","i_bids","i_status"],"timepoint":"2016-01-18 14:14:51"},"service":{"attr":["i_hits","i_sales","i_comments","i_score","i_appcounts"],"timepoint":"2016-01-18 14:14:51"}},"marketisstart":true,"marketrate":300}
+

+ 0 - 1
core/src/web/staticres/css/dev-qfw.css

@@ -1000,7 +1000,6 @@ a{
 
 .a-com-ul-block {
 	width: 250px;
-	height:230px;
 }
 .a-com-ul-blocknew {
 	margin-left:1px;

+ 70 - 6
core/src/web/staticres/css/index-new.css

@@ -195,7 +195,7 @@ a:focus, a:hover{
 	margin-right:8px;
 }
 .a-index  .index-new-xwzx-con .index-new-xwzx-title{
-	width:210px;
+	width:200px;
     font-weight: 700;
     font-size: 16px;
 	white-space:nowrap;
@@ -210,7 +210,7 @@ a:focus, a:hover{
 }
 .a-index  .index-new-xwzx-con .index-new-xwzx-content{
 	height:40px;
-	width:210px;
+	width:200px;
     font-family: '宋体 Regular', '宋体';
     font-size: 12px;
     color: #A0A0A0;
@@ -388,7 +388,7 @@ a:focus, a:hover{
 .index-new-wgw-nameent{
 	position:absolute; 
 	z-index:4; 
-	top:184px; 
+	top:199px; 
 	left:10px;
 }
 .index-new-rmfw-nameent a {
@@ -401,7 +401,7 @@ a:focus, a:hover{
 	top:163px; 
 	left:-1px;
 }
-.index-new-rmfw-bg1 span,.index-new-wgw-bg1 span{
+.index-new-rmfw-bg1 span{
 	border-top:3px solid #FF5A5F;
 	display:inline-block;
 	width:250px; 
@@ -411,6 +411,21 @@ a:focus, a:hover{
 	background-position:-1px -2px;
 	background-size: 252px 67px;
 }
+.index-new-wgw-bg1 span{
+	border-top:3px solid #FF5A5F;
+	display:inline-block;
+	width:250px; 
+	height:45px;
+	background-image:url(/images/u46.png);
+	background-repeat:no-repeat;
+	background-position:-1px -2px;
+	background-size: 252px 45px;	
+}
+.index-new-wgw-bg1 {
+	position: absolute;
+	top: 185px;
+	left: -1px;
+}
 .index-new-rmfw-remarktitle{
     font-size: 16px;
     color: #FFFFFF;
@@ -530,6 +545,55 @@ a:focus, a:hover{
 .fw-new-content .fw-new-zh span,.fw-new-content .fw-new-yzm span{
 	float:right;margin:10px -5px 0px 0px;
 }
-.fw-new-content .afterSendIdentCode{
-	
+.index-new-tg{
+	padding: 20px 30px;
+	margin-bottom:30px;
+}
+.index-new-tg .row{
+	border:1px solid #f0f0f0;
+}
+.index-new-tg-tb img{
+	width:40px;
+	height:39px;
+	margin-bottom:1px;
+}
+.index-new-tg-tb{
+	height:120px;
+	padding-right:0px;
+}
+.index-new-mingcheng div{
+	background-color:#FF5A5F;
+	color:#FFF;
+	padding:24px 6px;
+	height:120px;
+	width:40px; 
+	border:1px solid #FF5A5F;
+	font-size: 16px;
+}
+.index-new-tg-con ul li{
+	padding:5px;
+}    
+.index-new-tg-con>ul>li>span:nth-child(1){
+	display:inline-block;
+	margin-left: 45px;
+	margin-bottom: 8px;
+	width: 4px;
+	height: 4px;
+	border:1px solid #D1D1D1;
+	background-color:#D1D1D1;
+}
+.index-new-tg-con>ul>li>span:nth-child(2){
+	display:inline-block;
+	width:330px;
+	padding-left:10px;
+	padding-right: 10px;
+	color:#4E5051;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+.index-new-tg-con>ul>li>span:nth-child(3){
+	font-family: '宋体 Regular', '宋体';
+	color:#A0A0A0;
+	font-size:12px;
 }

BIN
core/src/web/staticres/images/activeimages/btn_end.png


BIN
core/src/web/staticres/images/u0115.png


BIN
core/src/web/staticres/images/u0116.png


BIN
core/src/web/staticres/images/u0117.png


BIN
core/src/web/staticres/images/u0118.png


BIN
core/src/web/staticres/images/u0119.png


BIN
core/src/web/staticres/images/u0120.png


BIN
core/src/web/staticres/images/u2181.png


+ 2 - 2
core/src/web/staticres/wxswordfish/share.js

@@ -10,7 +10,7 @@ function initShare(signature){
 		});
 		wx.ready(function () {
 	        wx.onMenuShareTimeline({
-			    title: '剑鱼招标订阅免费用,关注即可抽取iPadmini。', // 分享标题
+			    title: '剑鱼招标订阅免费用,关注即可抽取iPad mini。', // 分享标题
 			    link: 'http://www.qimingxing.info/swordfish/share', // 分享链接
 			    imgUrl: 'http://www.qimingxing.info/wxswordfish/images/share-icon.png', // 分享图标
 			    success: function () { 
@@ -22,7 +22,7 @@ function initShare(signature){
 			});
 			
 			wx.onMenuShareAppMessage({
-			    title: '剑鱼招标订阅免费用,关注即可抽取iPadmini。', // 分享标题
+			    title: '剑鱼招标订阅免费用,关注即可抽取iPad mini。', // 分享标题
 			    desc: '关注微信并设置剑鱼关键词,全国招标信息统统推送给您!', // 分享描述
 			    link: 'http://www.qimingxing.info/swordfish/share', // 分享链接
 			    imgUrl: 'http://www.qimingxing.info/wxswordfish/images/share-icon.png', // 分享图标

+ 22 - 16
core/src/web/templates/active/luckdraw.html

@@ -32,17 +32,23 @@
 </button>
 <!-- 模态框(Modal) -->
 <div class="modal fade" id="myModal" tabindex="-1" role="dialog" 
-   aria-labelledby="myModalLabel" aria-hidden="true" style="margin-top: 25%;
-">
+   aria-labelledby="myModalLabel" aria-hidden="true" style="padding-top: 25%;">
    <div class="modal-dialog">
       <div class="modal-content">
+	
+         <div class="modal-header">
+            <button type="button" class="close" 
+               data-dismiss="modal" aria-hidden="true" style="width: 40px;height: 30px;">
+                  &times;
+            </button>
+            <h4 class="modal-title" id="myModalLabel">
+               企明星新年大抽奖
+            </h4>
+         </div>
          <div class="modal-body">
             
          </div>
          <div class="modal-footer">
-            <button type="button" class="btn btn-primary" 
-               data-dismiss="modal">关闭
-            </button>
          </div>
       </div><!-- /.modal-content -->
 </div><!-- /.modal -->
@@ -58,9 +64,13 @@
 $(function(){ 
     var flog = {{.T.flog}};
 	if (flog == "A"){
-		$(".modal-body").html("小主莫贪心,每人只有一次抽奖机会呦!<br/><br/>小主翻个牌子,动动小手分享活动,么么哒……(分享点击页面右上方···分享到朋友圈)")
+		$(".modal-body").html("{{.T.msg}}")
+		$(".modstart").click();
+		$("#btn_run").attr('disabled',true).css("cursor","pointer").css("background","url(/images/activeimages/btn_end.png) no-repeat").css("background-size","100% 100%");
+	}else if (flog == "B"){
+		$(".modal-body").html("{{.T.msg}}")
 		$(".modstart").click();
-		$("#btn_run").attr('disabled',true).css("cursor","pointer");
+		$("#btn_run").attr('disabled',true).css("cursor","pointer").css("background","url(/images/activeimages/btn_end.png) no-repeat").css("background-size","100% 100%");
 	}
      $("#btn_run").click(function(){
 		$("#btn_run").attr('disabled',true).css("cursor","default"); 
@@ -84,21 +94,17 @@ function lottery(){
 					easing: $.easing.easeOutSine, 
 					callback: function(){ 
 						//alert(obj.results); 
-						$("#btn_run").attr('disabled',true).css("cursor","pointer"); 
-						if (obj.prize == "谢谢参与"){
-							$(".modal-body").html("小主不要桑心,这次没有中奖不代表什么,猴年依然会好运气爆棚滴~~<br/><br/>小主翻个牌子,动动小手分享活动,么么哒……(分享点击页面右上方···分享到朋友圈)")
-							$(".modstart").click();
-						}else{
-							$(".modal-body").html("小主是真真的好运气,"+obj.prize+"落入您囊中,请速速微信联系企明星确认领奖事宜!<br/><br/>小主翻个牌子,动动小手分享活动,么么哒……(分享点击页面右上方···分享到朋友圈)")
+						$("#btn_run").attr('disabled',true).css("cursor","pointer").css("background","url(/images/activeimages/btn_end.png) no-repeat").css("background-size","100% 100%"); 
+							$(".modal-body").html(obj.msg)
 							$(".modstart").click();
-						}
+							$("#btn_run").attr('disabled',true).css("cursor","pointer").css("background","url(/images/activeimages/btn_end.png) no-repeat").css("background-size","100% 100%");
 					} 
 				});
 			}else if (obj.flog=="A"){
-				$(".modal-body").html("小主莫贪心,每人只有一次抽奖机会呦!<br/><br/>小主翻个牌子,动动小手分享活动,么么哒……(分享点击页面右上方···分享到朋友圈)")
+				$(".modal-body").html(obj.msg)
 				$(".modstart").click();
 			}else if (obj.flog=="F"){
-				$(".modal-body").html("小主来晚了,抽奖活动已过期!如果有疑问请联系企明星!")
+				$(".modal-body").html("  小主来晚了,抽奖活动已过期!如果有疑问请联系企明星!")
 				$(".modstart").click();
 			}
         } 

+ 122 - 1
core/src/web/templates/index.html

@@ -199,10 +199,131 @@
 			{{end}}
  			{{end}}
 		</div>
+		
+		<div class="index-new-tg index-new-bmzhsk">
+		<div class="row">
+		<div class="col-sm-1 index-new-tg-tb">
+		<ul>
+		<li>
+		<div class="bmzhsk"><img src="/images/u0115.png"/></div>
+		<div class="bmjy"><img src="/images/u0117.png"/></div>
+		<div class="bmrzqy"><img src="/images/u0119.png"/></div>
+		</li>
+		<li class="index-new-mingcheng"><div class="text-center" style="height: 119px;">知识库</div></li>
+		</ul>
+		</div>
+		<div class="col-sm-5 index-new-tg-con">
+		<ul>
+		{{range $k,$v:=.T.zkdata}}
+		{{ if lt $k 8}}
+		<li><span></span><span><a target="_blank" href="/front/webcontent/{{index $v "_id"}}.html"/>{{index $v "s_title"}}</a></span><span style="float:right;">{{if eq (index $v "releasetime") ""}}{{index $v "l_createdate"}}{{else}}{{index $v "releasetime"}}{{end}}</span></li>
+		{{if ge $k 3}}
+		{{if lt $k 4}}
+		</ul>
+		</div>
+		<div class="col-sm-1"></div>
+		<div class="col-sm-5 index-new-tg-con">
+		<ul>
+		{{end}}
+		{{end}}
+			
+		{{end}}
+		{{end}}
+		</ul>
+		</div>
+		</div>
+		</div>
+		
+		
+		<div class="index-new-tg index-new-bmjy hidden">
+		<div class="row">
+		<div class="col-sm-1 index-new-tg-tb">
+		<ul>
+		<li>
+		<div class="bmzhsk"><img src="/images/u0116.png"/></div>
+		<div class="bmjy"><img src="/images/u0118.png"/></div>
+		<div class="bmrzqy"><img src="/images/u0119.png"/></div>
+		</li>
+		<li class="index-new-mingcheng"><div class="text-center" style="padding-top: 35px;height: 119px;">剑鱼</div></li>
+		</ul>
+		</div>
+		<div class="col-sm-5 index-new-tg-con">
+		<ul>
+		{{range $k,$v:=.T.sfdata}}
+		{{ if lt $k 8}}
+		<li><span></span><span><a target="_blank" href="http://{{index $v "href"}}"/>{{index $v "title"}}</a></span><span style="float:right;">{{if (index $v "publishtime")}}{{index $v "publishtime"}}{{else}}------{{end}}</span></li>
+		{{if ge $k 3}}
+		{{if lt $k 4}}
+		</ul>
+		</div>
+		<div class="col-sm-1"></div>
+		<div class="col-sm-5 index-new-tg-con">
+		<ul>
+		{{end}}
+		{{end}}
+			
+		{{end}}
+		{{end}}
+		</ul>
+		</div>
+		</div>
+		</div>
+		
+		
+		<div class="index-new-tg index-new-bmrzqy hidden">
+		<div class="row">
+		<div class="col-sm-1 index-new-tg-tb">
+		<ul>
+		<li>
+		<div class="bmzhsk"><img src="/images/u0116.png"/></div>
+		<div class="bmjy"><img src="/images/u0117.png"/></div>
+		<div class="bmrzqy"><img src="/images/u0120.png"/></div>
+		</li>
+		<li class="index-new-mingcheng"><div class="text-center" style="padding-top: 15px;height: 119px;">认证企业</div></li>
+		</ul>
+		</div>
+		<div class="col-sm-5 index-new-tg-con">
+		<ul>
+		{{range $k,$v:=.T.entdata}}
+		{{ if lt $k 8}}
+		<li><span></span><span><a target="_blank" href="/enterprise/{{index $v "s_enterpriseid"}}.html"/>{{index $v "s_enterprisename"}}</a></span><span style="float:right;">{{if (index $v "l_auditdate")}}{{index $v "l_auditdate"}}{{else}}------{{end}}</span></li>
+		{{if ge $k 3}}
+		{{if lt $k 4}}
+		</ul>
+		</div>
+		<div class="col-sm-1"></div>
+		<div class="col-sm-5 index-new-tg-con">
+		<ul>
+		{{end}}
+		{{end}}
+			
+		{{end}}
+		{{end}}
+		</ul>
+		</div>
+		</div>
+		</div>
+		
 	</div>
+	
 </div>
 {{include "/common/bottom.html"}}
 <script>
+$(".bmzhsk").mouseover(function(){
+	$(".index-new-bmrzqy").addClass("hidden");
+	$(".index-new-bmjy").addClass("hidden");
+	$(".index-new-bmzhsk").removeClass("hidden");
+});
+$(".bmjy").mouseover(function(){
+	$(".index-new-bmrzqy").addClass("hidden");
+	$(".index-new-bmzhsk").addClass("hidden");
+	$(".index-new-bmjy").removeClass("hidden");
+});
+$(".bmrzqy").mouseover(function(){
+	$(".index-new-bmzhsk").addClass("hidden");
+	$(".index-new-bmjy").addClass("hidden");
+	$(".index-new-bmrzqy").removeClass("hidden");
+});
 function gomarket(code){
 	$("#c_fwtype").val(code);
 	$("form#searchForm").submit();
@@ -263,7 +384,7 @@ $(function(){
 	}else{
 		//活动处理
 		if(hasNewActive){
-			$(".a-index-hd").append('<img src="/images/activeimages/chjhd.png" onclick="window.open(\'/front/webactivitycontent/5697403b7e1eac37d5000001.html\')" class="cursor-pointer">');
+			$(".a-index-hd").append('<img src="/images/activeimages/chjhd.png" onclick="window.open(\'/front/webactivitycontent/56986e31af53740ecf000001.html\')" class="cursor-pointer">');
 			/*扫码送红包活动
 			$(".a-index-hd").append('<img src="/images/smshb.png" onclick="window.open(\'/p\')" class="cursor-pointer"><div class="smshb"><ul id="hd-smshb" class="text-center"></ul></div>');
 			$.post("/front/showAmount",null,function(r){

+ 3 - 1
weixin/src/config.json

@@ -34,6 +34,8 @@
                 "activitycode":"topcj",
                 "title":"企明星新年抽奖活动进行中",
                 "picurl":"http://www.qimingxing.info/images/choujiang.png"
-        }
+        },
+		"weixinautorpl":"小主的吩咐我们已经收到了,请留下您的联系方式(手机号或qq号),企明星客服会在下一个工作日9:00-17:00给小主回复哦!",
+		"creditRpc":"http://127.0.0.1:8765"
 
 }

+ 10 - 0
weixin/src/qfw/weixin/dao/logsdao.go

@@ -51,3 +51,13 @@ func FindWinningRecord(openid, activitycode string) bool {
 	ret := mongodb.FindOne("winningrecord", M{"s_openid": openid, "s_actcode": activitycode})
 	return ret != nil && len(*ret) > 0
 }
+
+//存微信的离线消息
+func SaveWeixinOfflineMessage(openid, msg string, timestamp int64) {
+	data := map[string]interface{}{
+		"s_openid":    openid,
+		"s_msg":       msg,
+		"l_timestamp": timestamp,
+	}
+	mongodb.Save("weixinoffline", &data)
+}

+ 42 - 0
weixin/src/qfw/weixin/dao/sharedao.go

@@ -0,0 +1,42 @@
+package dao
+
+//分享,邀请类dao
+import (
+	. "gopkg.in/mgo.v2/bson"
+	"qfw/util"
+	"qfw/util/credit"
+	. "qfw/util/mongodb"
+	"time"
+)
+
+//
+var sharelock chan bool = make(chan bool, 10)
+
+//保存用户邀请关系,走线程池
+func SaveInviteLink(shareid int, myopenid string) {
+	//先找邀请人信息
+	sharelock <- true
+	ret := FindOne("person_share", M{"i_shareid": shareid})
+	if *ret == nil {
+		<-sharelock
+		return
+	}
+	source_opendid := (*ret)["s_openid"]
+	data := map[string]interface{}{
+		"s_target_openid": myopenid,
+		"s_source_openid": source_opendid,
+		"l_timestamp":     time.Now().Unix(),
+		"i_shareid":       shareid,
+		"s_businesscode":  (*ret)["s_businesscode"],
+	}
+	Save("person_invitelink", data)
+	//取用户ID
+	ret = FindOne("user", M{"s_m_openid": source_opendid})
+	if *ret == nil {
+		<-sharelock
+		return
+	}
+	//积分处理,RPC
+	credit.InCreditB(util.MId2String((*ret)["_id"]), credit.C_TG, nil)
+	<-sharelock
+}

+ 9 - 1
weixin/src/qfw/weixin/msgtxtchandler.go

@@ -73,7 +73,15 @@ func MsgTxtHandler(w ResponseWriter, r *Request) {
 		}
 	} else {
 		//属于在线咨询,暂时直接中转到微信客服系统
-		w.Reply2CustomerService()
+		//w.Reply2CustomerService()
+		//"小主的吩咐我们已经收到了,请耐心等待或留下您的联系方式(手机号或qq号),企明星客服会在下一个工作日9:00-17:00给小主回复哦!"
+		now := time.Now()
+		if now.Weekday() == 6 || now.Weekday() == 0 || (now.Hour() > 17 || now.Hour() < 9) {
+			dao.SaveWeixinOfflineMessage(r.FromUserName, r.Content, now.Unix())
+			w.ReplyText(wf.SysConfig.WeixinAutoRpl)
+		} else {
+			w.Reply2CustomerService()
+		}
 	}
 }
 

+ 44 - 0
weixin/src/qfw/weixin/rpc/share.go

@@ -0,0 +1,44 @@
+package rpc
+
+import (
+	"github.com/SKatiyar/qr"
+	"qfw/util/redis"
+	"strconv"
+)
+
+/**生成分享二维码
+规则:自动生成二维码,存储并存储到redis中
+	开发在使用时,先查看redis,没有的话再调用此RPC方法
+	生成的二维码有效期为一个月
+**/
+func (wxrpc *WeiXinRpc) GetShareQR(shareid int, ret *string) (err error) {
+	//构造自定义消息文本
+	var msg struct {
+		Expire int    `json:"expire_seconds"`
+		Name   string `json:"action_name"`
+		Info   struct {
+			Scene struct {
+				Id int `json:"scene_id"`
+			} `json:"scene"`
+		} `json:"action_info"`
+	}
+	msg.Expire = 2592000
+	msg.Name = "QR_SCENE"
+	msg.Info.Scene.Id = shareid
+	ret, err := Mux.PostCustomMsg("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=", &msg)
+	if err != nil {
+		*ret = "faile"
+		log.Println(err.Error())
+		return nil
+	}
+	tmp := map[string]interface{}{}
+	json.Unmarshal(ret, &tmp)
+	url := tmp["url"].(string)
+	//生二维码
+	r, _ := qr.Encode(url, qr.L)
+	pngdat := r.PNG()
+	//存储到redis
+	redis.PutBytes("sso", "p_share_"+strconv.Itoa(shareid), pngdat, msg.Expire)
+	*ret = "ok"
+	return nil
+}

+ 12 - 4
weixin/src/qfw/weixin/subscribehandler.go

@@ -12,6 +12,8 @@ import (
 	"qfw/weixin/dao"
 	"qfw/weixinconfig"
 	"regexp"
+	"strconv"
+	"strings"
 	"time"
 )
 
@@ -37,6 +39,7 @@ func SubscribeHandler(w ResponseWriter, r *Request) {
 		bindweixin, _ = ret["nickname"].(string)
 		//取得用户头像
 		headimgurl, _ := ret["headimgurl"].(string)
+		log.Println("download userface :", headimgurl)
 		userphoto = downloadUserFace(headimgurl)
 	}
 	_, flag := dao.AddUser(openid, unionid, bindweixin, userphoto)
@@ -49,12 +52,15 @@ func SubscribeHandler(w ResponseWriter, r *Request) {
 	}
 
 	if digitreg.MatchString(source) {
-		//
-		//log.Println("user-key:", source)
 		dao.SaveSubscribeLogs(openid, unionid, bindweixin, "wangzhan", "subscribe")
 		if flag == 1 {
 			w.ReplyText(WELCOME_MSG) // 有新人关注,返回欢迎消息
 			redis.Put("sso", "new_"+source, openid, 900)
+			//TODO 处理分享(邀请)类的二维码,记录邀请关系
+			if strings.HasPrefix(source, "32") {
+				shareid, _ := strconv.Atoi(source)
+				go dao.SaveInviteLink(shareid, r.FromUserName)
+			}
 		} else {
 			w.ReplyText(OWELCOME_MSG) // 有旧人关注,返回欢迎消息
 		}
@@ -90,8 +96,8 @@ func UnSubscribeHandler(w ResponseWriter, r *Request) {
 
 //扫描二维码事件处理
 func ScanHandler(w ResponseWriter, r *Request) {
-	//log.Println("扫码事件::", r.EventKey, r.Event)
-	//log.Println("user-key:", r.EventKey)
+	log.Println("扫码事件::", r.EventKey, r.Event)
+	log.Println("user-key:", r.EventKey)
 	w.ReplyText(weixinconfig.SysConfig.LoginTip)
 	DoLogin(r.EventKey, r.FromUserName)
 
@@ -119,6 +125,8 @@ func downloadUserFace(url string) string {
 		defer resp.Body.Close()
 		if err == nil {
 			io.Copy(fi, resp.Body)
+		} else {
+			log.Println("download userface err:", err.Error())
 		}
 	}, func(e interface{}) {})
 	return filename

+ 13 - 0
weixin/src/qfw/weixin/txt_test.go

@@ -0,0 +1,13 @@
+package weixin
+
+import (
+	"log"
+	"testing"
+	"time"
+)
+
+func TestWeek(t *testing.T) {
+	d := time.Now()
+	d = d.AddDate(0, 0, 2)
+	log.Println(d.Hour(), d.Weekday(), int(d.Weekday()), d.Weekday() == 5)
+}

+ 2 - 0
weixin/src/qfw/weixin/weixinsdk.go

@@ -1133,10 +1133,12 @@ func (rw responseWriter) GetUserBaseInfo(openid string) (map[string]interface{},
 func (w *Weixin) GetUserBaseInfo(openid string) (map[string]interface{}, error) {
 	bs, err := sendGetRequest(weixinUserInfo+"?openid="+openid+"&lang=zh_CN&access_token=", w.tokenChan)
 	if err == nil {
+		log.Println("get userinfo ", string(bs))
 		ret := map[string]interface{}{}
 		err = json.Unmarshal(bs, &ret)
 		return ret, err
 	} else {
+		log.Println("get userinfo err ", err.Error())
 		return nil, err
 	}
 }

+ 1 - 0
weixin/src/qfw/weixinconfig/weixinconfig.go

@@ -29,6 +29,7 @@ type wxconfig struct {
 	LoginTip        string            `json:"loginTip"`
 	FreezeTip       string            `json:"freezeTip"`
 	Activity        map[string]string `json:"activity"` //活动配置
+	WeixinAutoRpl   string            `json:"weixinautorpl"`
 }
 
 //系统配置