public async Task <Result> Create([FromBody] CustomerAddressCreateRequest request) { var address = new AdminAddress { AreaCode = request.AreaCode, CityCode = request.CityCode, Createat = DateTime.Now, DetailInfo = request.DetailInfo, IsDefault = request.IsDefault, PostalCode = request.PostalCode, ProvinceCode = request.ProvinceCode, TelNumber = request.TelNumber, UserName = request.UserName }; if (request.IsDefault) { var defaultAddress = await _addressRepository.Query().FirstOrDefaultAsync(e => e.IsDefault); if (defaultAddress != null) { defaultAddress.IsDefault = false; await _addressRepository.UpdateProperyAsync(defaultAddress, nameof(defaultAddress.IsDefault)); } } await _addressRepository.InsertAsync(address); return(Result.Ok()); }
public async Task <Result> ChangeDefult(int id) { var address = await _customerAddressRepository.FirstOrDefaultAsync(id); if (address == null) { return(Result.Fail(ResultCodes.IdInvalid)); } var userId = HttpContext.GetUserId(); var defaultAddress = await _customerAddressRepository.Query().FirstOrDefaultAsync(e => e.CustomerId == userId && e.IsDefault); if (defaultAddress != null) { defaultAddress.IsDefault = false; await _customerAddressRepository.UpdateProperyAsync(defaultAddress, nameof(defaultAddress.IsDefault)); } address.IsDefault = true; await _customerAddressRepository.UpdateProperyAsync(address, nameof(address.IsDefault)); return(Result.Ok()); }
public async Task <Result> ConfirmSend(int id) { var billing = await _orderBillRepository.FirstOrDefaultAsync(id); if (billing.IsInvoiced) { return(Result.Fail(ResultCodes.IdInvalid, "已开票,不得重复确认")); } billing.IsInvoiced = true; await _orderBillRepository.UpdateProperyAsync(billing, nameof(billing.IsInvoiced)); return(Result.Ok()); }
public async Task <Result> Edit([FromBody] AdminOrderEditRequest request) { var order = await _orderRepository.Query() .Include(e => e.OrderItems).ThenInclude(e => e.CommissionHistory) .FirstOrDefaultAsync(e => e.Id == request.Id); if (order == null) { return(Result.Fail(ResultCodes.IdInvalid)); } var status = new[] { OrderStatus.Closed, OrderStatus.PaymentReceived, OrderStatus.Complete }; if (status.Contains(order.OrderStatus)) { return(Result.Fail(ResultCodes.RequestParamError, "当前订单状态不允许修改")); } var totalCommission = 0; var totalAmount = 0; var commissions = order.OrderItems.Where(e => e.CommissionHistory != null).Select(e => e.CommissionHistory); if (commissions.Count() > 0) { foreach (var item in commissions) { if (order.IsFirstOrder) { totalAmount += item.Commission; item.Status = CommissionStatus.Complete; item.SettlementTime = DateTime.Now; } else { item.Status = CommissionStatus.PendingSettlement; totalCommission += item.Commission; } } } order.PaymentType = request.PaymentType; order.PaymentMethod = request.PaymentMethod; order.PaymentTime = DateTime.Now; order.PaymentFee = order.ActuallyAmount; order.OrderStatus = OrderStatus.PaymentReceived; _orderRepository.Update(order, false); using (var transaction = _orderRepository.BeginTransaction()) { await _orderRepository.SaveAsync(); if (totalCommission > 0 || totalAmount > 0) { var parentId = commissions.Select(e => e.CustomerId).FirstOrDefault(); await _customerManager.UpdateAssets(parentId, totalCommission, totalAmount, "下级首单返佣金"); } if (!string.IsNullOrEmpty(order.ExtendParams)) { var result = Enum.TryParse <PartnerRole>(order.ExtendParams, true, out var role); if (result) { await _customerRepository.UpdateProperyAsync(new Customer { Id = order.CustomerId, Role = role }, nameof(Customer.Role)); } } transaction.Commit(); } return(Result.Ok()); }
public async Task <Result> LiteAppLogin([FromBody] WeChatLiteAppLoginRequest request) { string errorMsg = string.Empty; try { JsCode2JsonResult jsonResult = SnsApi.JsCode2Json(WechatService.WxOpenAppId, WechatService.WxOpenAppSecret, request.Code); if (jsonResult != null && jsonResult.errcode == ReturnCode.请求成功) { var customer = await _customerRepository.Query() .FirstOrDefaultAsync(e => e.OpenId == jsonResult.openid); if (customer == null) { int?parentId = null; var anyParent = await _customerRepository.Query().AnyAsync(e => e.Id == request.ParentId); if (anyParent) { parentId = request.ParentId; } var userInfo = request.UserInfo; customer = new Customer { NickName = userInfo.NickName, OpenId = jsonResult.openid, SessionKey = jsonResult.session_key, UnionId = jsonResult.unionid, Gender = userInfo.Gender, Country = userInfo.Country, Province = userInfo.Province, City = userInfo.City, AvatarUrl = userInfo.AvatarUrl, Language = userInfo.Language, ParentId = parentId, Createat = DateTime.Now, Assets = new Assets() { TotalAssets = 0, AvailableAmount = 0, TotalCommission = 0, UpdateTime = DateTime.Now, Createat = DateTime.Now } }; await _customerRepository.InsertAsync(customer); if (parentId.HasValue) { await _mediator.Publish(new CustomerRelationEvent { ParentId = request.ParentId, ChildrenId = customer.Id }); } } else { if (!customer.ParentId.HasValue && request.ParentId > 0) { var anyParent = await _customerRepository.Query().AnyAsync(e => e.Id == request.ParentId); if (anyParent) { customer.ParentId = request.ParentId; await _mediator.Publish(new CustomerRelationEvent { ParentId = request.ParentId, ChildrenId = customer.Id }); } } if (customer.SessionKey != jsonResult.session_key) { customer.SessionKey = jsonResult.session_key; await _customerRepository.UpdateProperyAsync(customer, nameof(customer.SessionKey), nameof(customer.ParentId)); } } List <Claim> claims = new List <Claim>(); claims.Add(new Claim("id", customer.Id.ToString())); // claims.Add(new Claim("openId", customer.OpenId)); var token = _tokenService.JwtToken(claims); var customerRes = _mapper.Map <CustomerResponse>(customer); return(Result.Ok(new WeChatLiteAppLoginResponse(token, customerRes))); } } catch (Exception ex) { errorMsg = ex.Message; } return(Result.Fail(ResultCodes.RequestParamError, errorMsg)); }
/// <summary> /// 支付接收 /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task PaymentReceived(PaymentReceivedRequest request) { var order = await _orderRepository.Query() .Include(e => e.OrderItems) .ThenInclude(e => e.CommissionHistory) .FirstOrDefaultAsync(e => e.OrderNo == request.OrderNo); if (order == null) { return; } var status = new OrderStatus[] { OrderStatus.PendingPayment, OrderStatus.PaymentFailed }; if (!status.Contains(order.OrderStatus)) { return; } var roleResult = false; PartnerRole role = PartnerRole.Default; if (!string.IsNullOrEmpty(order.ExtendParams)) { roleResult = Enum.TryParse <PartnerRole>(order.ExtendParams, true, out role); } var totalCommission = 0; var totalAmount = 0; var commissions = order.OrderItems.Where(e => e.CommissionHistory != null).Select(e => e.CommissionHistory); if (commissions.Count() > 0) { foreach (var item in commissions) { if (order.IsFirstOrder) { totalAmount += item.Commission; item.Status = CommissionStatus.Complete; item.SettlementTime = DateTime.Now; } else { totalCommission += item.Commission; item.Status = CommissionStatus.PendingSettlement; } } } order.OrderStatus = OrderStatus.PaymentReceived; order.PaymentMethod = request.PaymentMethod; order.PaymentTime = request.PaymentTime; order.PaymentFee = request.PaymentFee; _orderRepository.Update(order, false); using (var transaction = _orderRepository.BeginTransaction()) { await _orderRepository.SaveAsync(); if (roleResult) { await _customerRepository.UpdateProperyAsync(new Customer { Id = order.CustomerId, Role = role }, nameof(Customer.Role)); } if (totalCommission > 0 || totalAmount > 0) { var parentId = commissions.Select(e => e.CustomerId).FirstOrDefault(); await _customerManager.UpdateAssets(parentId, totalCommission, totalAmount, "下级首单返佣金"); } if (order.WalletAmount > 0) { await _customerManager.UpdateAssets(order.CustomerId, 0, 0, -order.WalletAmount, "商品抵扣金额"); } transaction.Commit(); } }