public void WeChatGetAccessToken() { var client1 = new WeChatApiClient(); var token1 = client1.AccessToken; var client2 = new WeChatApiClient(); var token2 = client2.AccessToken; Assert.AreSame(token1, token2); }
private static void SyncUserWeChatInfo() { IRepository repo = new Repository(); // 7天来未更新的微信会员 或 微信昵称为空的会员 var usersWeChat = repo.Query<UserWeChat>(x => x.LastAuthorizeDate < DateTime.Now.AddDays(-7)); var users = repo.Query<User>(x => x.WeChatOpenID != "") .FindAll(x => string.IsNullOrEmpty(x.WeChatNickName) || usersWeChat.Exists(y => y.ID == x.ID)); if (users.Count > 0 && ConfigGlobal_Arsenal.WeChatActive) { // 根据users,生成输入参数 //{"user_list": [ // { "openid": "otvxTs4dckWG7imySrJd6jSi0CWE", "lang": "zh-CN"}, // { "openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg", "lang": "zh-CN" } // ] //} var mapper = UserWeChatRequestDto.ConfigMapper().CreateMapper(); var userList = new { user_list = mapper.Map<IEnumerable<UserWeChatRequestDto>>(users.DistinctBy(x => x.WeChatOpenID)).ToList() }; var openIds = JsonConvert.SerializeObject(userList); var client = new WeChatApiClient(); var result = client.BatchGetUserInfo(openIds); var json = JToken.Parse(result); if (!string.IsNullOrEmpty(json["user_info_list"].ToString())) { var list = JsonConvert.DeserializeObject<List<UserWeChatResponseDto>>(json["user_info_list"].ToString()); if (list.Count > 0) { foreach (var u in users) { var uResp = list.Find(x => x.openid == u.WeChatOpenID); var uWeChat = repo.Single<UserWeChat>(u.ID); if (uResp != null) { u.WeChatOpenID = uResp.openid; u.WeChatNickName = uResp.nickname; repo.Update(u); if (uWeChat != null) { uWeChat.Gender = uResp.sex; uWeChat.LastAuthorizeDate = DateTime.Now; uWeChat.City = uResp.city ?? string.Empty; uWeChat.Province = uResp.province ?? string.Empty; uWeChat.Country = uResp.country ?? string.Empty; uWeChat.HeadImgUrl = uResp.headimgurl ?? string.Empty; uWeChat.UnionID = uResp.unionid ?? string.Empty; repo.Update(uWeChat); } else { var instance = new UserWeChat { ID = u.ID, UserName = u.UserName, LastAuthorizeDate = DateTime.Now, AccessToken = string.Empty, AccessTokenExpiredDate = DateTime.Now, RefreshToken = string.Empty, RefreshTokenExpiredDate = DateTime.Now, Gender = uResp.sex, Province = uResp.province ?? string.Empty, City = uResp.city ?? string.Empty, Country = uResp.country ?? string.Empty, HeadImgUrl = uResp.headimgurl ?? string.Empty, Privilege = string.Empty, UnionID = uResp.unionid ?? string.Empty }; repo.Insert(instance); } } } } } } }