Ver Fonte

积分调动通用接口

zhangjinkun@topnet.net.cn há 9 anos atrás
pai
commit
e5399f422c

+ 109 - 0
common/src/qfw/util/credit/credit.go

@@ -0,0 +1,109 @@
+// 积分
+package credit
+
+import (
+	"fmt"
+	"qfw/util"
+	mogo "qfw/util/mongodb"
+	"qfw/util/rpc"
+	"strconv"
+	"strings"
+)
+
+var Rc rpc.RpcCall
+var Replay *int
+var CreditA map[string]uint64
+var SysConfig map[string]interface{}
+
+const (
+	A_ZC   = "a1" //注册
+	A_RZ   = "a2" //认证
+	A_CJMP = "a3" //创建名片
+	A_BYX  = "a4" //绑定邮箱
+	A_BSJ  = "a5" //绑定手机
+	A_SCMP = "a6" //收藏名片
+	A_SCFW = "a7" //收藏服务
+	A_SYJY = "a8" //使用剑鱼
+
+	B_QD   = "b1" //签到
+	B_FFW  = "b2" //发服务
+	B_FXQ  = "b3" //发需求
+	B_FXFW = "b4" //分享服务
+	C_JY   = "c1" //交易
+	C_PJ   = "c2" //评价
+	C_TG   = "c3" //推广用户
+
+	D_WXCZ  = "d1" //微信充值
+	E_EWMZR = "e1" //二维码转入
+	A_JY    = "A1" //剑鱼
+	A_ZZ    = "B1" //转赠
+)
+
+func init() {
+	util.ReadConfig(&SysConfig)
+	tmp := strings.Split(SysConfig["credit_a"].(string), ",")
+	CreditA = make(map[string]uint64)
+	for _, v := range tmp {
+		if len(v) > 1 {
+			n, _ := strconv.Atoi(v[1:])
+			CreditA[v] = uint64(n)
+		}
+	}
+
+	Rc = rpc.RpcCall{Addr: SysConfig["creditRpc"].(string)}
+}
+
+//一次性任务积分
+func InCreditA(userId, code string, credit_a int) (bool, int, error) {
+	result := false
+	if len(userId) < 1 {
+		return result, credit_a, nil
+	}
+	if !AIsHasDo(code, credit_a) {
+		param := make(map[string]interface{})
+		err := Rc.InCreadit(&rpc.CreditData{Code: code, Uid: userId, Num: 0, OtherParam: param}, Replay)
+		if err == nil {
+			result, credit_a = UpuserCreditA(code, userId, credit_a)
+		}
+		return result, credit_a, err
+	}
+	return result, credit_a, nil
+}
+
+//日常任务积分
+func InCreditB(userId, code string) (bool, error) {
+	b := false
+	if len(userId) < 1 {
+		return b, nil
+	}
+	param := make(map[string]interface{})
+	err := Rc.InCreadit(&rpc.CreditData{Code: code, Uid: userId, Num: 0, OtherParam: param}, Replay)
+	if err == nil {
+		b = true
+	}
+	return b, err
+}
+
+//更新用户一次性积分状态
+func UpuserCreditA(code, userId string, credit_a int) (bool, int) {
+	var ret uint64
+	if tmp, ok := CreditA[code]; ok {
+		ret = 1 << (tmp - 1)
+	}
+	n_credit_a := uint64(credit_a) + ret
+	b := mogo.Update("user", `{"_id":"`+userId+`"}`, `{"$set":{"credit_a":`+fmt.Sprint(int(n_credit_a))+`}}`, true, false)
+	return b, int(n_credit_a)
+}
+
+//判断一次性积分是否完成
+func AIsHasDo(code string, num int) bool {
+	b := false
+	var ret uint64
+	if tmp, ok := CreditA[code]; ok {
+		ret = 1 << (tmp - 1)
+	}
+	if uint64(num)&ret > 0 {
+		b = true
+	}
+	return b
+}

+ 0 - 1
core/src/main.go

@@ -11,7 +11,6 @@ import (
 	_ "qfw/front"
 	_ "qfw/manage"
 	_ "qfw/member"
-	_ "qfw/member/credit"
 	_ "qfw/member/message"
 	_ "qfw/microwebsite"
 	_ "qfw/mobile"

+ 0 - 81
core/src/qfw/member/credit/credit.go

@@ -1,81 +0,0 @@
-// credit
-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 CreditA map[string]uint64
-
-func init() {
-	util.ReadConfig(&SysConfig)
-	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{})
-}
-
-type Credit struct {
-	*xweb.Action
-	increditAjaxRqe xweb.Mapper `xweb:"/member/incredit"` //增加积分
-}
-
-//增加积分
-func (c *Credit) IncreditAjaxRqe() error {
-	result := false
-	userId := c.GetSession("userId").(string)
-	num := c.GetSession("credit_a").(uint64)
-	code := c.GetString("code")
-	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
-}

+ 1 - 2
core/src/qfw/member/membermanager.go

@@ -1121,8 +1121,7 @@ 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"]))
-
+		setSessMap["credit_a"] = IntAll(r["credit_a"])
 		if r["s_phone"] == nil || r["s_phone"].(string) == "" {
 			setSessMap["phone"] = ""
 		} else {

+ 7 - 1
core/src/qfw/member/yellowpage.go

@@ -15,6 +15,7 @@ import (
 	"qfw/coreutil"
 	"qfw/redpackage"
 	"qfw/util"
+	credit "qfw/util/credit"
 	"qfw/util/elastic"
 	. "qfw/util/fsw"
 	"qfw/util/mongodb"
@@ -230,8 +231,13 @@ func (yp *Yellowpage) Dosave() error {
 	if !flag {
 		status = "n"
 		info = "保存信息失败"
+	} else { //首次创建企业名片,送积分
+		userId := util.ObjToString(yp.GetSession("userId"))
+		_, credit_a, _ := credit.InCreditA(userId,
+			credit.A_CJMP,
+			util.IntAll(yp.GetSession("credit_a")))
+		yp.Session().UpdateByCustomField("id", userId, "credit_a", credit_a)
 	}
-
 	return yp.Write("{\"info\":\"" + info + "\",\"status\":\"" + status + "\"}")
 }