ComplianceServer/oldcode/WEB/Controllers/Soft/SoftRegAndOrderLinkControll...

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}&param={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;
}
}
}