浏览代码

Merge branch 'dev' of http://git.ycjcjy.com/SpaceOfCheng/services into dev

wangfei 6 年前
父节点
当前提交
6107517869

+ 2
- 2
conf/sms.conf 查看文件

@@ -1,7 +1,7 @@
1 1
 # 短信接口
2
-url = http://localhost:8080/sms
2
+url = http://micservice.ycjcjy.com/sms
3 3
 method = POST
4 4
 contentType = "application/json;charset=UTF-8"
5 5
 
6 6
 [captcha]
7
-code = 0107
7
+code = 0113

+ 4
- 0
controllers/cases/key.go 查看文件

@@ -7,6 +7,10 @@ func (c *CaseController) GetKeyList() {
7 7
 	pageSize, _ := c.GetInt("pagesize")
8 8
 	num := c.GetString("num")
9 9
 
10
+	if page < 1 {
11
+		page = 1
12
+	}
13
+
10 14
 	list, err := c.dao.GetKeysByCase(caseid, num, page, pageSize)
11 15
 	if err != nil {
12 16
 		c.ResponseError(err)

+ 13
- 0
log/common.log 查看文件

@@ -5,3 +5,16 @@
5 5
 2018/08/20 15:46:35 [E] 获取客户列表失败: Error 1248: Every derived table must have its own alias
6 6
 2018/08/20 15:49:09 [E] 获取客户列表失败: Error 1060: Duplicate column name 'user_id'
7 7
 2018/08/20 15:57:45 [E] 获取客户列表失败: sql: statement expects 2 inputs; got 1
8
+2018/08/20 19:25:08 [E] 短信发送失败: 400 
9
+2018/08/20 19:27:58 [E] 短信发送失败: 400 
10
+2018/08/20 19:28:52 [E] 短信发送失败: 400 
11
+2018/08/21 13:38:17 [E] 用户没有设置默认案场
12
+2018/08/21 13:38:17 [E] 您没有该案场的权限!
13
+2018/08/21 13:39:04 [E] 用户没有设置默认案场
14
+2018/08/21 13:39:04 [E] 您没有该案场的权限!
15
+2018/08/21 13:39:09 [E] 用户没有设置默认案场
16
+2018/08/21 13:39:09 [E] 您没有该案场的权限!
17
+2018/08/21 13:39:24 [E] 用户没有设置默认案场
18
+2018/08/21 13:39:24 [E] 您没有该案场的权限!
19
+2018/08/21 13:41:04 [E] 用户没有设置默认案场
20
+2018/08/21 13:41:04 [E] 您没有该案场的权限!

+ 1
- 0
models/cases/area.go 查看文件

@@ -68,6 +68,7 @@ func (m *CaseDAO) UpdateCaseArea(area model.SysCaseArea) error {
68 68
 		"area_name",
69 69
 		"area_icon",
70 70
 		"area_icon_white",
71
+		"order",
71 72
 	}
72 73
 	_, err := m.db.Cols(cols...).Where("area_id=?", area.AreaId).Update(area)
73 74
 	return err

+ 18
- 3
models/cases/key.go 查看文件

@@ -22,11 +22,26 @@ type CaseKeyInfo struct {
22 22
 // GetKeysByCase 根据案场获取钥匙信息
23 23
 func (m *CaseDAO) GetKeysByCase(caseid, num string, page, pageSize int) ([]CaseKeyInfo, error) {
24 24
 	var keys []CaseKeyInfo
25
-	dao := m.db.Where("case_id=?", caseid).Table("ta_case_key").And("status>" + strconv.Itoa(models.STATUS_DEL))
25
+	query := `
26
+		SELECT
27
+			t.*, s.customer_id,
28
+			s.customer_name
29
+		FROM
30
+			ta_case_key t
31
+		LEFT JOIN ta_case_key_use s ON t.key_id = s.key_id AND s.status != ?
32
+		WHERE
33
+			t.case_id = ?
34
+		AND t.status > ?
35
+	`
36
+
26 37
 	if num != "" {
27
-		dao.And("lock_num like '%" + num + "%'")
38
+		query += " AND t.lock_num like '%" + num + "%'"
28 39
 	}
29
-	err := dao.Limit(pageSize, (page-1)*pageSize).Find(&keys)
40
+
41
+	offset := (page - 1) * pageSize
42
+	query += " LIMIT " + strconv.Itoa(pageSize) + " OFFSET " + strconv.Itoa(offset)
43
+
44
+	err := m.db.SQL(query, models.STATUS_NORMAL, caseid, models.STATUS_DEL).Find(&keys)
30 45
 	return keys, err
31 46
 }
32 47
 

+ 8
- 2
models/constant.go 查看文件

@@ -2,8 +2,14 @@ package models
2 2
 
3 3
 // 状态列表
4 4
 const (
5
-	STATUS_NORMAL = 1
6
-	STATUS_DEL    = -1
5
+	// 删除
6
+	STATUS_DEL = iota - 1
7
+
8
+	// 新录入
9
+	STATUS_READY
10
+
11
+	// 正常
12
+	STATUS_NORMAL
7 13
 )
8 14
 
9 15
 // 映射数据库的布尔型

+ 69
- 1
models/goods/goods.go 查看文件

@@ -1,7 +1,13 @@
1 1
 package goods
2 2
 
3 3
 import (
4
+	"errors"
5
+	"spaceofcheng/services/models"
6
+	"spaceofcheng/services/models/model"
4 7
 	"spaceofcheng/services/utils"
8
+	"time"
9
+
10
+	"github.com/yl10/kit/guid"
5 11
 
6 12
 	"github.com/go-xorm/xorm"
7 13
 )
@@ -21,6 +27,68 @@ func NewGoodsDAO(ctx *utils.Context) *GoodsDAO {
21 27
 }
22 28
 
23 29
 // GetGoodsListOfCase 获取案场商品列表
24
-func (m *GoodsDAO) GetGoodsListOfCase() {
30
+// 暂时没涉及分页
31
+func (m *GoodsDAO) GetGoodsListOfCase(caseID string) ([]GoodsWithSpec, error) {
32
+	var goodsList []GoodsWithSpec
33
+
34
+	sql := "select * from ta_goods where case_id = ? and status = ? order by t.type_id, t.create_date"
35
+	if err := m.db.SQL(sql, caseID, models.STATUS_NORMAL).Find(&goodsList); err != nil {
36
+		return nil, err
37
+	}
38
+
39
+	for inx, goods := range goodsList {
40
+		sql = `SELECT * FROM td_spec t
41
+			JOIN ta_goods_spec s ON t.spec_id = s.spec_id
42
+			WHERE t.status = ? AND s.goods_id = ?
43
+		`
44
+
45
+		var specs []SpecWithPrice
46
+		if err := m.db.SQL(sql, models.STATUS_DEL, goods.GoodsId).Find(&specs); err != nil {
47
+			return nil, err
48
+		}
49
+
50
+		goodsList[inx].Specs = specs
51
+	}
52
+
53
+	return goodsList, nil
54
+}
55
+
56
+// GetGoodsByID 依据ID 获取商品
57
+func (m *GoodsDAO) GetGoodsByID(id, caseID string) (*model.TaGoods, error) {
58
+	goods := new(model.TaGoods)
59
+	if _, err := m.db.Where("goods_id=?", id).And("case_id=?", caseID).Get(goods); err != nil {
60
+		return nil, err
61
+	}
62
+
63
+	return goods, nil
64
+}
65
+
66
+// UpdateGoods 更新商品
67
+func (m *GoodsDAO) UpdateGoods(goods *model.TaGoods, cols []string) error {
68
+	if _, err := m.db.Where("goods_id=?", goods.GoodsId).Cols(cols...).Update(goods); err != nil {
69
+		return err
70
+	}
71
+
72
+	return nil
73
+}
74
+
75
+// SaveGoods 保存商品
76
+func (m *GoodsDAO) SaveGoods(goods *model.TaGoods) error {
77
+	userRaw := m.ctx.Get("user")
78
+	if userRaw == nil {
79
+		return errors.New("登录异常, 请登出重试")
80
+	}
81
+	user := userRaw.(model.SysUser)
82
+
83
+	goods.GoodsId = guid.NewGUIDString()
84
+	goods.Status = models.STATUS_NORMAL
85
+	goods.CreateDate = time.Now().Local()
86
+	goods.CreateUser = user.UserId
87
+	goods.OrgId = user.OrgId
88
+
89
+	if _, err := m.db.Insert(goods); err != nil {
90
+		return err
91
+	}
25 92
 
93
+	return nil
26 94
 }

+ 48
- 0
models/goods/orders.go 查看文件

@@ -0,0 +1,48 @@
1
+package goods
2
+
3
+import (
4
+	"errors"
5
+	"spaceofcheng/services/models"
6
+	"spaceofcheng/services/models/model"
7
+	"spaceofcheng/services/utils"
8
+	"strings"
9
+	"time"
10
+
11
+	"github.com/yl10/kit/guid"
12
+)
13
+
14
+// SaveOrders 下单
15
+func (m *GoodsDAO) SaveOrders(order *model.TaGoodsOrders) error {
16
+	if order.UserId == "" {
17
+		return errors.New("没有下单人信息")
18
+	}
19
+
20
+	caseID := order.CaseId
21
+	if caseID == "" {
22
+		return errors.New("没有指定案场")
23
+	}
24
+
25
+	caseInfo, err := m.getCaseByID(caseID)
26
+	if err != nil {
27
+		return err
28
+	}
29
+
30
+	order.OrdersId = guid.NewGUIDString()
31
+	order.OrgId = caseInfo.OrgId
32
+	order.CreateDate = time.Now().Local()
33
+	order.Status = models.STATUS_NORMAL
34
+
35
+	// 当前订单号的随机方式 = 时间 + 个人ID
36
+	order.OrdersNo = time.Now().Local().Format("20060102150405") + "-" + strings.Join(utils.GUIID2IntString(order.UserId), "")
37
+
38
+	return nil
39
+}
40
+
41
+func (m *GoodsDAO) getCaseByID(caseID string) (*model.SysCase, error) {
42
+	cs := new(model.SysCase)
43
+	if _, err := m.db.Where("case_id=?", caseID).Get(cs); err != nil {
44
+		return nil, err
45
+	}
46
+
47
+	return cs, nil
48
+}

+ 17
- 0
models/goods/types.go 查看文件

@@ -0,0 +1,17 @@
1
+package goods
2
+
3
+import (
4
+	"spaceofcheng/services/models/model"
5
+)
6
+
7
+// SpecWithPrice 规格价格
8
+type SpecWithPrice struct {
9
+	model.TdSpec
10
+	GoodsPrice float32 `xorm:"FLOAT(8,2)"`
11
+}
12
+
13
+// GoodsWithSpec 含规格商品
14
+type GoodsWithSpec struct {
15
+	model.TaGoods
16
+	Specs []SpecWithPrice
17
+}

+ 1
- 2
models/model/sys_wechat_conf.go 查看文件

@@ -3,8 +3,7 @@ package model
3 3
 type SysWechatConf struct {
4 4
 	ConfId string `xorm:"VARCHAR(64)"`
5 5
 	OrgId  string `xorm:"VARCHAR(64)"`
6
-	Type   int    `xorm:"comment('wechat 微信公众号
7
-            mini 小程序') SMALLINT(6)"`
6
+	Type   int    `xorm:"comment('wechat 微信公众号  mini 小程序') SMALLINT(6)"`
8 7
 	Appid  string `xorm:"VARCHAR(50)"`
9 8
 	Secret string `xorm:"VARCHAR(50)"`
10 9
 	Token  string `xorm:"VARCHAR(50)"`

+ 12
- 17
models/model/ta_account_change.go 查看文件

@@ -5,23 +5,18 @@ import (
5 5
 )
6 6
 
7 7
 type TaAccountChange struct {
8
-	DetailId   string `xorm:"not null pk VARCHAR(64)"`
9
-	AccountId  string `xorm:"VARCHAR(64)"`
10
-	UserId     string `xorm:"VARCHAR(64)"`
11
-	UserName   string `xorm:"VARCHAR(50)"`
12
-	OrgId      string `xorm:"VARCHAR(64)"`
13
-	CaseId     string `xorm:"VARCHAR(64)"`
14
-	ChangeType string `xorm:"comment('integral 积分
15
-            amount 城币') VARCHAR(20)"`
16
-	ChangeSource string `xorm:"comment('vip vip卡充值
17
-            orders 订单消费
18
-            register 注册
19
-            perfect 完善资料
20
-            recommend 推荐') VARCHAR(20)"`
21
-	SourceId   string  `xorm:"VARCHAR(64)"`
22
-	SourceName string  `xorm:"VARCHAR(255)"`
23
-	Amount     float32 `xorm:"FLOAT(8,2)"`
24
-	FloatType  string  `xorm:"comment('+
8
+	DetailId     string  `xorm:"not null pk VARCHAR(64)"`
9
+	AccountId    string  `xorm:"VARCHAR(64)"`
10
+	UserId       string  `xorm:"VARCHAR(64)"`
11
+	UserName     string  `xorm:"VARCHAR(50)"`
12
+	OrgId        string  `xorm:"VARCHAR(64)"`
13
+	CaseId       string  `xorm:"VARCHAR(64)"`
14
+	ChangeType   string  `xorm:"comment('integral 积分 amount 城币') VARCHAR(20)"`
15
+	ChangeSource string  `xorm:"comment('vip vip卡充值 orders 订单消费 register 注册 perfect 完善资料 recommend 推荐') VARCHAR(20)"`
16
+	SourceId     string  `xorm:"VARCHAR(64)"`
17
+	SourceName   string  `xorm:"VARCHAR(255)"`
18
+	Amount       float32 `xorm:"FLOAT(8,2)"`
19
+	FloatType    string  `xorm:"comment('+
25 20
             -') VARCHAR(5)"`
26 21
 	CreateDate time.Time `xorm:"DATETIME"`
27 22
 	CreateUser string    `xorm:"VARCHAR(64)"`

+ 10
- 4
models/model/ta_channel.go 查看文件

@@ -1,8 +1,14 @@
1 1
 package model
2 2
 
3
+import (
4
+	"time"
5
+)
6
+
3 7
 type TaChannel struct {
4
-	ChannelId   string `xorm:"not null pk VARCHAR(64)"`
5
-	ChannelName string `xorm:"VARCHAR(64)"`
6
-	CaseId      string `xorm:"VARCHAR(64)"`
7
-	OrgId       string `xorm:"VARCHAR(64)"`
8
+	ChannelId   string    `xorm:"not null pk VARCHAR(64)"`
9
+	ChannelName string    `xorm:"VARCHAR(64)"`
10
+	CaseId      string    `xorm:"VARCHAR(64)"`
11
+	OrgId       string    `xorm:"VARCHAR(64)"`
12
+	Status      int       `xorm:"SMALLINT(6)"`
13
+	CreateDate  time.Time `xorm:"DATETIME"`
8 14
 }

+ 2
- 3
models/model/ta_cms_case_image.go 查看文件

@@ -5,7 +5,6 @@ type TaCmsCaseImage struct {
5 5
 	CmsCaseId      string `xorm:"VARCHAR(64)"`
6 6
 	CaseImageUrl   string `xorm:"TEXT"`
7 7
 	Status         int    `xorm:"SMALLINT(6)"`
8
-	ImageType      string `xorm:"comment('cover:封面
9
-            detail:详情') VARCHAR(32)"`
10
-	Sort int `xorm:"INT(11)"`
8
+	ImageType      string `xorm:"comment('cover:封面 detail:详情') VARCHAR(32)"`
9
+	Sort           int    `xorm:"INT(11)"`
11 10
 }

+ 1
- 1
models/model/ta_cms_images.go 查看文件

@@ -6,7 +6,6 @@ import (
6 6
 
7 7
 type TaCmsImages struct {
8 8
 	ImageId           string    `xorm:"not null pk VARCHAR(64)"`
9
-	Title             string    `xorm:"VARCHAR(50)"`
10 9
 	LocationId        string    `xorm:"VARCHAR(64)"`
11 10
 	ImageUrl          string    `xorm:"VARCHAR(128)"`
12 11
 	ForwardType       string    `xorm:"comment('url:转跳链接,course:转跳课程') CHAR(32)"`
@@ -18,4 +17,5 @@ type TaCmsImages struct {
18 17
 	OrgId             string    `xorm:"VARCHAR(64)"`
19 18
 	CreateUser        string    `xorm:"VARCHAR(64)"`
20 19
 	CreateDate        time.Time `xorm:"DATETIME"`
20
+	Title             string    `xorm:"VARCHAR(50)"`
21 21
 }

+ 0
- 25
models/model/ta_experience_card.go 查看文件

@@ -1,25 +0,0 @@
1
-package model
2
-
3
-import (
4
-	"time"
5
-)
6
-
7
-type TaExperienceCard struct {
8
-	CardId     string    `xorm:"not null pk VARCHAR(64)"`
9
-	CardTypeId string    `xorm:"VARCHAR(64)"`
10
-	SendType   string    `xorm:"comment('0案场 1渠道') VARCHAR(32)"`
11
-	VideoUrl   string    `xorm:"TEXT"`
12
-	CoverUrl   string    `xorm:"TEXT"`
13
-	Price      float32   `xorm:"FLOAT(64)"`
14
-	StartDate  time.Time `xorm:"DATETIME"`
15
-	EndDate    time.Time `xorm:"DATETIME"`
16
-	TotalCount int       `xorm:"INT(11)"`
17
-	SentCount  int       `xorm:"INT(11)"`
18
-	UsedCount  int       `xorm:"INT(11)"`
19
-	Status     string    `xorm:"comment('private未发布 public发布 over过期') VARCHAR(32)"`
20
-	CaseId     string    `xorm:"VARCHAR(64)"`
21
-	OrgId      string    `xorm:"VARCHAR(64)"`
22
-	CreateDate time.Time `xorm:"DATETIME"`
23
-	CreateUser string    `xorm:"VARCHAR(64)"`
24
-	IsOver     int       `xorm:"TINYINT(1)"`
25
-}

+ 20
- 21
models/model/ta_goods_orders.go 查看文件

@@ -5,25 +5,24 @@ import (
5 5
 )
6 6
 
7 7
 type TaGoodsOrders struct {
8
-	OrdersId   string    `xorm:"not null pk VARCHAR(64)"`
9
-	OrdersNo   string    `xorm:"VARCHAR(32)"`
10
-	OrgId      string    `xorm:"VARCHAR(64)"`
11
-	CaseId     string    `xorm:"VARCHAR(64)"`
12
-	AreaId     string    `xorm:"VARCHAR(64)"`
13
-	AreaName   string    `xorm:"VARCHAR(50)"`
14
-	TableId    string    `xorm:"VARCHAR(64)"`
15
-	TableName  string    `xorm:"VARCHAR(50)"`
16
-	Amount     string    `xorm:"DECIMAL(8,2)"`
17
-	CreateDate time.Time `xorm:"DATETIME"`
18
-	Status     int       `xorm:"SMALLINT(6)"`
19
-	PayType    int       `xorm:"comment('vip VIP卡城币抵用
20
-            coupon 优惠券抵用') SMALLINT(6)"`
21
-	UserType     int    `xorm:"SMALLINT(6)"`
22
-	UserId       string `xorm:"VARCHAR(64)"`
23
-	UserName     string `xorm:"VARCHAR(50)"`
24
-	OrdersNum    int    `xorm:"INT(11)"`
25
-	Remark       string `xorm:"TEXT"`
26
-	IsPay        int    `xorm:"TINYINT(1)"`
27
-	ActualAmount string `xorm:"DECIMAL(8,2)"`
28
-	CouponAmount string `xorm:"DECIMAL(8,2)"`
8
+	OrdersId     string    `xorm:"not null pk VARCHAR(64)"`
9
+	OrdersNo     string    `xorm:"VARCHAR(32)"`
10
+	OrgId        string    `xorm:"VARCHAR(64)"`
11
+	CaseId       string    `xorm:"VARCHAR(64)"`
12
+	AreaId       string    `xorm:"VARCHAR(64)"`
13
+	AreaName     string    `xorm:"VARCHAR(50)"`
14
+	TableId      string    `xorm:"VARCHAR(64)"`
15
+	TableNo      string    `xorm:"VARCHAR(50)"`
16
+	Amount       string    `xorm:"DECIMAL(8,2)"`
17
+	CreateDate   time.Time `xorm:"DATETIME"`
18
+	Status       int       `xorm:"SMALLINT(6)"`
19
+	PayType      string    `xorm:"comment('vip VIP卡城币抵用 coupon 优惠券抵用') VARCHAR(20)"`
20
+	UserType     string    `xorm:"VARCHAR(20)"`
21
+	UserId       string    `xorm:"VARCHAR(64)"`
22
+	UserName     string    `xorm:"VARCHAR(50)"`
23
+	OrdersNum    int       `xorm:"INT(11)"`
24
+	Remark       string    `xorm:"TEXT"`
25
+	IsPay        int       `xorm:"TINYINT(1)"`
26
+	ActualAmount string    `xorm:"DECIMAL(8,2)"`
27
+	CouponAmount string    `xorm:"DECIMAL(8,2)"`
29 28
 }

+ 4
- 6
models/model/ta_user_mapping.go 查看文件

@@ -1,12 +1,10 @@
1 1
 package model
2 2
 
3 3
 type TaUserMapping struct {
4
-	MappingId string `xorm:"not null pk VARCHAR(64)"`
5
-	UserId    string `xorm:"VARCHAR(64)"`
6
-	UserType  string `xorm:"comment('customer 为会员
7
-            user 为后台用户') VARCHAR(50)"`
8
-	AccountType string `xorm:"comment('wechat 微信公众号
9
-            mini 小程序') VARCHAR(50)"`
4
+	MappingId   string `xorm:"not null pk VARCHAR(64)"`
5
+	UserId      string `xorm:"VARCHAR(64)"`
6
+	UserType    string `xorm:"comment('customer 为会员 user 为后台用户') VARCHAR(50)"`
7
+	AccountType string `xorm:"comment('wechat 微信公众号 mini 小程序') VARCHAR(50)"`
10 8
 	Openid      string `xorm:"VARCHAR(200)"`
11 9
 	Uuid        string `xorm:"VARCHAR(200)"`
12 10
 	AccountInfo string `xorm:"TEXT"`

+ 2
- 3
service/cases/key.go 查看文件

@@ -25,14 +25,13 @@ func (s *CaseServ) GetKeysByCase(caseid, num string, page, pageSize int) (map[st
25 25
 	if pageSize == 0 {
26 26
 		pageSize = service.PAGENUM
27 27
 	}
28
-	if page == 0 {
29
-		page = 1
30
-	}
28
+
31 29
 	keys, err := s.dao.GetKeysByCase(caseid, num, page, pageSize)
32 30
 	if err != nil {
33 31
 		beego.Error(err)
34 32
 		return nil, err
35 33
 	}
34
+
36 35
 	total, err := s.dao.GetCaseCount(caseid, num)
37 36
 	if err != nil {
38 37
 		beego.Error(err)

+ 8
- 2
utils/captcha.go 查看文件

@@ -80,10 +80,13 @@ func (c *CaptchaEngine) SendCaptcha(phone string) {
80 80
 func (c *CaptchaEngine) ValidCaptcha(phone, cap string) error {
81 81
 	theCap, ok := c.capList[phone]
82 82
 	if !ok {
83
-		return errors.New("未发送过该号码的验证码")
83
+		return errors.New("手机号无效或验证码已过期")
84 84
 	}
85 85
 
86
-	if time.Now().Local().Before(theCap.Expire) {
86
+	if time.Now().Local().After(theCap.Expire) {
87
+		// 注销
88
+		delete(c.capList, phone)
89
+
87 90
 		return errors.New("验证码已过期")
88 91
 	}
89 92
 
@@ -91,6 +94,9 @@ func (c *CaptchaEngine) ValidCaptcha(phone, cap string) error {
91 94
 		return errors.New("验证码不正确")
92 95
 	}
93 96
 
97
+	// 如果成功, 则注销
98
+	delete(c.capList, phone)
99
+
94 100
 	return nil
95 101
 }
96 102
 

+ 1
- 1
utils/sms.go 查看文件

@@ -47,7 +47,7 @@ func SendSMS(smsType, tel string, messages ...string) {
47 47
 		}
48 48
 
49 49
 		// 接口内容
50
-		paramsTpl := `{"code": "%s", "tel": "%s", "params": "[%s]"}`
50
+		paramsTpl := `{"code": "%s", "tel": "%s", "params": [%s]}`
51 51
 		// 发送消息
52 52
 		message := strings.Join(messages, `","`)
53 53
 		if message != "" {

+ 20
- 0
utils/utils.go 查看文件

@@ -2,6 +2,7 @@ package utils
2 2
 
3 3
 import (
4 4
 	"net/http"
5
+	"strconv"
5 6
 	"strings"
6 7
 )
7 8
 
@@ -48,3 +49,22 @@ func StrSliceIndexOf(s []string, t string) int64 {
48 49
 
49 50
 	return -1
50 51
 }
52
+
53
+// GUIID2IntString guid 转 int 字符串
54
+func GUIID2IntString(id string) []string {
55
+	if id == "" {
56
+		return nil
57
+	}
58
+
59
+	res := make([]string, 0)
60
+	for _, part := range strings.Split(id, "-") {
61
+		sum := 0
62
+		for _, r := range []rune(part) {
63
+			sum += int(r)
64
+		}
65
+
66
+		res = append(res, strconv.Itoa(sum))
67
+	}
68
+
69
+	return res
70
+}

+ 48
- 0
utils/utils_test.go 查看文件

@@ -0,0 +1,48 @@
1
+package utils_test
2
+
3
+import (
4
+	"spaceofcheng/services/utils"
5
+	"strings"
6
+	"testing"
7
+)
8
+
9
+func TestStrSliceIndexOf(t *testing.T) {
10
+	cases := []map[string]interface{}{
11
+		map[string]interface{}{
12
+			"case":     []string{"a", "b", "c"},
13
+			"expected": int64(1),
14
+		},
15
+		map[string]interface{}{
16
+			"case":     []string{"aa", "bb", "cc"},
17
+			"expected": int64(-1),
18
+		},
19
+	}
20
+
21
+	for _, cs := range cases {
22
+		td := cs["case"].([]string)
23
+		ex := cs["expected"].(int64)
24
+
25
+		res := utils.StrSliceIndexOf(td, "b")
26
+
27
+		if ex != res {
28
+			t.Fatalf("TestStrSliceIndexOf case fail : %v", res)
29
+		}
30
+	}
31
+}
32
+
33
+func TestGUIID2IntString(t *testing.T) {
34
+	cases := []map[string]string{
35
+		map[string]string{
36
+			"case":     "3b2da085-8881-4029-9a3d-6d33caf870d0",
37
+			"expected": "553-217-207-305-861",
38
+		},
39
+	}
40
+
41
+	for _, cs := range cases {
42
+		res := utils.GUIID2IntString(cs["case"])
43
+		if strings.Join(res, "-") != cs["expected"] {
44
+			t.Fatalf("TestGUIID2IntString fail")
45
+		}
46
+	}
47
+
48
+}