zjxpcyc 6 年之前
父節點
當前提交
b4d4341217

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

@@ -5,8 +5,8 @@ db_type      = mysql
5 5
 con_protocol = tcp
6 6
 
7 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 12
 db_port      = 3306
@@ -15,7 +15,8 @@ db_port      = 3306
15 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 21
 ; 数据库名或者schema
21 22
 database     = spaceofcheng

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

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

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

@@ -50,9 +50,16 @@ func (c *BaseController) ResponseError(err error, code ...int) {
50 50
 }
51 51
 
52 52
 // ResponseRaw 返回
53
-func (c *BaseController) ResponseRaw(msg []byte) {
54
-	c.destroyContext(true)
53
+func (c *BaseController) ResponseRaw(msg []byte, stop ...bool) {
55 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 63
 	c.StopRun()
57 64
 }
58 65
 

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

@@ -4,8 +4,11 @@ import (
4 4
 	"encoding/json"
5 5
 	"io/ioutil"
6 6
 	"spaceofcheng/services/controllers"
7
+	"spaceofcheng/services/models/model"
7 8
 	"spaceofcheng/services/service/bodycheck"
8 9
 	"spaceofcheng/services/utils"
10
+
11
+	"github.com/astaxie/beego"
9 12
 )
10 13
 
11 14
 // BodyCheckController 商品
@@ -21,6 +24,29 @@ func (c *BodyCheckController) Constructor() {
21 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 50
 // GetCheckByUser 根据用户获取体检报告
25 51
 func (c *BodyCheckController) GetCheckByUser() {
26 52
 	info, err := c.serv.GetCheckByUser()

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

@@ -33,3 +33,7 @@ func (c *BaseController) destroyContext(ok ...bool) {
33 33
 
34 34
 	c.Context.Destroy()
35 35
 }
36
+
37
+func (c *BaseController) DestroyContext() {
38
+	c.destroyContext()
39
+}

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

@@ -7,6 +7,7 @@ import (
7 7
 	"io/ioutil"
8 8
 	"net/http"
9 9
 	"net/url"
10
+	"spaceofcheng/services/models"
10 11
 	"spaceofcheng/services/models/model"
11 12
 	"spaceofcheng/services/service/customer"
12 13
 	"spaceofcheng/services/utils"
@@ -15,144 +16,164 @@ import (
15 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 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 51
 // WxReceive
44
-func (c *BaseController) WxReceive() {
52
+func (c *WechatController) WxReceive() {
45 53
 	org := c.Context.Get("org").(model.SysOrg)
46 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 56
 	if err != nil {
52
-		beego.Error(err.Error())
57
+		utils.LogError("读取微信服务发送内容失败: " + err.Error())
53 58
 		c.ResponseRaw([]byte(""))
54 59
 	}
55 60
 
61
+	// 如果是事件
56 62
 	if val["MsgType"] == "event" {
63
+
64
+		// 如果是扫描二维码
57 65
 		qrcodePrefix := beego.AppConfig.String("qrcodePrefix")
58 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 69
 			if err != nil {
62
-				beego.Error(err.Error())
70
+				utils.LogError("转换反馈微信消息失败: " + err.Error())
63 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 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 104
 	org := c.Context.Get("org").(model.SysOrg)
73 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 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 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 127
 		if err != nil {
98 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 144
 	apiPrefix := beego.AppConfig.String("postwechatInfo")
117 145
 
118
-	b, err := json.Marshal(userinfo)
146
+	b, err := json.Marshal(data)
119 147
 	if err != nil {
120
-		return nil, err
148
+		return utils.LogError("转换待发送数据失败: " + err.Error())
121 149
 	}
122 150
 
123 151
 	body := bytes.NewBuffer([]byte(b))
124
-
125 152
 	res, err := http.Post(apiPrefix, "application/json;charset=utf-8", body)
126 153
 	if err != nil {
127
-		beego.Error(err)
128
-		return nil, err
154
+		return utils.LogError("调用悦奇接口失败: " + err.Error())
129 155
 	}
156
+
130 157
 	result, err := ioutil.ReadAll(res.Body)
131
-	res.Body.Close()
158
+	defer res.Body.Close()
132 159
 	if err != nil {
133
-		utils.LogError("发送消息失败:", err)
134
-		return nil, err
160
+		return utils.LogError("发送消息至悦奇失败:", err)
135 161
 	}
162
+
136 163
 	var postResult struct {
137 164
 		Status  bool
138 165
 		Message string
139 166
 	}
167
+
140 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 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 179
 // UnicodeEmojiCode 过滤表情
@@ -171,7 +192,7 @@ func UnicodeEmojiCode(s string) string {
171 192
 }
172 193
 
173 194
 // GetWxJsSDKSignature 获取 微信 jssdk 签名
174
-func (c *BaseController) GetWxJsSDKSignature() {
195
+func (c *WechatController) GetWxJsSDKSignature() {
175 196
 	org := c.Context.Get("org").(model.SysOrg)
176 197
 	url, _ := url.QueryUnescape(c.GetString("url"))
177 198
 
@@ -185,7 +206,7 @@ func (c *BaseController) GetWxJsSDKSignature() {
185 206
 }
186 207
 
187 208
 // MiniLogin 获取小程序 OPENID
188
-func (c *BaseController) MiniLogin() {
209
+func (c *WechatController) MiniLogin() {
189 210
 	org := c.Context.Get("org").(model.SysOrg)
190 211
 	code := c.GetString("code")
191 212
 
@@ -204,7 +225,7 @@ func (c *BaseController) MiniLogin() {
204 225
 }
205 226
 
206 227
 // DecodeMiniData 解密小程序信息
207
-func (c *BaseController) DecodeMiniData() {
228
+func (c *WechatController) DecodeMiniData() {
208 229
 	org := c.Context.Get("org").(model.SysOrg)
209 230
 
210 231
 	cli := utils.MiniClientFor(org.OrgId)

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

@@ -34,8 +34,8 @@ type AreaInfo struct {
34 34
 // GetCaseAreaByCase 根据案场获取案场区域
35 35
 func (m *CaseDAO) GetCaseAreaByCase(caseid string) ([]AreaInfo, error) {
36 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 39
 	return areas, err
40 40
 }
41 41
 

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

@@ -45,7 +45,7 @@ func (m *CaseDAO) GetCaseTable(caseids string, page int, pageSize int) ([]CaseTa
45 45
 // GetCaseTableByAreaID 根据区域ID获取桌位信息
46 46
 func (m *CaseDAO) GetCaseTableByAreaID(areaid string) ([]model.SysCaseTable, error) {
47 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 49
 	return tables, err
50 50
 }
51 51
 

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

@@ -127,14 +127,26 @@ func EditUserMapping(user *model.TaUserMapping) error {
127 127
 }
128 128
 
129 129
 // GetWeChatConfig 获取微信配置
130
-func GetWeChatConfig(org, cliType string) (*model.SysWechatConf, error) {
130
+func GetWeChatConfig(org, cliType string) (map[string]string, error) {
131 131
 	conf := new(model.SysWechatConf)
132 132
 
133 133
 	if _, err := DBEngine.Where("org_id=?", org).And("type=?", cliType).Get(conf); err != nil {
134 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 152
 // InsertToken 插入 token 生成记录

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

@@ -54,9 +54,9 @@ func getGuestRoutes() beego.LinkNamespace {
54 54
 
55 55
 		// 微信
56 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 61
 		beego.NSRouter("/websocket/:grps/:id", &controllers.BaseController{}, "get:Ws"),
62 62
 
@@ -66,6 +66,7 @@ func getGuestRoutes() beego.LinkNamespace {
66 66
 
67 67
 		// 签到
68 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,9 +272,9 @@ func (s *CustomerServ) BindWechatCust(userMap *model.TaUserMapping, phone, caseI
272 272
 
273 273
 // SaveNewCustomer 新增客户
274 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 280
 	nickyName := wxInfo["nickname"].(string)

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

@@ -490,44 +490,31 @@ func (s *SysServ) saveNewCustomer(wxUser *utils.WechatUser, userMap *model.TaUse
490 490
 
491 491
 // initWechatClient 初始化微信客户端
492 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 494
 	if err != nil {
495 495
 		utils.LogError("获取微信配置失败: " + err.Error())
496 496
 		return errors.New("获取微信配置失败")
497 497
 	}
498 498
 
499
-	if conf == nil || conf.ConfId == "" {
499
+	if cert == nil {
500 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 503
 	utils.WxClientSingleton(orgID, cert)
512 504
 	return nil
513 505
 }
514 506
 
515 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 509
 	if err != nil {
518 510
 		utils.LogError("获取小程序配置失败: " + err.Error())
519 511
 		return errors.New("获取小程序配置失败")
520 512
 	}
521 513
 
522
-	if conf == nil || conf.ConfId == "" {
514
+	if cert == nil {
523 515
 		return errors.New("未找到小程序配置")
524 516
 	}
525 517
 
526
-	cert := map[string]string{
527
-		"appid":  conf.Appid,
528
-		"secret": conf.Secret,
529
-	}
530
-
531 518
 	utils.MiniClientSingleton(orgID, cert)
532 519
 	return nil
533 520
 }

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

@@ -2,6 +2,8 @@ package utils
2 2
 
3 3
 import (
4 4
 	"errors"
5
+	"fmt"
6
+	"runtime"
5 7
 
6 8
 	"github.com/astaxie/beego/config"
7 9
 	"github.com/astaxie/beego/logs"
@@ -54,20 +56,24 @@ func NewLog(tp ...string) *logs.BeeLogger {
54 56
 func LogError(v ...interface{}) error {
55 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 67
 	if len(v) > 0 {
58 68
 		firstV := v[0]
59
-		leftV := v[1:]
60 69
 
61 70
 		switch err := firstV.(type) {
62 71
 		case string:
63
-			log.Error(err, leftV...)
64 72
 			return errors.New(err)
65 73
 		case error:
66
-			log.Error(err.Error(), leftV...)
67 74
 			return err
68 75
 		default:
69 76
 			msg := "Unknown error type"
70
-			log.Error(msg, leftV...)
71 77
 			return errors.New(msg)
72 78
 		}
73 79
 	}
@@ -79,17 +85,13 @@ func LogError(v ...interface{}) error {
79 85
 func LogInfo(v ...interface{}) {
80 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 97
 // GetDefaultLogger 获取默认 logger