浏览代码

修改微信授权方式,获取微信昵称和头像

zhoufan 7 年之前
父节点
当前提交
761fca74be

+ 1 - 0
CallCenterApi/CallCenterAPI.WechatSDK/Models/WxLoginDto.cs

16
         public string Code { get; set; }
16
         public string Code { get; set; }
17
         public string OpenId { get; set; }
17
         public string OpenId { get; set; }
18
         public string RedirectUrl { get; set; }
18
         public string RedirectUrl { get; set; }
19
+        public Senparc.Weixin.MP.AdvancedAPIs.OAuth.OAuthUserInfo UserInfo { get; set; }
19
 
20
 
20
     }
21
     }
21
 }
22
 }

+ 20 - 0
CallCenterApi/CallCenterAPI.WechatSDK/WxHelper.cs

50
         }
50
         }
51
 
51
 
52
         /// <summary>
52
         /// <summary>
53
+        /// 获取用户信息
54
+        /// </summary>
55
+        /// <param name="wxLoginDto"></param>
56
+        /// <returns></returns>
57
+        public static WxLoginDto GetUserInfo(WxLoginDto wxLoginDto)
58
+        {
59
+            if (string.IsNullOrWhiteSpace(wxLoginDto.Code))
60
+            {
61
+                var url = OAuthApi.GetAuthorizeUrl(AppId, wxLoginDto.RedirectUrl, "qwertyuidfghjkl", OAuthScope.snsapi_userinfo);
62
+                wxLoginDto.RedirectUrl = url;
63
+                return wxLoginDto;
64
+            }
65
+            var access = OAuthApi.GetAccessToken(AppId, AppSecret, wxLoginDto.Code);
66
+            wxLoginDto.OpenId = access.openid;
67
+            wxLoginDto.UserInfo = OAuthApi.GetUserInfo(access.access_token, access.openid);
68
+
69
+            return wxLoginDto;
70
+        }
71
+
72
+        /// <summary>
53
         /// 获取common的token
73
         /// 获取common的token
54
         /// </summary>
74
         /// </summary>
55
         /// <returns></returns>
75
         /// <returns></returns>

+ 4 - 2
CallCenterApi/CallCenterApi.BLL/T_Sys_Users.cs

58
         /// </summary>
58
         /// </summary>
59
         public CallCenterApi.Model.T_Sys_Users GetModel(long F_Id)
59
         public CallCenterApi.Model.T_Sys_Users GetModel(long F_Id)
60
         {
60
         {
61
+
61
             return dal.GetModel(F_Id);
62
             return dal.GetModel(F_Id);
62
         }
63
         }
63
 
64
 
64
         /// <summary>
65
         /// <summary>
65
         /// 得到一个对象实体
66
         /// 得到一个对象实体
66
         /// </summary>
67
         /// </summary>
67
-        public CallCenterApi.Model.T_Sys_Users GetModel(string openid)
68
+        public CallCenterApi.Model.T_Sys_Users GetModel(string usercode)
68
         {
69
         {
69
-            return dal.GetModel(openid);
70
+
71
+            return dal.GetModel(usercode);
70
         }
72
         }
71
 
73
 
72
         /// <summary>
74
         /// <summary>

+ 28 - 19
CallCenterApi/CallCenterApi.DAL/T_Sys_Users.cs

38
         {
38
         {
39
             StringBuilder strSql = new StringBuilder();
39
             StringBuilder strSql = new StringBuilder();
40
             strSql.Append("insert into T_Sys_Users(");
40
             strSql.Append("insert into T_Sys_Users(");
41
-            strSql.Append("F_OpenId,F_CreateTime,F_Type,F_Password,F_Name,F_Telphone,F_Sex,F_Province,F_City,F_County,F_Address)");
41
+            strSql.Append("F_OpenId,F_CreateTime,F_Type,F_Password,F_Name,F_Telphone,F_Sex,F_Province,F_City,F_County,F_Address,F_ImgUrl)");
42
             strSql.Append(" values (");
42
             strSql.Append(" values (");
43
-            strSql.Append("@F_OpenId,@F_CreateTime,@F_Type,@F_Password,@F_Name,@F_Telphone,@F_Sex,@F_Province,@F_City,@F_County,@F_Address)");
43
+            strSql.Append("@F_OpenId,@F_CreateTime,@F_Type,@F_Password,@F_Name,@F_Telphone,@F_Sex,@F_Province,@F_City,@F_County,@F_Address,@F_ImgUrl)");
44
             strSql.Append(";select @@IDENTITY");
44
             strSql.Append(";select @@IDENTITY");
45
             SqlParameter[] parameters = {
45
             SqlParameter[] parameters = {
46
                     new SqlParameter("@F_OpenId", SqlDbType.VarChar,100),
46
                     new SqlParameter("@F_OpenId", SqlDbType.VarChar,100),
47
                     new SqlParameter("@F_CreateTime", SqlDbType.DateTime),
47
                     new SqlParameter("@F_CreateTime", SqlDbType.DateTime),
48
                     new SqlParameter("@F_Type", SqlDbType.Int,4),
48
                     new SqlParameter("@F_Type", SqlDbType.Int,4),
49
                     new SqlParameter("@F_Password", SqlDbType.VarChar,50),
49
                     new SqlParameter("@F_Password", SqlDbType.VarChar,50),
50
-                    new SqlParameter("@F_Name", SqlDbType.VarChar,50),
50
+                    new SqlParameter("@F_Name", SqlDbType.NVarChar,500),
51
                     new SqlParameter("@F_Telphone", SqlDbType.VarChar,50),
51
                     new SqlParameter("@F_Telphone", SqlDbType.VarChar,50),
52
                     new SqlParameter("@F_Sex", SqlDbType.Int,4),
52
                     new SqlParameter("@F_Sex", SqlDbType.Int,4),
53
                     new SqlParameter("@F_Province", SqlDbType.VarChar,50),
53
                     new SqlParameter("@F_Province", SqlDbType.VarChar,50),
54
                     new SqlParameter("@F_City", SqlDbType.VarChar,50),
54
                     new SqlParameter("@F_City", SqlDbType.VarChar,50),
55
                     new SqlParameter("@F_County", SqlDbType.VarChar,50),
55
                     new SqlParameter("@F_County", SqlDbType.VarChar,50),
56
-                    new SqlParameter("@F_Address", SqlDbType.VarChar,500)};
56
+                    new SqlParameter("@F_Address", SqlDbType.VarChar,500),
57
+                    new SqlParameter("@F_ImgUrl", SqlDbType.VarChar,500)};
57
             parameters[0].Value = model.F_OpenId;
58
             parameters[0].Value = model.F_OpenId;
58
             parameters[1].Value = model.F_CreateTime;
59
             parameters[1].Value = model.F_CreateTime;
59
             parameters[2].Value = model.F_Type;
60
             parameters[2].Value = model.F_Type;
65
             parameters[8].Value = model.F_City;
66
             parameters[8].Value = model.F_City;
66
             parameters[9].Value = model.F_County;
67
             parameters[9].Value = model.F_County;
67
             parameters[10].Value = model.F_Address;
68
             parameters[10].Value = model.F_Address;
69
+            parameters[11].Value = model.F_ImgUrl;
68
 
70
 
69
             object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
71
             object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
70
             if (obj == null)
72
             if (obj == null)
93
             strSql.Append("F_Province=@F_Province,");
95
             strSql.Append("F_Province=@F_Province,");
94
             strSql.Append("F_City=@F_City,");
96
             strSql.Append("F_City=@F_City,");
95
             strSql.Append("F_County=@F_County,");
97
             strSql.Append("F_County=@F_County,");
96
-            strSql.Append("F_Address=@F_Address");
98
+            strSql.Append("F_Address=@F_Address,");
99
+            strSql.Append("F_ImgUrl=@F_ImgUrl");
97
             strSql.Append(" where F_Id=@F_Id");
100
             strSql.Append(" where F_Id=@F_Id");
98
             SqlParameter[] parameters = {
101
             SqlParameter[] parameters = {
99
                     new SqlParameter("@F_OpenId", SqlDbType.VarChar,100),
102
                     new SqlParameter("@F_OpenId", SqlDbType.VarChar,100),
100
                     new SqlParameter("@F_CreateTime", SqlDbType.DateTime),
103
                     new SqlParameter("@F_CreateTime", SqlDbType.DateTime),
101
                     new SqlParameter("@F_Type", SqlDbType.Int,4),
104
                     new SqlParameter("@F_Type", SqlDbType.Int,4),
102
                     new SqlParameter("@F_Password", SqlDbType.VarChar,50),
105
                     new SqlParameter("@F_Password", SqlDbType.VarChar,50),
103
-                    new SqlParameter("@F_Name", SqlDbType.VarChar,50),
106
+                    new SqlParameter("@F_Name", SqlDbType.NVarChar,500),
104
                     new SqlParameter("@F_Telphone", SqlDbType.VarChar,50),
107
                     new SqlParameter("@F_Telphone", SqlDbType.VarChar,50),
105
                     new SqlParameter("@F_Sex", SqlDbType.Int,4),
108
                     new SqlParameter("@F_Sex", SqlDbType.Int,4),
106
                     new SqlParameter("@F_Province", SqlDbType.VarChar,50),
109
                     new SqlParameter("@F_Province", SqlDbType.VarChar,50),
107
                     new SqlParameter("@F_City", SqlDbType.VarChar,50),
110
                     new SqlParameter("@F_City", SqlDbType.VarChar,50),
108
                     new SqlParameter("@F_County", SqlDbType.VarChar,50),
111
                     new SqlParameter("@F_County", SqlDbType.VarChar,50),
109
                     new SqlParameter("@F_Address", SqlDbType.VarChar,500),
112
                     new SqlParameter("@F_Address", SqlDbType.VarChar,500),
113
+                    new SqlParameter("@F_ImgUrl", SqlDbType.VarChar,500),
110
                     new SqlParameter("@F_Id", SqlDbType.BigInt,8)};
114
                     new SqlParameter("@F_Id", SqlDbType.BigInt,8)};
111
             parameters[0].Value = model.F_OpenId;
115
             parameters[0].Value = model.F_OpenId;
112
             parameters[1].Value = model.F_CreateTime;
116
             parameters[1].Value = model.F_CreateTime;
119
             parameters[8].Value = model.F_City;
123
             parameters[8].Value = model.F_City;
120
             parameters[9].Value = model.F_County;
124
             parameters[9].Value = model.F_County;
121
             parameters[10].Value = model.F_Address;
125
             parameters[10].Value = model.F_Address;
122
-            parameters[11].Value = model.F_Id;
126
+            parameters[11].Value = model.F_ImgUrl;
127
+            parameters[12].Value = model.F_Id;
123
 
128
 
124
             int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
129
             int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
125
             if (rows > 0)
130
             if (rows > 0)
179
         /// <summary>
184
         /// <summary>
180
         /// 得到一个对象实体
185
         /// 得到一个对象实体
181
         /// </summary>
186
         /// </summary>
182
-        public CallCenterApi.Model.T_Sys_Users GetModel(long F_Id)
187
+        public CallCenterApi.Model.T_Sys_Users GetModel(string usercode)
183
         {
188
         {
184
 
189
 
185
             StringBuilder strSql = new StringBuilder();
190
             StringBuilder strSql = new StringBuilder();
186
-            strSql.Append("select  top 1 F_Id,F_OpenId,F_CreateTime,F_Type,F_Password,F_Name,F_Telphone,F_Sex,F_Province,F_City,F_County,F_Address from T_Sys_Users ");
187
-            strSql.Append(" where F_Id=@F_Id");
191
+            strSql.Append("select  top 1 F_Id,F_OpenId,F_CreateTime,F_Type,F_Password,F_Name,F_Telphone,F_Sex,F_Province,F_City,F_County,F_Address,F_ImgUrl from T_Sys_Users ");
192
+            strSql.Append(" where F_OpenId=@F_OpenId");
188
             SqlParameter[] parameters = {
193
             SqlParameter[] parameters = {
189
-                    new SqlParameter("@F_Id", SqlDbType.BigInt)
194
+                    new SqlParameter("@F_OpenId", SqlDbType.VarChar,100)
190
             };
195
             };
191
-            parameters[0].Value = F_Id;
196
+            parameters[0].Value = usercode;
192
 
197
 
193
             CallCenterApi.Model.T_Sys_Users model = new CallCenterApi.Model.T_Sys_Users();
198
             CallCenterApi.Model.T_Sys_Users model = new CallCenterApi.Model.T_Sys_Users();
194
             DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);
199
             DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);
205
         /// <summary>
210
         /// <summary>
206
         /// 得到一个对象实体
211
         /// 得到一个对象实体
207
         /// </summary>
212
         /// </summary>
208
-        public CallCenterApi.Model.T_Sys_Users GetModel(string openid)
213
+        public CallCenterApi.Model.T_Sys_Users GetModel(long F_Id)
209
         {
214
         {
210
 
215
 
211
             StringBuilder strSql = new StringBuilder();
216
             StringBuilder strSql = new StringBuilder();
212
-            strSql.Append("select  top 1 F_Id,F_OpenId,F_CreateTime,F_Type,F_Password,F_Name,F_Telphone,F_Sex,F_Province,F_City,F_County,F_Address from T_Sys_Users ");
213
-            strSql.Append(" where F_OpenId=@F_OpenId");
217
+            strSql.Append("select  top 1 F_Id,F_OpenId,F_CreateTime,F_Type,F_Password,F_Name,F_Telphone,F_Sex,F_Province,F_City,F_County,F_Address,F_ImgUrl from T_Sys_Users ");
218
+            strSql.Append(" where F_Id=@F_Id");
214
             SqlParameter[] parameters = {
219
             SqlParameter[] parameters = {
215
-                    new SqlParameter("@F_OpenId", SqlDbType.VarChar,100)
220
+                    new SqlParameter("@F_Id", SqlDbType.BigInt)
216
             };
221
             };
217
-            parameters[0].Value = openid;
222
+            parameters[0].Value = F_Id;
218
 
223
 
219
             CallCenterApi.Model.T_Sys_Users model = new CallCenterApi.Model.T_Sys_Users();
224
             CallCenterApi.Model.T_Sys_Users model = new CallCenterApi.Model.T_Sys_Users();
220
             DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);
225
             DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);
285
                 {
290
                 {
286
                     model.F_Address = row["F_Address"].ToString();
291
                     model.F_Address = row["F_Address"].ToString();
287
                 }
292
                 }
293
+                if (row["F_ImgUrl"] != null)
294
+                {
295
+                    model.F_ImgUrl = row["F_ImgUrl"].ToString();
296
+                }
288
             }
297
             }
289
             return model;
298
             return model;
290
         }
299
         }
295
         public DataSet GetList(string strWhere)
304
         public DataSet GetList(string strWhere)
296
         {
305
         {
297
             StringBuilder strSql = new StringBuilder();
306
             StringBuilder strSql = new StringBuilder();
298
-            strSql.Append("select F_Id,F_OpenId,F_CreateTime,F_Type,F_Password,F_Name,F_Telphone,F_Sex,F_Province,F_City,F_County,F_Address ");
307
+            strSql.Append("select F_Id,F_OpenId,F_CreateTime,F_Type,F_Password,F_Name,F_Telphone,F_Sex,F_Province,F_City,F_County,F_Address,F_ImgUrl ");
299
             strSql.Append(" FROM T_Sys_Users ");
308
             strSql.Append(" FROM T_Sys_Users ");
300
             if (strWhere.Trim() != "")
309
             if (strWhere.Trim() != "")
301
             {
310
             {
315
             {
324
             {
316
                 strSql.Append(" top " + Top.ToString());
325
                 strSql.Append(" top " + Top.ToString());
317
             }
326
             }
318
-            strSql.Append(" F_Id,F_OpenId,F_CreateTime,F_Type,F_Password,F_Name,F_Telphone,F_Sex,F_Province,F_City,F_County,F_Address ");
327
+            strSql.Append(" F_Id,F_OpenId,F_CreateTime,F_Type,F_Password,F_Name,F_Telphone,F_Sex,F_Province,F_City,F_County,F_Address,F_ImgUrl ");
319
             strSql.Append(" FROM T_Sys_Users ");
328
             strSql.Append(" FROM T_Sys_Users ");
320
             if (strWhere.Trim() != "")
329
             if (strWhere.Trim() != "")
321
             {
330
             {

+ 37 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/weixin/WxLoginController.cs

81
             return Success("成功", wld.OpenId);
81
             return Success("成功", wld.OpenId);
82
         }
82
         }
83
 
83
 
84
+        /// <summary>
85
+        /// 获取微信用户信息
86
+        /// </summary>
87
+        /// <param name="login"></param>
88
+        /// <returns></returns>
89
+        public ActionResult GetUserInfo(WxLoginDto wld)
90
+        {
91
+            wld.RedirectUrl = RequestString.GetUrlReferrer();
92
+
93
+            if (string.IsNullOrEmpty(wld.OpenId))
94
+            {
95
+                var temp = WxHelper.GetUserInfo(wld);
96
+                if (string.IsNullOrWhiteSpace(temp.OpenId))
97
+                {
98
+                    return Redirect("请求", temp.RedirectUrl);
99
+                }
100
+                wld.OpenId = temp.OpenId;
101
+                wld.UserInfo = temp.UserInfo;
102
+            }
103
+            var model = new BLL.T_Sys_Users().GetModel(wld.OpenId);
104
+            if (model == null)
105
+            {
106
+                model = new Model.T_Sys_Users();
107
+                model.F_OpenId = wld.OpenId;
108
+                model.F_Name = wld.UserInfo.nickname;
109
+                model.F_ImgUrl = wld.UserInfo.headimgurl;
110
+                model.F_Province = wld.UserInfo.province;
111
+                model.F_City = wld.UserInfo.city;
112
+                model.F_County = wld.UserInfo.country;
113
+                model.F_Type = 1;
114
+                model.F_CreateTime = DateTime.Now;
115
+                new BLL.T_Sys_Users().Add(model);
116
+            }
117
+
118
+            return Success("成功", wld.UserInfo);
119
+        }
120
+
84
         #region 工单相关
121
         #region 工单相关
85
         /// <summary>
122
         /// <summary>
86
         ///  获取工单列表
123
         ///  获取工单列表

+ 9 - 0
CallCenterApi/CallCenterApi.Model/T_Sys_Users.cs

22
         private string _f_city;
22
         private string _f_city;
23
         private string _f_county;
23
         private string _f_county;
24
         private string _f_address;
24
         private string _f_address;
25
+        private string _f_imgurl;
25
         /// <summary>
26
         /// <summary>
26
         /// 
27
         /// 
27
         /// </summary>
28
         /// </summary>
118
             set { _f_address = value; }
119
             set { _f_address = value; }
119
             get { return _f_address; }
120
             get { return _f_address; }
120
         }
121
         }
122
+        /// <summary>
123
+        /// 
124
+        /// </summary>
125
+        public string F_ImgUrl
126
+        {
127
+            set { _f_imgurl = value; }
128
+            get { return _f_imgurl; }
129
+        }
121
         #endregion Model
130
         #endregion Model
122
 
131
 
123
     }
132
     }