|
@@ -6,19 +6,20 @@ import (
|
|
. "gopkg.in/mgo.v2/bson"
|
|
. "gopkg.in/mgo.v2/bson"
|
|
"qfw/util/credit"
|
|
"qfw/util/credit"
|
|
. "qfw/util/mongodb"
|
|
. "qfw/util/mongodb"
|
|
|
|
+ "sync"
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
|
|
|
|
-//
|
|
|
|
-var sharelock chan bool = make(chan bool, 10)
|
|
|
|
|
|
+//锁
|
|
|
|
+var sharelock *sync.Mutex
|
|
|
|
|
|
//保存用户邀请关系,走线程池
|
|
//保存用户邀请关系,走线程池
|
|
func SaveInviteLink(shareid string, myopenid string) {
|
|
func SaveInviteLink(shareid string, myopenid string) {
|
|
//先找邀请人信息
|
|
//先找邀请人信息
|
|
- sharelock <- true
|
|
|
|
|
|
+ sharelock.Lock()
|
|
ret := FindOne("person_share", M{"i_shareid": shareid})
|
|
ret := FindOne("person_share", M{"i_shareid": shareid})
|
|
if *ret == nil {
|
|
if *ret == nil {
|
|
- <-sharelock
|
|
|
|
|
|
+ sharelock.Unlock()
|
|
return
|
|
return
|
|
}
|
|
}
|
|
source_opendid := (*ret)["s_openid"]
|
|
source_opendid := (*ret)["s_openid"]
|
|
@@ -33,11 +34,47 @@ func SaveInviteLink(shareid string, myopenid string) {
|
|
//取用户ID
|
|
//取用户ID
|
|
ret = FindOne("user", M{"s_m_openid": source_opendid})
|
|
ret = FindOne("user", M{"s_m_openid": source_opendid})
|
|
if *ret == nil {
|
|
if *ret == nil {
|
|
- <-sharelock
|
|
|
|
|
|
+ sharelock.Unlock()
|
|
return
|
|
return
|
|
}
|
|
}
|
|
smid := fmt.Sprintf("%x", string(((*ret)["_id"]).(ObjectId)))
|
|
smid := fmt.Sprintf("%x", string(((*ret)["_id"]).(ObjectId)))
|
|
//积分处理,RPC
|
|
//积分处理,RPC
|
|
credit.InCreditB(smid, credit.C_TG, nil)
|
|
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
|
|
|
|
+ }
|
|
}
|
|
}
|