/// <summary>
/// 小程序秘钥
/// </summary>
/// <param name="wxLogin"></param>
/// <returns></returns>
[AllowUser]
[HttpPost]
public ResultResponse<bool> GetWxSessionKey([FromBody] WxLogin wxLogin)
{
ResultResponse<bool> ret = new ResultResponse<bool>();
if (string.IsNullOrWhiteSpace(wxLogin.sessionKey))
{
ret.Flag = false;
ret.Result = false;
ret.ErrorMsg = "登录失败";
return ret;
}
var session = WxHelper.Code2Session(wxLogin.sessionKey);
Session["wx_mini_session_key"] = session.session_key;
ret.Result = true;
ret.Flag = true;
return ret;
}
//登录、注册(一键授权)-UnionId
[AllowUser]
[HttpPost]
public ResultResponse<int> WxLoginUnionId([FromBody] WxLogin wxLogin)
{
ResultResponse<int> ret = new ResultResponse<int>();
SysUser user = null;
wxLogin.sessionKey = Session["wx_mini_session_key"] as string;
if (string.IsNullOrWhiteSpace(wxLogin.sessionKey)
|| string.IsNullOrWhiteSpace(wxLogin.iv)
|| string.IsNullOrWhiteSpace(wxLogin.encryptedData))
{
ret.Flag = false;
ret.ErrorMsg = "登录失败";
return ret;
}
var unionId = WxHelper.GetUnionIdYjsq(wxLogin.sessionKey, wxLogin.iv, wxLogin.encryptedData);
var userInfo = WxHelper.wxUserInfo(wxLogin.sessionKey, wxLogin.iv, wxLogin.encryptedData);
var session = WxHelper.GetAccessToken(wxLogin.sessionKey);
if (session == null || string.IsNullOrWhiteSpace(unionId))
{
ret.Result = 0;
ret.Flag = false;
ret.ErrorMsg = "登录失败";
return ret;
}
user = UserBll.GetUserByWxUnionId(unionId, 0);
if (user != null)
{
user.IsPerfectInfo = true;
LoginUser = new Account()
{
id = user.Id,
name = user.Name,
userName = user.Name
};
user.AvatarUrl = user.AvatarUrl == null ? null : ConfigurationManager.AppSettings["WebSiteUrl"] + user.AvatarUrl;
ret.Flag = true;
ret.ErrorMsg = "OK";
ret.Result = user.Id;
return ret;
}
else
{
SysUser user1 = new SysUser();
//注册
user1.Name = Convert.ToString(userInfo["nickName"]);
var fileName = "_" + DateTime.Now.ToString("yyyyMMddHHssmmfff");
var path = "/File/HeadImage/";
var imgPath = FileHelper.SaveImageFromWeb(Convert.ToString(userInfo["avatarUrl"]), HttpContext.Current.Server.MapPath(path), fileName);
user1.AvatarUrl = path + imgPath;
user1.Password = SecurityHelper.Md5("111111Y");
user1.Phone = "1";
user1.IsPerfectInfo = false;
user1.WxUnionId = unionId;
var result = UserBll.Register(user1);
if (!result)
{
ret.Result = 0;
ret.Flag = false;
return ret;
}
else
{
user = UserBll.GetUserByWxUnionId(unionId, 0);
LoginUser = new Account()
{
id = user.Id,
name = user.Name,
pic = user.AvatarUrl,
userName = user.Name
};
OperateLogBll.AddOperateLog(new ComOperateLog()
{
MethodName = "Login",
Logtype = "WxLoginUnionId",
Username = LoginUser.name,
BussinessName = "UserProgramController",
Content = "用户" + LoginUser.id + "登录",
ColumnName = "",
TableName = "",
AddDate = DateTime.Now
});
}
}
ret.Result = user.Id;
ret.Flag = true;
ret.ErrorMsg = "OK";
return ret;
}