/// <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); }
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()); }
/// <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)); }
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)); }
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 }); }
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; }
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; }
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; }
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; }
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; }
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; }