zhanghongbo 9 жил өмнө
parent
commit
2692205317

+ 2 - 0
weixin/src/main.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	//"endless"
 	"log"
 	"net/http"
 	"qfw/util"
@@ -37,4 +38,5 @@ func main() {
 	rpc.StartWeixinRpc(weixin.Mux)
 	//启动web服务
 	http.ListenAndServe(":"+wf.SysConfig.Port, nil) // 启动接收微信数据服务器
+	//endless.ListenAndServe(":"+wf.SysConfig.Port, nil)
 }

+ 11 - 0
weixin/src/qfw/weixin/dao/coupon.go

@@ -0,0 +1,11 @@
+package dao
+
+import (
+	"qfw/util/redis"
+)
+
+//抽奖
+//读取我的今日抽奖次数(Redis中该变量的有效期,一定控制在当天)
+func GetMyTodayDrawTimes(openid string) int {
+	return redis.GetInt("other", "coupon_"+openid)
+}

+ 43 - 6
weixin/src/qfw/weixin/dao/sharedao.go

@@ -6,19 +6,20 @@ import (
 	. "gopkg.in/mgo.v2/bson"
 	"qfw/util/credit"
 	. "qfw/util/mongodb"
+	"sync"
 	"time"
 )
 
-//
-var sharelock chan bool = make(chan bool, 10)
+//
+var sharelock *sync.Mutex
 
 //保存用户邀请关系,走线程池
 func SaveInviteLink(shareid string, myopenid string) {
 	//先找邀请人信息
-	sharelock <- true
+	sharelock.Lock()
 	ret := FindOne("person_share", M{"i_shareid": shareid})
 	if *ret == nil {
-		<-sharelock
+		sharelock.Unlock()
 		return
 	}
 	source_opendid := (*ret)["s_openid"]
@@ -33,11 +34,47 @@ func SaveInviteLink(shareid string, myopenid string) {
 	//取用户ID
 	ret = FindOne("user", M{"s_m_openid": source_opendid})
 	if *ret == nil {
-		<-sharelock
+		sharelock.Unlock()
 		return
 	}
 	smid := fmt.Sprintf("%x", string(((*ret)["_id"]).(ObjectId)))
 	//积分处理,RPC
 	credit.InCreditB(smid, credit.C_TG, nil)
-	<-sharelock
+	sharelock.Unlock()
+}
+
+//保存新用户赠送的卡劵,只记录当前量,不记历史
+func SaveMyNewUserCoupon(openid string) {
+	myCoupon := map[string]interface{}{
+		"s_openid": openid,
+		"s_type":   "cj", //抽奖卡
+		"i_amount": 1,    //总量
+	}
+	Save("mycoupon", myCoupon)
+}
+
+//赠送邀请人卡劵,仅修改其拥有量,不做记录
+func UpdateInviteUserCoupon(shareid string) {
+	sharelock.Lock()
+	//找邀请人
+	ret := FindOne("person_share", M{"i_shareid": shareid})
+	if *ret == nil {
+		sharelock.Unlock()
+		return
+	}
+	openid := (*ret)["s_openid"].(string)
+	//邀请,有一人成功注册,邀请人获得一张抽奖卷
+	Update("mycoupon", M{"s_openid": openid, "s_type": "cj"}, `{"$inc":{"i_amount":1}}`, true, false)
+	sharelock.Unlock()
+}
+
+//查看我的抽奖卷数量
+func GetMyCouponAmount(openid string) int64 {
+	ret := FindOne("mycoupon", M{"s_openid": openid, "s_type": "cj"})
+	if *ret == nil {
+		return 0
+	} else {
+		tmp := (*ret)["i_amount"].(int64)
+		return tmp
+	}
 }

+ 4 - 0
weixin/src/qfw/weixin/dao/userdao.go

@@ -41,7 +41,11 @@ func AddUser(openid, unionid, bindweixin, userphoto string) (err error, flag int
 		data["i_identificationway"] = 0
 		data["s_m_openid"] = openid //微信手机端openid
 		if id := Save("user", data); len(id) > 0 {
+			//赠送个人,新用户注册积分
 			go credit.InCreditA(id, credit.A_ZC, 0)
+			//赠送个人用户游戏卡1张,可以用来抽奖
+			go SaveMyNewUserCoupon(openid)
+			//卡劵赠送完成,暂不存来源记录
 			return nil, 1
 		} else {
 			return errors.New("保存用户失败"), 0

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

@@ -64,8 +64,14 @@ func MsgTxtHandler(w ResponseWriter, r *Request) {
 		return
 	} else if r.Content == "抽奖" { //进入抽奖环节
 		//查改用户是否已经抽过奖
-		if dao.FindWinningRecord(r.FromUserName, wf.SysConfig.Activity["activitycode"]) {
+		/*if dao.FindWinningRecord(r.FromUserName, wf.SysConfig.Activity["activitycode"]) {
 			w.ReplyText("小主莫贪心,每人只有一次抽奖机会呦")
+		}*/
+		//TODO 改为查我的抽奖卷
+		if dao.GetMyCouponAmount(r.FromUserName) <= 0 {
+			w.ReplyText("对不起,你的奖劵不足。您可以查看<a href='http://www.qimingxing.info/p/'>企明星的最新活动</a>赚取积分。")
+		} else if dao.GetMyTodayDrawTimes() > 0 { //检查今日抽奖次数
+			w.ReplyText("对不起,你今天的抽奖次数已经用完,请您明天再来。")
 		} else {
 			targeturl := fmt.Sprintf("http://%s/activity/%s/%s", wf.SysConfig.Domain, wf.SysConfig.Activity["activitycode"], se.EncodeString(r.FromUserName))
 			log.Println("choujiang url:", targeturl)

+ 1 - 1
weixin/src/qfw/weixin/subscribehandler.go

@@ -57,8 +57,8 @@ func SubscribeHandler(w ResponseWriter, r *Request) {
 			redis.Put("sso", "new_"+source, openid, 900)
 			//TODO 处理分享(邀请)类的二维码,记录邀请关系
 			if strings.HasPrefix(source, "32") {
-				//shareid, _ := strconv.Atoi(source)
 				go dao.SaveInviteLink(source, r.FromUserName)
+				go dao.UpdateInviteUserCoupon(source)
 			}
 		} else {
 			w.ReplyText(OWELCOME_MSG) // 有旧人关注,返回欢迎消息