/// <summary> /// 更新用户等级 /// </summary> /// <param name="customerSysNo">会员编号</param> /// <param name="userSysNo">系统用户编号</param> /// <param name="changeType">等级积分日志变更类型</param> /// <param name="description">等级变更说明</param> /// <returns></returns> /// <remarks>2013-07-11 黄波 创建</remarks> public override void UpdateCustomerLevel(int customerSysNo, int userSysNo, CustomerStatus.等级积分日志变更类型 changeType, string description) { var customer = Context.Select <CrCustomer>("c.*") .From("CrCustomer c") .Where("c.sysno=@sysno") .Parameter("sysno", customerSysNo) .QuerySingle(); if (customer != null) { //根据积分总数取等级编号 var levelSysNo = Context.Select <int>("sysno") .From("crcustomerlevel") .Where("lowerlimit<=@point and upperlimit>=@point") .Parameter("point", customer.LevelPoint) .OrderBy("upperlimit desc") .QuerySingle(); //根据等级编号判断是否需要更新等级 if (levelSysNo != 0 && levelSysNo != customer.LevelSysNo) { //写入等级变更日志 var levelLogModel = new CrLevelLog { ChangeDate = DateTime.Now, CreatedBy = userSysNo, CreatedDate = DateTime.Now, CustomerSysNo = customerSysNo, NewLevelSysNo = levelSysNo, OldLevelSysNo = customer.LevelSysNo }; switch (changeType) { case CustomerStatus.等级积分日志变更类型.交易变更: levelLogModel.ChangeType = (int)CustomerStatus.等级日志变更类型.交易变更; levelLogModel.ChangeDescription = levelLogModel.NewLevelSysNo > levelLogModel.OldLevelSysNo ? "经验升级" : "交易取消降级"; break; default: levelLogModel.ChangeType = (int)CustomerStatus.等级日志变更类型.客服调整; levelLogModel.ChangeDescription = description; break; } using (var context = Context.UseSharedConnection(true)) { context.Sql("update crcustomer set levelsysno=@levelsysno where sysno=@sysno") .Parameter("levelsysno", levelSysNo) .Parameter("sysno", customerSysNo) .Execute(); context.Insert <CrLevelLog>("CrLevelLog", levelLogModel) .AutoMap(o => o.SysNo) .Execute(); } } } }
/// <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="customerSysNo">用户编号</param> /// <param name="userSysNo">系统用户编号</param> /// <param name="changeType">等级积分日志变更类型</param> /// <param name="description">等级变更说明</param> /// <remarks>2013-07-11 黄波 创建</remarks> public abstract void UpdateCustomerLevel(int customerSysNo, int userSysNo, CustomerStatus.等级积分日志变更类型 changeType, string description);