/// <summary> /// 执行分销商返利 /// </summary> /// <param name="order">订单实体</param> /// <returns></returns> /// <remarks>2015-09-11 杨浩 创建 2015-10-28 王耀发引用</remarks> public void ExecuteSellBusinessRebates(SoOrder order) { CrCustomer customer = GetModel(order.OrderCreatorSysNo); if (customer != null) { int indirect2Id = 0; int indirect1Id = 0; int recommendId = customer.PSysNo; string[] ids = customer.CustomerSysNos.Trim(',').Split(','); int length = ids.Length; if (length >= 3) { indirect1Id = int.Parse(ids[length - 3]); } if (length >= 4) { indirect2Id = int.Parse(ids[length - 4]); } CrSellBusinessRebatesResult sellBusinessRebatesResult = Hyt.DataAccess.CRM.ICrCustomerDao.Instance.ExecuteSellBusinessRebates(customer.PSysNo, order.OrderCreatorSysNo, indirect2Id, indirect1Id, order.SysNo, "2", order.ProductAmount); } }
/// <summary> /// 注册 /// </summary> /// <param name="model">数据模型</param> public int Register(CrCustomer model) { return(DBContext.Insert(strTableName) .Column("Account", model.Account) .Column("Password", model.Password) .Column("SerialNumber", model.SerialNumber) .Column("OpenId", model.OpenId) .Column("ReferrerSysNo", model.ReferrerSysNo) .Column("PhoneNumber", model.PhoneNumber) .Column("RealName", model.RealName) .Column("Nickname", model.Nickname) .Column("HeadImgUrl", model.HeadImgUrl) .Column("IDNumber", model.IDNumber) .Column("TeamCount", model.TeamCount) .Column("Grade", model.Grade) .Column("Level", model.Level) .Column("LevelCustomerStr", model.LevelCustomerStr) .Column("Bank", model.Bank) .Column("BankNumber", model.BankNumber) .Column("WalletAmount", model.WalletAmount) .Column("HistoryWalletAmount", model.HistoryWalletAmount) .Column("UpgradeFundAmount", model.UpgradeFundAmount) .Column("RechargeTotalAmount", model.UpgradeFundAmount) .Column("GeneralBonus", model.GeneralBonus) .Column("AreaBonus", model.AreaBonus) .Column("GlobalBonus", model.GlobalBonus) .Column("ExpiresTime", model.ExpiresTime) .Column("FollowDate", model.FollowDate) .Column("RegisterIP", model.RegisterIP) .Column("RegisterDate", model.RegisterDate) .Column("LoginCount", model.LoginCount) .Column("Status", model.Status) .Column("CreatedDate", model.CreatedDate) .ExecuteReturnLastId <int>("SysNo")); }
/// <summary> /// 更新过期时间 /// </summary> public int UpdateExpiresTime(CrCustomer model) { return(DBContext.Sql("update crcustomer set ExpiresTime=@ExpiresTime where SysNo=@SysNo") .Parameter("ExpiresTime", model.ExpiresTime) .Parameter("SysNo", model.SysNo) .Execute()); }
/// <summary> /// 续费更新钱包 /// </summary> public int UpdateWalletAmountRenew(CrCustomer model) { return(DBContext.Sql("update crcustomer set WalletAmount=WalletAmount-@WalletAmount where SysNo=@SysNo") .Parameter("WalletAmount", model.WalletAmount) .Parameter("SysNo", model.SysNo) .Execute()); }
/// <summary> /// 更新用户密码 /// </summary> /// <param name="model">会员模型</param> public int UpdatePassword(CrCustomer model) { return(DBContext.Update(strTableName) .Column("Password", model.Password) .Where("SysNo", model.SysNo) .Execute()); }
/// <summary> /// 创建票证 /// </summary> /// <param name="customer"></param> /// <param name="isPersistent"></param> /// <remarks>2013-06-26 杨浩 创建</remarks> private void Ticket(CrCustomer customer, bool isPersistent) { var now = DateTime.Now; var ticket = new FormsAuthenticationTicket( 2, customer.SysNo.ToString(), now, now.Add(FormsAuthentication.Timeout), isPersistent, customer.Account, FormsAuthentication.FormsCookiePath); var encryptedTicket = FormsAuthentication.Encrypt(ticket); var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); cookie.HttpOnly = true; if (ticket.IsPersistent) { cookie.Expires = ticket.Expiration; } cookie.Secure = FormsAuthentication.RequireSSL; cookie.Path = FormsAuthentication.FormsCookiePath; if (FormsAuthentication.CookieDomain != null) { cookie.Domain = FormsAuthentication.CookieDomain; } HttpContext.Current.Response.Cookies.Add(cookie); }
/// <summary> /// 更新用户基本资料 /// </summary> /// <param name="model">数据模型</param> /// <returns>影响行数</returns> public int UpdateBankInfo(CrCustomer model) { return(DBContext.Update(strTableName) .Column("Bank", model.Bank) .Column("BankNumber", model.BankNumber) .Where("sysNo", model.SysNo) .Execute()); }
/// <summary> /// 驳回 /// </summary> /// <param name="model"></param> /// <returns></returns> public int Reject(CrCustomer model) { return(DBContext.Sql("update crcustomer set WalletAmount=WalletAmount+@WalletAmount,UpgradeFundAmount=UpgradeFundAmount-@UpgradeFundAmount where SysNo=@SysNo") .Parameter("WalletAmount", model.WalletAmount) .Parameter("UpgradeFundAmount", model.UpgradeFundAmount) .Parameter("SysNo", model.SysNo) .Execute()); }
/// <summary> /// 更新奖金充值(基金充值[充值方式:奖金余额]、帐户续费[续费方式:奖金余额]) /// </summary> /// <returns></returns> public int UpdateBonusRecharge(CrCustomer model) { return(DBContext.Sql("update crcustomer set WalletAmount=WalletAmount-@WalletAmount,UpgradeFundAmount=UpgradeFundAmount+@UpgradeFundAmount,RechargeTotalAmount=RechargeTotalAmount+@RechargeTotalAmount where SysNo=@SysNo") .Parameter("WalletAmount", model.WalletAmount) .Parameter("UpgradeFundAmount", model.UpgradeFundAmount) .Parameter("RechargeTotalAmount", model.RechargeTotalAmount) .Parameter("SysNo", model.SysNo) .Execute()); }
/// <summary> /// 更新用户基础信息 /// </summary> /// <param name="model">用户信息</param> /// <returns>影响行数</returns> public int UpdateBaseInfo(CrCustomer model) { return(DBContext.Update(strTableName) .Column("PhoneNumber", model.PhoneNumber) .Column("RealName", model.RealName) .Column("Grade", model.Grade) .Column("Status", model.Status) .Where("SysNo", model.SysNo) .Execute()); }
/// <summary> /// 更新用户登录信息 /// </summary> public int UpdateLogin(CrCustomer model) { int rowsAffected = DBContext.Update(strTableName) .Column("LastLoginIP", model.LastLoginIP) .Column("LastLoginDate", model.LastLoginDate) .Column("LoginCount", model.LoginCount) .Where("sysNo", model.SysNo) .Execute(); return(rowsAffected); }
/// <summary> /// 注册前台会员 /// 初始化相关数据 /// </summary> /// <param name="account">帐号</param> /// <param name="password">密码(未加密的)</param> /// <param name="phoneStatus">电话验证状态</param> /// <param name="mailStatus">邮箱验证状态</param> /// <param name="source">注册来源</param> /// <returns>返回成功Or失败</returns> /// <remarks>2013-10-29 黄波 创建 /// 2016-03-15 杨云奕 修改 添加会员字段基础信息 /// </remarks> public int RegisterFrontCustomer( string account , string password , Hyt.Model.WorkflowStatus.CustomerStatus.手机状态 phoneStatus = Hyt.Model.WorkflowStatus.CustomerStatus.手机状态.已验证 , Hyt.Model.WorkflowStatus.CustomerStatus.邮箱状态 mailStatus = Hyt.Model.WorkflowStatus.CustomerStatus.邮箱状态.未验证 , Hyt.Model.WorkflowStatus.CustomerStatus.注册来源 source = Hyt.Model.WorkflowStatus.CustomerStatus.注册来源.PC网站 ) { var customer = new CrCustomer { Account = account, Password = password, // Hyt.Util.EncryptionUtil.EncryptWithMd5AndSalt(password), 余勇修改 2014-09-12 MobilePhoneNumber = account, MobilePhoneStatus = (int)phoneStatus, EmailStatus = (int)mailStatus, RegisterSource = ((int)source), LevelSysNo = 1, AvailablePoint = 0, ExperienceCoin = 0, ExperiencePoint = 0, IsExperienceCoinFixed = (int)Hyt.Model.WorkflowStatus.CustomerStatus.惠源币是否固定.固定, IsExperiencePointFixed = (int)Hyt.Model.WorkflowStatus.CustomerStatus.经验积分是否固定.固定, IsLevelFixed = (int)Hyt.Model.WorkflowStatus.CustomerStatus.等级是否固定.固定, IsReceiveEmail = (int)Hyt.Model.WorkflowStatus.CustomerStatus.是否接收邮件.是, IsReceiveShortMessage = (int)Hyt.Model.WorkflowStatus.CustomerStatus.是否接收短信.是, Status = (int)Hyt.Model.WorkflowStatus.CustomerStatus.会员状态.效, LevelPoint = 0, RegisterDate = DateTime.Now, Birthday = new DateTime(1880, 1, 1), CreatedDate = new DateTime(1880, 1, 1), LastLoginDate = new DateTime(1880, 1, 1), Subscribe = "0", IsSellBusiness = 0 }; bool result = Hyt.BLL.Order.SoOrderBo.Instance.CreateCustomer(customer, null); if (result) { try { //计算用户等级 IPointDao.Instance.UpdateCustomerLevel(customer.SysNo); } catch { } } return(result ? 1 : 0); }
/// <summary> /// 计算购物车 /// </summary> /// <param name="customer">客户对象</param> /// <param name="shoppingCart">购物车对象</param> /// <param name="cartGiftItems">赠品明细集合</param> /// <param name="promotionToPython">促销计算元数据</param> /// <returns>购物车对象</returns> /// <remarks>2013-09-03 吴文强 创建</remarks> private CrShoppingCart CalculateCart(CrCustomer customer, CrShoppingCart shoppingCart, IList <CBCrShoppingCartItem> cartGiftItems, SpPromotionToPython promotionToPython = null) { if (shoppingCart.AllPromotions == null) { return(shoppingCart); } //检查促销支持的商品 ScriptEngine engine = Python.CreateEngine(); ScriptScope scope = engine.CreateScope(); var currentPromotions = shoppingCart.AllPromotions.Where(p => p.PromotionType == (int)PromotionStatus.促销应用类型.应用到分类 || p.PromotionType == (int)PromotionStatus.促销应用类型.应用到商品 || p.PromotionType == (int)PromotionStatus.促销应用类型.团购 || p.PromotionType == (int)PromotionStatus.促销应用类型.组合套餐).OrderBy(p => p.PromotionType).ThenByDescending(p => p.Priority); foreach (var rule in currentPromotions) { ScriptSource sourceCode = engine.CreateScriptSourceFromString(rule.PromotionRule.RuleScript); scope.SetVariable("CurrSpPromotion", rule); scope.SetVariable("CurrCrCustomer", customer); scope.SetVariable("CurrAllPromotion", shoppingCart.AllPromotions); scope.SetVariable("CurrCartGiftItems", cartGiftItems); scope.SetVariable("CurrSpPromotionToPython", promotionToPython); //if (rule.PromotionType == (int)PromotionStatus.促销应用类型.团购) //{ // GsGroupShopping groupShopping= GroupShoppingBo.Instance.Get() // scope.SetVariable("CurrGroupShopping", ); //} //if (rule.PromotionType == (int)PromotionStatus.促销应用类型.组合套餐) //{ // scope.SetVariable("CurrCombo", cartGiftItems); //} sourceCode.Execute(scope); try { var pyCalculateCart = scope.GetVariable <Func <CrShoppingCart, CrShoppingCart> >("CalculateCart"); shoppingCart = pyCalculateCart(shoppingCart); } catch (Exception ex) { SysLog.Instance.Error(LogStatus.系统日志来源.后台, ex.Message, LogStatus.系统日志目标类型.促销, rule.SysNo, ex); } } return(shoppingCart); }
/// <summary> /// 创建会员 /// </summary> /// <param name="customer">会员实体</param> /// <returns>返回受影响行</returns> /// <remarks>2013-06-09 苟治国 创建</remarks> public int CreateCustomer(CrCustomer customer) { bool result = Hyt.BLL.Order.SoOrderBo.Instance.CreateCustomer(customer, null); if (result) { BLL.Log.SysLog.Instance.Info(LogStatus.系统日志来源.后台, string.Format("创建会员{0}", customer.Account), LogStatus.系统日志目标类型.客户管理, Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo); return(customer.SysNo); } else { BLL.Log.SysLog.Instance.Info(LogStatus.系统日志来源.后台, string.Format("创建会员{0}失败", customer.Account), LogStatus.系统日志目标类型.客户管理, Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo); return(0); } }
public JsonResult Profile(ProfileRequest request) { var response = new JResult() { Status = false }; var result = VHelper.ValidatorRule( new Rule_NotAllowNull(request.BankNumber, "输入银行卡!") ); if (!result.IsPass) { response.Status = false; response.Message = result.Message; return(Json(response, JsonRequestBehavior.AllowGet)); } //当前上下文 var context = CustomerContext.Context; if (context == null) { response.Message = "用户已超时、请重新登录﹗"; return(Json(response, JsonRequestBehavior.AllowGet)); } var model = new CrCustomer() { SysNo = context.SysNo, Bank = request.Bank, BankNumber = request.BankNumber, }; int row = CustomerApp.Instance.UpdateBankInfo(model); if (row > 0) { response.Status = true; response.Message = "更新用户资料成功﹗"; } else { response.Message = "更新用户资料失败﹗"; } return(Json(response, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 不注册会员直接购买,模拟一个会员 /// </summary> /// <param name="shopid">门店</param> /// <param name="userid">用户编号</param> /// <param name="isnew">是否必须新生成一个唯一账号</param> /// <returns></returns> /// <remarks>2016-05-25 杨浩 创建</remarks> public CrCustomer AutoNoMobileShopCustomer(int shopid, int userid, bool isnew = true) { string defaultAccount = "d" + userid.ToString().PadLeft(10, '0'); CrCustomer customer = new CrCustomer(); customer.Account = defaultAccount; if (isnew == true) { customer.Account = "d" + DateTime.Now.Ticks.ToString(); //生成唯一编码,尽量避免重复 } customer.NickName = "非会员顾客"; customer.Name = "非会员顾客"; customer.EmailStatus = (int)Hyt.Model.WorkflowStatus.CustomerStatus.邮箱状态.未验证; customer.MobilePhoneStatus = (int)Hyt.Model.WorkflowStatus.CustomerStatus.手机状态.未验证; customer.RegisterSource = (int)Hyt.Model.WorkflowStatus.CustomerStatus.注册来源.门店; customer.RegisterSourceSysNo = shopid.ToString(); customer.IsReceiveShortMessage = (int)Hyt.Model.WorkflowStatus.CustomerStatus.是否接收短信.否; customer.IsReceiveEmail = (int)Hyt.Model.WorkflowStatus.CustomerStatus.是否接收邮件.否; customer.IsPublicAccount = (int)Hyt.Model.WorkflowStatus.CustomerStatus.是否是公共账户.否; customer.RegisterDate = DateTime.Now; customer.LevelSysNo = CustomerLevel.初级; customer.Password = WebUtil.GeneratePwd(1, 5); customer.Status = (int)Hyt.Model.WorkflowStatus.CustomerStatus.会员状态.无效; customer.CreatedBy = userid; customer.CreatedDate = DateTime.Now; customer.IsExperienceCoinFixed = (int)Hyt.Model.WorkflowStatus.CustomerStatus.惠源币是否固定.固定; customer.IsExperiencePointFixed = (int)Hyt.Model.WorkflowStatus.CustomerStatus.经验积分是否固定.固定; customer.IsLevelFixed = (int)Hyt.Model.WorkflowStatus.CustomerStatus.等级是否固定.固定; customer.PSysNo = 0; var oldCustomer = BLL.Web.CrCustomerBo.Instance.GetCustomerByCellphone(customer.Account);//当前账号不存在 if (oldCustomer == null) { Hyt.BLL.Order.SoOrderBo.Instance.CreateCustomer(customer, null); //创建新账号 } else if (isnew == false) //不必新建,用原始账号 { customer = oldCustomer; } else { throw new HytException("请求未响应,请重试!"); } return(customer); }
/// <summary> /// 创建会员 /// </summary> /// <param name="customer">会员信息</param> /// <returns>会员id</returns> /// <remarks>2013-06-09 黄志勇 创建</remarks> public override int CreateCustomer(CrCustomer customer) { if (customer.Birthday == DateTime.MinValue) { customer.Birthday = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue; } if (customer.LastLoginDate == DateTime.MinValue) { customer.LastLoginDate = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue; } customer.Subscribe = "0"; var result = Context.Insert <CrCustomer>("CrCustomer", customer) .AutoMap(x => x.SysNo) .ExecuteReturnLastId <int>("SysNo"); customer.SysNo = result; return(result); }
/// <summary> /// 调整会员币 /// </summary> /// <param name="customer">会员信息</param> /// <param name="userSysNo">系统用户编号</param> /// <param name="changeType">惠源币变更类型</param> /// <param name="amount">会员币数量(正数:增加;负数:减少)</param> /// <param name="description">变更说明</param> /// <param name="transactionSysNo">事务编号</param> /// <returns>void</returns> /// <remarks>2013-07-10 黄波 创建</remarks> private void UpdateExperienceCoin(CrCustomer customer, int userSysNo, CustomerStatus.惠源币变更类型 changeType, int amount, string description, string transactionSysNo) { var customerSysNo = customer.SysNo; var model = new CrExperienceCoinLog { TransactionSysNo = transactionSysNo, CustomerSysNo = customerSysNo, ChangeDate = DateTime.Now, ChangeDescription = description, ChangeType = (int)changeType, CreatedBy = userSysNo, CreatedDate = DateTime.Now, Surplus = customer.ExperienceCoin + amount, Increased = amount > 0 ? amount : 0, Decreased = amount > 0 ? 0 : amount }; //更新用户会员币 IPointDao.Instance.AdjustExperienceCoin(customerSysNo, amount, model); }
/// <summary> /// 获取购物车对象(可适合无购物车对象计算,如:前端未登录用户,公共账户,退换货) /// </summary> /// <param name="platformType">使用平台</param> /// <param name="customer">客户对象</param> /// <param name="shoppingCartItems">购物车明细集合</param> /// <param name="promotionSysNo">促销系统编号集合</param> /// <param name="couponCode">优惠券代码</param> /// <param name="isAutoPromotion">是否自动使用当前有效促销</param> /// <param name="areaSysNo">区域系统编号</param> /// <param name="deliveryTypeSysNo">配送方式系统编号</param> /// <param name="promotionCode">促销代码</param> /// <param name="isFrontProduct">是否只允许前台下单的商品(默认:true)</param> /// <param name="promotionToPython">促销计算元数据</param> /// <param name="warehouseSysNo">发货仓库.</param> /// <param name="expensesAmount">太平洋保险</param> /// <returns>购物车对象</returns> /// <remarks>2013-08-12 吴文强 创建</remarks> public CrShoppingCart GetShoppingCart(PromotionStatus.促销使用平台[] platformType, CrCustomer customer, IList <CBCrShoppingCartItem> shoppingCartItems, int[] promotionSysNo, string couponCode = null, bool isAutoPromotion = false, int?areaSysNo = null, int?deliveryTypeSysNo = null, string promotionCode = null, bool isFrontProduct = true, SpPromotionToPython promotionToPython = null, int?warehouseSysNo = null, decimal expensesAmount = 0M) { //移除下架的商品 shoppingCartItems = CrShoppingCartConvertBo.Instance.RemoveSoldoutProduct(shoppingCartItems, customer.SysNo, isFrontProduct); var shoppingCart = SpPromotionEngineBo.Instance.CalculateShoppingCart(platformType, customer, shoppingCartItems, promotionSysNo, couponCode, isAutoPromotion, areaSysNo, deliveryTypeSysNo, promotionCode, warehouseSysNo, true, promotionToPython, expensesAmount); //移除前台不能下单的赠品 shoppingCart = CrShoppingCartConvertBo.Instance.RemoveSoldoutGift(shoppingCart, isFrontProduct); return(shoppingCart); }
/// <summary> /// 调用wcf服务获取SSO客户信息 /// </summary> /// <param name="customer">客户信息</param> /// <returns>返回ssoID</returns> /// <remarks> /// 2014-06-26 余勇 创建 /// </remarks> public int InsertCrSsoCustomerAssociation(CrCustomer customer) { //var ssoId = 0; var emailStatus = customer.EmailStatus == (int)Hyt.Model.WorkflowStatus.CustomerStatus.邮箱状态.已验证 ? 1 : 0; var phoneStatus = customer.MobilePhoneStatus == (int)Hyt.Model.WorkflowStatus.CustomerStatus.手机状态.已验证 ? 1 : 0; var request = new CustomerRegisterReturnIdRequest { Account = customer.Account, EmailAddress = customer.EmailAddress, IsValidateEmail = emailStatus, IsValidateMobilePhone = phoneStatus, MobilePhoneNumber = customer.MobilePhoneNumber, Password = customer.Password, RegisterDate = customer.RegisterDate, Status = customer.Status }; try { //调用wcf服务通过客户账号获取SSO客户信息 using (var client = new ServiceProxy <ICustomerService>()) { var r = client.Channel.CustomerRegisterReturnId(request); if (!r.IsError) { //ssoId = r.Data; return(r.Id); } SysLog.Instance.Error(LogStatus.系统日志来源.后台, "创建新会员调用wcf服务失败:" + r.ErrMsg, LogStatus.系统日志目标类型.客户管理, customer.SysNo, null); return(-1); } } catch (Exception ex) { SysLog.Instance.Error(LogStatus.系统日志来源.后台, "创建新会员调用wcf服务错误", LogStatus.系统日志目标类型.客户管理, customer.SysNo, ex); throw ex; } }
/// <summary> /// 调整等级积分 /// </summary> /// <param name="customer">会员信息</param> /// <param name="userSysNo">系统用户编号</param> /// <param name="changeType">等级积分变更类型</param> /// <param name="point">积分数量(正数:增加;负数:减少)</param> /// <param name="description">变更说明</param> /// <param name="transactionSysNo">事务编号</param> /// <returns>void</returns> /// <remarks>2013-07-10 黄波 创建</remarks> private void UpdateLevelPoint(CrCustomer customer, int userSysNo, CustomerStatus.等级积分日志变更类型 changeType, int point, string description, string transactionSysNo) { var customerSysNo = customer.SysNo; var levelPointModel = new CrLevelPointLog { ChangeDescription = description, ChangeType = (int)changeType, LastUpdateDate = DateTime.Now, CreatedBy = userSysNo, LastUpdateBy = userSysNo, CreatedDate = DateTime.Now, CustomerSysNo = customerSysNo, Increased = point > 0 ? point : 0, Decreased = point > 0 ? 0 : point, TransactionSysNo = transactionSysNo }; //更新等级积分并记录日志 IPointDao.Instance.AdjustLevelPoint(customerSysNo, point, levelPointModel); //更新等级 IPointDao.Instance.UpdateCustomerLevel(customerSysNo, userSysNo, changeType, description); }
/// <summary> /// 调整可用积分 /// </summary> /// <param name="customer">会员信息</param> /// <param name="userSysNo">系统用户编号</param> /// <param name="changeType">积分变更类型</param> /// <param name="point">积分数量(正数:增加;负数:减少)</param> /// <param name="description">变更说明</param> /// <param name="transactionSysNo">事务编号</param> /// <remarks>2013-10-31 黄波 创建</remarks> public void UpdateAvailablePoint(CrCustomer customer, int userSysNo, CustomerStatus.可用积分变更类型 changeType, int point, string description, string transactionSysNo) { if (string.IsNullOrEmpty(description)) { description = "积分兑换"; } var nowDate = DateTime.Now; var crAvailablePointLogmodel = new CrAvailablePointLog { TransactionSysNo = transactionSysNo, CustomerSysNo = customer.SysNo, ChangeDate = nowDate, CreatedBy = userSysNo, CreatedDate = nowDate, Surplus = customer.AvailablePoint + point, PointType = (int)changeType, PointDescription = description,//"积分兑换", Increased = point > 0 ? point : 0, Decreased = point > 0 ? 0 : point }; IPointDao.Instance.UpdateAvailablePoint(customer.SysNo, point, crAvailablePointLogmodel); }
/// <summary> /// 检查商品支持的促销规则 /// </summary> /// <param name="customer">客户对象</param> /// <param name="promotions">有效促销集合</param> /// <param name="shoppingCartItems">购物车明细集合</param> /// <param name="promotionToPython">促销计算元数据</param> /// <returns>购物车明细集合</returns> /// <remarks>2013-09-03 吴文强 创建</remarks> private IList <CBCrShoppingCartItem> CheckPromotionProduct(CrCustomer customer, IList <CBSpPromotion> promotions, IList <CBCrShoppingCartItem> shoppingCartItems, SpPromotionToPython promotionToPython = null) { if (shoppingCartItems == null || shoppingCartItems.Count == 0) { return(new List <CBCrShoppingCartItem>()); } //检查促销支持的商品 ScriptEngine engine = Python.CreateEngine(); ScriptScope scope = engine.CreateScope(); var currentPromotions = promotions.Where(p => p.PromotionType == (int)PromotionStatus.促销应用类型.应用到分类 || p.PromotionType == (int)PromotionStatus.促销应用类型.应用到商品 || p.PromotionType == (int)PromotionStatus.促销应用类型.团购 || p.PromotionType == (int)PromotionStatus.促销应用类型.组合套餐).OrderBy(p => p.PromotionType).ThenByDescending(p => p.Priority); foreach (var rule in currentPromotions) { ScriptSource sourceCode = engine.CreateScriptSourceFromString(rule.PromotionRule.RuleScript); scope.SetVariable("CurrSpPromotion", rule); scope.SetVariable("CurrCrCustomer", customer); scope.SetVariable("CurrAllPromotion", promotions); scope.SetVariable("CurrSpPromotionToPython", promotionToPython); sourceCode.Execute(scope); try { var pyCheckPromotionProduct = scope.GetVariable <Func <IList <CBCrShoppingCartItem>, IList <CBCrShoppingCartItem> > >("CheckPromotionProduct"); shoppingCartItems = pyCheckPromotionProduct(shoppingCartItems); } catch (Exception ex) { SysLog.Instance.Error(LogStatus.系统日志来源.后台, ex.Message, LogStatus.系统日志目标类型.促销, rule.SysNo, ex); } } return(shoppingCartItems); }
/// <summary> /// 检查用户惠源币是否固定 /// </summary> /// <param name="customer">用户实体</param> /// <returns>是否</returns> /// <remarks>2014-03-04 黄波 创建</remarks> private bool CheckExperienceCoinIsFixed(CrCustomer customer) { return(customer.IsExperienceCoinFixed == (int)CustomerStatus.惠源币是否固定.固定); }
/// <summary> /// 添加交易订单 /// </summary> /// <param name="orderSysno"></param> /// <returns>2016-09-07 杨浩 创建</returns> public override Result AddOrderTrade(int orderSysno) { var result = new Result <string>(); result.Status = true; result.StatusCode = 0; result.Message = "接口调用成功"; if (orderSysno <= 0) { return(result); } try { var orderInfo = BLL.Order.SoOrderBo.Instance.GetEntity(orderSysno); CBFnOnlinePayment payment = FinanceBo.Instance.GetOnPaymentBySourceSysNo(orderInfo.SysNo); CrCustomer customer = Hyt.BLL.CRM.CrCustomerBo.Instance.GetModel(orderInfo.CustomerSysNo); var order = new AddWuZhouRequest(); order.item_list = new List <Item_Lists>(); var pager = new Pager <AddWuZhouRequest>() { PageSize = 999999, CurrentPage = 1 }; //pager = Hyt.BLL.ApiLogistics.WuZhou.WuZhouBll.PdProductBo.Instance.GetWuZhouList(pager); IList <CBSoOrderItem> datao = SoOrderBo.Instance.GetCBOrderItemsByOrderId(orderInfo.SysNo); orderInfo.OrderItemList = new List <SoOrderItem>(); List <int> ProSysNo = new List <int>(); foreach (CBSoOrderItem item in datao) { ProSysNo.Add(item.ProductSysNo); orderInfo.OrderItemList.Add(item); } IList <CBPdProduct> productList = Hyt.BLL.Product.PdProductBo.Instance.GetProductInfoList(ProSysNo); foreach (var mod in productList) { var tempitem = datao.First(p => p.ProductSysNo == mod.SysNo); if (tempitem != null) { tempitem.OrginCountry = Hyt.BLL.Basic.OriginBo.Instance.GetEntity(mod.OriginSysNo).Origin_Name; } } SoReceiveAddress srenity = Hyt.BLL.Order.OutboundReturnBo.Instance.GetSoReceiveAddressBysoOrderSysNo(orderSysno); #region 订单信息 order.outer_code = orderSysno.ToString(); order.goods_total = orderInfo.OrderAmount; order.order_pay = orderInfo.OrderAmount; order.logis_pay = orderInfo.FreightAmount; order.favourable = orderInfo.CouponAmount; order.item_count = 0; order.ebp_account = customer.Account; order.buyer_name = customer.Name; order.buyer_idtype = 1; order.buyer_idnumber = customer.IDCardNo; order.buyer_tel = customer.MobilePhoneNumber; order.consignee = srenity.Name; order.consignee_postcode = srenity.ZipCode; order.consignee_tel = srenity.MobilePhoneNumber; order.consignee_province = srenity.AreaSysNo.ToString(); order.consignee_city = srenity.AreaSysNo.ToString(); order.consignee_district = srenity.AreaSysNo.ToString(); order.consignee_addr = srenity.StreetAddress; order.consignee_email = srenity.EmailAddress; order.ebc_code = ""; order.ebp_code = ""; order.pay_code = ""; order.payment_no = ""; order.is_ordermsg = 1; order.is_paymsg = 1; order.is_logismsg = 1; order.is_invtmsg = 1; order.express_name = ""; order.logis_num = ""; order.note = orderInfo.Remarks; #endregion //循环商品信息 foreach (var item in datao) { var productInfo = productList.Where(x => x.SysNo == item.ProductSysNo).FirstOrDefault(); if (productInfo == null) { result.Status = false; result.StatusCode = 1; result.Message = "产品系统编号【" + item.ProductSysNo + "】在系统中不存在"; return(result); } var orderItem = new Item_Lists(); orderItem.sku_code = item.TransactionSysNo; orderItem.chcus_sku = item.ProductSysNo.ToString(); orderItem.sku_price = item.SalesUnitPrice; orderItem.qty = item.Quantity; orderItem.total = item.SalesUnitPrice; orderItem.discount = 0; orderItem.note = orderInfo.DeliveryRemarks; order.item_list.Add(orderItem); } //Dictionary<string, string> dicKeyList = new Dictionary<string, string>(); //dicKeyList.Add("outer_code", orderSysno.ToString()); //ERP的合作者帐号 string partner = ""; //由ERP分配 string send_key = ""; //ERP的外部接口帐号 string interface_id = ""; //请求业务 string method = "neworder"; //将数组装换为json格式 var orders = Hyt.Util.Serialization.JsonUtil.EntityToJson(order); //进行md5加密 string md5 = MD5Encrypt(orders + send_key).ToLower(); //进行Base64编码 string base64 = EncodeBase64(md5); //进行url编码 string sign = UrlEncode(base64); //请求参数 string requiredParameter = "/" + method + "/?partner=" + partner + "&interface_id=" + interface_id + "&sign=" + sign + "&content=" + orders + ""; //请求地址 string requestUrl = "ht"; //完整参数 string url = requestUrl + requiredParameter; string testData = MyHttp.GetResponse(url, orders, "utf-8"); //{"success":true,"errCode":"","errMsg":"","courierCode":"SF","mailNo":"444746031132"} PosDataResult postResult = JsonUtil.ToObject <PosDataResult>(testData); if (postResult.success) { Hyt.BLL.CrossBorderLogistics.CrossBorderLogisticsOrderBo.Instance.InsertEntity( new CrossBorderLogisticsOrder() { ExpressNo = postResult.courierCode + "_" + postResult.mailNo, LogisticsCode = 0, LogisticsOrderId = "", SoOrderSysNo = orderSysno, } ); string express = postResult.courierCode + "_" + postResult.mailNo; BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)Hyt.Model.WorkflowStatus.OrderStatus.跨境物流推送状态.成功, 3, orderInfo.SysNo); result.Status = postResult.success; } else { result.Status = postResult.success; result.Message = testData; } } catch (Exception e) { result.Status = false; result.Message = e.Message; } return(result); }
private void AddBaseTaskObjectToList(List <BaseTask> listObject) { BaseTask bsAT = new BsArea(); BaseTask bsDP = new BsDeliveryPayment(); BaseTask bsPT = new BsPaymentType(); BaseTask bsCode = new BsCode(); BaseTask bsOrganization = new BsOrganization(); BaseTask bsOrganizationWarehouse = new BsOrganizationWarehouse(); BaseTask crCustomer = new CrCustomer(); BaseTask crCL = new CrCustomerLevel(); BaseTask crCQ = new CrCustomerQuestion(); BaseTask crRA = new CrReceiveAddress(); BaseTask dsMallType = new DsMallType(); BaseTask dsDealerLevel = new DsDealerLevel(); BaseTask feArticle = new FeArticle(); BaseTask feAC = new FeArticleCategory(); BaseTask feCS = new FeCommentSupport(); BaseTask fepc = new FeProductComment(); BaseTask fePCI = new FeProductCommentImage(); BaseTask fePCR = new FeProductCommentReply(); BaseTask feSearchKeyword = new FeSearchKeyword(); BaseTask feadvertgroup = new FeAdvertGroup(); BaseTask feadvertitem = new FeAdvertItem(); BaseTask feproductgroup = new FeProductGroup(); BaseTask feproductitem = new FeProductItem(); BaseTask fnIT = new FnInvoiceType(); BaseTask fninvoice = new FnInvoice(); BaseTask fnpv = new FnReceiptVoucher(); BaseTask fnReceiptVoucherItem = new FnReceiptVoucherItem(); BaseTask fnop = new FnOnlinePayment(); BaseTask fnPaymentVoucher = new FnPaymentVoucher(); BaseTask fnPaymentVoucherItem = new FnPaymentVoucherItem(); BaseTask lgDelivery = new LgDelivery(); BaseTask lgDI = new LgDeliveryItem(); BaseTask lgDS = new LgDeliveryScope(); BaseTask lgDT = new LgDeliveryType(); BaseTask lgDUC = new LgDeliveryUserCredit(); BaseTask lgPT = new LgPickupType(); BaseTask lgsettlement = new LgSettlement(); BaseTask lgSI = new LgSettlementItem(); BaseTask lgDeliveryPrintTemplate = new LgDeliveryPrintTemplate(); BaseTask pdAttribute = new PdAttribute(); BaseTask pdAG = new PdAttributeGroup(); BaseTask pdAGA = new PdAttributeGroupAssociation(); BaseTask pdAO = new PdAttributeOption(); BaseTask pdBrand = new PdBrand(); BaseTask pdCGA = new PdCatAttributeGroupAso(); BaseTask pdCategory = new PdCategory(); BaseTask pdCA = new PdCategoryAssociation(); BaseTask pdPrice = new PdPrice(); BaseTask pdProduct = new PdProduct(); BaseTask pdPA = new PdProductAssociation(); BaseTask pdProductAttribute = new PdProductAttribute(); BaseTask pdPI = new PdProductImage(); BaseTask pdTemplate = new PdTemplate(); BaseTask pdProductStatistics = new PdProductStatistics(); BaseTask soOrder = new SoOrder(); BaseTask soOrderItem = new SoOrderItem(); BaseTask soRA = new SoReceiveAddress(); BaseTask SyUG = new SyUserGroup(); BaseTask syGU = new SyGroupUser(); BaseTask syMenu = new SyMenu(); BaseTask syMenuPrivilege = new SyMenuPrivilege(); BaseTask syPrivilege = new SyPrivilege(); BaseTask syRole = new SyRole(); BaseTask syRoleMenu = new SyRoleMenu(); BaseTask syRolePrivilege = new SyRolePrivilege(); BaseTask syPermission = new SyPermission(); BaseTask syUser = new SyUser(); BaseTask syUW = new SyUserWarehouse(); BaseTask syMyMenu = new SyMyMenu(); BaseTask spcombo = new SpCombo(); BaseTask spComboItem = new SpComboItem(); BaseTask spcopon = new spcoupon(); BaseTask sqpromotion = new SPpromotion(); BaseTask spromotiongift = new SPpromotiongift(); BaseTask sppromotionoverlay = new SPpromotionoverlay(); BaseTask sppromotionrule = new SPpromotionrule(); BaseTask sppromotionrulecondition = new SPpromotionrulecondition(); BaseTask sppromotionrulekeyvalue = new SPpromotionrulekeyvalue(); BaseTask syTaskConfig = new SyTaskConfig(); BaseTask whStockOut = new WhStockOut(); BaseTask whStockOutItem = new WhstockOutItem(); BaseTask whwarehouse = new WhWarehouse(); BaseTask whwa = new WHwarehousearea(); BaseTask whwdy = new WHwarehouseDeliveryType(); BaseTask whWPT = new WhWarehousePickupType(); BaseTask whstockin = new WhStockIn(); BaseTask whstockinItem = new WHStockinItem(); BaseTask rcReturn = new RCReturn(); BaseTask rcReturnItem = new RcReturnItem(); listObject.Add(bsAT); listObject.Add(bsDP); listObject.Add(bsPT); listObject.Add(bsCode); listObject.Add(bsOrganization); listObject.Add(bsOrganizationWarehouse); listObject.Add(crCustomer); listObject.Add(crCL); listObject.Add(crCQ); listObject.Add(crRA); listObject.Add(dsMallType); listObject.Add(dsDealerLevel); listObject.Add(feArticle); listObject.Add(feAC); listObject.Add(feCS); listObject.Add(fePCI); listObject.Add(fePCR); listObject.Add(fepc); listObject.Add(feSearchKeyword); listObject.Add(feadvertgroup); listObject.Add(feadvertitem); listObject.Add(feproductgroup); listObject.Add(feproductitem); listObject.Add(fnIT); listObject.Add(fnpv); listObject.Add(fnReceiptVoucherItem); listObject.Add(fnop); listObject.Add(fninvoice); listObject.Add(fnPaymentVoucher); listObject.Add(fnPaymentVoucherItem); listObject.Add(lgDelivery); listObject.Add(lgDI); listObject.Add(lgDS); listObject.Add(lgDT); listObject.Add(lgPT); listObject.Add(lgsettlement); listObject.Add(lgSI); listObject.Add(lgDeliveryPrintTemplate); listObject.Add(pdAttribute); listObject.Add(pdAG); listObject.Add(pdAGA); listObject.Add(pdAO); listObject.Add(pdBrand); listObject.Add(pdCGA); listObject.Add(pdCategory); listObject.Add(pdCA); listObject.Add(pdPrice); listObject.Add(pdProduct); listObject.Add(pdPA); listObject.Add(pdProductAttribute); listObject.Add(pdTemplate); listObject.Add(pdProductStatistics); listObject.Add(soOrder); listObject.Add(soOrderItem); listObject.Add(spcombo); listObject.Add(spComboItem); listObject.Add(spcopon); listObject.Add(sqpromotion); listObject.Add(spromotiongift); //listObject.Add(sppromotionoverlay); listObject.Add(sppromotionrule); listObject.Add(sppromotionrulecondition); listObject.Add(sppromotionrulekeyvalue); listObject.Add(syGU); listObject.Add(syUW); listObject.Add(SyUG); listObject.Add(syMenu); listObject.Add(syUser); listObject.Add(syPermission); listObject.Add(syMenuPrivilege); listObject.Add(syPrivilege); listObject.Add(syRole); listObject.Add(syRoleMenu); listObject.Add(syRolePrivilege); listObject.Add(syMyMenu); listObject.Add(syTaskConfig); listObject.Add(whStockOut); listObject.Add(whStockOutItem); listObject.Add(whwarehouse); listObject.Add(whwa); listObject.Add(whwdy); listObject.Add(whWPT); listObject.Add(whstockin); listObject.Add(whstockinItem); listObject.Add(rcReturn); listObject.Add(rcReturnItem); listObject.Add(lgDUC); listObject.Add(pdPI); listObject.Add(soRA); }
/// <summary> /// 创建会员 /// </summary> /// <param name="customer">会员</param> /// <returns>会员id</returns> /// <remarks>2013-06-09 黄志勇 创建</remarks> public abstract int CreateCustomer(CrCustomer customer);
/// <summary> /// 调整经验积分 /// </summary> /// <param name="customer">会员信息</param> /// <param name="userSysNo">系统用户编号</param> /// <param name="changeType">经验积分变更类型</param> /// <param name="point">积分数量(正数:增加;负数:减少)</param> /// <param name="description">变更说明</param> /// <param name="transactionSysNo">事务编号</param> /// <returns>void</returns> /// <remarks>2013-07-10 黄波 创建</remarks> private void UpdateExperiencePoint(CrCustomer customer, int userSysNo, CustomerStatus.经验积分变更类型 changeType, int point, string description, string transactionSysNo) { var customerSysNo = customer.SysNo; var nowDate = DateTime.Now; var experiencePointCahngeType = (int)changeType; var availablePointChangeType = 0; if (experiencePointCahngeType == (int)CustomerStatus.经验积分变更类型.参与活动) { availablePointChangeType = (int)CustomerStatus.可用积分变更类型.参与活动; } else if (experiencePointCahngeType == (int)CustomerStatus.经验积分变更类型.过期调整) { availablePointChangeType = (int)CustomerStatus.可用积分变更类型.过期调整; } else if (experiencePointCahngeType == (int)CustomerStatus.经验积分变更类型.积分兑换) { availablePointChangeType = (int)CustomerStatus.可用积分变更类型.积分兑换; } else if (experiencePointCahngeType == (int)CustomerStatus.经验积分变更类型.交易变更) { availablePointChangeType = (int)CustomerStatus.可用积分变更类型.交易变更; } else if (experiencePointCahngeType == (int)CustomerStatus.经验积分变更类型.客服调整) { availablePointChangeType = (int)CustomerStatus.可用积分变更类型.客服调整; } else { availablePointChangeType = (int)CustomerStatus.可用积分变更类型.系统赠送; } var experiencePointLogmodel = new CrExperiencePointLog { TransactionSysNo = transactionSysNo, CustomerSysNo = customerSysNo, ChangeDate = nowDate, CreatedBy = userSysNo, CreatedDate = nowDate, Surplus = customer.ExperiencePoint + point, PointType = experiencePointCahngeType, PointDescription = description, Increased = point > 0 ? point : 0, Decreased = point > 0 ? 0 : point }; var availablePointLogModel = new CrAvailablePointLog { TransactionSysNo = transactionSysNo, CustomerSysNo = customerSysNo, ChangeDate = nowDate, CreatedBy = userSysNo, CreatedDate = nowDate, Surplus = customer.AvailablePoint + point, PointType = availablePointChangeType, PointDescription = description, Increased = point > 0 ? point : 0, Decreased = point > 0 ? 0 : point }; IPointDao.Instance.AdjustExperiencePoint(customerSysNo, point, experiencePointLogmodel, availablePointLogModel); }
/// <summary> /// 检查用户经验积分是否固定 /// </summary> /// <param name="customer">用户实体</param> /// <returns>是否</returns> /// <remarks>2014-03-04 黄波 创建</remarks> private bool CheckExperiencePointIsFixed(CrCustomer customer) { return(customer.IsExperiencePointFixed == (int)CustomerStatus.经验积分是否固定.固定); }
/// <summary> /// 帐号积分是否可以使用 /// </summary> /// <param name="customer">用户实体</param> /// <returns>是否</returns> /// <remarks>2014-03-07 黄波 创建</remarks> public bool AccountPointDisable(CrCustomer customer) { return(customer.IsExperiencePointFixed == (int)CustomerStatus.经验积分是否固定.固定 || customer.IsExperienceCoinFixed == (int)CustomerStatus.惠源币是否固定.固定); }