/// <summary> /// get specified order by order code. /// </summary> /// <param name="orderCode">order id</param> /// <returns></returns> public async Task <(bool Succeed, OrderItemResult Order, string ErrorMessage)> GetOrder(int userId, string orderCode) { var order = await Dapper.QueryFirstOrDefaultAsync <OrderItemResult>( "select OrderCode,OrderStatus,PayStatus,CreatedOn,Result from `Order` where OrderCode=@orderCode and UserId=@userId", new { orderCode, userId }); if (order == null) { return(false, null, "order not exists"); } var lstDetail = await Dapper.QueryAsync <NewOrderDetail>( "select OrderCode,GoodsId,Count,Price from OrderDetail where OrderCode=@orderCode", new { orderCode }); var lstGoodsId = lstDetail.Select(i => i.GoodsId).ToList(); var lstGoods = await GoodsService.GoodsInfos(lstGoodsId); order.GoodsInfos = new List <GoodsInfoObj>(); lstDetail.ForEach(j => { var srcGoods = lstGoods.FirstOrDefault(k => k.Id == j.GoodsId); order.GoodsInfos.Add(new GoodsInfoObj { Count = j.Count, GoodsId = j.GoodsId, Price = j.Price, Pic = srcGoods?.Pic, Title = srcGoods?.Title }); }); order.Amount = order.GoodsInfos.Sum(k => k.Count * k.Price); return(true, order, ""); }
public async Task <(bool Succeed, string ErrorMessage, AuthResult Result)> Login(LoginView login) { var user = await Dapper.QueryFirstOrDefaultAsync( "select id,email,password,nickname from Users where email=@Email;", new { login.Email }); if (user == null) { return(false, "Email does not exist!", null); } if (!BCryptor.Verify(login.Password, user.password)) { return(false, "The password is incorrect!", null); } var claims = new[] { new Claim(ClaimTypes.Sid, user.id.ToString()), new Claim(ClaimTypes.Name, user.nickname), new Claim(ClaimTypes.NameIdentifier, login.Email), new Claim(ClaimTypes.Role, "user"), }; var token = TokenBuilder.Build(claims, TimeSpan.FromDays(1)); return(true, "", new AuthResult { Token = token.Token, Expire = token.Expires }); }
public async Task <ResponseResult <UserBase> > UserInfo(int userId) { var userInfo = await Dapper.QueryFirstOrDefaultAsync <UserBase>( "select Email,NickName from Users where Id=@userId", new { userId }); if (userInfo == null) { return new ResponseResult <UserBase> { Success = false, Error = "user not exists.", Result = null } } ; return(new ResponseResult <UserBase> { Success = true, Error = "", Result = userInfo }); } }
/// <summary> /// update order status /// </summary> /// <param name="orderCode">order uid</param> /// <param name="status">order status</param> /// <returns></returns> public async Task <ResponseResult <bool> > UpdateOrderStatus(string orderCode, OrderStatus status, string orderResult = "") { try { var order = await Dapper.QueryFirstOrDefaultAsync <NewOrderBase>( "select OrderCode,OrderStatus,PayStatus from `Order` where OrderCode=@orderCode", new { orderCode }); if (order.OrderStatus == status) { //log Logger.LogError($"order code is :{orderCode},updated status is the same to the old status."); return(new ResponseResult <bool> { Result = false, Error = $"operation not permitted.", Success = false }); } if (order.OrderStatus == OrderStatus.Delete) //deleted order cann't be handle { //log Logger.LogError($"order code is :{orderCode},deleted order cann't be handled."); return(new ResponseResult <bool> { Result = false, Error = $"operation not permitted.", Success = false }); } if (order.OrderStatus == OrderStatus.Failed) //failed order can only be delete { if (status != OrderStatus.Delete) { //log Logger.LogError($"order code is :{orderCode},failed order can only be deleted."); return(new ResponseResult <bool> { Result = false, Error = $"operation not permitted.", Success = false }); } } if (order.OrderStatus == OrderStatus.Cancel) //cancelled order can only be deleted { if (status != OrderStatus.Delete) { //log Logger.LogError($"order code is :{orderCode},cancelled order can only be deleted."); return(new ResponseResult <bool> { Result = false, Error = $"operation not permitted.", Success = false }); } } if (order.OrderStatus == OrderStatus.Submmit) //submmitted order can be cancelled or failed. { if (status != OrderStatus.Cancel && status != OrderStatus.Failed) { //log Logger.LogError($"order code is :{orderCode},submmitted order can only be cancelled or failed."); return(new ResponseResult <bool> { Result = false, Error = $"operation not permitted.", Success = false }); } } if (order.OrderStatus == OrderStatus.Complete) //completed order can only be deleted { if (status != OrderStatus.Delete) { //log Logger.LogError($"order code is :{orderCode},completed order can only be deleted."); return(new ResponseResult <bool> { Result = false, Error = $"operation not permitted.", Success = false }); } } var result = await Dapper.ExecuteAsync( "update `Order` set OrderStatus=@status,Result=@orderResult where OrderCode=@orderCode", new { status, orderResult, orderCode }); if (result == 1) { return(new ResponseResult <bool> { Result = true, Error = "", Success = true }); } else { //log Logger.LogError($"order code is :{orderCode},order status was not changed."); return(new ResponseResult <bool> { Result = false, Error = $"operation failed.", Success = false }); } } catch (Exception e) { Logger.LogError(e, $"order code is :{orderCode},order status changed has error."); return(new ResponseResult <bool> { Result = false, Error = $"operation has error.", Success = false }); } }