Browse Source

添加会员

zhengchengwu 4 years ago
parent
commit
370a53c6be

+ 1 - 0
.gitignore View File

@@ -1 +1,2 @@
1 1
 /*.exe
2
+/*.exe~

+ 259 - 0
controllers/members/members_controller.go View File

@@ -3,14 +3,20 @@ package members
3 3
 import (
4 4
 	base_ctl "SCRM/controllers"
5 5
 	"SCRM/enums"
6
+	"SCRM/models"
6 7
 	"SCRM/service/member_service"
7 8
 	"SCRM/utils"
9
+	"reflect"
10
+	"time"
11
+
12
+	"encoding/json"
8 13
 
9 14
 	"github.com/astaxie/beego"
10 15
 )
11 16
 
12 17
 func MemberCtlRegistRouters() {
13 18
 	beego.Router("/api/members", &MembersAPIController{}, "get:GetMembers")
19
+	beego.Router("/api/member/create", &MembersAPIController{}, "Post:CreateMember")
14 20
 }
15 21
 
16 22
 type MembersAPIController struct {
@@ -84,6 +90,13 @@ func (c *MembersAPIController) GetMembers() {
84 90
 			return
85 91
 		}
86 92
 		returnData["tags"] = tags
93
+
94
+		illness, err := member_service.GetIllnessList()
95
+		if err != nil {
96
+			c.ServeFailJsonSend(enums.ErrorCodeDataException, "获取病种列表失败")
97
+			return
98
+		}
99
+		returnData["illness"] = illness
87 100
 	}
88 101
 	returnData["members"] = members
89 102
 	returnData["total"] = total
@@ -91,3 +104,249 @@ func (c *MembersAPIController) GetMembers() {
91 104
 	c.ServeSuccessJSON(returnData)
92 105
 	return
93 106
 }
107
+
108
+func (c *MembersAPIController) CreateMember() {
109
+
110
+	adminUserInfo := c.GetAdminUserInfo()
111
+	timeNow := time.Now().Unix()
112
+
113
+	dataBody := make(map[string]interface{}, 0)
114
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &dataBody)
115
+	if err != nil {
116
+		utils.ErrorLog(err.Error())
117
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "参数错误")
118
+		return
119
+	}
120
+
121
+	var member member_service.Members
122
+
123
+	if dataBody["name"] == nil || reflect.TypeOf(dataBody["name"]).String() != "string" {
124
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:姓名")
125
+		return
126
+	}
127
+	name, _ := dataBody["name"].(string)
128
+	if len(name) == 0 {
129
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "姓名不能为空")
130
+		return
131
+	}
132
+	member.Name = name
133
+
134
+	if dataBody["mobile"] == nil || reflect.TypeOf(dataBody["mobile"]).String() != "string" {
135
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:手机号")
136
+		return
137
+	}
138
+	mobile, _ := dataBody["mobile"].(string)
139
+	if len(mobile) == 0 {
140
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "手机号不能为空")
141
+		return
142
+	}
143
+	if !utils.CheckMobile(mobile) {
144
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "手机号格式不正确")
145
+		return
146
+	}
147
+	member.Mobile = mobile
148
+
149
+	if dataBody["gender"] == nil || reflect.TypeOf(dataBody["gender"]).String() != "float64" {
150
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:性别")
151
+		return
152
+	}
153
+	gender := int64(dataBody["gender"].(float64))
154
+
155
+	if gender != 1 && gender != 2 {
156
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "性别选择不正确")
157
+		return
158
+	}
159
+	member.Gender = gender
160
+
161
+	if dataBody["birthday"] == nil || reflect.TypeOf(dataBody["birthday"]).String() != "string" {
162
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:生日")
163
+		return
164
+	}
165
+	birthday, _ := dataBody["birthday"].(string)
166
+	if len(birthday) == 0 {
167
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "生日格式不正确")
168
+		return
169
+	}
170
+
171
+	timeLayout := "2006-01-02 15:04:05"
172
+	theTime, err := utils.ParseTimeStringToTime(timeLayout, birthday+" 00:00:00")
173
+	if err != nil {
174
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "生日格式不正确")
175
+		return
176
+	}
177
+	member.Birthday = theTime.Unix()
178
+
179
+	if dataBody["province_id"] == nil || reflect.TypeOf(dataBody["province_id"]).String() != "float64" {
180
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:地区(省)")
181
+		return
182
+	}
183
+	provinceID := int64(dataBody["province_id"].(float64))
184
+	if provinceID <= 0 {
185
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "请选择地区")
186
+		return
187
+	}
188
+	member.ProvinceId = provinceID
189
+
190
+	if dataBody["city_id"] == nil || reflect.TypeOf(dataBody["city_id"]).String() != "float64" {
191
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:地区(市)")
192
+		return
193
+	}
194
+	cityID := int64(dataBody["city_id"].(float64))
195
+	if cityID <= 0 {
196
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "请选择地区")
197
+		return
198
+	}
199
+	member.CityId = cityID
200
+
201
+	if dataBody["district_id"] == nil || reflect.TypeOf(dataBody["district_id"]).String() != "float64" {
202
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:地区(区/县)")
203
+		return
204
+	}
205
+	districtID := int64(dataBody["district_id"].(float64))
206
+	if districtID <= 0 {
207
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "请选择地区")
208
+		return
209
+	}
210
+	member.DistrictId = districtID
211
+
212
+	if dataBody["illness"] == nil || reflect.TypeOf(dataBody["illness"]).String() != "[]interface {}" {
213
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:病种")
214
+		return
215
+	}
216
+	illnessInters := dataBody["illness"].([]interface{})
217
+	if len(illnessInters) <= 0 {
218
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "请选择病种")
219
+		return
220
+	}
221
+	member.Illness = make([]*member_service.CustomerIllness, 0)
222
+	for _, illnessInter := range illnessInters {
223
+		id := int64(illnessInter.(float64))
224
+		var illItem member_service.CustomerIllness
225
+		illItem.UserOrgId = adminUserInfo.CurrentOrgId
226
+		illItem.IllnessId = id
227
+		illItem.Status = 1
228
+		illItem.UpdatedTime = timeNow
229
+		illItem.CreatedTime = timeNow
230
+		member.Illness = append(member.Illness, &illItem)
231
+	}
232
+
233
+	if dataBody["ill_date"] == nil || reflect.TypeOf(dataBody["ill_date"]).String() != "string" {
234
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:患病时间")
235
+		return
236
+	}
237
+	illDate, _ := dataBody["ill_date"].(string)
238
+	if len(illDate) == 0 {
239
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "患病时间格式不正确")
240
+		return
241
+	}
242
+
243
+	illDateTime, err := utils.ParseTimeStringToTime(timeLayout, illDate+" 00:00:00")
244
+	if err != nil {
245
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "患病时间格式不正确")
246
+		return
247
+	}
248
+	member.IllDate = illDateTime.Unix()
249
+
250
+	if dataBody["treat_type"] == nil || reflect.TypeOf(dataBody["treat_type"]).String() != "float64" {
251
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:治疗方式")
252
+		return
253
+	}
254
+	treatType := int64(dataBody["treat_type"].(float64))
255
+	if treatType <= 0 {
256
+		c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "请选择治疗方式")
257
+		return
258
+	}
259
+	member.TreatType = treatType
260
+
261
+	if dataBody["tags"] != nil && reflect.TypeOf(dataBody["tags"]).String() == "[]interface {}" {
262
+		tagsInters := dataBody["tags"].([]interface{})
263
+		if len(tagsInters) > 0 {
264
+			member.UserTags = make([]*models.UserTagLinks, 0)
265
+			for _, tagsInter := range tagsInters {
266
+				id := int64(tagsInter.(float64))
267
+				var tagItem models.UserTagLinks
268
+				tagItem.TagId = id
269
+				tagItem.UserOrgId = adminUserInfo.CurrentOrgId
270
+				tagItem.Status = 1
271
+				tagItem.UpdatedTime = timeNow
272
+				tagItem.CreatedTime = timeNow
273
+				member.UserTags = append(member.UserTags, &tagItem)
274
+			}
275
+		}
276
+	}
277
+
278
+	if dataBody["remark"] != nil && reflect.TypeOf(dataBody["remark"]).String() == "string" {
279
+		remark, _ := dataBody["remark"].(string)
280
+		if len(remark) > 0 {
281
+			member.Remark = remark
282
+		}
283
+	}
284
+
285
+	if dataBody["avatar"] != nil && reflect.TypeOf(dataBody["avatar"]).String() == "string" {
286
+		avatar, _ := dataBody["avatar"].(string)
287
+		if len(avatar) > 0 {
288
+			member.Avatar = avatar
289
+		}
290
+	}
291
+
292
+	customer, err := member_service.GetCustomerByMobile(adminUserInfo.CurrentOrgId, member.Mobile)
293
+	if err != nil {
294
+		c.ServeFailJsonSend(enums.ErrorCodeDBCreate, "添加会员失败:("+err.Error()+")")
295
+		return
296
+	}
297
+	if customer != nil {
298
+		c.ServeFailJsonSend(enums.ErrorCodeDBCreate, "添加会员失败:(已经存在该手机号的客户)")
299
+		return
300
+	}
301
+
302
+	member.UserOrgId = adminUserInfo.CurrentOrgId
303
+	member.Status = 1
304
+	member.CreatedTime = timeNow
305
+	member.UpdatedTime = timeNow
306
+	member.Sources = 7
307
+
308
+	user, err := member_service.GetUserByMobile(member.Mobile)
309
+	if err != nil {
310
+		c.ServeFailJsonSend(enums.ErrorCodeDBCreate, "添加会员失败:("+err.Error()+")")
311
+		return
312
+	}
313
+	if user != nil {
314
+		member.UserId = user.ID
315
+		err = member_service.CreateMember(&member)
316
+		if err != nil {
317
+			c.ServeFailJsonSend(enums.ErrorCodeDBCreate, "添加会员失败:("+err.Error()+")")
318
+			return
319
+		}
320
+	} else {
321
+		var userData models.User
322
+		userData.Avatar = member.Avatar
323
+		userData.AvatarThumb = member.Avatar
324
+		userData.Username = member.Name
325
+		userData.Remarkname = member.Name
326
+		userData.Mobile = member.Mobile
327
+		userData.Gender = member.Gender
328
+		userData.ProvinceId = member.ProvinceId
329
+		userData.CityId = member.CityId
330
+		userData.Address = member.Address
331
+		userData.Birthday = member.Birthday
332
+		userData.TreatType = member.TreatType
333
+		userData.Relationship = member.Relationship
334
+		userData.IllnessId = member.Illness[0].IllnessId
335
+		userData.Sources = member.Sources
336
+		userData.Status = 1
337
+		userData.CreatedTime = timeNow
338
+		userData.UpdatedTime = timeNow
339
+
340
+		err = member_service.CreateMemberWithUser(&member, &userData)
341
+		if err != nil {
342
+			c.ServeFailJsonSend(enums.ErrorCodeDBCreate, "添加会员失败:("+err.Error()+")")
343
+			return
344
+		}
345
+	}
346
+
347
+	returnData := make(map[string]interface{}, 0)
348
+	returnData["member"] = member
349
+	c.ServeSuccessJSON(returnData)
350
+	return
351
+
352
+}

+ 27 - 0
models/illness_models.go View File

@@ -0,0 +1,27 @@
1
+package models
2
+
3
+type Illness struct {
4
+	ID          int64  `gorm:"column:id" json:"id" form:"id"`
5
+	IllnessName string `gorm:"column:illness_name" json:"illness_name" form:"illness_name"`
6
+	Status      int64  `gorm:"column:status" json:"status" form:"status"`
7
+	CreatedTime int64  `gorm:"column:created_time" json:"created_time" form:"created_time"`
8
+	UpdatedTime int64  `gorm:"column:updated_time" json:"updated_time" form:"updated_time"`
9
+}
10
+
11
+func (Illness) TableName() string {
12
+	return "sgj_user_illness"
13
+}
14
+
15
+type CustomerIllness struct {
16
+	ID          int64 `gorm:"column:id" json:"id" form:"id"`
17
+	CustomerId  int64 `gorm:"column:customer_id" json:"customer_id" form:"customer_id"`
18
+	IllnessId   int64 `gorm:"column:illness_id" json:"illness_id" form:"illness_id"`
19
+	Status      int64 `gorm:"column:status" json:"status" form:"status"`
20
+	CreatedTime int64 `gorm:"column:created_time" json:"created_time" form:"created_time"`
21
+	UpdatedTime int64 `gorm:"column:updated_time" json:"updated_time" form:"updated_time"`
22
+	UserOrgId   int64 `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
23
+}
24
+
25
+func (Illness) CustomerIllness() string {
26
+	return "sgj_user_customer_illness"
27
+}

+ 0 - 12
models/org_models.go View File

@@ -90,15 +90,3 @@ type OrgType struct {
90 90
 func (OrgType) TableName() string {
91 91
 	return "sgj_user_org_type"
92 92
 }
93
-
94
-type Illness struct {
95
-	ID          int64  `gorm:"column:id" json:"id"`
96
-	IllnessName string `gorm:"column:illness_name" json:"illness_name"`
97
-	Status      int64  `gorm:"column:status" json:"status"`
98
-	CreatedTime int64  `gorm:"column:created_time" json:"created_time"`
99
-	UpdatedTime int64  `gorm:"column:updated_time" json:"updated_time"`
100
-}
101
-
102
-func (Illness) TableName() string {
103
-	return "sgj_user_illness"
104
-}

+ 17 - 0
models/user_membership_card_models.go View File

@@ -19,3 +19,20 @@ type UserMembershipCard struct {
19 19
 func (UserMembershipCard) TableName() string {
20 20
 	return "sgj_user_membership_card"
21 21
 }
22
+
23
+type UserCard struct {
24
+	ID           int64  `gorm:"column:id" json:"id" form:"id"`
25
+	UserOrgId    int64  `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
26
+	CustomerId   int64  `gorm:"column:customer_id" json:"customer_id" form:"customer_id"`
27
+	CardId       int64  `gorm:"column:card_id" json:"card_id" form:"card_id"`
28
+	CardNo       string `gorm:"column:card_no" json:"card_no" form:"card_no"`
29
+	CardName     string `gorm:"column:card_name" json:"card_name" form:"card_name"`
30
+	CardIntegral int64  `gorm:"column:card_integral" json:"card_integral" form:"card_integral"`
31
+	Status       int64  `gorm:"column:status" json:"status" form:"status"`
32
+	CreatedTime  int64  `gorm:"column:created_time" json:"created_time" form:"created_time"`
33
+	UpdatedTime  int64  `gorm:"column:updated_time" json:"updated_time" form:"updated_time"`
34
+}
35
+
36
+func (UserCard) TableName() string {
37
+	return "sgj_user_user_card"
38
+}

+ 37 - 0
models/user_models.go View File

@@ -0,0 +1,37 @@
1
+package models
2
+
3
+type User struct {
4
+	ID              int64  `gorm:"column:id" json:"id" form:"id"`
5
+	Password        string `gorm:"column:password" json:"password" form:"password"`
6
+	Mobile          string `gorm:"column:mobile" json:"mobile" form:"mobile"`
7
+	Username        string `gorm:"column:username" json:"username" form:"username"`
8
+	Remarkname      string `gorm:"column:remarkname" json:"remarkname" form:"remarkname"`
9
+	Realname        string `gorm:"column:realname" json:"realname" form:"realname"`
10
+	Introduce       string `gorm:"column:introduce" json:"introduce" form:"introduce"`
11
+	Avatar          string `gorm:"column:avatar" json:"avatar" form:"avatar"`
12
+	AvatarThumb     string `gorm:"column:avatar_thumb" json:"avatar_thumb" form:"avatar_thumb"`
13
+	Gender          int64  `gorm:"column:gender" json:"gender" form:"gender"`
14
+	ReceivingPhone  string `gorm:"column:receiving_phone" json:"receiving_phone" form:"receiving_phone"`
15
+	ProvinceId      int64  `gorm:"column:province_id" json:"province_id" form:"province_id"`
16
+	CityId          int64  `gorm:"column:city_id" json:"city_id" form:"city_id"`
17
+	DistrictId      int64  `gorm:"column:district_id" json:"district_id" form:"district_id"`
18
+	Birthday        int64  `gorm:"column:birthday" json:"birthday" form:"birthday"`
19
+	Address         string `gorm:"column:address" json:"address" form:"address"`
20
+	Recipient       string `gorm:"column:recipient" json:"recipient" form:"recipient"`
21
+	TreatType       int64  `gorm:"column:treat_type" json:"treat_type" form:"treat_type"`
22
+	Token           string `gorm:"column:token" json:"token" form:"token"`
23
+	Imei            string `gorm:"column:imei" json:"imei" form:"imei"`
24
+	Relationship    int64  `gorm:"column:relationship" json:"relationship" form:"relationship"`
25
+	Platform        string `gorm:"column:platform" json:"platform" form:"platform"`
26
+	IllnessId       int64  `gorm:"column:illness_id" json:"illness_id" form:"illness_id"`
27
+	Sources         int64  `gorm:"column:sources" json:"sources" form:"sources"`
28
+	Status          int64  `gorm:"column:status" json:"status" form:"status"`
29
+	CreatedTime     int64  `gorm:"column:created_time" json:"created_time" form:"created_time"`
30
+	UpdatedTime     int64  `gorm:"column:updated_time" json:"updated_time" form:"updated_time"`
31
+	WechatOpenid    string `gorm:"column:wechat_openid" json:"wechat_openid" form:"wechat_openid"`
32
+	MedicalDiagnose string `gorm:"column:medical_diagnose" json:"medical_diagnose" form:"medical_diagnose"`
33
+}
34
+
35
+func (User) TableName() string {
36
+	return "sgj_user_user"
37
+}

+ 14 - 0
models/user_tag_models.go View File

@@ -12,3 +12,17 @@ type UserTags struct {
12 12
 func (UserTags) TableName() string {
13 13
 	return "sgj_user_tags"
14 14
 }
15
+
16
+type UserTagLinks struct {
17
+	ID          int64 `gorm:"column:id" json:"id" form:"id"`
18
+	TagId       int64 `gorm:"column:tag_id" json:"tag_id" form:"tag_id"`
19
+	UserLinkId  int64 `gorm:"column:user_link_id" json:"user_link_id" form:"user_link_id"`
20
+	Status      int64 `gorm:"column:status" json:"status" form:"status"`
21
+	CreatedTime int64 `gorm:"column:created_time" json:"created_time" form:"created_time"`
22
+	UpdatedTime int64 `gorm:"column:updated_time" json:"updated_time" form:"updated_time"`
23
+	UserOrgId   int64 `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
24
+}
25
+
26
+func (UserTagLinks) TableName() string {
27
+	return "sgj_user_tag_links"
28
+}

+ 12 - 0
service/member_service/illness_service.go View File

@@ -0,0 +1,12 @@
1
+package member_service
2
+
3
+import (
4
+	"SCRM/service"
5
+	"SCRM/models"
6
+)
7
+
8
+
9
+func GetIllnessList() (ills []*models.Illness, err error) {
10
+	err = service.UserReadDB().Where("status=1").Find(&ills).Error
11
+	return
12
+}

+ 73 - 8
service/member_service/member_service.go View File

@@ -4,30 +4,45 @@ import (
4 4
 	"SCRM/models"
5 5
 	"SCRM/service"
6 6
 	"strings"
7
+
8
+	"github.com/jinzhu/gorm"
7 9
 )
8 10
 
9 11
 func GetMemberList(orgID, page, limit, level, source, tag, startTime, endTime int64, isStartTime, isEndTime bool, searchKey string) (members []*Members, total int64, err error) {
10
-	db := service.UserReadDB().Model(&models.UserCustomer{}).Where("status=1")
12
+	db := service.UserReadDB().Table("sgj_user_customer as c").Where("c.status=1")
11 13
 	if orgID > 0 {
12
-		db = db.Where("user_org_id=?", orgID)
14
+		db = db.Where("c.user_org_id=?", orgID)
13 15
 	}
14 16
 	if source > 0 {
15
-		db = db.Where("sources=?", source)
17
+		db = db.Where("c.sources=?", source)
16 18
 	}
17
-
18 19
 	if isStartTime {
19
-		db = db.Where("created_time>=?", startTime)
20
+		db = db.Where("c.created_time>=?", startTime)
20 21
 	}
21 22
 	if isEndTime {
22
-		db = db.Where("created_time<=?", endTime)
23
+		db = db.Where("c.created_time<=?", endTime)
23 24
 	}
24 25
 	if len(searchKey) > 0 {
25 26
 		searchKey = "%" + searchKey + "%"
26
-		db = db.Where("name LIKE ? OR mobile LIKE ? ", searchKey, searchKey)
27
+		db = db.Where("c.name LIKE ? OR c.mobile LIKE ? ", searchKey, searchKey)
28
+	}
29
+	if level > 0 {
30
+		db = db.Joins("JOIN sgj_user_user_card as uc ON uc.customer_id = c.id and uc.user_org_id = ? and uc.status=1 and uc.card_id=? ", orgID, level)
31
+	}
32
+	if tag > 0 {
33
+		db = db.Joins("JOIN sgj_user_tag_links as ut ON ut.user_link_id = c.id and ut.user_org_id = ? and ut.status=1 and ut.tag_id=? ", orgID, tag)
27 34
 	}
28 35
 
29 36
 	offset := (page - 1) * limit
30
-	err = db.Count(&total).Order("id desc").Offset(offset).Limit(limit).Find(&members).Error
37
+	err = db.Count(&total).Order("c.created_time desc").Offset(offset).Limit(limit).
38
+		Preload("Tags", func(db *gorm.DB) *gorm.DB {
39
+			return db.Where("sgj_user_tag_links.user_org_id=? and sgj_user_tags.user_org_id=? and sgj_user_tags.status=1 and sgj_user_tag_links.status=1", orgID, orgID).Order("sgj_user_tag_links.id desc")
40
+		}).
41
+		Preload("UserCard", func(db *gorm.DB) *gorm.DB {
42
+			return db.Where("user_org_id=? and status=1", orgID)
43
+		}).
44
+		Preload("UserCard.Card", "user_org_id=? and status=1", orgID).
45
+		Select("c.id, c.user_org_id, c.user_id, c.mobile, c.name, c.gender, c.province_id, c.city_id, c.address, c.birthday, c.treat_type, c.relationship, c.illness_id, c.wechat_openid, c.membership, c.sources, c.status, c.created_time, c.updated_time, c.avatar, c.wechat_unionid, c.remark, c.medical_diagnose, c.yz_uid, c.ill_date, c.district_id").Find(&members).Error
31 46
 	if err != nil {
32 47
 		return
33 48
 	}
@@ -39,3 +54,53 @@ func GetMemberList(orgID, page, limit, level, source, tag, startTime, endTime in
39 54
 
40 55
 	return
41 56
 }
57
+
58
+func GetCustomerByMobile(orgID int64, mobile string) (*models.UserCustomer, error) {
59
+	var customer models.UserCustomer
60
+	var err error
61
+	err = service.UserReadDB().Where("user_org_id=? and mobile=? and status=1", orgID, mobile).Find(&customer).Error
62
+	if err == gorm.ErrRecordNotFound {
63
+		return nil, nil
64
+	}
65
+	if err != nil {
66
+		return nil, err
67
+	}
68
+	return &customer, nil
69
+}
70
+
71
+func GetUserByMobile(mobile string) (*models.User, error) {
72
+	var user models.User
73
+	var err error
74
+	err = service.UserReadDB().Where("mobile=?", mobile).Find(&user).Error
75
+	if err == gorm.ErrRecordNotFound {
76
+		return nil, nil
77
+	}
78
+	if err != nil {
79
+		return nil, err
80
+	}
81
+	return &user, nil
82
+}
83
+
84
+func CreateMember(member *Members) (err error) {
85
+	err = service.UserWriteDB().Create(member).Error
86
+	return
87
+}
88
+
89
+func CreateMemberWithUser(member *Members, user *models.User) (err error) {
90
+	tx := service.UserWriteDB().Begin()
91
+	err = tx.Create(user).Error
92
+	if err != nil {
93
+		tx.Rollback()
94
+		return
95
+	}
96
+	member.UserId = user.ID
97
+	err = tx.Create(member).Error
98
+	if err != nil {
99
+		tx.Rollback()
100
+		return
101
+	}
102
+
103
+	tx.Commit()
104
+
105
+	return
106
+}

+ 26 - 1
service/member_service/models.go View File

@@ -7,5 +7,30 @@ import (
7 7
 type Members struct {
8 8
 	models.UserCustomer
9 9
 
10
-	// Tags         []tags `gorm:"many2many:user_languages;"`
10
+	Tags     []*models.UserTags     `gorm:"many2many:sgj_user_tag_links;association_jointable_foreignkey:tag_id;jointable_foreignkey:user_link_id;" json:"tags"`
11
+	UserCard *UserCard              `gorm:"foreignkey:customer_id" json:"user_card"`
12
+	Illness  []*CustomerIllness     `gorm:"foreignkey:customer_id" json:"illness"`
13
+	UserTags []*models.UserTagLinks `gorm:"foreignkey:user_link_id" json:"user_tags"`
14
+}
15
+
16
+func (Members) TableName() string {
17
+	return "sgj_user_customer"
18
+}
19
+
20
+type UserCard struct {
21
+	models.UserCard
22
+
23
+	Card *models.UserMembershipCard `gorm:"ForeignKey:CardId" json:"card"`
24
+}
25
+
26
+func (UserCard) TableName() string {
27
+	return "sgj_user_user_card"
28
+}
29
+
30
+type CustomerIllness struct {
31
+	models.CustomerIllness
32
+}
33
+
34
+func (CustomerIllness) TableName() string {
35
+	return "sgj_user_customer_illness"
11 36
 }

+ 1 - 1
utils/tools.go View File

@@ -39,7 +39,7 @@ func MarkBackUrl(backUrl, defaultUrl string) string {
39 39
 
40 40
 func CheckMobile(mobile string) (match bool) {
41 41
 	//过滤手机
42
-	match, _ = regexp.MatchString("^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$", mobile)
42
+	match, _ = regexp.MatchString("^1([2358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$", mobile)
43 43
 	return
44 44
 }
45 45