WH01243 před 4 roky
rodič
revize
a83bf1ff11

+ 2 - 1
api/activity.api

@@ -13,7 +13,7 @@ type Request {
 }
 
 type LotteryOperation {
-	LotteryIdArr     []int64 `form:"lotteryIdArr,optional"`     //奖券标识集合
+	LotteryIdArr     string `form:"lotteryIdArr,optional"`     //奖券标识集合
 	UserLotteryIdArr []int64 `form:"userLotteryIdArr,optional"` //用户奖券标识集合
 	UserId           string  `form:"userId"`                    //用户标识
 	AppId            string  `form:"appId"`                     //身份标识
@@ -42,6 +42,7 @@ type ActivityLotteryResp {
 }
 type LotteryJson {
 	LotteryId        int64         `form:"lotteryId"`                                         //奖券Id
+	LotteryIdStr     string        `form:"lotteryId"`                                         //奖券Id(加密过的)
 	LotteryName      string        `form:"lotteryName"`                                       //奖券名字
 	LotteryBeginDate string        `form:"lotteryBeginDate"`                                  //活动时间起
 	LotteryendDate   string        `form:"lotteryendDate"`                                    //活动时间止

+ 7 - 1
api/internal/logic/activitylotterychecklogic.go

@@ -2,7 +2,10 @@ package logic
 
 import (
 	"app.yhyue.com/moapp/jyMarketing/rpc/activity"
+	"app.yhyue.com/moapp/jyMarketing/util"
 	"context"
+	"fmt"
+	"strconv"
 
 	"app.yhyue.com/moapp/jyMarketing/api/internal/svc"
 	"app.yhyue.com/moapp/jyMarketing/api/internal/types"
@@ -39,7 +42,10 @@ func (l *ActivityLotteryCheckLogic) ActivityLotteryCheck(req types.Request) (*ty
 	var userLotteryList []*types.LotteryJson
 	for _, value := range resp.Data {
 		userLottery := types.LotteryJson{}
-		userLottery.LotteryId = value.LotteryId
+		strconv.FormatInt(value.LotteryId,10)
+		var SE = util.SimpleEncrypt{Key: "topnet2015topnet2015"}
+		userLottery.LotteryIdStr=SE.Encode2Hex(fmt.Sprint(value.LotteryId))
+		//userLottery.LotteryId = value.LotteryId
 		userLottery.LotteryName=value.LotteryName
 		userLottery.LotteryBeginDate=value.LotteryBeginDate
 		userLottery.LotteryendDate=value.LotteryendDate

+ 4 - 1
api/internal/logic/lotteryreceivechecklogic.go

@@ -2,6 +2,7 @@ package logic
 
 import (
 	"app.yhyue.com/moapp/jyMarketing/rpc/activity"
+	"app.yhyue.com/moapp/jyMarketing/util"
 	"context"
 	"strconv"
 	"strings"
@@ -32,7 +33,9 @@ func (l *LotteryReceiveCheckLogic) LotteryReceiveCheck(req types.LotteryOperatio
 	var arr []int64
 	lotteryIdArr := strings.Split(req.LotteryIdArr, ",")
 	for _, value := range lotteryIdArr {
-		valueInt, _ := strconv.ParseInt(value, 10, 64)
+		var SE = util.SimpleEncrypt{Key: "topnet2015topnet2015"}
+		lotteryIdStr:=SE.Decode4Hex(value)
+		valueInt, _ := strconv.ParseInt(lotteryIdStr, 10, 64)
 		arr = append(arr, valueInt)
 	}
 	resp, err := lsi.LotteryReceive(l.ctx, &activity.LotteryOperation{

+ 1 - 0
api/internal/types/types.go

@@ -46,6 +46,7 @@ type ActivityLotteryResp struct {
 
 type LotteryJson struct {
 	LotteryId        int64         `form:"lotteryId"`                                         //奖券Id
+	LotteryIdStr     string        `form:"lotteryId"`                                         //奖券Id(加密过的)
 	LotteryName      string        `form:"lotteryName"`                                       //奖券名字
 	LotteryBeginDate string        `form:"lotteryBeginDate"`                                  //活动时间起
 	LotteryendDate   string        `form:"lotteryendDate"`                                    //活动时间止

+ 12 - 13
service/ActivityService.go

@@ -35,12 +35,12 @@ func (service *ActivityService) LotteryReceive(data *activity.LotteryOperation,
 			Join("left", "prize p", "l.prizeId=p.id").
 			Where("l.id=?", lotteryId).Get(&prizeData)
 		if err != nil {
-			log.Panicln("查询奖品信息:", err)
+			log.Println("查询奖品信息:", err)
 			orm.Rollback()
 			return entity.ErrorCode, "奖品信息查询失败"
 		}
 		if !bool {
-			log.Panicln("查询奖品信息:", err)
+			log.Println("查询奖品信息:", err)
 			orm.Rollback()
 			return entity.ErrorCode, "奖品信息查询失败"
 		}
@@ -48,12 +48,12 @@ func (service *ActivityService) LotteryReceive(data *activity.LotteryOperation,
 		activity := entity.Activity{}
 		bool, err = orm.Table("activity").Where("prizeId=? and  state=1", prizeData.PrizeId).Get(&activity)
 		if !bool {
-			log.Panicln("查询奖品信息:", err)
+			log.Println("查询奖品信息:", err)
 			orm.Rollback()
 			return entity.ErrorCode, "奖品信息查询失败"
 		}
 		if !activityTime(activity.BeginDate) {
-			log.Panicln("活动没有开始不可领劵", activity)
+			log.Println("活动没有开始不可领劵", activity)
 			orm.Rollback()
 			return entity.ErrorCode, "活动没有开始不可领劵"
 		}
@@ -64,7 +64,7 @@ func (service *ActivityService) LotteryReceive(data *activity.LotteryOperation,
 		err = orm.Table("user_prize").
 			Where("userId=? and  appId=? and  lotteryId=? and to_days(createTime) = to_days(now()) ", data.UserId, data.AppId, lotteryId).Find(&userLotteryList)
 		if err != nil {
-			log.Panicln("查询奖品信息:", err)
+			log.Println("查询奖品信息:", err)
 			orm.Rollback()
 			return entity.ErrorCode, "查询领取次数失败"
 		}
@@ -78,7 +78,7 @@ func (service *ActivityService) LotteryReceive(data *activity.LotteryOperation,
 			err = orm.Table("user_prize").
 				Where("userId=? and  appId=? and  lotteryId=?", data.UserId, data.AppId, lotteryId).Find(&userLotteryList)
 			if err != nil {
-				log.Panicln("查询奖品信息:", err)
+				log.Println("查询奖品信息:", err)
 				orm.Rollback()
 				return entity.ErrorCode, "查询领取次数失败"
 			}
@@ -119,28 +119,27 @@ func (service *ActivityService) LotteryReceive(data *activity.LotteryOperation,
 		}
 		numb, err := orm.Table("user_prize").Insert(&userLettry)
 		if err != nil || numb == int64(0) {
-			log.Panicln("领取奖券失败:", err)
+			log.Println("领取奖券失败:", err)
 			orm.Rollback()
 			return entity.ErrorCode, "领取奖券失败"
 		}
-
-		//7、修改redis余额
+		//6、修改redis余额
 		if util.GetInt(code, "lottery_"+fmt.Sprint(lotteryId)) <= 0 {
-			log.Panicln("奖券余额不足:", err)
+			log.Println("奖券余额不足:", err)
 			orm.Rollback()
 			return entity.ErrorCode, "奖券余额不足"
 		}
 		if !util.DecrbyLimit(code, "lottery_"+fmt.Sprint(lotteryId), 1, 0) {
-			log.Panicln("修改redis奖券库存失败:", err)
+			log.Println("修改redis奖券库存失败:", err)
 			orm.Rollback()
 			return entity.ErrorCode, "修改redis奖券库存失败"
 		}
-		//6、修改奖券余额数量
+		//7、修改奖券余额数量
 		lottery := entity.Lottery{}
 		lottery.Id = lotteryId
 		_, err = orm.Exec("UPDATE lottery SET `stockNumber` = stockNumber-1, `receiveNumber` = receiveNumber+1 WHERE `id` = ?", lotteryId)
 		if err != nil {
-			log.Panicln("修改奖券库存失败:", err)
+			log.Println("修改奖券库存失败:", err)
 			orm.Rollback()
 			return entity.ErrorCode, "修改奖券库存失败"
 		}

+ 135 - 0
util/simpleencrypt.go

@@ -0,0 +1,135 @@
+package util
+
+import (
+	"bytes"
+	"encoding/base64"
+	"encoding/hex"
+)
+
+/**
+加解密
+	数据结构
+	密文+sha32校验
+*/
+//
+type SimpleEncrypt struct {
+	Key string //加解密用到的key(加密key索引)+
+}
+
+//计算检验和
+func (s *SimpleEncrypt) calaCheckCode(src []byte) []byte {
+	check := 0
+	for i := 0; i < len(src); i++ {
+		check += int(src[i])
+	}
+	return []byte{byte((check >> 8) & 0xff), byte(check & 0xff)}
+}
+
+//验证数据有效性
+func (s *SimpleEncrypt) verify(src []byte) bool {
+	v := s.calaCheckCode(src[:len(src)-2])
+	return bytes.Equal(v, src[len(src)-2:])
+}
+
+//加密String
+func (s *SimpleEncrypt) EncodeString(str string) string {
+	data := []byte(str)
+	s.doEncode(data)
+	return base64.StdEncoding.EncodeToString(data)
+}
+
+//加密String,ByCheck
+func (s *SimpleEncrypt) EncodeStringByCheck(str string) string {
+	data := []byte(str)
+	s.doEncode(data)
+	v := s.calaCheckCode(data)
+	data = append(data, v...)
+	return base64.StdEncoding.EncodeToString(data)
+}
+
+//
+func (s *SimpleEncrypt) Encode2Hex(str string) string {
+	data := []byte(str)
+	s.doEncode(data)
+	return hex.EncodeToString(data)
+}
+func (s *SimpleEncrypt) Encode2HexByCheck(str string) string {
+	data := []byte(str)
+	s.doEncode(data)
+	v := s.calaCheckCode(data)
+	data = append(data, v...)
+	return hex.EncodeToString(data)
+}
+
+//解密String
+func (s *SimpleEncrypt) DecodeString(str string) string {
+	data, _ := base64.StdEncoding.DecodeString(str)
+	s.doEncode(data)
+	return string(data)
+}
+
+//解密String,ByCheck
+func (s *SimpleEncrypt) DecodeStringByCheck(str string) string {
+	data, _ := base64.StdEncoding.DecodeString(str)
+	if len(data) < 2 || !s.verify(data) {
+		return ""
+	}
+	data = data[:len(data)-2]
+	s.doEncode(data)
+	return string(data)
+}
+
+//
+func (s *SimpleEncrypt) Decode4Hex(str string) string {
+	data, _ := hex.DecodeString(str)
+	s.doEncode(data)
+	return string(data)
+}
+func (s *SimpleEncrypt) Decode4HexByCheck(str string) string {
+	data, _ := hex.DecodeString(str)
+	if len(data) < 2 || !s.verify(data) {
+		return ""
+	}
+	data = data[:len(data)-2]
+	s.doEncode(data)
+	return string(data)
+}
+
+//加密
+func (s *SimpleEncrypt) Encode(data []byte) {
+	s.doEncode(data)
+
+}
+
+func (s *SimpleEncrypt) EncodeByCheck(data []byte) {
+	s.doEncode(data)
+	v := s.calaCheckCode(data)
+	data = append(data, v...)
+}
+
+//解密
+func (s *SimpleEncrypt) Decode(data []byte) {
+	s.doEncode(data)
+}
+
+//解密
+func (s *SimpleEncrypt) DecodeByCheck(data []byte) {
+	if len(data) < 2 || !s.verify(data) {
+		data = []byte{}
+		return
+	}
+	s.doEncode(data)
+}
+
+func (s *SimpleEncrypt) doEncode(bs []byte) {
+	tmp := []byte(s.Key)
+THEFOR:
+	for i := 0; i < len(bs); {
+		for j := 0; j < len(tmp); j, i = j+1, i+1 {
+			if i >= len(bs) {
+				break THEFOR
+			}
+			bs[i] = bs[i] ^ tmp[j]
+		}
+	}
+}