zjxpcyc 6 年前
父节点
当前提交
b4d4341217

+ 4
- 3
conf/db.conf 查看文件

5
 con_protocol = tcp
5
 con_protocol = tcp
6
 
6
 
7
 ; 数据库地址,可以使用IP
7
 ; 数据库地址,可以使用IP
8
-# db_addr      = 192.168.0.122
9
-db_addr      = rm-uf6z3z6jq11x653d77o.mysql.rds.aliyuncs.com
8
+db_addr      = 192.168.0.122
9
+# db_addr      = rm-uf6z3z6jq11x653d77o.mysql.rds.aliyuncs.com
10
 
10
 
11
 ; 端口
11
 ; 端口
12
 db_port      = 3306
12
 db_port      = 3306
15
 username     = spaceofcheng
15
 username     = spaceofcheng
16
 
16
 
17
 ; 密码
17
 ; 密码
18
-password     = c;a|vK)Xv/=L@c[6Fx,v[ITD5;WpR}+Y
18
+password     = spaceofcheng
19
+# password     = c;a|vK)Xv/=L@c[6Fx,v[ITD5;WpR}+Y
19
 
20
 
20
 ; 数据库名或者schema
21
 ; 数据库名或者schema
21
 database     = spaceofcheng
22
 database     = spaceofcheng

+ 3
- 0
controllers/auth.go 查看文件

3
 import (
3
 import (
4
 	"net/http"
4
 	"net/http"
5
 	"spaceofcheng/services/service"
5
 	"spaceofcheng/services/service"
6
+	"spaceofcheng/services/utils"
6
 )
7
 )
7
 
8
 
8
 // Authenticate 权限验证
9
 // Authenticate 权限验证
15
 func (c *BaseController) authenticate() {
16
 func (c *BaseController) authenticate() {
16
 	c.serv = service.NewSysServ(c.Context)
17
 	c.serv = service.NewSysServ(c.Context)
17
 
18
 
19
+	utils.LogError(123)
20
+
18
 	// 鉴权 - 并初始化上下文
21
 	// 鉴权 - 并初始化上下文
19
 	res := c.serv.AuthAndInitCtx(c.Ctx)
22
 	res := c.serv.AuthAndInitCtx(c.Ctx)
20
 
23
 

+ 9
- 2
controllers/base.go 查看文件

50
 }
50
 }
51
 
51
 
52
 // ResponseRaw 返回
52
 // ResponseRaw 返回
53
-func (c *BaseController) ResponseRaw(msg []byte) {
54
-	c.destroyContext(true)
53
+func (c *BaseController) ResponseRaw(msg []byte, stop ...bool) {
55
 	c.Ctx.ResponseWriter.Write(msg)
54
 	c.Ctx.ResponseWriter.Write(msg)
55
+
56
+	if stop != nil && len(stop) > 0 {
57
+		if !stop[0] {
58
+			return
59
+		}
60
+	}
61
+
62
+	c.destroyContext(true)
56
 	c.StopRun()
63
 	c.StopRun()
57
 }
64
 }
58
 
65
 

+ 26
- 0
controllers/bodycheck/bodycheck.go 查看文件

4
 	"encoding/json"
4
 	"encoding/json"
5
 	"io/ioutil"
5
 	"io/ioutil"
6
 	"spaceofcheng/services/controllers"
6
 	"spaceofcheng/services/controllers"
7
+	"spaceofcheng/services/models/model"
7
 	"spaceofcheng/services/service/bodycheck"
8
 	"spaceofcheng/services/service/bodycheck"
8
 	"spaceofcheng/services/utils"
9
 	"spaceofcheng/services/utils"
10
+
11
+	"github.com/astaxie/beego"
9
 )
12
 )
10
 
13
 
11
 // BodyCheckController 商品
14
 // BodyCheckController 商品
21
 	c.serv = bodycheck.NewBodyCheckServ(c.Context)
24
 	c.serv = bodycheck.NewBodyCheckServ(c.Context)
22
 }
25
 }
23
 
26
 
27
+// GetQrcodeURL 获取二维码信息
28
+func (c *BodyCheckController) GetQrcodeURL() {
29
+	EquipmentID := c.GetString("EquipmentId")
30
+	qrcodePrefix := beego.AppConfig.String("qrcodePrefix")
31
+	org := c.Context.Get("org").(model.SysOrg)
32
+
33
+	qrcode, err := utils.WxClientFor(org.OrgId).GetTempStrQRCode(qrcodePrefix + EquipmentID)
34
+	if err != nil {
35
+		utils.LogError("获取二维码失败: " + err.Error())
36
+		// c.ResponseError(err)
37
+		c.ResponseOtherEndPoint(map[string]interface{}{
38
+			"Status":  false,
39
+			"Message": "获取二维码失败: " + err.Error(),
40
+		})
41
+	}
42
+
43
+	c.ResponseOtherEndPoint(map[string]interface{}{
44
+		"Status":    true,
45
+		"Message":   "",
46
+		"QrcodeUrl": qrcode,
47
+	})
48
+}
49
+
24
 // GetCheckByUser 根据用户获取体检报告
50
 // GetCheckByUser 根据用户获取体检报告
25
 func (c *BodyCheckController) GetCheckByUser() {
51
 func (c *BodyCheckController) GetCheckByUser() {
26
 	info, err := c.serv.GetCheckByUser()
52
 	info, err := c.serv.GetCheckByUser()

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

33
 
33
 
34
 	c.Context.Destroy()
34
 	c.Context.Destroy()
35
 }
35
 }
36
+
37
+func (c *BaseController) DestroyContext() {
38
+	c.destroyContext()
39
+}

+ 98
- 77
controllers/wechat.go 查看文件

7
 	"io/ioutil"
7
 	"io/ioutil"
8
 	"net/http"
8
 	"net/http"
9
 	"net/url"
9
 	"net/url"
10
+	"spaceofcheng/services/models"
10
 	"spaceofcheng/services/models/model"
11
 	"spaceofcheng/services/models/model"
11
 	"spaceofcheng/services/service/customer"
12
 	"spaceofcheng/services/service/customer"
12
 	"spaceofcheng/services/utils"
13
 	"spaceofcheng/services/utils"
15
 	"github.com/astaxie/beego"
16
 	"github.com/astaxie/beego"
16
 )
17
 )
17
 
18
 
18
-// WechatInfo 微信接入
19
-func (c *BaseController) WechatInfo() {
20
-	// signature := c.GetString("signature")
21
-	// timestamp := c.GetString("timestamp")
22
-	// nonce := c.GetString("nonce")
23
-	echostr := c.GetString("echostr")
24
-	c.ResponseRaw([]byte(echostr))
19
+// UserController 用户
20
+type WechatController struct {
21
+	BaseController
22
+	custServ *customer.CustomerServ
25
 }
23
 }
26
 
24
 
27
-// GetQrcodeURL 获取二维码信息
28
-func (c *BaseController) GetQrcodeURL() {
29
-	EquipmentID := c.GetString("EquipmentId")
30
-	qrcodePrefix := beego.AppConfig.String("qrcodePrefix")
31
-	org := c.Context.Get("org").(model.SysOrg)
25
+// Constructor 初始化 Controller
26
+// @Title Constructor
27
+// @Description 初始化 Controller, 系统自动调用
28
+func (c *WechatController) Constructor() {
29
+	c.custServ = customer.NewCustomerServ(c.Context)
32
 
30
 
33
-	qrcode, err := utils.WxClientFor(org.OrgId).GetTempStrQRCode(qrcodePrefix + EquipmentID)
31
+	org := c.Context.Get("org").(model.SysOrg)
32
+	cert, err := models.GetWeChatConfig(org.OrgId, models.WECHAT_WX)
34
 	if err != nil {
33
 	if err != nil {
35
-		utils.LogError("获取二维码失败!")
36
-		c.ResponseError(err)
34
+		utils.LogError("获取微信相关配置失败: " + err.Error())
35
+	} else {
36
+		utils.WxClientSingleton(org.OrgId, cert)
37
+	}
38
+}
39
+
40
+// WechatInfo 微信接入
41
+func (c *WechatController) WechatInfo() {
42
+	method := c.Ctx.Input.Method()
43
+	if method == http.MethodGet {
44
+		echostr := c.GetString("echostr")
45
+		c.ResponseRaw([]byte(echostr))
46
+	} else {
47
+		c.WxReceive()
37
 	}
48
 	}
38
-	c.ResponseJSON(map[string]interface{}{
39
-		"QrcodeUrl": qrcode,
40
-	})
41
 }
49
 }
42
 
50
 
43
 // WxReceive
51
 // WxReceive
44
-func (c *BaseController) WxReceive() {
52
+func (c *WechatController) WxReceive() {
45
 	org := c.Context.Get("org").(model.SysOrg)
53
 	org := c.Context.Get("org").(model.SysOrg)
46
 	wechat := utils.WxClientFor(org.OrgId)
54
 	wechat := utils.WxClientFor(org.OrgId)
47
-	r := c.Ctx.Request
48
-	defer r.Body.Close()
49
-	con, _ := ioutil.ReadAll(r.Body) //获取post的数据
50
-	val, err := wechat.TransformMessage(string(con))
55
+	val, err := wechat.TransformMessage(string(c.Ctx.Input.RequestBody))
51
 	if err != nil {
56
 	if err != nil {
52
-		beego.Error(err.Error())
57
+		utils.LogError("读取微信服务发送内容失败: " + err.Error())
53
 		c.ResponseRaw([]byte(""))
58
 		c.ResponseRaw([]byte(""))
54
 	}
59
 	}
55
 
60
 
61
+	// 如果是事件
56
 	if val["MsgType"] == "event" {
62
 	if val["MsgType"] == "event" {
63
+
64
+		// 如果是扫描二维码
57
 		qrcodePrefix := beego.AppConfig.String("qrcodePrefix")
65
 		qrcodePrefix := beego.AppConfig.String("qrcodePrefix")
58
 		if (val["Event"] == "subscribe" && strings.Contains(val["EventKey"], "qrscene_"+qrcodePrefix)) || val["Event"] == "SCAN" {
66
 		if (val["Event"] == "subscribe" && strings.Contains(val["EventKey"], "qrscene_"+qrcodePrefix)) || val["Event"] == "SCAN" {
59
-			EquipmentID := strings.Split(val["EventKey"], qrcodePrefix)[1]
60
-			messagetxt, err := c.scanDo(val, EquipmentID)
67
+			openID := val["FromUserName"]
68
+			messagetxt, err := wechat.ResponseMessageText(openID, beego.AppConfig.String("followText"))
61
 			if err != nil {
69
 			if err != nil {
62
-				beego.Error(err.Error())
70
+				utils.LogError("转换反馈微信消息失败: " + err.Error())
63
 				c.ResponseRaw([]byte(""))
71
 				c.ResponseRaw([]byte(""))
64
 			}
72
 			}
65
-			c.ResponseRaw(messagetxt)
73
+
74
+			// 校验用户 并调用 悦奇接口
75
+			// 使用 goroutine 主要是为了实现快速反馈微信
76
+			// 微信只有 5 秒等待时间
77
+			var done = make(chan bool)
78
+			go func() {
79
+				//
80
+				user, err := c.checkUser(val)
81
+				if err != nil {
82
+					done <- true
83
+					return
84
+				}
85
+
86
+				//
87
+				EquipmentID := strings.Split(val["EventKey"], qrcodePrefix)[1]
88
+				c.replyToYueQi(user, EquipmentID)
89
+				done <- true
90
+			}()
91
+
92
+			//
93
+			c.ResponseRaw(messagetxt, false)
94
+			<-done
95
+			c.DestroyContext()
96
+			c.StopRun()
66
 		}
97
 		}
67
 	}
98
 	}
68
 	c.ResponseRaw([]byte(""))
99
 	c.ResponseRaw([]byte(""))
69
 }
100
 }
70
 
101
 
71
-func (c *BaseController) scanDo(val map[string]string, EquipmentID string) ([]byte, error) {
102
+// 校验用户
103
+func (c *WechatController) checkUser(val map[string]string) (map[string]interface{}, error) {
72
 	org := c.Context.Get("org").(model.SysOrg)
104
 	org := c.Context.Get("org").(model.SysOrg)
73
 	wechat := utils.WxClientFor(org.OrgId)
105
 	wechat := utils.WxClientFor(org.OrgId)
106
+	openID := val["FromUserName"]
74
 
107
 
75
-	if val["FromUserName"] == "" {
76
-		return nil, errors.New("openid为空")
77
-	}
78
-
79
-	user, err := wechat.GetUserDetail(val["FromUserName"])
108
+	user, err := wechat.GetUserDetail(openID)
80
 	if err != nil {
109
 	if err != nil {
81
-		return nil, err
110
+		utils.LogError("获取微信用户详情失败:" + err.Error())
111
+		return nil, errors.New("获取微信用户详情失败")
82
 	}
112
 	}
83
-
84
-	var customerserv = customer.NewCustomerServ(c.Context)
113
+	// 悦奇设备字段
114
+	user["wechataccount"] = openID
115
+	user["wechatofficial"] = wechat.GetAppID()
85
 
116
 
86
 	// 判断用户是否存在
117
 	// 判断用户是否存在
87
-	getUser, err := customerserv.GetCustUserByOpenID(user["openid"].(string))
118
+	getUser, err := c.custServ.GetCustUserByOpenID(openID)
88
 	if err != nil {
119
 	if err != nil {
89
-		return nil, err
120
+		utils.LogError("查询来源用户失败: ", err)
121
+		return user, nil
90
 	}
122
 	}
91
-	name := user["nickname"].(string)
92
-	name = UnicodeEmojiCode(name)
93
-	user["nickname"] = name
94
-	if getUser == nil || getUser.CustomerId != "" {
123
+
124
+	if getUser == nil || getUser.CustomerId == "" {
95
 		// 新增用户
125
 		// 新增用户
96
-		_, err := customerserv.SaveNewCustomer(user, "", "", "", "")
126
+		_, err := c.custServ.SaveNewCustomer(user, "", "", "", "")
97
 		if err != nil {
127
 		if err != nil {
98
 			utils.LogError("用户保存失败:", err)
128
 			utils.LogError("用户保存失败:", err)
99
-			return nil, err
129
+			return user, nil
100
 		}
130
 		}
101
 	}
131
 	}
102
 
132
 
103
-	type WechatInfo struct {
104
-		EquipmentId    string
105
-		WXID           int
106
-		WechatUserInfo map[string]interface{}
133
+	return user, nil
134
+}
135
+
136
+// 反馈消息给悦奇
137
+func (c *WechatController) replyToYueQi(user map[string]interface{}, EquipmentID string) error {
138
+	var data = map[string]interface{}{
139
+		"EquipmentId":    EquipmentID,
140
+		"WechatUserInfo": user,
141
+		"WXID":           1,
107
 	}
142
 	}
108
-	appid := wechat.GetAppID()
109
-	user["wechataccount"] = user["openid"].(string)
110
-	user["wechatofficial"] = appid
111
-	var userinfo = WechatInfo{}
112
-	userinfo.EquipmentId = EquipmentID
113
-	userinfo.WechatUserInfo = user
114
-	userinfo.WXID = 1
115
 
143
 
116
 	apiPrefix := beego.AppConfig.String("postwechatInfo")
144
 	apiPrefix := beego.AppConfig.String("postwechatInfo")
117
 
145
 
118
-	b, err := json.Marshal(userinfo)
146
+	b, err := json.Marshal(data)
119
 	if err != nil {
147
 	if err != nil {
120
-		return nil, err
148
+		return utils.LogError("转换待发送数据失败: " + err.Error())
121
 	}
149
 	}
122
 
150
 
123
 	body := bytes.NewBuffer([]byte(b))
151
 	body := bytes.NewBuffer([]byte(b))
124
-
125
 	res, err := http.Post(apiPrefix, "application/json;charset=utf-8", body)
152
 	res, err := http.Post(apiPrefix, "application/json;charset=utf-8", body)
126
 	if err != nil {
153
 	if err != nil {
127
-		beego.Error(err)
128
-		return nil, err
154
+		return utils.LogError("调用悦奇接口失败: " + err.Error())
129
 	}
155
 	}
156
+
130
 	result, err := ioutil.ReadAll(res.Body)
157
 	result, err := ioutil.ReadAll(res.Body)
131
-	res.Body.Close()
158
+	defer res.Body.Close()
132
 	if err != nil {
159
 	if err != nil {
133
-		utils.LogError("发送消息失败:", err)
134
-		return nil, err
160
+		return utils.LogError("发送消息至悦奇失败:", err)
135
 	}
161
 	}
162
+
136
 	var postResult struct {
163
 	var postResult struct {
137
 		Status  bool
164
 		Status  bool
138
 		Message string
165
 		Message string
139
 	}
166
 	}
167
+
140
 	if err = json.Unmarshal(result, &postResult); err != nil {
168
 	if err = json.Unmarshal(result, &postResult); err != nil {
141
-		utils.LogError("发送消息失败:", err)
142
-		return nil, err
169
+		return utils.LogError("发送消息至悦奇失败:", err)
143
 	}
170
 	}
144
 
171
 
145
 	if !postResult.Status {
172
 	if !postResult.Status {
146
-		beego.Error(postResult.Message)
147
-		return nil, errors.New(postResult.Message)
173
+		return utils.LogError("发送消息至悦奇失败:", postResult.Message)
148
 	}
174
 	}
149
 
175
 
150
-	messagetxt, err := wechat.ResponseMessageText(user["openid"].(string), beego.AppConfig.String("followText"))
151
-	if err != nil {
152
-		beego.Error(err)
153
-		return nil, err
154
-	}
155
-	return messagetxt, nil
176
+	return nil
156
 }
177
 }
157
 
178
 
158
 // UnicodeEmojiCode 过滤表情
179
 // UnicodeEmojiCode 过滤表情
171
 }
192
 }
172
 
193
 
173
 // GetWxJsSDKSignature 获取 微信 jssdk 签名
194
 // GetWxJsSDKSignature 获取 微信 jssdk 签名
174
-func (c *BaseController) GetWxJsSDKSignature() {
195
+func (c *WechatController) GetWxJsSDKSignature() {
175
 	org := c.Context.Get("org").(model.SysOrg)
196
 	org := c.Context.Get("org").(model.SysOrg)
176
 	url, _ := url.QueryUnescape(c.GetString("url"))
197
 	url, _ := url.QueryUnescape(c.GetString("url"))
177
 
198
 
185
 }
206
 }
186
 
207
 
187
 // MiniLogin 获取小程序 OPENID
208
 // MiniLogin 获取小程序 OPENID
188
-func (c *BaseController) MiniLogin() {
209
+func (c *WechatController) MiniLogin() {
189
 	org := c.Context.Get("org").(model.SysOrg)
210
 	org := c.Context.Get("org").(model.SysOrg)
190
 	code := c.GetString("code")
211
 	code := c.GetString("code")
191
 
212
 
204
 }
225
 }
205
 
226
 
206
 // DecodeMiniData 解密小程序信息
227
 // DecodeMiniData 解密小程序信息
207
-func (c *BaseController) DecodeMiniData() {
228
+func (c *WechatController) DecodeMiniData() {
208
 	org := c.Context.Get("org").(model.SysOrg)
229
 	org := c.Context.Get("org").(model.SysOrg)
209
 
230
 
210
 	cli := utils.MiniClientFor(org.OrgId)
231
 	cli := utils.MiniClientFor(org.OrgId)

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

34
 // GetCaseAreaByCase 根据案场获取案场区域
34
 // GetCaseAreaByCase 根据案场获取案场区域
35
 func (m *CaseDAO) GetCaseAreaByCase(caseid string) ([]AreaInfo, error) {
35
 func (m *CaseDAO) GetCaseAreaByCase(caseid string) ([]AreaInfo, error) {
36
 	var areas []AreaInfo
36
 	var areas []AreaInfo
37
-	sql := `select * from sys_case_area where status>` + strconv.Itoa(models.STATUS_DEL) + ` and case_id ='` + caseid + `'`
38
-	err := m.db.Sql(sql).Find(&areas)
37
+	sql := "select * from sys_case_area where status > ? and case_id = ? order by `order`"
38
+	err := m.db.Sql(sql, models.STATUS_DEL, caseid).Find(&areas)
39
 	return areas, err
39
 	return areas, err
40
 }
40
 }
41
 
41
 

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

45
 // GetCaseTableByAreaID 根据区域ID获取桌位信息
45
 // GetCaseTableByAreaID 根据区域ID获取桌位信息
46
 func (m *CaseDAO) GetCaseTableByAreaID(areaid string) ([]model.SysCaseTable, error) {
46
 func (m *CaseDAO) GetCaseTableByAreaID(areaid string) ([]model.SysCaseTable, error) {
47
 	var tables []model.SysCaseTable
47
 	var tables []model.SysCaseTable
48
-	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("area_id=?", areaid).Find(&tables)
48
+	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("area_id=?", areaid).Asc("order").Find(&tables)
49
 	return tables, err
49
 	return tables, err
50
 }
50
 }
51
 
51
 

+ 14
- 2
models/sys.go 查看文件

127
 }
127
 }
128
 
128
 
129
 // GetWeChatConfig 获取微信配置
129
 // GetWeChatConfig 获取微信配置
130
-func GetWeChatConfig(org, cliType string) (*model.SysWechatConf, error) {
130
+func GetWeChatConfig(org, cliType string) (map[string]string, error) {
131
 	conf := new(model.SysWechatConf)
131
 	conf := new(model.SysWechatConf)
132
 
132
 
133
 	if _, err := DBEngine.Where("org_id=?", org).And("type=?", cliType).Get(conf); err != nil {
133
 	if _, err := DBEngine.Where("org_id=?", org).And("type=?", cliType).Get(conf); err != nil {
134
 		return nil, err
134
 		return nil, err
135
 	}
135
 	}
136
 
136
 
137
-	return conf, nil
137
+	if conf.ConfId == "" {
138
+		return nil, nil
139
+	}
140
+
141
+	cert := map[string]string{
142
+		"appid":  conf.Appid,
143
+		"secret": conf.Secret,
144
+		"token":  conf.Token,
145
+		"aeskey": conf.Aeskey,
146
+		"wxid":   conf.Wxid,
147
+	}
148
+
149
+	return cert, nil
138
 }
150
 }
139
 
151
 
140
 // InsertToken 插入 token 生成记录
152
 // InsertToken 插入 token 生成记录

+ 5
- 4
routers/guest.go 查看文件

54
 
54
 
55
 		// 微信
55
 		// 微信
56
 		// js sdk 签名
56
 		// js sdk 签名
57
-		beego.NSRouter("/wechat/jssdk/signature", &controllers.BaseController{}, "get:GetWxJsSDKSignature"),
58
-		beego.NSRouter("/wechat/mini/login", &controllers.BaseController{}, "post:MiniLogin"),
59
-		beego.NSRouter("/wechat/mini/decodedata", &controllers.BaseController{}, "post:DecodeMiniData"),
57
+		beego.NSRouter("/wechat/jssdk/signature", &controllers.WechatController{}, "get:GetWxJsSDKSignature"),
58
+		beego.NSRouter("/wechat/mini/login", &controllers.WechatController{}, "post:MiniLogin"),
59
+		beego.NSRouter("/wechat/mini/decodedata", &controllers.WechatController{}, "post:DecodeMiniData"),
60
 
60
 
61
 		beego.NSRouter("/websocket/:grps/:id", &controllers.BaseController{}, "get:Ws"),
61
 		beego.NSRouter("/websocket/:grps/:id", &controllers.BaseController{}, "get:Ws"),
62
 
62
 
66
 
66
 
67
 		// 签到
67
 		// 签到
68
 		beego.NSRouter("/case/checkin", &cases.SigninController{}, "post:AddSignin"),
68
 		beego.NSRouter("/case/checkin", &cases.SigninController{}, "post:AddSignin"),
69
-		beego.NSRouter("/wechat", &controllers.BaseController{}, "get,post:WechatInfo"),
69
+		beego.NSRouter("/wechat", &controllers.WechatController{}, "get,post:WechatInfo"),
70
+		// beego.NSRouter("/wechat", &controllers.WechatController{}, "post:WxReceive"),
70
 	)
71
 	)
71
 }
72
 }

+ 3
- 3
service/customer/customer.go 查看文件

272
 
272
 
273
 // SaveNewCustomer 新增客户
273
 // SaveNewCustomer 新增客户
274
 func (s *CustomerServ) SaveNewCustomer(wxInfo map[string]interface{}, caseID, arID, phone, userID string) (*model.TaCustomer, error) {
274
 func (s *CustomerServ) SaveNewCustomer(wxInfo map[string]interface{}, caseID, arID, phone, userID string) (*model.TaCustomer, error) {
275
-	if caseID == "" && arID == "" && userID == "" {
276
-		return nil, errors.New("新增信息失败, 无法确认人员类型")
277
-	}
275
+	// if caseID == "" && arID == "" && userID == "" {
276
+	// 	return nil, errors.New("新增信息失败, 无法确认人员类型")
277
+	// }
278
 
278
 
279
 	// 微信相关字段
279
 	// 微信相关字段
280
 	nickyName := wxInfo["nickname"].(string)
280
 	nickyName := wxInfo["nickname"].(string)

+ 4
- 17
service/sys.go 查看文件

490
 
490
 
491
 // initWechatClient 初始化微信客户端
491
 // initWechatClient 初始化微信客户端
492
 func (s *SysServ) initWechatClient(orgID string) error {
492
 func (s *SysServ) initWechatClient(orgID string) error {
493
-	conf, err := models.GetWeChatConfig(orgID, models.WECHAT_WX)
493
+	cert, err := models.GetWeChatConfig(orgID, models.WECHAT_WX)
494
 	if err != nil {
494
 	if err != nil {
495
 		utils.LogError("获取微信配置失败: " + err.Error())
495
 		utils.LogError("获取微信配置失败: " + err.Error())
496
 		return errors.New("获取微信配置失败")
496
 		return errors.New("获取微信配置失败")
497
 	}
497
 	}
498
 
498
 
499
-	if conf == nil || conf.ConfId == "" {
499
+	if cert == nil {
500
 		return errors.New("未找到微信配置")
500
 		return errors.New("未找到微信配置")
501
 	}
501
 	}
502
 
502
 
503
-	cert := map[string]string{
504
-		"appid":  conf.Appid,
505
-		"secret": conf.Secret,
506
-		"token":  conf.Token,
507
-		"aeskey": conf.Aeskey,
508
-		"wxid":   conf.Wxid,
509
-	}
510
-
511
 	utils.WxClientSingleton(orgID, cert)
503
 	utils.WxClientSingleton(orgID, cert)
512
 	return nil
504
 	return nil
513
 }
505
 }
514
 
506
 
515
 func (s *SysServ) initMiniClient(orgID string) error {
507
 func (s *SysServ) initMiniClient(orgID string) error {
516
-	conf, err := models.GetWeChatConfig(orgID, models.WECHAT_MINI)
508
+	cert, err := models.GetWeChatConfig(orgID, models.WECHAT_MINI)
517
 	if err != nil {
509
 	if err != nil {
518
 		utils.LogError("获取小程序配置失败: " + err.Error())
510
 		utils.LogError("获取小程序配置失败: " + err.Error())
519
 		return errors.New("获取小程序配置失败")
511
 		return errors.New("获取小程序配置失败")
520
 	}
512
 	}
521
 
513
 
522
-	if conf == nil || conf.ConfId == "" {
514
+	if cert == nil {
523
 		return errors.New("未找到小程序配置")
515
 		return errors.New("未找到小程序配置")
524
 	}
516
 	}
525
 
517
 
526
-	cert := map[string]string{
527
-		"appid":  conf.Appid,
528
-		"secret": conf.Secret,
529
-	}
530
-
531
 	utils.MiniClientSingleton(orgID, cert)
518
 	utils.MiniClientSingleton(orgID, cert)
532
 	return nil
519
 	return nil
533
 }
520
 }

+ 16
- 14
utils/log.go 查看文件

2
 
2
 
3
 import (
3
 import (
4
 	"errors"
4
 	"errors"
5
+	"fmt"
6
+	"runtime"
5
 
7
 
6
 	"github.com/astaxie/beego/config"
8
 	"github.com/astaxie/beego/config"
7
 	"github.com/astaxie/beego/logs"
9
 	"github.com/astaxie/beego/logs"
54
 func LogError(v ...interface{}) error {
56
 func LogError(v ...interface{}) error {
55
 	log := instances["common"]
57
 	log := instances["common"]
56
 
58
 
59
+	preMsg := ""
60
+	_, file, line, ok := runtime.Caller(0)
61
+	if ok {
62
+		preMsg = fmt.Sprintf("file: %s    line=%d : ", file, line)
63
+	}
64
+
65
+	log.Error(preMsg, v...)
66
+
57
 	if len(v) > 0 {
67
 	if len(v) > 0 {
58
 		firstV := v[0]
68
 		firstV := v[0]
59
-		leftV := v[1:]
60
 
69
 
61
 		switch err := firstV.(type) {
70
 		switch err := firstV.(type) {
62
 		case string:
71
 		case string:
63
-			log.Error(err, leftV...)
64
 			return errors.New(err)
72
 			return errors.New(err)
65
 		case error:
73
 		case error:
66
-			log.Error(err.Error(), leftV...)
67
 			return err
74
 			return err
68
 		default:
75
 		default:
69
 			msg := "Unknown error type"
76
 			msg := "Unknown error type"
70
-			log.Error(msg, leftV...)
71
 			return errors.New(msg)
77
 			return errors.New(msg)
72
 		}
78
 		}
73
 	}
79
 	}
79
 func LogInfo(v ...interface{}) {
85
 func LogInfo(v ...interface{}) {
80
 	log := instances["common"]
86
 	log := instances["common"]
81
 
87
 
82
-	if len(v) > 0 {
83
-		firstV := v[0]
84
-		leftV := v[1:]
85
-
86
-		switch msg := firstV.(type) {
87
-		case string:
88
-			log.Info(msg, leftV...)
89
-		default:
90
-			log.Info("Unknown message type", leftV...)
91
-		}
88
+	preMsg := ""
89
+	_, file, line, ok := runtime.Caller(0)
90
+	if ok {
91
+		preMsg = fmt.Sprintf("file: %s    line=%d : ", file, line)
92
 	}
92
 	}
93
+
94
+	log.Error(preMsg, v...)
93
 }
95
 }
94
 
96
 
95
 // GetDefaultLogger 获取默认 logger
97
 // GetDefaultLogger 获取默认 logger