Пример #1
0
        /// <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();
                    }
                }
            }
        }
Пример #2
0
 /// <summary>
 /// 插入等级变更日志
 /// </summary>
 /// <param name="model">等级变更日志详情</param>
 /// <returns>创建结果</returns>
 /// <remarks>2013-07-10 黄波 添加</remarks>
 public abstract bool InsertCrLevelLogItem(CrLevelLog model);