胡轶钦 пре 6 година
родитељ
комит
bb072c4ac2

+ 76
- 0
controllers/vipcard/vipcard.go Прегледај датотеку

@@ -0,0 +1,76 @@
1
+package vipcard
2
+
3
+import (
4
+	"spaceofcheng/services/controllers"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/service/vipcard"
7
+	"time"
8
+)
9
+
10
+// CaseController 信息
11
+type VipcardController struct {
12
+	dao *vipcard.VipcardServ
13
+	controllers.BaseController
14
+}
15
+
16
+// Constructor 初始化 Controller
17
+// @Title Constructor
18
+// @Description 初始化 Controller, 系统自动调用
19
+func (c *VipcardController) Constructor() {
20
+	c.dao = vipcard.NewVipcardServ(c.Context)
21
+}
22
+
23
+// GetVipList 获取VIP卡列表
24
+func (c *VipcardController) GetVipList() {
25
+	cases := c.Context.Get("cases").([]model.SysUserCase)
26
+	caseId := c.GetCaseIDs(cases)
27
+	page, _ := c.GetInt("page")
28
+	pageSize, _ := c.GetInt("pagesize")
29
+	list, err := c.dao.GetVipChild(caseId, page, pageSize)
30
+	if err != nil {
31
+		c.ResponseError(err)
32
+	}
33
+	c.ResponseJSON(list)
34
+}
35
+
36
+// AddVipCard 新增VIP卡
37
+func (c *VipcardController) AddVipCard() {
38
+	vipcard := model.TaVipCard{}
39
+	if err := c.ParseForm(&vipcard); err != nil {
40
+		c.ResponseError(err)
41
+	}
42
+	newVipCard, err := c.dao.AddVipCard(vipcard)
43
+	if err != nil {
44
+		c.ResponseError(err)
45
+	}
46
+	c.ResponseJSON(newVipCard)
47
+
48
+}
49
+
50
+// userCharge 用户激活vip卡
51
+func (c *VipcardController) userCharge() {
52
+	vipCode := c.GetString(":vipCardChildCode")
53
+	tel := c.GetString(":tel")
54
+	vipChild, err := c.dao.GetVipChildByCode(vipCode)
55
+	if err != nil {
56
+		c.ResponseError(err)
57
+	}
58
+
59
+	customer, err := c.dao.FindCustomerByTel(tel)
60
+	if err != nil {
61
+		c.ResponseError(err)
62
+	}
63
+	vipChild.CustomerId = customer.CustomerId
64
+	vipChild.CustomerTel = tel
65
+	vipChild.ActiveDate = time.Now()
66
+	newVipChild, err := c.dao.UpdateVipChild(vipChild)
67
+	if err != nil {
68
+		c.ResponseError(err)
69
+	}
70
+	err := c.dao.CustomerCharge(newVipChild)
71
+	if err != nil {
72
+		c.ResponseError(err)
73
+	}
74
+	c.ResponseJSON("激活成功")
75
+
76
+}

+ 1
- 1
models/channel/channel.go Прегледај датотеку

@@ -33,7 +33,7 @@ type Channel struct {
33 33
 // GetChannelsCount 获取渠道总数
34 34
 func (m *ChannelDAO) GetChannelsCount(caseid string) (int, error) {
35 35
 	var channels []model.TaChannel
36
-	dao := m.db.Where("status >" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseid, ",", "','", -1) + "')")
36
+	dao := m.db.Where("status > " + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseid, ",", "','", -1) + "')")
37 37
 	err := dao.Find(&channels)
38 38
 	return len(channels), err
39 39
 }

+ 1
- 1
models/model/ta_vip_card.go Прегледај датотеку

@@ -7,7 +7,7 @@ import (
7 7
 type TaVipCard struct {
8 8
 	VipCardId   string    `xorm:"not null pk VARCHAR(64)"`
9 9
 	VipCardName string    `xorm:"VARCHAR(64)"`
10
-	CardAmount  float32   `xorm:"FLOAT(8,2)"`
10
+	CardAmount  string    `xorm:"DECIMAL(8,2)"`
11 11
 	CreateDate  time.Time `xorm:"DATETIME"`
12 12
 	TotalCount  int       `xorm:"INT(11)"`
13 13
 	Status      int       `xorm:"SMALLINT(6)"`

+ 1
- 0
models/model/ta_vip_card_child.go Прегледај датотеку

@@ -13,4 +13,5 @@ type TaVipCardChild struct {
13 13
 	CustomerTel      string    `xorm:"DECIMAL(13)"`
14 14
 	CreateDate       time.Time `xorm:"DATETIME"`
15 15
 	ActiveDate       time.Time `xorm:"DATETIME"`
16
+	Amount           string    `xorm:"DECIMAL(8,2)"`
16 17
 }

+ 15
- 1
models/vipcard/vipcard.go Прегледај датотеку

@@ -47,6 +47,7 @@ FROM
47 47
 WHERE
48 48
 	vcc.status > 0 ` + strconv.Itoa(models.STATUS_DEL) +
49 49
 		`AND sc.case_id IN('` + strings.Replace(caseid, ",", "','", -1) + `') `
50
+	sql = sql + " order by vc.create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(page*pageSize)
50 51
 	err := m.db.Sql(sql).Find(&vipcards)
51 52
 	return vipcards, err
52 53
 }
@@ -102,8 +103,21 @@ func (m *VipcardDAO) GetVipChildByCode(vipCode string) (*model.TaVipCardChild, e
102 103
 	return nil, nil
103 104
 }
104 105
 
106
+// GetVipCardById 根据id获取VIP卡
107
+func (m *VipcardDAO) GetVipCardById(id string) (*model.TaVipCard, error) {
108
+	var vipCard []model.TaVipCard
109
+	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("vip_card_id = ?", id).Find(&vipCard)
110
+	if err != nil {
111
+		return nil, err
112
+	}
113
+	if len(vipCard) > 0 {
114
+		return &vipCard[0], nil
115
+	}
116
+	return nil, nil
117
+}
118
+
105 119
 // UpdateVipChild 更新子卡
106
-func (m *VipcardDAO) UpdateVipChild(vipChild model.TaVipCardChild) error {
120
+func (m *VipcardDAO) UpdateVipChild(vipChild *model.TaVipCardChild) error {
107 121
 	vipChild.ActiveDate = time.Now()
108 122
 	var cols = []string{
109 123
 		"customer_id",

+ 50
- 6
service/vipcard/vipcard.go Прегледај датотеку

@@ -1,6 +1,8 @@
1 1
 package vipcard
2 2
 
3 3
 import (
4
+	"spaceofcheng/services/models"
5
+	"spaceofcheng/services/models/customer"
4 6
 	"spaceofcheng/services/models/model"
5 7
 	"spaceofcheng/services/models/vipcard"
6 8
 	"spaceofcheng/services/service"
@@ -11,18 +13,21 @@ import (
11 13
 
12 14
 // CaseServ 系统处理
13 15
 type VipcardServ struct {
14
-	ctx *utils.Context
15
-	dao *vipcard.VipcardDAO
16
+	ctx  *utils.Context
17
+	dao  *vipcard.VipcardDAO
18
+	cdao *customer.CustomerDAO
16 19
 }
17 20
 
18 21
 // NewVipcardServ 初始化
19 22
 func NewVipcardServ(ctx *utils.Context) *VipcardServ {
20 23
 	return &VipcardServ{
21
-		ctx: ctx,
22
-		dao: vipcard.NewVipcardDAO(ctx),
24
+		ctx:  ctx,
25
+		dao:  vipcard.NewVipcardDAO(ctx),
26
+		cdao: customer.NewCustomerDAO(ctx),
23 27
 	}
24 28
 }
25 29
 
30
+// GetVipChild 获取VIP卡列表
26 31
 func (s *VipcardServ) GetVipChild(caseid string, page, pageSize int) (map[string]interface{}, error) {
27 32
 	if pageSize == 0 {
28 33
 		pageSize = service.PAGENUM
@@ -48,17 +53,20 @@ func (s *VipcardServ) GetVipChild(caseid string, page, pageSize int) (map[string
48 53
 	}, err
49 54
 }
50 55
 
56
+// 根据code获取vip子卡
51 57
 func (s *VipcardServ) GetVipChildByCode(vipChildId string) (*model.TaVipCardChild, error) {
52 58
 	vipCardChild, err := s.dao.GetVipChildByCode(vipChildId)
53 59
 	return vipCardChild, err
54 60
 }
55 61
 
56
-func (s *VipcardServ) UpdateVipChild(vipChild model.TaVipCardChild) (*model.TaVipCardChild, error) {
62
+// UpdateVipChild 更新子卡
63
+func (s *VipcardServ) UpdateVipChild(vipChild *model.TaVipCardChild) (*model.TaVipCardChild, error) {
57 64
 	var err error
58 65
 	err = s.dao.UpdateVipChild(vipChild)
59 66
 	return &vipChild, err
60 67
 }
61 68
 
69
+// AddVipCard 新建VIP卡
62 70
 func (s *VipcardServ) AddVipCard(vipCard model.TaVipCard) (*model.TaVipCard, error) {
63 71
 	vipcard, err := s.dao.AddVipCard(vipCard)
64 72
 	if err != nil {
@@ -70,10 +78,46 @@ func (s *VipcardServ) AddVipCard(vipCard model.TaVipCard) (*model.TaVipCard, err
70 78
 		vipChild.VipCardChildCode = s.dao.GenerateChildCode()
71 79
 		_, err := s.dao.AddVipChildCard(vipChild)
72 80
 		if err != nil {
73
-			break
74 81
 			return nil, err
75 82
 		}
76 83
 
77 84
 	}
78 85
 	return nil, nil
79 86
 }
87
+
88
+func (s *VipcardServ) FindCustomerByTel(tel string) (*model.TaCustomer, error) {
89
+	customer, err := s.cdao.GetCustomerByPhone(tel)
90
+	if err != nil {
91
+		return nil, err
92
+	}
93
+	return customer, err
94
+}
95
+
96
+// CustomerCharge 给用户充值
97
+func (s *VipcardServ) CustomerCharge(vipchild model.TaVipCardChild, createUser model.SysUser) error {
98
+	customer, err := s.cdao.GetCustomerByPhone(vipchild.CustomerTel)
99
+	if err != nil {
100
+		return err
101
+	}
102
+	customerId := customer.CustomerId
103
+	account, err := s.cdao.GetAccountByCust(customerId)
104
+	if err != nil {
105
+		return err
106
+	}
107
+	vipcard, err := s.dao.GetVipCardById(vipchild.VipCardId)
108
+	if err != nil {
109
+		return err
110
+	}
111
+	var record model.TaAccountChange
112
+	record.CustomerId = customerId
113
+	record.Amount = vipcard.CardAmount
114
+	record.CaseId = vipcard.CaseId
115
+	record.CustomerName = customer.CustomerName
116
+	record.ChangeType = models.CONSUME_MONEYCHG
117
+	record.ChangeSource = models.ACCSOURCE_RECHARGE
118
+	record.CreateUser = createUser.UserId
119
+	record.FloatType = models.ACCOUNT_INCOME
120
+	record.AccountId = account.AccountId
121
+	return s.cdao.InsertAccountRecords(&record)
122
+
123
+}