wangfei 6 年 前
コミット
9644572de7
共有5 個のファイルを変更した128 個の追加11 個の削除を含む
  1. 17
    8
      controllers/vipcard/vipcard.go
  2. 2
    0
      models/model/ta_vip_card_child.go
  3. 40
    0
      models/vipcard/vipcard.go
  4. 4
    0
      routers/wechat.go
  5. 65
    3
      service/vipcard/vipcard.go

+ 17
- 8
controllers/vipcard/vipcard.go ファイルの表示

@@ -6,8 +6,8 @@ import (
6 6
 	"spaceofcheng/services/models"
7 7
 	"spaceofcheng/services/models/model"
8 8
 	"spaceofcheng/services/service/vipcard"
9
-	"time"
10 9
 	"spaceofcheng/services/utils"
10
+	"time"
11 11
 )
12 12
 
13 13
 // CaseController 信息
@@ -91,10 +91,15 @@ func (c *VipcardController) UserCharge() {
91 91
 	if err != nil {
92 92
 		c.ResponseError(err)
93 93
 	}
94
-	err = c.dao.CustomerCharge(vipChild, createUser)
94
+	// 插入客户VIP卡
95
+	err = c.dao.SaveCustomerVip(vipChild, createUser)
95 96
 	if err != nil {
96 97
 		c.ResponseError(err)
97 98
 	}
99
+	// err = c.dao.CustomerCharge(vipChild, createUser)
100
+	// if err != nil {
101
+	// 	c.ResponseError(err)
102
+	// }
98 103
 	c.ResponseJSON("激活成功")
99 104
 
100 105
 }
@@ -109,9 +114,8 @@ func (c *VipcardController) GetVipByCode() {
109 114
 	c.ResponseJSON(vipChild)
110 115
 }
111 116
 
112
-
113 117
 // GetVipListExcel 导出VIP 列表
114
-func (c *VipcardController) GetVipListExcel(){
118
+func (c *VipcardController) GetVipListExcel() {
115 119
 
116 120
 	caseids := c.GetString("caseid")
117 121
 	if caseids == "" {
@@ -154,7 +158,7 @@ func (c *VipcardController) GetVipListExcel(){
154 158
 		statusToString := ""
155 159
 		if item.Status == 1 {
156 160
 			statusToString = "已激活"
157
-		}else{
161
+		} else {
158 162
 			statusToString = "未激活"
159 163
 		}
160 164
 
@@ -173,6 +177,11 @@ func (c *VipcardController) GetVipListExcel(){
173 177
 
174 178
 }
175 179
 
176
-
177
-
178
-
180
+// GetCustomerVips 获取客户vip卡
181
+func (c *VipcardController) GetCustomerVips() {
182
+	vips, err := c.dao.GetCustomerVips()
183
+	if err != nil {
184
+		c.ResponseError(err)
185
+	}
186
+	c.ResponseJSON(vips)
187
+}

+ 2
- 0
models/model/ta_vip_card_child.go ファイルの表示

@@ -18,4 +18,6 @@ type TaVipCardChild struct {
18 18
 	SalesName        string    `xorm:"VARCHAR(50)"`
19 19
 	BeginDate        time.Time `xorm:"DATETIME"`
20 20
 	EndDate          time.Time `xorm:"DATETIME"`
21
+	CaseId           string    `xorm:"VARCHAR(64)"`
22
+	OrgId            string    `xorm:"VARCHAR(64)"`
21 23
 }

+ 40
- 0
models/vipcard/vipcard.go ファイルの表示

@@ -199,3 +199,43 @@ WHERE
199 199
 	err := m.db.Sql(sql).Find(&vipcards)
200 200
 	return vipcards, err
201 201
 }
202
+
203
+// AddCustomerVip 保存客户Vip卡信息
204
+func (m *VipcardDAO) AddCustomerVip(customerVip model.TaCustomerVip) (*model.TaCustomerVip, error) {
205
+	customerVip.CreateDate = time.Now()
206
+	customerVip.CustomerVipId = utils.GetGUID()
207
+	customerVip.Status = models.STATUS_NORMAL
208
+	_, err := m.db.Insert(customerVip)
209
+	return &customerVip, err
210
+}
211
+
212
+// InsertCustomerVipChange 保存客户Vip卡变动
213
+func (m *VipcardDAO) InsertCustomerVipChange(change model.TaCustomerVipChange) error {
214
+	change.ChangeId = utils.GetGUID()
215
+	change.Status = models.STATUS_NORMAL
216
+	change.CreateDate = time.Now()
217
+	_, err := m.db.Insert(change)
218
+	return err
219
+}
220
+
221
+// CustomerVipWithChange 用户vip卡关联变更
222
+type CustomerVipWithChange struct {
223
+	model.TaCustomerVip `xorm:"extends"`
224
+	Changes             []model.TaCustomerVipChange
225
+}
226
+
227
+// GetCustomerVips 获取客户vip卡信息
228
+func (m *VipcardDAO) GetCustomerVips(customerid string) ([]CustomerVipWithChange, error) {
229
+	var vips []CustomerVipWithChange
230
+	sql := `select * from ta_customer_vip where customer_id=? and status>?`
231
+	err := m.db.Sql(sql, customerid, models.STATUS_DEL).Find(&vips)
232
+	if err != nil {
233
+		return nil, err
234
+	}
235
+	for inx, vip := range vips {
236
+		var changes []model.TaCustomerVipChange
237
+		m.db.Where("customer_vip_id=?", vip.CustomerVipId).And("status>?", models.STATUS_DEL).Find(&changes)
238
+		vips[inx].Changes = changes
239
+	}
240
+	return vips, nil
241
+}

+ 4
- 0
routers/wechat.go ファイルの表示

@@ -11,6 +11,7 @@ import (
11 11
 	"spaceofcheng/services/controllers/gymcard"
12 12
 	"spaceofcheng/services/controllers/luckdraw"
13 13
 	"spaceofcheng/services/controllers/user"
14
+	"spaceofcheng/services/controllers/vipcard"
14 15
 
15 16
 	"github.com/astaxie/beego"
16 17
 )
@@ -72,6 +73,9 @@ func getWechatRoutes(prefix string) beego.LinkNamespace {
72 73
 		beego.NSRouter("/card/:id", &card.CardController{}, "post:ReceiveCard"),
73 74
 		beego.NSRouter("/channel/card/:id", &card.CardController{}, "post:ChannelReceiveCard"),
74 75
 
76
+		// vip卡
77
+		beego.NSRouter("/vip", &vipcard.VipcardController{}, "get:GetCustomerVips"),
78
+
75 79
 		// 体检
76 80
 		beego.NSRouter("/GetCheckByUser", &bodycheck.BodyCheckController{}, "get:GetCheckByUser"),
77 81
 

+ 65
- 3
service/vipcard/vipcard.go ファイルの表示

@@ -85,6 +85,10 @@ func (s *VipcardServ) AddVipCard(vipCard model.TaVipCard) (*model.TaVipCard, err
85 85
 		vipChild.VipCardId = vipcard.VipCardId
86 86
 		vipChild.VipCardChildCode = s.dao.GenerateChildCode()
87 87
 		vipChild.Amount = vipCard.CardAmount
88
+		vipChild.BeginDate = vipCard.BeginDate
89
+		vipChild.EndDate = vipCard.EndDate
90
+		vipChild.CaseId = vipCard.CaseId
91
+		vipChild.OrgId = vipCard.OrgId
88 92
 		_, err := s.dao.AddVipChildCard(vipChild)
89 93
 		if err != nil {
90 94
 			utils.LogError("创建VIP卡失败: " + err.Error())
@@ -103,6 +107,55 @@ func (s *VipcardServ) FindCustomerByTel(tel string) (*model.TaCustomer, error) {
103 107
 	return customer, err
104 108
 }
105 109
 
110
+// SaveCustomerVip 保存用户vip
111
+func (s *VipcardServ) SaveCustomerVip(vipchild *model.TaVipCardChild, createUser model.SysUser) error {
112
+	customer, err := s.cdao.GetCustomerByPhone(vipchild.CustomerTel)
113
+	if err != nil {
114
+		utils.LogError("激活失败: " + err.Error())
115
+		return errors.New("激活失败")
116
+	}
117
+	var customerVip = model.TaCustomerVip{
118
+		CustomerId:     customer.CustomerId,
119
+		VipCardId:      vipchild.VipCardId,
120
+		VipCardChildId: vipchild.VipCardChildId,
121
+		CustomerTel:    customer.Phone,
122
+		Amount:         vipchild.Amount,
123
+		BeginDate:      vipchild.BeginDate,
124
+		EndDate:        vipchild.EndDate,
125
+		Balance:        vipchild.Amount,
126
+		CaseId:         vipchild.CaseId,
127
+		OrgId:          vipchild.OrgId,
128
+		SalesId:        vipchild.SalesId,
129
+		SalesName:      vipchild.SalesName,
130
+	}
131
+	info, err := s.dao.AddCustomerVip(customerVip)
132
+	if err != nil {
133
+		utils.LogError("保存用户vip卡失败: " + err.Error())
134
+		return errors.New("激活失败")
135
+	}
136
+	// vip卡明细操作
137
+	var change = model.TaCustomerVipChange{
138
+		CustomerVipId: info.CustomerVipId,
139
+		CustomerId:    info.CustomerId,
140
+		OrgId:         info.OrgId,
141
+		CaseId:        info.CaseId,
142
+		ChangeType:    models.CONSUME_COINCHG,
143
+		ChangeSource:  models.ACCSOURCE_RECHARGE,
144
+		SourceId:      vipchild.VipCardChildId,
145
+		SourceName:    vipchild.VipCardChildCode,
146
+		Amount:        info.Amount,
147
+		FloatType:     models.ACCOUNT_INCOME,
148
+		CreateUser:    createUser.UserId,
149
+	}
150
+	err = s.dao.InsertCustomerVipChange(change)
151
+	if err != nil {
152
+		utils.LogError("保存用户vip卡明细信息失败: " + err.Error())
153
+		return errors.New("激活失败")
154
+	}
155
+
156
+	return err
157
+}
158
+
106 159
 // CustomerCharge 给用户充值
107 160
 func (s *VipcardServ) CustomerCharge(vipchild *model.TaVipCardChild, createUser model.SysUser) error {
108 161
 	customer, err := s.cdao.GetCustomerByPhone(vipchild.CustomerTel)
@@ -141,17 +194,26 @@ func (s *VipcardServ) CustomerCharge(vipchild *model.TaVipCardChild, createUser
141 194
 	return nil
142 195
 }
143 196
 
144
-
145 197
 // GetVipChildExcel 获取VIP卡列表
146 198
 func (s *VipcardServ) GetVipChildExcel(caseids, cardNo, sellerName, userName string) ([]vipcard.VipChild, error) {
147
-	
199
+
148 200
 	vipchild, err := s.dao.GetVipCardListExcel(caseids, cardNo, sellerName, userName)
149 201
 	if err != nil {
150 202
 		utils.LogError("获取VIP卡信息失败: " + err.Error())
151 203
 		return nil, errors.New("获取VIP卡信息失败")
152 204
 	}
153
-	
205
+
154 206
 	return vipchild, err
155 207
 }
156 208
 
209
+// GetCustomerVips 获取用户vip卡信息
210
+func (s *VipcardServ) GetCustomerVips() ([]vipcard.CustomerVipWithChange, error) {
211
+	customer := s.ctx.Get("customer").(model.TaCustomer)
212
+	vips, err := s.dao.GetCustomerVips(customer.CustomerId)
213
+	if err != nil {
214
+		utils.LogError("获取VIP卡信息失败: " + err.Error())
215
+		return nil, errors.New("获取VIP卡信息失败")
216
+	}
157 217
 
218
+	return vips, err
219
+}