public async Task <Result> ResetPwd([FromBody] AdminForgetResetPwdRequest request)
        {
            var user = await _adminUserRepository.Query().FirstOrDefaultAsync(e => e.Tel == request.Tel);

            if (user == null)
            {
                return(Result.Fail(ResultCodes.UserNotExists));
            }

            var code = HttpContext.Session.GetString(request.Tel);

            if (string.IsNullOrEmpty(code))
            {
                return(Result.Fail(ResultCodes.RequestParamError, "验证码已过期或未获取验证码"));
            }
            if (!request.Code.Equals(code, System.StringComparison.InvariantCultureIgnoreCase))
            {
                return(Result.Fail(ResultCodes.RequestParamError, "验证码不正确"));
            }

            user.Pwd = request.Password.ToMD5Base64();

            await _adminUserRepository.UpdateAsync(user);

            HttpContext.Session.Remove(request.Tel);

            return(Result.Ok());
        }
        public async Task <Result> List([FromQuery] AdminGoodsListQueryRequest request)
        {
            var page  = request.Page;
            var limit = request.Limit;

            if (page <= 0)
            {
                page = 1;
            }
            if (limit <= 0)
            {
                limit = 10;
            }

            var queryable = _goodsRepository.Query()
                            .Include(e => e.ThumbnailImage)
                            .Where(e => e.IsVisible == false);

            if (!string.IsNullOrEmpty(request.Name))
            {
                queryable = queryable.Where(e => e.Name.Contains(request.Name));
            }
            if (request.IsPublished.HasValue)
            {
                queryable = queryable.Where(e => e.IsPublished == request.IsPublished.Value);
            }

            var totalRows = await queryable.CountAsync();

            var goodses = await queryable.OrderByDescending(e => e.Id).Skip((page - 1) * limit).Take(limit).ToListAsync();

            var pagination = new PaginationResponse(page, totalRows, _mapper.Map <List <AdminGoodsListResponse> >(goodses));

            return(Result.Ok(pagination));
        }
Exemple #3
0
        public async Task <Result> List([FromQuery] AdminPartnerApplyListRequest request)
        {
            var page  = request.Page;
            var limit = request.Limit;

            if (page <= 0)
            {
                page = 1;
            }
            if (limit <= 0)
            {
                limit = 10;
            }
            var queryable = _partnerApplyRepository.Query();

            if (request.PartnerRole != null)
            {
                queryable = queryable.Where(e => e.PartnerRole == request.PartnerRole);
            }
            var totalRows = await queryable.CountAsync();

            var partnerApplys = await queryable.OrderByDescending(e => e.Id).Skip((page - 1) * limit).Take(limit).ToListAsync();

            var pagination = new PaginationResponse(page, totalRows, _mapper.Map <List <AdminPartnerApplyListResponse> >(partnerApplys));

            return(Result.Ok(pagination));
        }
        public async Task <Result> GetAll([FromQuery] string nickName)
        {
            var customers = new List <Customer>();

            if (!string.IsNullOrEmpty(nickName))
            {
                customers = await _customerRepository.Query().Where(e => e.NickName.Contains(nickName)).ToListAsync();
            }
            return(Result.Ok(_mapper.Map <List <CustomerResponse> >(customers)));
        }
        public async Task <Result> Get()
        {
            var setting = await _repository.Query().FirstOrDefaultAsync();

            if (setting == null)
            {
                setting = new LiteAppSetting();
            }

            return(Result.Ok(setting));
        }
        public async Task<Result> List([FromQuery] PaginationRequest request)
        {
            var queryable = _repository.Query();

            var totalRows = await queryable.CountAsync();
            var users = await queryable.OrderByDescending(e => e.Id)
            .Skip((request.Page - 1) * request.Limit).Take(request.Limit)
            .ToListAsync();

            return Result.Ok(new PaginationResponse(request.Page, totalRows, _mapper.Map<List<AdminEmployeeResponse>>(users)));
        }
        public async Task <Result> List()
        {
            var userId        = HttpContext.GetUserId();
            var userAddresses = await _customerAddressRepository.Query()
                                .Include(e => e.Province)
                                .Include(e => e.City)
                                .Include(e => e.Area)
                                .Where(e => e.CustomerId == userId)
                                .OrderByDescending(e => e.Id).ToListAsync();

            return(Result.Ok(_mapper.Map <List <CustomerAddressResponse> >(userAddresses)));
        }
Exemple #8
0
        public async Task <Result> Get(int id)
        {
            var userId = HttpContext.GetUserId();

            var item = await _orderItemRepository.Query()
                       .Include(e => e.ReturnApply).ThenInclude(e => e.ReturnAddress)
                       // .Where(e => e.Order.CustomerId == userId && e.RefundStatus != RefundStatus.Default)
                       .FirstOrDefaultAsync(e => e.Id == id);

            if (item == null)
            {
                return(Result.Fail(ResultCodes.IdInvalid));
            }

            return(Result.Ok(_mapper.Map <RefundGetResponse>(item)));
        }
Exemple #9
0
        public async Task <Result> List([FromQuery] AdminCategoryQueryRequest request)
        {
            var page  = request.Page;
            var limit = request.Limit;

            if (page <= 0)
            {
                page = 1;
            }

            if (limit <= 0)
            {
                limit = 10;
            }

            var queryable = _categoryRepository.Query();

            if (!string.IsNullOrEmpty(request.Name))
            {
                queryable = queryable.Where(e => e.Name.Contains(request.Name));
            }

            var totalRows = await queryable.CountAsync();

            var categorys = await queryable.Skip((page - 1) *limit).Take(limit).OrderByDescending(e => e.Id).ToListAsync();

            return(Result.Ok(new PaginationResponse(page, totalRows, _mapper.Map <List <AdminCategoryResponse> >(categorys))));
        }
        public async Task <Result> Condition(PartnerRole role)
        {
            var partnerApply = await _partnerApplyRepository.Query()
                               .Include(e => e.PartnerApplyGoods).ThenInclude(e => e.Goods).ThenInclude(e => e.ThumbnailImage)
                               .FirstOrDefaultAsync(e => e.PartnerRole == role);

            return(Result.Ok(_mapper.Map <PartnerApplyConditionResponse>(partnerApply)));
        }
Exemple #11
0
        public async Task <Result> History([FromQuery] AdminWithdrawalHistoryRequest request)
        {
            var queryable = _withdrawalHistoryRepository.Query();

            if (request.CustomerId.HasValue)
            {
                queryable = queryable.Where(e => e.CustomerId == request.CustomerId.Value);
            }

            var totalRows = await queryable.CountAsync();

            var histores = await queryable
                           .OrderByDescending(e => e.Id)
                           .Skip((request.Page - 1) * request.Limit).Take(request.Limit)
                           .ToListAsync();

            return(Result.Ok(new PaginationResponse(request.Page, totalRows, _mapper.Map <List <WithdrawalHistoryResponse> >(histores))));
        }
Exemple #12
0
        public async Task <Result> ConfirmApply([FromBody] AdminRefundConfirmApplyRequest request)
        {
            var returnApply = await _returnApplyRepository.Query()
                              .Include(e => e.OrderItem)
                              .FirstOrDefaultAsync(e => e.Id == request.Id);

            if (returnApply == null)
            {
                return(Result.Fail(ResultCodes.IdInvalid));
            }
            if (returnApply.Status != ReturnAuditStatus.NotAudit)
            {
                return(Result.Fail(ResultCodes.RequestParamError, "当前申请不允许修改状态"));
            }

            var address = await _addressRepository.Query()
                          .Include(e => e.Province)
                          .Include(e => e.City)
                          .Include(e => e.Area)
                          .FirstOrDefaultAsync(e => e.Id == request.RefundAddressId);

            if (address == null)
            {
                return(Result.Fail(ResultCodes.RequestParamError, "无效地址"));
            }

            var returnAddress = new ReturnAddress
            {
                ReturnApplyId = returnApply.Id,
                AreaName      = address.Area.Name,
                CityName      = address.City.Name,
                Createat      = DateTime.Now,
                DetailInfo    = address.DetailInfo,
                PostalCode    = address.PostalCode.ToString(),
                ProvinceName  = address.Province.Name,
                Remarks       = request.Remarks,
                TelNumber     = address.TelNumber,
                UserName      = address.UserName,
            };

            returnApply.Status           = ReturnAuditStatus.Agree;
            returnApply.AuditMessage     = request.Remarks;
            returnApply.AuditTime        = DateTime.Now;
            returnApply.OrderItem.Status = OrderItemStatus.ConfirmApply;

            _returnApplyRepository.Update(returnApply, false);
            using (var transaction = _returnApplyRepository.BeginTransaction())
            {
                await _returnApplyRepository.SaveAsync();

                await _refundAddressRepository.InsertAsync(returnAddress);

                transaction.Commit();
            }

            return(Result.Ok());
        }
Exemple #13
0
        public async Task <Result> List([FromQuery] AdminShipmentListRequest request)
        {
            var queryable = _shipmentRepository.Query();

            if (request.Status.HasValue)
            {
                queryable = queryable.Where(e => e.ShippingStatus == request.Status.Value);
            }

            var totalRows = await queryable.CountAsync();

            var shipments = await queryable.Include(e => e.ShippingAddress)
                            .OrderByDescending(e => e.Id)
                            .Skip((request.Page - 1) * request.Limit).Take(request.Limit)
                            .ToListAsync();

            return(Result.Ok(new PaginationResponse(request.Page, totalRows, _mapper.Map <List <AdminShipmentListResponse> >(shipments))));
        }
        public async Task <Result> List([FromQuery] AdminOrderListRequest request)
        {
            var queryable = _orderRepository.Query();

            if (request.CustomerId.HasValue)
            {
                queryable = queryable.Where(e => e.CustomerId == request.CustomerId.Value);
            }
            if (!string.IsNullOrEmpty(request.OrderNo))
            {
                queryable = queryable.Where(e => e.OrderNo == request.OrderNo);
            }
            if (request.Status.HasValue)
            {
                queryable = queryable.Where(e => e.OrderStatus == request.Status.Value);
            }

            var totalRows = await queryable.CountAsync();

            var orders = await queryable.OrderByDescending(e => e.Id)
                         .Skip((request.Page - 1) * request.Limit).Take(request.Limit)
                         .Select(e => new AdminOrderListResponse
            {
                Id             = e.Id,
                AvatarUrl      = e.Customer.AvatarUrl,
                NickName       = e.Customer.NickName,
                Createat       = e.Createat,
                OrderNo        = e.OrderNo,
                OrderStatus    = e.OrderStatus,
                PaymentFee     = e.PaymentFee,
                PaymentMethod  = e.PaymentMethod,
                PaymentTime    = e.PaymentTime,
                PaymentType    = e.PaymentType,
                TotalFee       = e.TotalFee,
                ActuallyAmount = e.ActuallyAmount,
                WalletAmount   = e.WalletAmount
            })
                         .ToListAsync();

            return(Result.Ok(new PaginationResponse(request.Page, totalRows, orders)));
        }
        public async Task <Result> ErrorList([FromQuery] PaginationRequest request)
        {
            var queryable = _errorLogRepository.Query();

            var totalRows = await queryable.CountAsync();

            var errores = await queryable.OrderByDescending(e => e.Id)
                          .Skip((request.Page - 1) * request.Limit).Take(request.Limit)
                          .ToListAsync();

            return(Result.Ok(new PaginationResponse(request.Page, totalRows, _mapper.Map <List <AdminLogErrorListResponse> >(errores))));
        }
Exemple #16
0
        /// <summary>
        /// 执行前
        /// </summary>
        /// <param name="context"></param>
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            var quantity = _adminUserRepository.Query().Count();

            if (quantity > 0)
            {
                context.Result = new ObjectResult(Result.Fail(ResultCodes.NotRegister));
                return;
            }

            base.OnActionExecuting(context);
        }
Exemple #17
0
        public async Task <Result> Assets()
        {
            var userId = HttpContext.GetUserId();
            var assets = await _assetsRepository.Query().FirstOrDefaultAsync(e => e.CustomerId == userId);

            if (assets == null)
            {
                assets = new Assets();
            }

            return(Result.Ok(_mapper.Map <AssetsResponse>(assets)));
        }
Exemple #18
0
        public async Task <Result> AssetsHistory([FromQuery] PaginationRequest request)
        {
            var userId    = HttpContext.GetUserId();
            var queryable = _assetsHistoryRepository.Query().Where(e => e.CustomerId == userId);

            var totalRows = await queryable.CountAsync();

            var historys = await queryable.OrderByDescending(e => e.Id)
                           .Skip((request.Page - 1) * request.Limit).Take(request.Limit)
                           .ToListAsync();

            return(Result.Ok(new PaginationResponse(request.Page, totalRows, _mapper.Map <List <CustomerAssetsHistoryResponse> >(historys))));
        }
Exemple #19
0
        public async Task <Result> List([FromQuery] PaginationRequest request)
        {
            var queryable = _orderBillRepository.Query().Where(e => !e.IsInvoiced);

            var totalRows = await queryable.CountAsync();

            var billings = await queryable.OrderByDescending(e => e.Id)
                           .Skip((request.Page - 1) * request.Limit)
                           .Take(request.Limit)
                           .ToListAsync();

            return(Result.Ok(new PaginationResponse(request.Page, totalRows, _mapper.Map <List <AdminOrderBillingResponse> >(billings))));
        }
        public async Task <Result> DataStatistics()
        {
            // 总销售额
            var totalSales = await _orderRepository.Query().Where(e => e.OrderStatus >= OrderStatus.PaymentReceived).SumAsync(e => e.PaymentFee);

            // 总订单数
            var totalOrders = await _orderRepository.Query().Where(e => e.OrderStatus >= OrderStatus.PaymentReceived).CountAsync();

            // 待发货
            var pendingShipmentCount = await _shipmentRepository.Query().Where(e => e.ShippingStatus == ShippingStatus.PendingShipment).CountAsync();

            // 总合伙人数
            var totalCustomer = await _customerRepository.Query().Where(e => e.Role > PartnerRole.Default).CountAsync();

            return(Result.Ok(new AdminHomeDataStatisticsResponse
            {
                TotalCustomer = totalCustomer,
                PendingShipmentCount = pendingShipmentCount,
                TotalOrders = totalOrders,
                TotalSales = totalSales
            }));
        }
Exemple #21
0
        public async Task <Result> List([FromQuery] PaginationRequest request)
        {
            var queryable = _returnApplyRepository.Query();

            var totalRows = await queryable.CountAsync();

            var refundItems = await queryable
                              .OrderByDescending(e => e.Id)
                              .Skip((request.Page - 1) * request.Limit).Take(request.Limit)
                              .Select(e => new AdminRefundListResponse
            {
                Id           = e.Id,
                AuditTime    = e.AuditTime,
                Createat     = e.Createat,
                Status       = e.Status,
                RefundAmount = e.RefundAmount,
                CustomerId   = e.CustomerId,
                CustomerName = e.Customer.NickName,
                AvatarUrl    = e.Customer.AvatarUrl,
            })
                              .ToListAsync();

            return(Result.Ok(new PaginationResponse(request.Page, totalRows, refundItems)));
        }
        public async Task <Result> List([FromQuery] ShipmentListRequest request)
        {
            var page  = request.Page;
            var limit = request.Limit;

            if (page <= 0)
            {
                page = 1;
            }
            if (limit <= 0)
            {
                limit = 10;
            }

            var userId = HttpContext.GetUserId();

            var queryable = _shipmentRepository.Query().Where(e => e.CustomerId == userId);

            if (request.Status == ShippingStatus.Complete)
            {
                queryable = queryable.Where(e => e.ShippingStatus == request.Status);
            }
            else
            {
                queryable = queryable.Where(e => e.IsValid && e.ShippingStatus >= ShippingStatus.PendingShipment && e.ShippingStatus < ShippingStatus.Complete);
            }

            var totalRows = await queryable.CountAsync();

            var shipments = await queryable.Include(e => e.ShipmentOrderItems).ThenInclude(e => e.OrderItem)
                            .OrderByDescending(e => e.Id)
                            .Skip((page - 1) * limit).Take(limit)
                            .ToListAsync();

            return(Result.Ok(new PaginationResponse(page, totalRows, _mapper.Map <List <ShipmentListResponse> >(shipments))));
        }
Exemple #23
0
        public async Task <Result> All()
        {
            var addresses = await _addressRepository.Query()
                            .Include(e => e.Province)
                            .Include(e => e.City)
                            .Include(e => e.Area)
                            .ToListAsync();

            return(Result.Ok(_mapper.Map <List <CustomerAddressResponse> >(addresses)));
        }
Exemple #24
0
        public async Task <Result> Team([FromQuery] PaginationRequest request)
        {
            var userId = HttpContext.GetUserId();

            var queryable = _customerRelationRepository.Query().Where(e => e.ParentId == userId);

            var totalRows = await queryable.CountAsync();

            var teams = await queryable.Include(e => e.Children).ThenInclude(e => e.Assets)
                        .OrderByDescending(e => e.Id)
                        .Skip((request.Page - 1) * request.Limit).Take(request.Limit)
                        .Select(e => e.Children)
                        .ToListAsync();

            return(Result.Ok(new PaginationResponse(request.Page, totalRows, _mapper.Map <List <CustomerTeamResponse> >(teams))));
        }
        public async Task <Result> List()
        {
            var userId = HttpContext.GetUserId();

            var bankCards = await _bankCardRepository.Query().Where(e => e.CustomerId == userId).ToListAsync();

            var responses = _mapper.Map <List <BankCardResponse> >(bankCards);

            foreach (var item in responses)
            {
                item.BankNo   = Regex.Replace(item.BankNo, @"(\w{4})\d{10}(\w{4})", "$1*****$2");
                item.BankName = BankHelper.GetBankName(item.BankCode);
            }

            return(Result.Ok(responses));
        }
Exemple #26
0
        public async Task <Result> Register([FromBody] AdminUserRegisterRequest request)
        {
            var user = await _adminUserRepository.Query().FirstOrDefaultAsync(e => e.Name == request.Name);

            if (user != null)
            {
                return(Result.Fail(ResultCodes.UserExists));
            }

            var enctryPwd = request.Pwd.ToMD5Base64();

            var adminUser = new AdminUser(request.Name, request.Name, enctryPwd, true, EmployeeRole.Admin, string.Empty);

            await _adminUserRepository.InsertAsync(adminUser);

            return(Result.Ok());
        }
        private async Task SmsNotify(INotify notify, params EmployeeRole[] roles)
        {
            var employeeTels = await _adminUserRepository.Query()
                               .Where(e => roles.Contains(e.Role))
                               .Select(e => e.Tel)
                               .ToListAsync();

            if (employeeTels.Count > 0)
            {
                var notifyEvent = new SmsNotifyEvent
                {
                    Tels    = employeeTels,
                    Message = notify
                };
                await _mediator.Publish(notifyEvent);
            }
        }
Exemple #28
0
        public async Task <Result> Agree(int id)
        {
            var apply = await _withdrawalHistoryRepository.FirstOrDefaultAsync(id);

            if (apply == null)
            {
                return(Result.Fail(ResultCodes.IdInvalid));
            }
            if (apply.Status != WithdrawalStatus.Apply)
            {
                return(Result.Fail(ResultCodes.RequestParamError, "当前申请状态不允许确认"));
            }

            var openId = await _custoemrRepository.Query()
                         .Where(e => e.Id == apply.CustomerId)
                         .Select(e => e.OpenId)
                         .FirstOrDefaultAsync();

            apply.Status  = WithdrawalStatus.Success;
            apply.Message = "提现成功";

            var wxRequest = new WeChatPayPromotionTransfersRequest
            {
                PartnerTradeNo = apply.PartnerTradeNo,
                OpenId         = openId,
                CheckName      = "FORCE_CHECK",//  "NO_CHECK"
                ReUserName     = apply.Name,
                Amount         = apply.Amount,
                Desc           = "提现"
            };
            var response = await _client.ExecuteAsync(wxRequest, _weChatPayOptions);

            if (response.ReturnCode != WeChatPayCode.Success || response.ResultCode != WeChatPayCode.Success)
            {
                apply.Status      = WithdrawalStatus.Failed;
                apply.Message     = "提现异常,请重新申请";
                apply.Description = response.ErrCodeDes;

                await _customerManager.UpdateAssets(apply.CustomerId, 0, apply.Total, -apply.ReservedAmount, "提现失败返回金额");
            }

            await _withdrawalHistoryRepository.UpdateAsync(apply);

            return(Result.Ok());
        }
        public async Task <Result> Query(int id)
        {
            var shipment = await _shipmentRepository.Query().Include(e => e.ShippingAddress).FirstOrDefaultAsync(e => e.Id == id);

            if (shipment == null)
            {
                return(Result.Fail(ResultCodes.IdInvalid));
            }

            var tel                = shipment.ShippingAddress.TelNumber;
            var courierCompany     = shipment.CourierCompany;
            var courierCompanyCode = shipment.CourierCompanyCode;
            // if (string.IsNullOrEmpty(courierCompanyCode)) return Result.Fail(ResultCodes.RequestParamError, "快递公司编码参数无效");
            var trackingNumber = shipment.TrackingNumber;
            // if (string.IsNullOrEmpty(trackingNumber)) return Result.Fail(ResultCodes.RequestParamError, "快递单号无效");
            var response = await ShippingQuery(id, tel, courierCompany, courierCompanyCode, trackingNumber);

            return(Result.Ok(response));
        }
Exemple #30
0
        public async Task <Result> GetMembershipRights()
        {
            var user = await _customerManger.GetUserAsync();

            var setting = await _repository.Query().FirstOrDefaultAsync();

            var content = string.Empty;

            if (user.Role == PartnerRole.CityPartner)
            {
                content = setting.CityMembershipRights;
            }
            else
            {
                content = setting.BranchMembershipRights;
            }

            return(Result.Ok(content));
        }