Преглед на файлове

新增积分统一方法

zhangjinkun@topnet.net.cn преди 9 години
родител
ревизия
f7b790b4d7
променени са 4 файла, в които са добавени 58 реда и са изтрити 11 реда
  1. 2 1
      core/src/config.json
  2. 2 1
      core/src/qfw/coreconfig/SysConfig.go
  3. 50 9
      core/src/qfw/member/credit/credit.go
  4. 4 0
      core/src/qfw/member/membermanager.go

+ 2 - 1
core/src/config.json

@@ -28,5 +28,6 @@
     "mailFailureTime": 3,
     "chatServer": "127.0.0.1:83",
     "chatRpc": "127.0.0.1:88",
-	"creditRpc":"127.0.0.1:8765"
+	"creditRpc":"127.0.0.1:8765",
+	"credit_a":"a1,a2,a3,a4,a5,a6,a7,a8"
 }

+ 2 - 1
core/src/qfw/coreconfig/SysConfig.go

@@ -22,8 +22,9 @@ type config struct {
 	MailFailureTime int         `json:"mailFailureTime"`
 	ChatServer      string      `json:"chatServer"`
 	ChatRpc         string      `json:"chatRpc"`
-	CreditRpc       string      `json:"creditRpc"`
 	ElasticPoolSize int         `json:"elasticPoolSize"`
+	CreditRpc       string      `json:"creditRpc"`
+	CreditA         string      `json:"credit_a"`
 }
 type smtp struct {
 	Addr     string `json:"addr"`

+ 50 - 9
core/src/qfw/member/credit/credit.go

@@ -2,19 +2,31 @@
 package credit
 
 import (
+	"fmt"
 	"github.com/go-xweb/xweb"
 	. "gopkg.in/mgo.v2/bson"
+	"log"
 	. "qfw/coreconfig"
 	"qfw/util"
+	mogo "qfw/util/mongodb"
 	"qfw/util/rpc"
+	"strconv"
+	"strings"
 )
 
-var rc rpc.RpcCall
-var replay *int
+var Rc rpc.RpcCall
+var Replay *int
+var CreditA map[string]uint64
 
 func init() {
 	util.ReadConfig(&SysConfig)
-	rc = rpc.RpcCall{Addr: SysConfig.CreditRpc}
+	tmp := strings.Split(SysConfig.CreditA, ",")
+	CreditA = make(map[string]uint64)
+	for _, v := range tmp {
+		n, _ := strconv.Atoi(v[1:])
+		CreditA[v] = uint64(n)
+	}
+	Rc = rpc.RpcCall{Addr: SysConfig.CreditRpc}
 	//添加模块解析
 	xweb.AddAction(&Credit{})
 }
@@ -26,15 +38,44 @@ type Credit struct {
 
 //增加积分
 func (c *Credit) IncreditAjaxRqe() error {
+	result := false
 	userId := c.GetSession("userId").(string)
+	num := c.GetSession("credit_a").(uint64)
 	code := c.GetString("code")
-	num, _ := c.GetInt("num")
-	param := make(map[string]interface{})
-	err := rc.InCreadit(&rpc.CreditData{Code: code, Uid: userId, Num: int(num), OtherParam: param}, replay)
-	result := false
-	if err == nil {
-		result = true
+	b := AIsHasDo(code, num)
+	if !b {
+		param := make(map[string]interface{})
+		err := Rc.InCreadit(&rpc.CreditData{Code: code, Uid: userId, Num: int(num), OtherParam: param}, Replay)
+		if err == nil {
+			num, r := UpuserCreditA(code, userId, uint64(num))
+			c.Session().Set("credit_a", num)
+			result = r
+		} else {
+			log.Println(err)
+		}
 	}
 	c.ServeJson(M{"result": result})
 	return nil
 }
+
+func AIsHasDo(code string, num uint64) bool {
+	b := false
+	var ret uint64
+	if tmp, ok := CreditA[code]; ok {
+		ret = 1 << (tmp - 1)
+	}
+	if num&ret > 0 {
+		b = true
+	}
+	return b
+}
+
+func UpuserCreditA(code, userId string, num uint64) (uint64, bool) {
+	var ret uint64
+	if tmp, ok := CreditA[code]; ok {
+		ret = 1 << (tmp - 1)
+	}
+	num = num + ret
+	b := mogo.Update("user", `{"_id":"`+userId+`"}`, `{"$set":{"credit_a":`+fmt.Sprint(num)+`}}`, true, false)
+	return num, b
+}

+ 4 - 0
core/src/qfw/member/membermanager.go

@@ -664,6 +664,8 @@ func (m *Member) Logout() error {
 	m.DelSession("audittype")     //认证后是否是第一次登录的标识第一次:first
 	m.DelSession("promotion_id")  //推广id
 	m.DelSession("promotion_c")   //推广邮件代码
+	m.DelSession("credit_a")      //a积分任务
+
 	deleteCookie(m)
 	return m.Redirect("/")
 }
@@ -1119,6 +1121,8 @@ func UpdateSession(action *xweb.Action, r map[string]interface{}) {
 		setSessMap["identType"] = IntAll(r["i_identificationtype"])
 		setSessMap["identWay"] = IntAll(r["i_identificationway"])
 		setSessMap["opLocDistrict"] = r["opLocDistrict"]
+		setSessMap["credit_a"] = uint64(IntAll(r["credit_a"]))
+
 		if r["s_phone"] == nil || r["s_phone"].(string) == "" {
 			setSessMap["phone"] = ""
 		} else {