Example #1
0
        /// <summary>
        /// Inserts a valid billing in the database
        /// </summary>
        /// <param name="billing">The billing object to be inserted.</param>
        public BaseResult <Billing> AddBilling(Billing billing)
        {
            var validator        = new BillingValidator();
            var validationResult = validator.IsValid(billing);

            if (!validationResult.Success)
            {
                return(validationResult);
            }
            if (!HasBeneficiary(billing.BeneficiaryId, billing.BeneficiaryName))
            {
                return(BaseResult <Billing> .Failed(new string[] { "no beneficiary was provided with the billing" }, billing));
            }
            if (billing.BeneficiaryId == 0)
            {
                var beneficiaryByName = GetBeneficiaryByName(billing.BeneficiaryName);
                billing.BeneficiaryId = beneficiaryByName.Id;
            }
            else
            {
                var beneficiaryById = _beneficiaryRepository.GetBy(billing.BeneficiaryId);
                billing.BeneficiaryName = beneficiaryById.Name;
            }

            _billingRepository.Add(billing);
            _billingRepository.SaveChanges();
            return(validationResult);
        }
Example #2
0
        public virtual async Task <IResult> SaveChangesAsync(CancellationToken cancellationToken = default)
        {
            TError baseError = new TError
            {
                Code        = "updata",
                Description = "保存失败"
            };
            IResult result = new IResult();

            try
            {
                if (AutoSaveChanges)
                {
                    var row = await Context.SaveChangesAsync(cancellationToken);

                    if (row > 0)
                    {
                        result = BaseResult <IResult, TError> .Success(row);
                    }
                }
            }
            catch (DbUpdateConcurrencyException ex)
            {
                baseError.Code        = ex.Source;
                baseError.Description = ex.Message;
                result = BaseResult <IResult, TError> .Failed(baseError);

                Logger.Log(LogLevel.Error, ex, "error", result);
            }
            return(result);
        }
        /// <summary>
        /// 添加物品
        /// </summary>
        /// <param name="input">请求信息</param>
        /// <param name="pid">商品id</param>
        /// <returns></returns>
        public async Task <BaseResult <object> > AddAsync(AddBasketItemDto input)
        {
            long pid    = input.PId;
            var  store  = _redis.GetDatabase(MyShopRedisConfig.BASKETDBNUMBER);
            var  userId = CurrentUser.Id;
            var  key    = $"{MyShopRedisConfig.BASKETKEY_PRE}:{userId}";

            var basketItem = await store.HashGetAsync(key, pid);

            if (!basketItem.IsNullOrEmpty)
            {
                await store.HashIncrementAsync(key, pid);
            }
            else
            {
                var product = await _products.FindAsync(p => p.Id == pid);

                if (product != null)
                {
                    if (product.Status != ProductStatus.Normal)
                    {
                        return(BaseResult <object> .Failed("商品已下架!"));
                    }
                    await store.HashIncrementAsync(key, pid);
                }
                else
                {
                    return(BaseResult <object> .Failed("加入购物车失败:商品不见了!"));
                }
            }

            return(BaseResult <object> .Success());
        }
Example #4
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="loginInfo">登录信息</param>
        /// <returns></returns>
        public async Task <BaseResult <TokenInfo> > Login(UserLoginDto loginInfo)
        {
            if (string.IsNullOrEmpty(loginInfo.Account) || string.IsNullOrEmpty(loginInfo.Password))
            {
                return(BaseResult <TokenInfo> .Failed("用户名密码不能为空!"));
            }

            var user = await Task.FromResult(_userRepository.FirstOrDefault(p => p.Account == loginInfo.Account));

            if (user == null)
            {
                return(BaseResult <TokenInfo> .Failed("用户名密码错误!"));
            }
            string md5Pwd = EncryptHelper.MD5Encrypt(loginInfo.Password);

            if (user.Password != md5Pwd)
            {
                return(BaseResult <TokenInfo> .Failed("用户名密码错误!"));
            }

            var claims = GetClaims(user);

            var token = GenerateToken(claims);

            return(BaseResult <TokenInfo> .Success(token));
        }
Example #5
0
        public static BaseResult <POSOrderItem> Create(int productId, int quantity, POSOrder posOrder, IRepository <Product> productRepository)
        {
            var product = productRepository.GetBy(productId);

            if (product.QuantityInStock == 0)
            {
                return(BaseResult <POSOrderItem> .Failed(new [] { $"can't create item.Product of id {product.Id} is out of stock" }, null));
            }
            if ((product.QuantityInStock - quantity) < 0)
            {
                return(BaseResult <POSOrderItem> .Succeed("Order Item is defined", new POSOrderItem(product, posOrder, product.QuantityInStock)));
            }
            var item = new POSOrderItem(product, posOrder, quantity);

            return(BaseResult <POSOrderItem> .Succeed("Order Item is defined", item));
        }
Example #6
0
        public async Task <BaseResult <POSOrder> > CreateTransactionAsync(POSOrder transaction)
        {
            var validationResult = _validator.Validate(transaction);

            if (!validationResult.IsValid)
            {
                AppLogger.Log.Information("Failed to validate transaction at {className}. Validation Result:{@validationResult}", this.GetType().Name, validationResult);
                return(BaseResult <POSOrder> .Failed(validationResult.Errors.Select(e => $"validation {e.Severity} failed for property {e.PropertyName} with code {e.ErrorCode}. Reason:{e.ErrorMessage}"), transaction));
            }
            _transactionRepository.Add(transaction);
            await _transactionRepository.SaveChangesAsync();

            return(new BaseResult <POSOrder>
            {
                Success = true,
                Value = transaction
            });
        }
Example #7
0
        public BaseResult SendSms(SmsInfo sms)
        {
            var rs = new BaseResult { State = false, Value = -1, Desc = "数据操作层初始化" };
            if (sms.UserID <= 0)
            {
                rs.Failed(-101, "userId无效");
                return rs;
            }

            if (sms == null)
            {
                rs.Failed(-102, "sms无效");
                return rs;
            }

            _desc = "发送短信";
            _procName = "UP_SMS_AddSms";
            _methodName = MethodBase.GetCurrentMethod().Name;

            _log = new LogBuilder
            {
                Method = string.Format("类[{0}]方法[{1}]", ClassName, _methodName),
                Desc = _desc,
                Database = _databaseName,
                StroreProcedure = _procName
            };
            _log.Append("userId", sms.UserID);

            try
            {

                StringBuilder smsDetailXML = new StringBuilder();
                smsDetailXML.Append("<SmsList>");
                sms.SmsDetailList.ForEach((item) => {
                    smsDetailXML.Append("<Sms>");
                    smsDetailXML.AppendFormat("<Mobile>{0}</Mobile>", item.Mobile);
                    smsDetailXML.AppendFormat("<Name>{0}</Name>", item.Name);
                    smsDetailXML.Append("</Sms>");
                });

                smsDetailXML.Append("</SmsList>");
                var parameters = new[]
                    {
                        _smsDatabase.MakeInParam("@UserId", SqlDbType.Int, 4, sms.UserID),
                        _smsDatabase.MakeInParam("@TaskName", SqlDbType.VarChar, sms.TaskName),
                        _smsDatabase.MakeInParam("@Sender", SqlDbType.VarChar, sms.Sender),
                        _smsDatabase.MakeInParam("@Priority", SqlDbType.Int,(int) sms.Priority),
                        _smsDatabase.MakeInParam("@InputType", SqlDbType.Int,(int) sms.InputType),
                        _smsDatabase.MakeInParam("@SendWay", SqlDbType.Int, (int)sms.SendWay),
                        _smsDatabase.MakeInParam("@SendTime", SqlDbType.DateTime, sms.SendTime),
                        _smsDatabase.MakeInParam("@SubmitTime", SqlDbType.DateTime, sms.SubmitTime),
                        _smsDatabase.MakeInParam("@Message", SqlDbType.VarChar, sms.Message),
                        _smsDatabase.MakeInParam("@SmsType", SqlDbType.VarChar, (int)sms.SmsType),
                        _smsDatabase.MakeInParam("@SmsDetailXML",SqlDbType.Xml,smsDetailXML.ToString()),
                        _smsDatabase.MakeOutParam("@MsgID", SqlDbType.VarChar,16)
                    };
                _smsDatabase.ExecuteProc(_procName, parameters, out _result);
                if (_result != 1)
                {
                    rs.Failed(-2, "todo");
                    return rs;
                }
            }
            catch (Exception ex)
            {
                rs.Failed(-1, "todo");

                _log.Exception = string.Format("{0},发生异常:{1}", _desc, ex.Message);
                _log.Error();

                return rs;
            }
            finally
            {
                _smsDatabase.Close();//仅显式关闭链接,不做其它操作
            }
            rs.Success();
            return rs;
        }
Example #8
0
        public BaseResult AddContactor(int userId, Contactor contactor, int compId)
        {
            var rs = new BaseResult { State = false, Value = -1, Desc = "数据操作层初始化" };

            if (userId <= 0)
            {
                rs.Failed(-101, "userId无效");
                return rs;
            }

            if (contactor.Equals(null))
            {
                rs.Failed(-101, "contactor无效");
                return rs;
            }

            _desc = "某个终端客户添加一个联系人,含分组,联系方式";
            _procName = "UP_Addr_Contactor_AddContactor";
            _methodName = MethodBase.GetCurrentMethod().Name;

            _log = new LogBuilder
            {
                Method = string.Format("类[{0}]方法[{1}]", ClassName, _methodName),
                Desc = _desc,
                Database = _databaseName,
                StroreProcedure = _procName
            };
            _log.Append("userId", userId);

            try
            {
                //联系方式xml
                var wayClass = new XMLContactWayClass
                    {
                        XmlContactWay =
                            contactor.CWays.Select(
                                way => new XmlContactWay { ContactWayType = way.ContactWayType, Way = way.Way }).ToArray()
                    };
                var wayData = XmlHelper.XmlSerializer<XMLContactWayClass>(wayClass);
                wayData = wayData.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "");

                //分组xml
                var groupClass = new XMLContactGroupClass
                    {
                        XmlContactGroup =
                            contactor.CGroups.Select(
                                @group => new XmlContactGroup { ContactorGroupID = @group.ContactorGroupID }).ToArray()
                    };
                var groupData = XmlHelper.XmlSerializer<XMLContactGroupClass>(groupClass);
                groupData = groupData.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "");

                var parameters = new[]
                    {
                        _addrDatabase.MakeInParam("@userId", SqlDbType.Int, 4, userId),
                        _addrDatabase.MakeInParam("@CompID", SqlDbType.Int, 4, compId),
                        _addrDatabase.MakeInParam("@Name", SqlDbType.VarChar, 20, contactor.ContactorName),
                        _addrDatabase.MakeInParam("@ContactWay", SqlDbType.Xml, int.MaxValue, wayData),
                        _addrDatabase.MakeInParam("@ContactGroup", SqlDbType.Xml, int.MaxValue, groupData),
                        _addrDatabase.MakeInParam("@ConfParticipatePhoneNo",SqlDbType.VarChar,50,contactor.ConfParticipatePhoneNo)
                    };
                _addrDatabase.ExecuteProc(_procName, parameters, out _result);
                if (_result != 0)
                {
                    rs.Failed(-2, "todo");
                    return rs;
                }
            }
            catch (Exception ex)
            {
                rs.Failed(-1, ex.ToString());

                _log.Exception = string.Format("{0},发生异常:{1}", _desc, ex.Message);
                _log.Error();

                return rs;
            }
            finally
            {
                _addrDatabase.Close();//仅显式关闭链接,不做其它操作
            }
            rs.Success();
            return rs;
        }
Example #9
0
        public BaseResult SetName(int userId, int contactorID, string name, int compId)
        {
            var rs = new BaseResult { State = false, Value = -1, Desc = "数据操作层初始化" };
            if (userId <= 0)
            {
                rs.Failed(-101, "userId无效");
                return rs;
            }
            if (contactorID <= 0)
            {
                rs.Failed(-102, "contactorID无效");
                return rs;
            }
            if (string.IsNullOrEmpty(name))
            {
                rs.Failed(-103, "name无效");
                return rs;

            }

            _desc = "某个终端客户修改某个联系人的姓名";
            _procName = "UP_Addr_Contactor_SetName";
            _methodName = MethodBase.GetCurrentMethod().Name;

            _log = new LogBuilder
            {
                Method = string.Format("类[{0}]方法[{1}]", ClassName, _methodName),
                Desc = _desc,
                Database = _databaseName,
                StroreProcedure = _procName
            };
            _log.Append("userId", userId);
            _log.Append("contactorID", contactorID);
            _log.Append("name", name);

            try
            {
                SqlParameter[] parameters =
                    {
                        _addrDatabase.MakeInParam("@ContactorID", SqlDbType.BigInt, 4, contactorID),
                        _addrDatabase.MakeInParam("@ContactorName", SqlDbType.NVarChar, 20, name)
                    };

                _addrDatabase.ExecuteProc(_procName, parameters, out _result);

                if (_result != 0)
                {
                    rs.Failed(-2, "todo");
                    return rs;
                }
            }
            catch (Exception ex)
            {
                rs.Failed(-1, "todo");

                _log.Exception = string.Format("{0},发生异常:{1}", _desc, ex.Message);
                _log.Error();

                return rs;
            }
            finally
            {
                _addrDatabase.Close();//仅显式关闭链接,不做其它操作
            }
            rs.Success();
            return rs;
        }
Example #10
0
        public BaseResult SetContactWay(int userId, int contactorID, List<ContactWay> cWay, int compId, string confParticipatePhoneNo)
        {
            var rs = new BaseResult { State = false, Value = -1, Desc = "数据操作层初始化" };
            if (userId <= 0)
            {
                rs.Failed(-101, "userId无效");
                return rs;
            }
            if (contactorID <= 0)
            {
                rs.Failed(-102, "contactorID无效");
                return rs;
            }
            if (cWay.Equals(null))
            {
                rs.Failed(-103, "cWay无效");
                return rs;

            }

            _desc = "某个终端客户设置(修改)某个联系人的某个联系方式";
            _procName = "UP_Addr_Contactor_AddMutilField";
            _methodName = MethodBase.GetCurrentMethod().Name;

            _log = new LogBuilder
            {
                Method = string.Format("类[{0}]方法[{1}]", ClassName, _methodName),
                Desc = _desc,
                Database = _databaseName,
                StroreProcedure = _procName
            };
            _log.Append("userId", userId);
            _log.Append("contactorID", contactorID);
            _log.Append("ContactWay", cWay);

            try
            {
                XMLContactWayClass wayClass = new XMLContactWayClass();
                XmlContactWay xmlWay = null;
                List<XmlContactWay> list = new List<XmlContactWay>();
                foreach (ContactWay way in cWay)
                {
                    xmlWay = new XmlContactWay();
                    xmlWay.ContactWayType = way.ContactWayType;
                    xmlWay.Way = way.Way;
                    list.Add(xmlWay);
                }

                wayClass.XmlContactWay = list.ToArray();
                string wayData = XmlHelper.XmlSerializer<XMLContactWayClass>(wayClass);
                wayData = wayData.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "");

                var parameters = new[]
                    {
                        _addrDatabase.MakeInParam("@userId", SqlDbType.Int, 4, userId),
                        _addrDatabase.MakeInParam("@CompID", SqlDbType.Int, 4, compId),
                        _addrDatabase.MakeInParam("@ContactorID", SqlDbType.BigInt, 4, contactorID),
                        _addrDatabase.MakeInParam("@ContactWay", SqlDbType.Xml, int.MaxValue, wayData),
                        _addrDatabase.MakeInParam("@ConfParticipatePhoneNo",SqlDbType.VarChar,50,confParticipatePhoneNo )
                    };
                _addrDatabase.ExecuteProc(_procName, parameters, out _result);
                if (_result != 0)
                {
                    rs.Failed(-2, "todo");
                    return rs;
                }
            }
            catch (Exception ex)
            {
                rs.Failed(-1, ex.ToString());

                _log.Exception = string.Format("{0},发生异常:{1}", _desc, ex.Message);
                _log.Error();

                return rs;
            }
            finally
            {
                _addrDatabase.Close();//仅显式关闭链接,不做其它操作
            }
            rs.Success();
            return rs;
        }
Example #11
0
        public BaseResult SetContactorGroups(int userId, List<ContactorGroup> groups, int contactorID, int compId)
        {
            var rs = new BaseResult { State = false, Value = -1, Desc = "数据操作层初始化" };
            if (userId <= 0)
            {
                rs.Failed(-101, "userId无效");
                return rs;
            }

            if (groups.Equals(null))
            {
                rs.Failed(-102, "groups无效");
                return rs;

            }
            if (contactorID <= 0)
            {
                rs.Failed(-102, "contactorID无效");
                return rs;
            }

            _desc = "更新单个联系人与多个联系组之间的所属关系(加入到组或从组中退出)";
            _procName = "UP_Addr_Contactor_AddSingleToCGroups";
            _methodName = MethodBase.GetCurrentMethod().Name;

            _log = new LogBuilder
            {
                Method = string.Format("类[{0}]方法[{1}]", ClassName, _methodName),
                Desc = _desc,
                Database = _databaseName,
                StroreProcedure = _procName
            };
            _log.Append("userId", userId);
            _log.Append(" List<MODEL.Addr.ContactorGroup>", groups);
            _log.Append("contactorID", contactorID);

            try
            {
                //分组xml
                var groupClass = new XMLContactGroupClass
                {
                    XmlContactGroup =
                        groups.Select(
                            @group => new XmlContactGroup { ContactorGroupID = @group.ContactorGroupID }).ToArray()
                };

                var groupData = XmlHelper.XmlSerializer<XMLContactGroupClass>(groupClass);
                groupData = groupData.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "");

                var parameters = new[]
                    {
                        _addrDatabase.MakeInParam("@userId", SqlDbType.Int, 4, userId),
                        _addrDatabase.MakeInParam("@CompID", SqlDbType.Int, 4, compId),
                        _addrDatabase.MakeInParam("@ContactorID", SqlDbType.Int, 4, contactorID),
                        _addrDatabase.MakeInParam("@ContactorGroupIDList", SqlDbType.Xml, int.MaxValue, groupData)
                    };
                _addrDatabase.ExecuteProc(_procName, parameters, out _result);
                if (_result != 0)
                {
                    rs.Failed(-2, "todo");
                    return rs;
                }
            }
            catch (Exception ex)
            {
                rs.Failed(-1, ex.ToString());

                _log.Exception = string.Format("{0},发生异常:{1}", _desc, ex.Message);
                _log.Error();

                return rs;
            }
            finally
            {
                _addrDatabase.Close();//仅显式关闭链接,不做其它操作
            }
            rs.Success();
            return rs;
        }
Example #12
0
        public BaseResult DelContactorsByGroup(int userId, List<Contactor> contactors, int compId, int groupId)
        {
            var rs = new BaseResult { State = false, Value = -1, Desc = "数据操作层初始化" };
            if (userId <= 0)
            {
                rs.Failed(-101, "userId无效");
                return rs;
            }

            if (contactors == null)
            {
                rs.Failed(-102, "contactors无效");
                return rs;
            }

            if (groupId <= 0)
            {
                rs.Failed(-103, "groupId无效");
                return rs;
            }
            _desc = "某个终端客户删除某些联系人,从联系人分组中删除,批量操作";
            _procName = "UP_Addr_Contactor_DelFromSingleCGroup";
            _methodName = MethodBase.GetCurrentMethod().Name;

            _log = new LogBuilder
            {
                Method = string.Format("类[{0}]方法[{1}]", ClassName, _methodName),
                Desc = _desc,
                Database = _databaseName,
                StroreProcedure = _procName
            };
            _log.Append("userId", userId);

            try
            {
                var contactorIDList = contactors.Aggregate("", (current, contactorsId) => current + (contactorsId.ContactorID + ","));
                contactorIDList = contactorIDList.Substring(0, contactorIDList.Length - 1);

                var parameters = new[]
                    {
                        _addrDatabase.MakeInParam("@userId", SqlDbType.Int, 4, userId),
                        _addrDatabase.MakeInParam("@ContactorIDList", SqlDbType.VarChar, 256, contactorIDList),
                        _addrDatabase.MakeInParam("@ContactGroupID", SqlDbType.Int,4,groupId)
                    };
                _addrDatabase.ExecuteProc(_procName, parameters, out _result);
                if (_result != 1)
                {
                    rs.Failed(-2, "todo");
                    return rs;
                }
            }
            catch (Exception ex)
            {
                rs.Failed(-1, ex.ToString());

                _log.Exception = string.Format("{0},发生异常:{1}", _desc, ex.Message);
                _log.Error();

                return rs;
            }
            finally
            {
                _addrDatabase.Close();//仅显式关闭链接,不做其它操作
            }
            rs.Success();
            return rs;
        }