244 lines
8.9 KiB
C#
244 lines
8.9 KiB
C#
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<SelectListItem> getProductList()
|
|
{
|
|
List<SelectListItem> selectList = new List<SelectListItem>();
|
|
var where = PredicateExtensionses.True<WX_SZZYPRODUCT>();
|
|
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<SelectListItem> getSubProductListByProductId(int productId, int isValid)
|
|
{
|
|
List<SelectListItem> selectList = new List<SelectListItem>();
|
|
var where = PredicateExtensionses.True<WX_SZZYSUBPRODUCT>();
|
|
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;
|
|
}
|
|
}
|
|
} |