using Ninject; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Web; using System.Web.Mvc; using WX.CRM.BLL; using WX.CRM.Common; using WX.CRM.IBLL.Soft; using WX.CRM.IBLL.Util; using WX.CRM.IBLL.Wx; using WX.CRM.Model.Entity; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.Soft { public class ProductLinkController : BaseController { [Inject] public ISOFT_REGANDORDERLINK soft_RegAndOrderLink_BL { get; set; } [Inject] public IWX_SZZYSUBPRODUCT wx_SzzySubProduct_BL { get; set; } [Inject] public ICACHE_Q cache_BL { get; set; } [AuthorizeRedirect(Roles = InitRights.CONST_注册和生成购买链接)] public ActionResult Index() { var ch = userCurChannel;//当前客服部门渠道,如果空获取配置渠道 if(string.IsNullOrEmpty(ch)) { ch = cache_BL.GetValue_Parameter("QRCodeCH"); } if (string.IsNullOrEmpty(ch)) { return Redirect(Url.Action("ErrorView", "Error", new { message = "错误提示:参数错误!没有配置渠道!" })); } var where = PredicateExtensionses.True(); where = where.And(m => m.ISVALID == 1); //where = where.And(m => m.ISONLINEBUY >= ChannelMin && m.ISONLINEBUY <= ChannelMax); where = where.And(m => m.ISONLINEBUY != null); var pager = new Pager() { page = 1, rows = int.MaxValue }; var list = wx_SzzySubProduct_BL.GetList(where, m => m.SUBPRODUCTID, pager, SortOrder.Ascending); var data = new List(); var dataThree = new List(); foreach (var item in list) { var link = getBuyLink(ch, Convert.ToInt32(item.SUBPRODUCTID)); var buyLink = HttpUtility.UrlEncode(link); data.Add(new ProductLinkView(item, buyLink, link)); } foreach (var item in list) { var link = getBuyLinkThree(ch, Convert.ToInt32(item.SUBPRODUCTID)); var buyLink = HttpUtility.UrlEncode(link); dataThree.Add(new ProductLinkView(item, buyLink, link)); } ViewBag.productList = data; ViewBag.productListThree = dataThree; return View(); } public ActionResult GetQRCode(string url) { //LogHelper.Info("url:" + url); //QRCodeOperate qrCode = new QRCodeOperate(); QRCodeHelper.qrCodeScale = 8; QRCodeHelper.encode = System.Text.Encoding.UTF8; byte[] bytes = QRCodeHelper.Create(url); return File(bytes, @"image/jpeg"); } public JsonResult ShowUrl(string url) { try { return Json(new { ret = url }, JsonRequestBehavior.AllowGet); } catch (Exception ex) { LogHelper.Error(ex.ToString()); return Json(new { ret = string.Empty }, JsonRequestBehavior.AllowGet); } } public JsonResult Gen(decimal subProductId) { var subProduct = wx_SzzySubProduct_BL.Get(m => m.SUBPRODUCTID == subProductId); var channels = cache_BL.GetList_BusinessChannels(); if (subProduct != null) { var list = new List(); foreach (var channel in channels) { var link = getBuyLinkNotEid(channel.MINCHANNEL.ToString(), subProduct); list.Add(link); } return Json(new { ret = true, msg = "ok", data = list }, JsonRequestBehavior.AllowGet); } return Json(new { ret = false, msg = "err" }, JsonRequestBehavior.AllowGet); } private string getBuyLink(string ch, int subProductId) { var subProduct = wx_SzzySubProduct_BL.Get(m => m.SUBPRODUCTID == subProductId); var buyLink = string.Empty; if (subProduct != null) { //var obj = new { ch = ch, callback = subProduct.CALLBACKLINK, ext = new { eid = 26201} }; var param = "{\"ch\":\"" + ch + "\",\"callback\":\"" + subProduct.CALLBACKLINK + "\", \"ext\":{ \"eid\":" + Eid + "}}"; //var param = "{\"ch\":\"" + ch + "\",\"callback\":\"" + subProduct.CALLBACKLINK + "\"}"; //var param = obj.ToJson(); //LogHelper.Info(param); param = soft_RegAndOrderLink_BL.EncyptData(param, "upchina3"); var apiDomain = cache_BL.GetValue_Parameter(Model.Enum.Parameter.Soft_PayApiDomain); buyLink = string.Format("{0}/{1}?ch={2}&uname=¶m={3}&isWeb=true&aabcd=1", apiDomain, subProduct.BUYLINK, ch, param); } return buyLink; } private string getBuyLinkThree(string ch, int subProductId) { var subProduct = wx_SzzySubProduct_BL.Get(m => m.SUBPRODUCTID == subProductId); var buyLink = string.Empty; if (subProduct != null) { //var obj = new { ch = ch, callback = subProduct.CALLBACKLINK, ext = new { eid = 26201} }; var param = "{\"ch\":\"" + ch + "\",\"callback\":\"" + subProduct.CALLBACKLINK + "\", \"ext\":{ \"eid\":" + Eid + "}}"; //var param = "{\"ch\":\"" + ch + "\",\"callback\":\"" + subProduct.CALLBACKLINK + "\"}"; //var param = obj.ToJson(); //LogHelper.Info(param); param = soft_RegAndOrderLink_BL.EncyptData(param, "upchina3"); var apiDomain = cache_BL.GetValue_Parameter(Model.Enum.Parameter.Soft_PayApiDomainThree); buyLink = string.Format("{0}/{1}?ch={2}&uname=¶m={3}&isWeb=true&aabcd=1", apiDomain, string.IsNullOrEmpty(subProduct.BUYLINK) ? "" : subProduct.BUYLINK.Replace("unifiedpay/", ""), ch, param); } return buyLink; } private string getBuyLinkNotEid(string ch, WX_SZZYSUBPRODUCT subProduct) { //var subProduct = wx_SzzySubProduct_BL.Get(m => m.SUBPRODUCTID == subProductId); var buyLink = string.Empty; if (subProduct != null) { var param = "{\"ch\":\"" + ch + "\",\"callback\":\"" + subProduct.CALLBACKLINK + "\"}"; param = soft_RegAndOrderLink_BL.EncyptData(param, "upchina3"); var apiDomain = cache_BL.GetValue_Parameter(Model.Enum.Parameter.Soft_PayApiDomainThree); buyLink = string.Format("{0}/{1}?ch={2}&uname=¶m={3}&isWeb=true", apiDomain, string.IsNullOrEmpty(subProduct.BUYLINK) ? "" : subProduct.BUYLINK.Replace("unifiedpay/", ""), ch, param); } return buyLink; } } public class ProductLinkView { public ProductLinkView(WX_SZZYSUBPRODUCT product, string buylink, string link) { this.product = product; this.buylink = buylink; this.link = link; } public WX_SZZYSUBPRODUCT product { get; set; } public string buylink { get; set; } public string link { get; set; } } }