public void SaveJson(wxUserInfoModel model) { try { TRF_WeChatUserInfo entity = new TRF_WeChatUserInfo(); entity.openid = model.user_openid; entity.nickname = model.user_name; idal.Add(entity); idal.Save(); } catch (Exception ex) { Logger.Error(ex); } }
/// <summary> /// 保存用户微信信息 /// </summary> /// <param name="model"></param> public void Save(wxUserInfoModel model) { try { TRF_WeChatUserInfo entity = new TRF_WeChatUserInfo(); entity.openid = model.Openid; entity.nickname = model.Nickname; entity.province = model.Province; entity.city = model.City; entity.country = model.Country; entity.headimgurl = model.Headimgurl; //entity.ID = 1; entity.sex = model.Sex; idal.Add(entity); idal.Save(); } catch (Exception ex) { Logger.Error(string.Format("保存用户信息异常,异常信息:{0}", ex.ToString())); } }
/// <summary> /// 红包-获取微信用户信息 /// </summary> /// <param name="code">微信端code</param> /// <returns></returns> public wxUserInfoModel GetWxUserInfo(string code) { wxUserInfoModel model = null; try { HttpHelper httpHelper = new HttpHelper(); //获取tokenjson string tokenJson = httpHelper.HttpGet(String.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", _appId, _appsecret, code), ""); JObject tokenJsonObj = null; if (!string.IsNullOrWhiteSpace(tokenJson)) { tokenJsonObj = JObject.Parse(tokenJson); if (tokenJsonObj != null) { string userInfoJson = ""; //获取用户信息json userInfoJson = httpHelper.HttpGet(string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", tokenJsonObj["access_token"], tokenJsonObj["openid"]), ""); if (!string.IsNullOrWhiteSpace(userInfoJson)) { //json反序列化为实体 model = JsonConvert.DeserializeObject <wxUserInfoModel>(userInfoJson); if (model.Openid == null) { model = null; } } } } } catch (Exception ex) { Common.Helper.Logger.Info(string.Format("BaseContrller,获取用户微信信息异常,异常信息:{0}", ex.ToString())); } return(model); }
/// <summary> /// 更新用户信息 /// </summary> /// <param name="model"></param> public void updateUserInfo(wxUserInfoModel model) { try { TRF_WeChatUserInfo entity = new TRF_WeChatUserInfo(); Expression <Func <TRF_WeChatUserInfo, bool> > exp = a => 1 == 1; exp = a => a.openid == model.Openid; Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("nickname", model.Nickname); dic.Add("province", model.Province); dic.Add("city", model.City); dic.Add("country", model.Country); dic.Add("headimgurl", model.Headimgurl); dic.Add("sex", model.Sex); idal.update(exp, dic); idal.Save(); } catch (Exception ex) { Logger.Error(ex.ToString()); } }
/// <summary> /// 发现金 /// </summary> /// <returns></returns> public ActionResult GiveMoney(RequestModel request) { ActionResult empty = new EmptyResult(); try { //扫码计数-所有 scanCountDi.getBll().CountByNameAndId(request.activityId, request.activityName); #region 数据库日志记录 公共部分 TRP_ClientLog entity = new TRP_ClientLog(); entity.CreateTime = DateTime.Now; entity.DeleteMark = false; entity.Enable = true; entity.PageUrl = HttpContext.Request.Url.AbsoluteUri ?? "http://www.chinazhihuiping.com/wxredpackets/ReGaoPark/GiveMoney"; entity.IPAddress = HttpContext.Request.UserHostAddress ?? "127.0.0.1"; entity.ActivityId = Convert.ToInt32(request.activityId); #endregion //获取微信用户信息 wxUserInfoModel wxUser = GetWxUserInfo(request.code); if (wxUser == null) { Response.Redirect(request.url + "&flag=1"); return(empty); } //微信用户openid string openid = wxUser.Openid; //保存微信信息 if (!isExistOpenId(wxUser.Openid)) { //保存用户微信信息 saveUserInfo(wxUser); } TRP_AwardReceive receivedModel = null; #region 今天已参加活动 if (isAttendToday(request.activityId, wxUser.Openid)) { //判断奖品是否已领 receivedModel = awardDi.getBll().hadTakeAward(wxUser.Openid, request.activityId); #region 奖品已核销 //奖品已领 if (receivedModel == null) { Response.Redirect(request.url + "&flag=1"); return(empty); } #endregion #region 奖品还未核销 //奖品还未领取 else { //获取奖品ID int string awardId = receivedModel.AwardDetailId.ToString(); //获取奖品详情 TRP_AwardDetail detailModel = detailDi.getBll().GetEntityById(awardId); //奖品名称 string awardsName = ""; //加密奖品id string ecodeAwardId = DESEncrypt.Encrypt(awardId, _key); if (detailModel != null) { //奖品名称 awardsName = detailModel.AwardName; } else { Response.Redirect(request.url + "&flag=1"); return(empty); } //奖品类型 if (!string.IsNullOrWhiteSpace(awardsName)) { GiveCash(awardsName, wxUser.Openid, request); } else { Response.Redirect(request.url + "&flag=1"); return(empty); } entity.Description = string.Format("用户在{0}点击红包,现金红包(为重复扫码,上次未核销奖品)", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); entity.PageDesc = "实物扫码,上次未核销奖品"; entity.ActivityId = Convert.ToInt32(request.activityId); logDi.getBll().SaveLog(entity); return(View("GiveMoney")); } #endregion } #endregion #region 今天还未参加活动 则请求奖品 AwardsInfoModel awardsModel = new AwardsInfoModel(); //请求奖品 awardsModel = GetAwardsInfo(request.activityId); //奖品实体为null if (awardsModel == null) { Response.Redirect(request.url + "&flag=1"); return(empty); } //奖品实体的类型为null if (awardsModel.Class != null) { //奖品实体的类型为"" if (awardsModel.Class == "") { Response.Redirect(request.url + "&flag=1"); return(empty); } } #endregion //发钱 if (GiveCash(awardsModel.Class, openid, request)) { //保存领奖信息-测试 saveScanInfo(wxUser.Openid, awardsModel.id); saveUserAwardReceiveInfo(wxUser.Openid, awardsModel.id); return(View("GiveMoney")); } else { Response.Redirect(request.url + "&flag=1"); return(empty); } } catch (Exception ex) { Response.Redirect(request.url); Common.Helper.Logger.Info(string.Format("获取用户微信Openid,发现金异常,异常信息:{0}", ex.ToString())); return(empty); } }
/// <summary> /// 微信控制器 /// </summary> /// <param name="request"></param> /// <returns></returns> public ActionResult WXActivity(RequestModel request) { ActionResult empty = new EmptyResult(); try { #region 数据库日志记录 公共部分 TRP_ClientLog entity = new TRP_ClientLog(); entity.CreateTime = DateTime.Now; entity.DeleteMark = false; entity.Enable = true; entity.PageUrl = HttpContext.Request.Url.AbsoluteUri ?? "http://www.chinazhihuiping.com/ReGaoPark/WXActivity"; entity.IPAddress = HttpContext.Request.UserHostAddress ?? "127.0.0.1"; entity.ActivityId = Convert.ToInt32(request.activityId); #endregion #region 获取微信用户信息 昵称,头像等 wxUserInfoModel wxUser = GetWxUserInfo(request.code); if (wxUser == null) { //非卡重定向 至微信领奖页 string url = string.Format("http://www.chinazhihuiping.com/wxredpackets/ReGaoPark/WXActivity?activityId={0}&giftType={1}&giftId={2}", request.activityId, request.giftType, request.giftId); string urlencode = System.Web.HttpUtility.UrlEncode(url, System.Text.Encoding.UTF8); ResponseWXRedirect(urlencode); return(empty); } #endregion #region 今天已参加活动 if (isAttendToday(request.activityId, wxUser.Openid)) { //判断奖品是否已领 var receivedModel = awardDi.getBll().hadTakeAward(wxUser.Openid, request.activityId); #region 奖品已核销 //奖品已领 if (receivedModel == null) { Dictionary <int, string> dic = new Dictionary <int, string>(); dic.Add(1, "https://shop13299622.wxrrd.com/coupon/get_code/68929"); dic.Add(2, "https://shop13299622.wxrrd.com/coupon/get_code/68928"); dic.Add(3, "https://shop13299622.wxrrd.com/coupon/get_code/68927"); dic.Add(4, "https://shop13299622.wxrrd.com/coupon/get_code/68926"); dic.Add(5, "https://shop13299622.wxrrd.com/coupon/get_code/68925"); dic.Add(6, "https://shop13299622.wxrrd.com/coupon/get_code/68924"); //RedirectRandom(dic, 6); scanCountDi.getBll().CountByNameAndId(request.activityId, "【热高乐园红包雨】-实物已领取, 随机跳转"); return(empty); } #endregion #region 奖品还未核销 //奖品还未领取 else { //获取奖品ID int string awardId = receivedModel.AwardDetailId.ToString(); //获取奖品详情 TRP_AwardDetail detailModel = detailDi.getBll().GetEntityById(awardId); //奖品名称 string awardsName = ""; //加密奖品id string ecodeAwardId = DESEncrypt.Encrypt(awardId, _key); if (detailModel != null) { awardsName = detailModel.AwardName; } //奖品类型 if (!string.IsNullOrWhiteSpace(awardsName)) { string typeCode = ""; typeCode = "A"; ViewData["Type"] = typeCode; } ViewData["Openid"] = wxUser.Openid ?? ""; ViewData["wxName"] = wxUser.Nickname ?? ""; ViewData["AwardDetailId"] = ecodeAwardId; ViewData["AwardName"] = awardsName; ViewData["Activity"] = request.activityId ?? ""; entity.Description = string.Format("用户在{0}点击红包,二维码实物扫码(为重复扫码,上次未核销奖品)", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); entity.PageDesc = "实物扫码,上次未核销奖品"; entity.ActivityId = Convert.ToInt32(request.activityId); logDi.getBll().SaveLog(entity); return(View("Activity")); } #endregion } #endregion #region 首次参加活动 if (request.giftType != null) { string awardsType = request.giftType; string typeCode = ""; if (awardsType.Contains("笔记本")) { typeCode = "A"; } else { Common.Helper.Logger.Info(string.Format("【热高乐园红包雨】,用户获取奖品:微信用户-OpenId:{0}-领取奖品,未接收到奖品类型,发生了重定向")); Response.Redirect(string.Format("http://www.chinazhihuiping.com/wxredpackets/ReGaoPark/Activity?activityId={0}&flag={1}", request.activityId, 2)); return(empty); } ViewData["Type"] = typeCode; } //不存在微信用户 if (!isExistOpenId(wxUser.Openid)) { //保存用户微信信息 saveUserInfo(wxUser); } //保存扫码信息 saveScanInfo(wxUser.Openid, request.giftId); string awardName = request.giftType; entity.Description = string.Format("【热高乐园红包雨】,用户在{0}点击红包,二维码扫码进入实物领奖页面,奖品为{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), request.giftType); entity.PageDesc = string.Format("实物扫码,得到{0}", awardName); entity.ActivityId = Convert.ToInt32(DESEncrypt.Decrypt(request.giftId, _key)); logDi.getBll().SaveLog(entity); ViewData["Openid"] = wxUser.Openid ?? ""; ViewData["wxName"] = wxUser.Nickname ?? ""; ViewData["AwardDetailId"] = request.giftId ?? ""; ViewData["AwardName"] = request.giftType ?? ""; ViewData["Activity"] = request.activityId ?? ""; return(View("Activity")); #endregion #region 注释部分 无限制领取次数 //if (request.giftType != null) //{ // string awardsType = request.giftType; // string typeCode = ""; // if (awardsType.Contains("笔记本")) // { // typeCode = "A"; // } // else // { // Common.Helper.Logger.Info(string.Format("【热高乐园红包雨】,用户获取奖品:微信用户-OpenId:{0}-领取奖品,未接收到奖品类型,发生了重定向")); // Response.Redirect(string.Format("http://www.chinazhihuiping.com/wxredpackets/ReGaoPark/Activity?activityId={0}&flag={1}", request.activityId, 2)); // return empty; // } // ViewData["Type"] = typeCode; //} ////不存在微信用户 //if (!isExistOpenId(wxUser.Openid)) //{ // //保存用户微信信息 // saveUserInfo(wxUser); //} ////保存扫码信息 //saveScanInfo(wxUser.Openid, request.giftId); //#region 保存日志记录至数据库 //entity.Description = string.Format("【热高乐园红包雨】,用户在{0}点击红包,二维码扫码进入实物领奖页面,奖品为{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), request.giftType); //entity.PageDesc = string.Format("实物扫码,得到{0}", request.giftType); //entity.ActivityId = Convert.ToInt32(DESEncrypt.Decrypt(request.giftId, _key)); //logDi.getBll().SaveLog(entity); //#endregion //ViewData["Openid"] = wxUser.Openid ?? ""; //ViewData["wxName"] = wxUser.Nickname ?? ""; //ViewData["AwardDetailId"] = request.giftId ?? ""; //ViewData["AwardName"] = request.giftType ?? ""; //ViewData["Activity"] = request.activityId ?? ""; //return View("Activity"); #endregion } catch (Exception ex) { Common.Helper.Logger.Info(string.Format("【热高乐园红包雨】领取实物异常,异常信息:{0}", ex.ToString())); Response.Redirect(string.Format("http://www.chinazhihuiping.com/wxredpackets/ReGaoPark/Activity?activityId={0}&flag={1}", request.activityId, 2)); return(empty); } }
public ActionResult Index() { HttpHelper httpHelper = new HttpHelper(); #region 微信网页授权 TRF_WeChatUserInfo_DI weChatDi = new TRF_WeChatUserInfo_DI(); List <TRF_WeChatUserInfo> list = weChatDi.getBll().getAll(); int i = 0; foreach (TRF_WeChatUserInfo item in list) { i++; //https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET //System.Net.ServicePointManager.SecurityProtocol = //SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; string tokenJson = httpHelper.HttpGet(String.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", _appId, _appsecret), ""); JObject tokenJsonObj = null; if (!string.IsNullOrWhiteSpace(tokenJson)) { tokenJsonObj = JObject.Parse(tokenJson); } else { return(View("Error")); } string userInfoJson = ""; wxUserInfoModel model = null; if (tokenJsonObj != null) { var access_token = tokenJsonObj["access_token"]; var expires_in = tokenJsonObj["expires_in"]; var open_id = ""; open_id = item.openid; userInfoJson = httpHelper.HttpGet(string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}", access_token, open_id), ""); if (!string.IsNullOrWhiteSpace(userInfoJson)) { model = JsonConvert.DeserializeObject <wxUserInfoModel>(userInfoJson); } if (model != null) { weChatDi.getBll().updateUserInfo(model); Logger.Error("更新第1条信息" + i); } //userInfoJson = httpHelper.HttpGet(string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}", tokenJsonObj["access_token"], tokenJsonObj["expires_in"]), ""); //if (!string.IsNullOrWhiteSpace(userInfoJson)) //{ // model = JsonConvert.DeserializeObject<wxUserInfoModel>(userInfoJson); //} //else //{ // return View("Error"); //} } else { return(View()); } } #endregion return(View()); }
/// <summary> /// 保存微信用户信息 /// </summary> /// <param name="model"></param> public void saveUserInfo(wxUserInfoModel model) { TRF_WeChatUserInfo_BLL bll = weChatDi.getBll(); bll.Save(model); }
/// <summary> /// 微信控制器 /// </summary> /// <param name="request"></param> /// <returns></returns> public ActionResult WXActivity(RequestModel request) { ActionResult empty = new EmptyResult(); try { #region 数据库日志记录 公共部分 TRP_ClientLog entity = new TRP_ClientLog(); entity.CreateTime = DateTime.Now; entity.DeleteMark = false; entity.Enable = true; entity.PageUrl = HttpContext.Request.Url.AbsoluteUri ?? wx_url; entity.IPAddress = HttpContext.Request.UserHostAddress ?? "127.0.0.1"; entity.ActivityId = Convert.ToInt32(request.activityId); #endregion #region 获取微信用户信息 昵称,头像等 wxUserInfoModel wxUser = GetWxUserInfo(request.code); if (wxUser == null) { //微信用户信息未获取到 重定向至活动入口Action string url = string.Format("{0}?activityId={1}", enter_url, request.activityId); return(empty); } #endregion #region 今天已参加活动 if (isAttendToday(request.activityId, wxUser.Openid)) { //判断奖品是否已领 var receivedModel = awardDi.getBll().hadTakeAward(wxUser.Openid, request.activityId); #region 奖品已核销 //奖品已领 if (receivedModel == null) { scanCountDi.getBll().CountByNameAndId(request.activityId, str_d_activityname); return(View("HadAttend")); } #endregion #region 奖品还未核销 返回Activity视图 //奖品还未领取 else { //获取奖品ID int string awardId = receivedModel.AwardDetailId.ToString(); //获取奖品详情 TRP_AwardDetail detailModel = detailDi.getBll().GetEntityById(awardId); //奖品名称 string awardsName = ""; //加密奖品id string ecodeAwardId = DESEncrypt.Encrypt(awardId, _key); if (detailModel != null) { awardsName = detailModel.AwardName; } //奖品类型 if (!string.IsNullOrWhiteSpace(awardsName)) { string typeCode = ""; if (awards_code.ContainsKey(awardsName.Trim())) { typeCode = awards_code[awardsName.Trim()]; } else { return(View("Nogift")); } ViewData["Type"] = typeCode; } ViewData["Openid"] = wxUser.Openid ?? ""; ViewData["wxName"] = wxUser.Nickname ?? ""; ViewData["AwardDetailId"] = ecodeAwardId; ViewData["AwardName"] = awardsName; ViewData["Activity"] = request.activityId ?? ""; entity.Description = string.Format("用户在{0}点击红包,二维码实物扫码(为重复扫码,上次未核销奖品)", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); entity.PageDesc = "实物扫码,上次未核销奖品"; entity.ActivityId = Convert.ToInt32(request.activityId); logDi.getBll().SaveLog(entity); return(View("Activity")); } #endregion } #endregion #region 首次参加活动 else { //请求奖品 AwardsInfoModel awardsModel = GetAwardsInfo(request.activityId); //奖品的Class不为空 if (awardsModel.Class != null) { if (awardsModel.Class == "") { scanCountDi.getBll().CountByNameAndId(request.activityId, str_e_activityname); return(View("Nogift")); } else { string awardsType = awardsModel.Class; string typeCode = ""; //Common.Helper.Logger.Info("--test--"); //Common.Helper.Logger.Info(awardsModel.Class); //Common.Helper.Logger.Info(awards_code.ContainsKey(awardsModel.Class.Trim())); if (awards_code.ContainsKey(awardsModel.Class.Trim())) { //Common.Helper.Logger.Info(awards_code[awardsModel.Class.Trim()]); typeCode = awards_code[awardsModel.Class.Trim()]; } else { return(View("Nogift")); } ViewData["Type"] = typeCode; //不存在微信用户 if (!isExistOpenId(wxUser.Openid)) { //保存用户微信信息 saveUserInfo(wxUser); } //保存扫码信息 saveScanInfo(wxUser.Openid, awardsModel.id); string awardName = awardsType; entity.Description = string.Format("{0},用户在{1}点击红包,二维码扫码进入实物领奖页面,奖品为{1}", str_a_activityname, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), awardsType); entity.PageDesc = string.Format("实物扫码,得到{0}", awardName); entity.ActivityId = int.Parse(request.activityId); logDi.getBll().SaveLog(entity); ViewData["Openid"] = wxUser.Openid ?? ""; ViewData["wxName"] = wxUser.Nickname ?? ""; ViewData["AwardDetailId"] = awardsModel.id ?? ""; ViewData["AwardName"] = awardsModel.Class ?? ""; ViewData["Activity"] = request.activityId ?? ""; return(View("Activity")); } } else { scanCountDi.getBll().CountByNameAndId(request.activityId, str_f_activityname); return(View("Nogift")); } } #endregion #region 注释部分 无限制领取次数 //if (request.giftType != null) //{ // string awardsType = request.giftType; // string typeCode = ""; // if (awardsType.Contains("笔记本")) // { // typeCode = "A"; // } // else // { // Common.Helper.Logger.Info(string.Format("【热高乐园红包雨】,用户获取奖品:微信用户-OpenId:{0}-领取奖品,未接收到奖品类型,发生了重定向")); // Response.Redirect(string.Format("http://www.chinazhihuiping.com/wxredpackets/ReGaoPark/Activity?activityId={0}&flag={1}", request.activityId, 2)); // return empty; // } // ViewData["Type"] = typeCode; //} ////不存在微信用户 //if (!isExistOpenId(wxUser.Openid)) //{ // //保存用户微信信息 // saveUserInfo(wxUser); //} ////保存扫码信息 //saveScanInfo(wxUser.Openid, request.giftId); //#region 保存日志记录至数据库 //entity.Description = string.Format("【热高乐园红包雨】,用户在{0}点击红包,二维码扫码进入实物领奖页面,奖品为{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), request.giftType); //entity.PageDesc = string.Format("实物扫码,得到{0}", request.giftType); //entity.ActivityId = Convert.ToInt32(DESEncrypt.Decrypt(request.giftId, _key)); //logDi.getBll().SaveLog(entity); //#endregion //ViewData["Openid"] = wxUser.Openid ?? ""; //ViewData["wxName"] = wxUser.Nickname ?? ""; //ViewData["AwardDetailId"] = request.giftId ?? ""; //ViewData["AwardName"] = request.giftType ?? ""; //ViewData["Activity"] = request.activityId ?? ""; //return View("Activity"); #endregion } catch (Exception ex) { Common.Helper.Logger.Info(string.Format("{0}领取实物异常,异常信息:{1}", str_a_activityname, ex.ToString())); Response.Redirect(string.Format("{0}?activityId={1}&flag={2}", enter_url, request.activityId, 2)); return(empty); } }
/// <summary> /// 微信控制器 /// </summary> /// <param name="request"></param> /// <returns></returns> public ActionResult WXActivity(RequestModel request) { ActionResult empty = new EmptyResult(); try { #region 数据库日志记录 公共部分 TRP_ClientLog entity = new TRP_ClientLog(); entity.CreateTime = DateTime.Now; entity.DeleteMark = false; entity.Enable = true; entity.PageUrl = HttpContext.Request.Url.AbsoluteUri ?? "http://www.chinazhihuiping.com/NewCity/WXActivity"; entity.IPAddress = HttpContext.Request.UserHostAddress ?? "127.0.0.1"; entity.ActivityId = Convert.ToInt32(request.activityId); #endregion #region 获取微信用户信息 昵称,头像等 wxUserInfoModel wxUser = GetWxUserInfo(request.code); if (wxUser == null) { //非卡重定向 至微信领奖页 string url = string.Format("http://www.chinazhihuiping.com/wxredpackets/NewCity/WXActivity?activityId={0}&giftType={1}&giftId={2}", request.activityId, request.giftType, request.giftId); string urlencode = System.Web.HttpUtility.UrlEncode(url, System.Text.Encoding.UTF8); ResponseWXRedirect(urlencode); return(empty); } #endregion #region 今天已参加活动 if (isAttendToday(request.activityId, wxUser.Openid)) { //判断奖品是否已领 var receivedModel = awardDi.getBll().hadTakeAward(wxUser.Openid, request.activityId); #region 奖品已核销 //奖品已领 if (receivedModel == null) { scanCountDi.getBll().CountByNameAndId(request.activityId, string.Format("{0}-实物已领取", _activityName)); return(View("HadAttend")); } #endregion #region 奖品还未核销 //奖品还未领取 else { //获取奖品ID int string awardId = receivedModel.AwardDetailId.ToString(); //获取奖品详情 TRP_AwardDetail detailModel = detailDi.getBll().GetEntityById(awardId); //奖品名称 string awardsName = ""; //加密奖品id string ecodeAwardId = DESEncrypt.Encrypt(awardId, _key); if (detailModel != null) { awardsName = detailModel.AwardName; } //奖品类型 if (!string.IsNullOrWhiteSpace(awardsName)) { string typeCode = ""; if (awardsName.Contains("周末礼金")) { typeCode = "A"; } else if (awardsName.Contains("健身月卡")) { typeCode = "B"; } else if (awardsName.Contains("圆春饼")) { typeCode = "C"; } else if (awardsName.Contains("咖啡券")) { typeCode = "D"; } else if (awardsName.Contains("公社五折")) { typeCode = "E"; } else if (awardsName.Contains("公社三折")) { typeCode = "F"; } else if (awardsName.Contains("美甲护理")) { typeCode = "G"; } else if (awardsName.Contains("美甲30元")) { typeCode = "H"; } else if (awardsName.Contains("一叶一生")) { typeCode = "I"; } else if (awardsName.Contains("含花")) { typeCode = "J"; } else if (awardsName.Contains("萌宠")) { typeCode = "K"; } else if (awardsName.Contains("南山")) { typeCode = "L"; } else if (awardsName.Contains("魅可发妆")) { typeCode = "M"; } else if (awardsName.Contains("在宥")) { typeCode = "N"; } else if (awardsName.Contains("月饼")) { typeCode = "O"; } else if (awardsName.Contains("大麦")) { typeCode = "P"; } else { return(View("Nogift")); } ViewData["Type"] = typeCode; } ViewData["Openid"] = wxUser.Openid ?? ""; ViewData["wxName"] = wxUser.Nickname ?? ""; ViewData["AwardDetailId"] = ecodeAwardId; ViewData["AwardName"] = awardsName; ViewData["Activity"] = request.activityId ?? ""; entity.Description = string.Format("用户在{0}点击红包,二维码实物扫码(为重复扫码,上次未核销奖品)", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); entity.PageDesc = "实物扫码,上次未核销奖品"; entity.ActivityId = Convert.ToInt32(request.activityId); logDi.getBll().SaveLog(entity); return(View("Activity")); } #endregion } #endregion #region 首次参加活动 if (request.giftType != null) { string awardsName = request.giftType; string typeCode = ""; if (awardsName.Contains("周末礼金")) { typeCode = "A"; } else if (awardsName.Contains("健身月卡")) { typeCode = "B"; } else if (awardsName.Contains("圆春饼")) { typeCode = "C"; } else if (awardsName.Contains("咖啡券")) { typeCode = "D"; } else if (awardsName.Contains("公社五折")) { typeCode = "E"; } else if (awardsName.Contains("公社三折")) { typeCode = "F"; } else if (awardsName.Contains("美甲护理")) { typeCode = "G"; } else if (awardsName.Contains("美甲30元")) { typeCode = "H"; } else if (awardsName.Contains("一叶一生")) { typeCode = "I"; } else if (awardsName.Contains("含花")) { typeCode = "J"; } else if (awardsName.Contains("萌宠")) { typeCode = "K"; } else if (awardsName.Contains("南山")) { typeCode = "L"; } else if (awardsName.Contains("魅可发妆")) { typeCode = "M"; } else if (awardsName.Contains("在宥")) { typeCode = "N"; } else if (awardsName.Contains("月饼")) { typeCode = "O"; } else if (awardsName.Contains("大麦")) { typeCode = "P"; } else { return(View("Nogift")); //Common.Helper.Logger.Info(string.Format("【中兴30周年红包雨】,用户获取奖品:微信用户-OpenId:{0}-领取奖品,未接收到奖品类型,发生了重定向")); //Response.Redirect(string.Format("http://www.chinazhihuiping.com/wxredpackets/ZTE/Activity?activityId={0}&flag={1}", request.activityId, 2)); //return empty; } ViewData["Type"] = typeCode; } //不存在微信用户 if (!isExistOpenId(wxUser.Openid)) { //保存用户微信信息 saveUserInfo(wxUser); } //保存扫码信息 saveScanInfo(wxUser.Openid, request.giftId); string awardName = request.giftType; entity.Description = string.Format("{0},用户在{1}点击红包,二维码扫码进入实物领奖页面,奖品为{2}", _activityName, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), request.giftType); entity.PageDesc = string.Format("实物扫码,得到{0}", awardName); entity.ActivityId = Convert.ToInt32(DESEncrypt.Decrypt(request.giftId, _key)); logDi.getBll().SaveLog(entity); ViewData["Openid"] = wxUser.Openid ?? ""; ViewData["wxName"] = wxUser.Nickname ?? ""; ViewData["AwardDetailId"] = request.giftId ?? ""; ViewData["AwardName"] = request.giftType ?? ""; ViewData["Activity"] = request.activityId ?? ""; return(View("Activity")); #endregion #region 注释部分 无限制领取次数 //if (request.giftType != null) //{ // string awardsType = request.giftType; // string typeCode = ""; // if (awardsType.Contains("笔记本")) // { // typeCode = "A"; // } // else // { // Common.Helper.Logger.Info(string.Format("【热高乐园红包雨】,用户获取奖品:微信用户-OpenId:{0}-领取奖品,未接收到奖品类型,发生了重定向")); // Response.Redirect(string.Format("http://www.chinazhihuiping.com/wxredpackets/ReGaoPark/Activity?activityId={0}&flag={1}", request.activityId, 2)); // return empty; // } // ViewData["Type"] = typeCode; //} ////不存在微信用户 //if (!isExistOpenId(wxUser.Openid)) //{ // //保存用户微信信息 // saveUserInfo(wxUser); //} ////保存扫码信息 //saveScanInfo(wxUser.Openid, request.giftId); //#region 保存日志记录至数据库 //entity.Description = string.Format("【热高乐园红包雨】,用户在{0}点击红包,二维码扫码进入实物领奖页面,奖品为{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), request.giftType); //entity.PageDesc = string.Format("实物扫码,得到{0}", request.giftType); //entity.ActivityId = Convert.ToInt32(DESEncrypt.Decrypt(request.giftId, _key)); //logDi.getBll().SaveLog(entity); //#endregion //ViewData["Openid"] = wxUser.Openid ?? ""; //ViewData["wxName"] = wxUser.Nickname ?? ""; //ViewData["AwardDetailId"] = request.giftId ?? ""; //ViewData["AwardName"] = request.giftType ?? ""; //ViewData["Activity"] = request.activityId ?? ""; //return View("Activity"); #endregion } catch (Exception ex) { Common.Helper.Logger.Info(string.Format("{0}领取实物异常,异常信息:{1}", _activityName, ex.ToString())); Response.Redirect(string.Format("http://www.chinazhihuiping.com/wxredpackets/NewCity/Activity?activityId={0}&flag={1}", request.activityId, 2)); return(empty); } }
/// <summary> /// 页面加载 /// </summary> /// <param name="request"></param> /// <returns></returns> public ActionResult Index(RequestModel request) { //return View(); //awardDi.getBll().hadTakeAward("omJcruMSo_al_vHgI7dQHdixsPEM", "44"); try { HttpHelper httpHelper = new HttpHelper(); #region 微信网页授权 string tokenJson = httpHelper.HttpGet(String.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", _appId, _appsecret, request.code), ""); JObject tokenJsonObj = null; if (!string.IsNullOrWhiteSpace(tokenJson)) { tokenJsonObj = JObject.Parse(tokenJson); } else { return(View("Error")); } string userInfoJson = ""; wxUserInfoModel model = null; if (tokenJsonObj != null) { userInfoJson = httpHelper.HttpGet(string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", tokenJsonObj["access_token"], tokenJsonObj["openid"]), ""); if (!string.IsNullOrWhiteSpace(userInfoJson)) { model = JsonConvert.DeserializeObject <wxUserInfoModel>(userInfoJson); if (model.Nickname == null || model.Sex == null) { return(View("Error")); } } else { return(View("Error")); } } else { return(View("Error")); } #endregion ActivityStatus status = new ActivityStatus(); status = ActivityStatus.Unknown; //活动id未取到 if (string.IsNullOrWhiteSpace(request.activityId)) { return(View("Error")); } TRP_ClientLog entity = new TRP_ClientLog(); entity.CreateTime = DateTime.Now; entity.DeleteMark = false; entity.Enable = true; entity.PageUrl = HttpContext.Request.Url.AbsoluteUri ?? "http://www.chinazhihuiping.com/wxredpackets"; entity.IPAddress = HttpContext.Request.UserHostAddress ?? "127.0.0.1"; //今天已参加活动 无领奖资格 直接返回视图 不请求奖品 if (isAttendToday(request.activityId, model.Openid)) { status = ActivityStatus.HasAttend; //判断奖品是否已领 如果没有领取 该奖品继续返回页面 var receivedModel = awardDi.getBll().hadTakeAward(model.Openid, request.activityId); if (receivedModel == null) { entity.Description = string.Format("用户在{0}点击红包,二维码实物扫码(已参加活动,为重复扫码)", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); entity.PageDesc = "实物扫码,已参加本次活动"; entity.ActivityId = Convert.ToInt32(request.activityId); logDi.getBll().SaveLog(entity); return(View("HasAttend")); } else { //获取奖品ID int string awardId = receivedModel.AwardDetailId.ToString(); TRP_AwardDetail detailModel = detailDi.getBll().GetEntityById(awardId); //奖品名称 string awardsName = ""; //加密奖品id string ecodeAwardId = DESEncrypt.Encrypt(awardId, _key); Common.Helper.Logger.Info("发生了重定向奖品Id加密:" + ecodeAwardId); if (detailModel != null) { //奖品名称 awardsName = detailModel.AwardName; Common.Helper.Logger.Info("发生了重定向奖品名称:" + awardsName); } if (!string.IsNullOrWhiteSpace(awardsName)) { string awardsType = awardsName; string typeCode = ""; if (awardsType.Contains("美食券")) { typeCode = "A"; } else if (awardsType.Contains("电影券")) { typeCode = "B"; } else if (awardsType.Contains("水趣多")) { typeCode = "C"; } else { typeCode = "D"; Common.Helper.Logger.Info(string.Format("重定向:微信用户-OpenId:{0}-领取奖品,未接收到奖品类型,默认发瓶水", model.Openid)); } ViewData["Type"] = typeCode; Common.Helper.Logger.Info("发生了重定向奖品type:" + typeCode); } else { ViewData["Type"] = ""; } ViewData["Openid"] = model.Openid ?? ""; ViewData["wxName"] = model.Nickname ?? ""; ViewData["AwardDetailId"] = ecodeAwardId; ViewData["AwardName"] = awardsName; ViewData["Activity"] = request.activityId ?? ""; entity.Description = string.Format("用户在{0}点击红包,二维码实物扫码(为重复扫码,上次未核销奖品)", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); entity.PageDesc = "实物扫码,上次未核销奖品"; entity.ActivityId = Convert.ToInt32(request.activityId); logDi.getBll().SaveLog(entity); return(View()); } //return View("HasAttend"); } string activityId = request.activityId; //http://localhost:89/RedPacketService/GetRedPacketServie?activityId=44 //获取奖品信息 string awards = httpHelper.HttpGet(String.Format("http://localhost:89/RedPacketService/GetRedPacketServie?activityId={0}", activityId), ""); if (string.IsNullOrWhiteSpace(awards)) { return(View("Error")); } //反序列化获取奖品信息 AwardsInfoModel awardsInfo = JsonConvert.DeserializeObject <AwardsInfoModel>(awards); if (awardsInfo != null) { if (awardsInfo.Class != null) { string awardsType = awardsInfo.Class; string typeCode = ""; if (awardsType.Contains("美食券")) { typeCode = "A"; } else if (awardsType.Contains("电影券")) { typeCode = "B"; } else if (awardsType.Contains("水趣多")) { typeCode = "C"; } else { typeCode = "D"; Common.Helper.Logger.Info(string.Format("获取奖品:微信用户-OpenId:{0}-领取奖品,未接收到奖品类型,默认发瓶水", model.Openid)); } ViewData["Type"] = typeCode; } } //首次参加本次活动 status = ActivityStatus.FirstTime; //不存在微信用户 if (!isExistOpenId(model.Openid)) { //保存用户微信信息 saveUserInfo(model); } //保存扫码信息 saveScanInfo(model.Openid, awardsInfo.id); string awardName = awardsInfo.Class; if (status == ActivityStatus.FirstTime) { entity.Description = string.Format("用户在{0}点击红包,二维码扫码进入实物领奖页面,奖品为{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), awardName); entity.PageDesc = string.Format("实物扫码,得到{0}", awardName); entity.ActivityId = Convert.ToInt32(DESEncrypt.Decrypt(awardsInfo.id, _key)); logDi.getBll().SaveLog(entity); ViewData["Openid"] = model.Openid ?? ""; ViewData["wxName"] = model.Nickname ?? ""; ViewData["AwardDetailId"] = awardsInfo.id ?? ""; ViewData["AwardName"] = awardsInfo.Class ?? ""; ViewData["Activity"] = request.activityId ?? ""; return(View()); } } catch (Exception ex) { Common.Helper.Logger.Info(string.Format("进入领奖页面异常,异常信息:{0}", ex.ToString())); } return(View("Error")); }