using Ninject; using System; using System.Collections.Generic; using System.Data.SqlClient; 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 SoftRegAndOrderLinkController : BaseController { [Inject] public ISOFT_REGANDORDERLINK soft_RegAndOrderLink_BL { get; set; } [Inject] public IWX_SZZYPRODUCT wx_SzzyProduct_BL { get; set; } [Inject] public ICACHE_Q cache_BL { get; set; } [Inject] public IWX_SZZYSUBPRODUCT wx_SzzySubProduct_BL { get; set; } ValidationErrors errors = new ValidationErrors(); [AuthorizeRedirect(Roles = InitRights.CONST_注册和生成购买链接)] public ActionResult RegAndBuy() { ViewBag.productList = getProductList(); return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_注册和生成购买链接)] public JsonResult RegAndBuy(string userName, string password, string mobile, int productId, int subProductId) { if (string.IsNullOrEmpty(userName)) { errors.Add("用户名不能为空"); return JsonHandler.InsertMessage(errors, false); } if (Utility.IsNum(userName)) { errors.Add("用户名不能用纯数字"); return JsonHandler.InsertMessage(errors, false); } if (string.IsNullOrEmpty(password)) { errors.Add("密码不能为空"); return JsonHandler.InsertMessage(errors, false); } if (string.IsNullOrEmpty(mobile)) { errors.Add("手机号不能为空"); return JsonHandler.InsertMessage(errors, false); } if (!Utility.ChekMobile(mobile)) { errors.Add("手机号格式有误!"); return JsonHandler.InsertMessage(errors, false); } var guid = Guid.NewGuid().ToString(); var ch = getEidCh(); if(string.IsNullOrEmpty(ch)) ch = cache_BL.GetValue_Parameter("QRCodeCH"); var res = soft_RegAndOrderLink_BL.RegToUP(userName, mobile, ch, "P", guid, password, Eid); if (res.ret == 0) { var json = getBuyLink(userName, ch, subProductId); return Json(json, JsonRequestBehavior.AllowGet); } else { return Json(res, JsonRequestBehavior.AllowGet); } } [HttpPost] public JsonResult BuyLink(string userName, int productId, int subProductId) { if (string.IsNullOrEmpty(userName)) { errors.Add("用户名不能为空"); return JsonHandler.InsertMessage(errors, false); } var userInfo = soft_RegAndOrderLink_BL.GetUserInfo(userName); if (userInfo == null || userInfo.ret != 0) { errors.Add("该用户名不存在,请确认用户名是否正确"); return JsonHandler.InsertMessage(errors, false); } //var regChType = Utility.GetSoftChannelType(userInfo.ch); //var configCh = getEidCh(); //var configChType = Utility.GetSoftChannelType(int.Parse(configCh)); //if(!(regChType >= configChType && regChType< (configChType+100))) //{ // errors.Add("该注册用户渠道,不能在当前坐席下单!"); // return JsonHandler.InsertMessage(errors, false); //} var ch = getEidCh(); if (string.IsNullOrEmpty(ch)) ch = cache_BL.GetValue_Parameter("QRCodeCH"); var json = getBuyLink(userName, ch, subProductId); return Json(json, JsonRequestBehavior.AllowGet); } private object getBuyLink(string userName, string ch, int subProductId) { var subProduct = wx_SzzySubProduct_BL.Get(m => m.SUBPRODUCTID == subProductId); var buyLink = ""; var json = new { ret = 0, buyLink = buyLink }; if (subProduct != null) { var uname = soft_RegAndOrderLink_BL.EncyptData(userName, "upchina3"); //var param = "{\"username\":\"" + userName + "\",\"ch\":\"" + ch + "\",\"callback\":\"" + subProduct.CALLBACKLINK + "\"}"; var param = "{\"username\":\"" + userName + "\",\"ch\":\"" + ch + "\",\"callback\":\"" + subProduct.CALLBACKLINK + "\", \"ext\":{ \"eid\":" + Eid + "}}"; 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={3}¶m={4}&isWeb=true", apiDomain, subProduct.BUYLINK, ch, uname, param); json = new { ret = 0, buyLink = buyLink }; } return json; } public JsonResult GetSubProductList(int productId, int isValid) { var list = getSubProductListByProductId(productId, isValid); return Json(list, JsonRequestBehavior.AllowGet); } public JsonResult GetSubProductPriceById(int subProductId) { var subProduct = wx_SzzySubProduct_BL.Get(m => m.SUBPRODUCTID == subProductId); if (subProduct != null) { return Json(new { result = true, price = subProduct.PRICE, days = subProduct.RIGHTPERIOD }, JsonRequestBehavior.AllowGet); } else { return Json(new { result = false, price = 0, days = 0 }, JsonRequestBehavior.AllowGet); } } private string getEidCh() { var groups = cache_BL.GetGroupList(); var ug = cache_BL.GetList_InnerUserGroup(); var depment = cache_BL.GetList_SalesDepartMent(); var uginfo = ug.Find(p => p.INNERUSERID == UserId); if (uginfo != null) { var group = groups.Find(p => p.GID == uginfo.GID); if (group != null) { var dep = depment.Find(p => p.SALEDEPTID == group.SALEDEPTID); if (dep != null) { if (dep.CHANNELDEF.HasValue) return dep.CHANNELDEF.Value.ToString(); } } } return null; } public ActionResult GetQRCode(string url) { //QRCodeOperate qrCode = new QRCodeOperate(); QRCodeHelper.qrCodeScale = 8; QRCodeHelper.encode = System.Text.Encoding.UTF8; byte[] bytes = QRCodeHelper.Create(url); return File(bytes, @"image/jpeg"); } private List getProductList() { List selectList = new List(); var where = PredicateExtensionses.True(); where = where.And(m => m.ISVALID == 1); Pager pager = new Pager() { page = 1, rows = int.MaxValue }; var list = wx_SzzyProduct_BL.GetList(where, m => m.PRODUCTID, pager, SortOrder.Ascending); foreach (var szzyProduct in list) { selectList.Add(new SelectListItem() { Text = szzyProduct.PRODUCTNAME, Value = szzyProduct.PRODUCTID.ToString() }); } return selectList; } private List getSubProductListByProductId(int productId, int isValid) { List selectList = new List(); var where = PredicateExtensionses.True(); if (productId > 0) { where = where.And(m => m.PRODUCTID == productId); } if (isValid == 1) { where = where.And(m => m.ISVALID == 1); } //var ch = getEidCh(); //var nch = Convert.ToInt32(ch); //where = where.And(m => m.ISONLINEBUY == nch); Pager pager = new Pager() { page = 1, rows = int.MaxValue }; var list = wx_SzzySubProduct_BL.GetList(where, m => m.SUBPRODUCTID, pager, SortOrder.Ascending); foreach (var szzySubProduct in list) { selectList.Add(new SelectListItem() { Text = szzySubProduct.SUBPRODUCTNAME, Value = szzySubProduct.SUBPRODUCTID.ToString() }); } return selectList; } } }