public ApiMessage GetCodeIndirect() { ApiMessage message = new ApiMessage(); try { this.IniRequest(); ActivityManagement activityMgr = new ActivityManagement(0); string spName = string.Empty; string openId = string.Empty; int agentId = 0; int customerId = 0; int activityId = 0; spName = request["sp"]; string url = activityMgr.GetOneRandomMarketOrderQrCodeUrl(spName, openId, agentId, customerId, activityId); }catch(KMBitException kex) { message.Message = kex.Message; message.Status = "ERROR"; } return message; }
public HttpResponseMessage GetCodeDirect() { this.IniRequest(); var resp = new HttpResponseMessage(HttpStatusCode.OK); ApiMessage message = new ApiMessage(); string openId = string.Empty; string openPublic = string.Empty; string spName = string.Empty; string signature = request["signature"]; string once= request["nonce"]; string timestamp = request["timestamp"]; string echostr = request["echostr"]; if (string.IsNullOrEmpty(signature) || string.IsNullOrEmpty(once) || string.IsNullOrEmpty(timestamp)) { logger.Info("The request was not sent from weixin"); resp.Content = new StringContent("false", System.Text.Encoding.UTF8, "text/plain"); return resp; } logger.Info(string.Format("signature:{0},nonce:{1},timestamp:{2},echostr:{3}",signature,once,timestamp,echostr)); SortedSet<string> paras = new SortedSet<string>(); paras.Add(weixinToken); paras.Add(once); paras.Add(timestamp); string strKey = ""; logger.Info(string.Format("signature posted by weixin is {0}", signature)); foreach (string v in paras) { strKey += v; } string sign = KMEncoder.SHA1_Hash(strKey); logger.Info(string.Format("signature calculated in platform is {0}",sign)); if(signature!=sign) { logger.Info("two signatures are different, The request was not sent from weixin"); resp.Content = new StringContent("false", System.Text.Encoding.UTF8, "text/plain"); return resp; } //For weixin URL verification if(!string.IsNullOrEmpty(echostr)) { resp.Content = new StringContent(echostr, System.Text.Encoding.UTF8, "text/plain"); return resp; } try { ActivityManagement activityMgr = new ActivityManagement(0); int agentId = 0; int customerId = 0; int activityId = 0; int.TryParse(request["agentId"], out agentId); int.TryParse(request["customerId"], out customerId); int.TryParse(request["activityId"], out activityId); System.IO.Stream sream = context.Request.InputStream; StreamReader sr = new StreamReader(sream); string strXML = sr.ReadToEnd(); sream.Close(); //strXML = "<xml><ToUserName><![CDATA[gh_3f1c1268428a]]></ToUserName><FromUserName><![CDATA[oNEHRsogX4seVvYK5v3S-veFUkEk]]></FromUserName><CreateTime>1446455044</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[+联通]]></Content><MsgId>6212477109514836427</MsgId></xml>"; logger.Info(string.Format("Message pushed by Weichat server:{0}", strXML)); WeiChatReceivedContentMessage weiChatMessage = WeiChatMessageUtil.ParseWeichatXML(strXML,logger); if (weiChatMessage != null) { if(weiChatMessage.Content!= null) { spName = weiChatMessage.Content.Trim(); } if(weiChatMessage.FromUserName!=null) { openId = weiChatMessage.FromUserName; } if(weiChatMessage.ToUserName!=null) { openPublic = weiChatMessage.ToUserName; } } if(string.IsNullOrEmpty(spName)) { resp.Content = new StringContent("success", System.Text.Encoding.UTF8, "text/plain"); return resp; } if (!spName.Contains("+联通") && !spName.Contains("+移动") && !spName.Contains("+电信")) { resp.Content = new StringContent("success", System.Text.Encoding.UTF8, "text/plain"); return resp; } string url = activityMgr.GetOneRandomMarketOrderQrCodeUrl(spName, openId, agentId, customerId, activityId); message.Item = url; message.Status = "OK"; message.Message = "成功获取到二维码"; logger.Info(url); } catch (KMBitException kex) { logger.Warn(kex); message.Message = kex.Message; message.Status = "ERROR"; } catch (Exception ex) { logger.Error(ex); message.Message = "未知错误"; message.Status = "ERROR"; } logger.Info(string.Format("GetOneRandomMarketOrderQrCodeUrl Status:{0}, Message:{1}",message.Status,message.Message)); string returnXml = ""; if (message.Status == "OK") { logger.Info("二维码获取成功,准备推送二维码到微信"); WeiChatNewsMessage news = new WeiChatNewsMessage(); news.ToUserName = openId; news.FromUserName = openPublic; news.MsgType = "news"; List<WeiChatArticle> articles = new List<WeiChatArticle>(); news.Articles = articles; WeiChatArticle article = new WeiChatArticle() { Description = "", Title = "将二维码保存到相册,微信->发现->扫一扫->相册,选择刚刚保存的二维码", PicUrl = message.Item.ToString(), Url = message.Item.ToString() }; articles.Add(article); returnXml = WeiChatMessageUtil.PrepareWeiChatNewsXml(news); } else { logger.Info("二维码获取失败"); WeiChatContentMessage msg = new WeiChatContentMessage() { Content = message.Message, CreateTime = 0, FromUserName = openPublic, MsgType = "text", ToUserName = openId }; returnXml = WeiChatMessageUtil.PrepareWeiChatXml(msg); } //logger.Info(returnXml); resp.Content = new StringContent(returnXml, System.Text.Encoding.UTF8, "text/plain"); return resp; }
public ActionResult GetActivityCode(int activityId, int customerId) { AppSettings settings = AppSettings.GetAppSettings(); ActivityManagement activityMgr = new ActivityManagement(User.Identity.GetUserId<int>()); try { string webroot = settings.WebURL; string codePath = activityMgr.GenerateActivityQRCode(User.Identity.GetUserId<int>(), customerId, activityId); //string fullCodeUrl = webroot + "/QRCode/" + codePath; ViewBag.CodePath = settings.QRFolder+"/" + codePath; return Redirect(webroot+ "/"+settings.QRFolder+"/" + codePath); //return View(); } catch (KMBitException ex) { ViewBag.Message = ex.Message; return View("Error"); } }
public ActionResult DoSaoMa() { string p = Request["p"]; string number = Request["mobile_number"]; string spName = Request["SPName"]; string province= Request["Province"]; string city = Request["City"]; if (string.IsNullOrEmpty(p)) { ViewBag.Message = "参数错误,请正确扫码,输入手机号码点充值"; } else { int agentId = 0; int customerId = 0; int activityId = 0; int activityOrderId = 0; string parameters = KMEncoder.Decode(p); if(!string.IsNullOrEmpty(parameters)) { string signature = string.Empty; SortedDictionary<string, string> pvs = parseParameters(parameters,out signature); if (string.IsNullOrEmpty(signature)) { ViewBag.Message = "URL参数不正确,请重新扫码"; return View("SaoMa"); } System.Text.StringBuilder pBuilder = new System.Text.StringBuilder(); if(pvs.Count>0) { int count = 1; foreach(KeyValuePair<string,string> pair in pvs) { pBuilder.Append(pair.Key); pBuilder.Append("="); pBuilder.Append(pair.Value); if(count<pvs.Count) { pBuilder.Append("&"); } count++; switch (pair.Key) { case "agentId": int.TryParse(pair.Value,out agentId); break; case "customerId": int.TryParse(pair.Value, out customerId); break; case "activityId": int.TryParse(pair.Value, out activityId); break; case "activityOrderId": int.TryParse(pair.Value, out activityOrderId); break; } } CustomerManagement customerMgr = new CustomerManagement(0); int total; List<BCustomer> customers = customerMgr.FindCustomers(0, customerId, out total); if(total<=0 || total>1) { ViewBag.Message = "URL参数不正确,请重新扫码"; return View("SaoMa"); } pBuilder.Append("&key="); pBuilder.Append(customers[0].Token); string sign = UrlSignUtil.GetMD5(pBuilder.ToString()); if(sign!=signature) { ViewBag.Message = "URL参数不正确,请重新扫码"; return View("SaoMa"); } ActivityManagement activityMgr = new ActivityManagement(0); BMarketOrderCharge order = new BMarketOrderCharge() { ActivityId = activityId, ActivityOrderId = activityOrderId, AgentId = agentId, CustomerId = customerId, City = city, Province = province, OpenId = "", Phone = number, SPName = spName }; KMBit.BL.Charge.ChargeResult result = activityMgr.MarketingCharge(order); ViewBag.Message = result.Message; //if(result.Status == ChargeStatus.FAILED) //{ // ViewBag.Paras = pvs; // //paras.Add("p", p); //} } }else { ViewBag.Message = "不能重复扫码,或者修改扫码后的URL地址"; } } return View("SaoMa"); }
public ActionResult ActivityOrders(int activityId, int customerId) { ActivityManagement activityMgr = new ActivityManagement(User.Identity.GetUserId<int>()); try { List<BActivityOrder> mOrders = activityMgr.FindMarketingOrders(User.Identity.GetUserId<int>(), customerId,activityId,0 ,out total); PageItemsResult<BActivityOrder> result = new PageItemsResult<BActivityOrder>() { CurrentPage = 1, EnablePaging = true, Items = mOrders, PageSize = mOrders.Count, TotalRecords = mOrders.Count }; KMBit.Grids.KMGrid<BActivityOrder> grid = new Grids.KMGrid<BActivityOrder>(result); return View(grid); } catch (KMBitException ex) { ViewBag.Message = ex.Message; return View("Error"); } }
public ActionResult CreateActivityTaocan(ActivityTaocanModel model) { ActivityManagement activityMgr = null; if (ModelState.IsValid) { try { activityMgr = new ActivityManagement(User.Identity.GetUserId<int>()); Marketing_Activity_Taocan taocan = new Marketing_Activity_Taocan() { ActivityId=model.ActivityId, Price=model.Price, Quantity=model.Quantity, RouteId=model.RouteId}; activityMgr.CreateActivityTaocan(taocan); return Redirect("/Agent/CustomerAcivities?customerId="+model.CustomerId); } catch (KMBitException ex) { ViewBag.Message = ex.Message; } finally { } } List<BAgentRoute> routes = activityMgr.FindAvailableAgentRoutes(User.Identity.GetUserId<int>(), model.CustomerId, model.ActivityId); ViewBag.Routes = new SelectList((from r in routes select new { Id = r.Route.Id, Name = r.Taocan.Taocan2.Name + " - 代理价格" + (r.Taocan.Taocan.Sale_price*r.Route.Discount).ToString("0.00") + "元" }), "Id", "Name"); return View(model); }
public ActionResult ActivityTaocans(int activityId, int customerId) { ActivityManagement activityMgr = new ActivityManagement(User.Identity.GetUserId<int>()); try { List<BActivityTaocan> taocans = activityMgr.FindActivityTaocans(activityId, customerId, User.Identity.GetUserId<int>()); PageItemsResult<BActivityTaocan> result = new PageItemsResult<BActivityTaocan>() { CurrentPage=1, EnablePaging=true, Items=taocans, PageSize=taocans.Count, TotalRecords=taocans.Count }; KMBit.Grids.KMGrid<BActivityTaocan> grid = new Grids.KMGrid<BActivityTaocan>(result); return View(grid); }catch(KMBitException ex) { ViewBag.Message = ex.Message; return View("Error"); } }
public ActionResult CreateActivityTaocan(int activityId,int customerId) { ActivityManagement activityMgr = new ActivityManagement(User.Identity.GetUserId<int>()); List<BActivity> activities = activityMgr.FindActivities(activityId, User.Identity.GetUserId<int>(), 0, out total); if(activities==null || activities.Count==0) { ViewBag.Message = string.Format("编号为{0}的活动不是你的客户的活动",activityId); return View("Error"); } List<BAgentRoute> routes = activityMgr.FindAvailableAgentRoutes(User.Identity.GetUserId<int>(),customerId, activityId); ViewBag.Routes = new SelectList((from r in routes select new { Id = r.Route.Id, Name = r.Taocan.Taocan2.Name + " - 代理价格" + (r.Taocan.Taocan.Sale_price*r.Route.Discount).ToString("0.00") + "元" }), "Id", "Name"); ActivityTaocanModel model = new ActivityTaocanModel() { ActivityId= activityId,CustomerId= customerId }; return View(model); }
public ActionResult EditCustomerActivity(int activityId, int customerId) { ActivityManagement activityMgr = new ActivityManagement(User.Identity.GetUserId<int>()); List<BActivity> activities = activityMgr.FindActivities(activityId, User.Identity.GetUserId<int>(), customerId, out total, true, 1, 1); CustomerActivityModel model = new CustomerActivityModel(); if (activities.Count == 1) { BActivity activity = activities[0]; model.Id = activity.Activity.Id; model.CustomerId = customerId; model.Description = activity.Activity.Description; model.Enable = activity.Activity.Enabled; model.ExpiredTime = activity.Activity.ExpiredTime > 0 ? DateTimeUtil.ConvertToDateTime(activity.Activity.ExpiredTime).ToString("yyyy-M-dd") : ""; model.Name = activity.Activity.Name; model.ScanType = activity.Activity.ScanType; model.StartTime = activity.Activity.ExpiredTime > 0 ? DateTimeUtil.ConvertToDateTime(activity.Activity.StartedTime).ToString("yyyy-M-dd") : ""; } else { ViewBag.Message = "不能修改不属于自己客户的活动"; return View("Error"); } List<DictionaryTemplate> scanTypes = StaticDictionary.GetScanTypeList(); ViewBag.ScanTypes = new SelectList(from st in scanTypes select new { Id = st.Id, Name = st.Value }, "Id", "Name"); return View("CreateCustomerActivity",model); }
public ActionResult CreateCustomerActivity(CustomerActivityModel model) { if(ModelState.IsValid) { ActivityManagement activityMgr = new ActivityManagement(User.Identity.GetUserId<int>()); Marketing_Activities activity = new Marketing_Activities() { AgentId = User.Identity.GetUserId<int>(), CreatedTime = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now), CustomerId = model.CustomerId, Description = model.Description, ScanType = model.ScanType, Enabled = model.Enable, Name = model.Name, Id=model.Id }; if (model.Id==0) { activity = activityMgr.CreateNewActivity(activity); if (activity.Id > 0) { return Redirect("/Agent/CustomerAcivities?customerId=" + model.CustomerId); } }else { activityMgr.UpdateActivity(activity); return Redirect("/Agent/CustomerAcivities?customerId=" + model.CustomerId); } } List<DictionaryTemplate> scanTypes = StaticDictionary.GetScanTypeList(); ViewBag.ScanTypes = new SelectList(from st in scanTypes select new { Id = st.Id, Name = st.Value }, "Id", "Name"); return View(model); }
public ActionResult CustomerAcivities(int customerId) { CustomerManagement customerMgr = new CustomerManagement(User.Identity.GetUserId<int>()); List<BCustomer> customers = customerMgr.FindCustomers(User.Identity.GetUserId<int>(), customerId, out total); if(customers.Count==0) { ViewBag.Message = string.Format("编号为:{0}的客户不是你的客户", customerId); return View("Error"); } BCustomer customer = customers[0]; ActivityManagement activityMgr = new ActivityManagement(customerMgr.CurrentLoginUser); int page = 1; int pageSize = 20; int.TryParse(Request["page"], out page); page = page > 0 ? page : 1; List<BActivity> activities = activityMgr.FindActivities(0,User.Identity.GetUserId<int>(), customerId, out total, true, page, pageSize); PageItemsResult<BActivity> result = new PageItemsResult<BActivity>() { CurrentPage = page, EnablePaging = true, Items = activities, PageSize = pageSize, TotalRecords = total }; KMBit.Grids.KMGrid<BActivity> grid = new Grids.KMGrid<BActivity>(result); ViewBag.Customer = customer; return View("CustomerAcivities",grid); }