Exemple #1
0
        public async Task <Result> Edit([FromBody] CustomerAddressEditRequest request)
        {
            var address = await _addressRepository.FirstOrDefaultAsync(request.Id);

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

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

            address.DetailInfo   = request.DetailInfo;
            address.AreaCode     = request.AreaCode;
            address.CityCode     = request.CityCode;
            address.IsDefault    = request.IsDefault;
            address.PostalCode   = request.PostalCode;
            address.ProvinceCode = request.ProvinceCode;
            address.TelNumber    = request.TelNumber;
            address.UserName     = request.UserName;

            await _addressRepository.UpdateAsync(address);

            return(Result.Ok());
        }
        public async Task<Result> Get(int id)
        {
            var user = await _repository.FirstOrDefaultAsync(id);
            if (user == null) return Result.Fail(ResultCodes.IdInvalid);

            return Result.Ok(_mapper.Map<AdminEmployeeResponse>(user));
        }
Exemple #3
0
        public async Task <Result> Get(int id)
        {
            var category = await _categoryRepository.FirstOrDefaultAsync(id);

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

            return(Result.Ok(_mapper.Map <AdminCategoryResponse>(category)));
        }
Exemple #4
0
        public async Task <Result> Get(int id)
        {
            var goodsOption = await _goodsOptionRepository.FirstOrDefaultAsync(id);

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

            return(Result.Ok(_mapper.Map <AdminGoodsOptionResponse>(goodsOption)));
        }
        public async Task <Result> DecryptTel([FromBody] WeChatDecryptTelRequest request)
        {
            var userId   = HttpContext.GetUserId();
            var customer = await _customerRepository.FirstOrDefaultAsync(userId);

            try
            {
                string data = Senparc.Weixin.WxOpen.Helpers.EncryptHelper.DecodeEncryptedData(customer.SessionKey, request.EncryptedData, request.Iv);
                var    decodedPhoneNumber = JsonConvert.DeserializeObject <DecodedPhoneNumber>(data);
                if (string.IsNullOrEmpty(customer.PhoneNumber))
                {
                    customer.PhoneNumber = decodedPhoneNumber.phoneNumber;
                    customer.CountryCode = decodedPhoneNumber.countryCode;

                    await _customerRepository.UpdateProperyAsync(customer, nameof(customer.PhoneNumber), nameof(customer.CountryCode));
                }

                return(Result.Ok());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex);
            }

            return(Result.Fail(ResultCodes.SysError));
        }
Exemple #6
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> ErrorGet(int id)
        {
            var error = await _errorLogRepository.FirstOrDefaultAsync(id);

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

            return(Result.Ok(_mapper.Map <AdminLogErrorGetResponse>(error)));
        }
        public async Task <Result> Get(int id)
        {
            var log = await _requestResponseLogRepository.FirstOrDefaultAsync(id);

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

            return(Result.Ok(_mapper.Map <AdminLogGetResponse>(log)));
        }
        public async Task <Result> Delete(int id)
        {
            var bankCard = await _bankCardRepository.FirstOrDefaultAsync(id);

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

            await _bankCardRepository.RemoveAsync(bankCard);

            return(Result.Ok());
        }
        public async Task <Result> Delete(int id)
        {
            var order = await _orderRepository.FirstOrDefaultAsync(id);

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

            await _orderRepository.RemoveAsync(order);

            return(Result.Ok());
        }
Exemple #11
0
        public async Task <Result> Delete(int id)
        {
            var shippint = await _shipmentRepository.FirstOrDefaultAsync(id);

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

            await _shipmentRepository.RemoveAsync(shippint);

            return(Result.Ok());
        }
Exemple #12
0
        public async Task <Result> Delete(int id)
        {
            var partnerApply = await _partnerApplyRepository.FirstOrDefaultAsync(id);

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

            await _partnerApplyRepository.RemoveAsync(partnerApply);

            return(Result.Ok());
        }
Exemple #13
0
        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());
        }
Exemple #14
0
        public async Task <Result> ChangePwd([FromBody] AdminUserChangePwdRequest request)
        {
            var id   = HttpContext.GetUserId();
            var user = await _adminUserRepository.FirstOrDefaultAsync(id);

            var oldEntryPwd = request.OldPwd.ToMD5Base64();

            if (!user.Pwd.Equals(oldEntryPwd))
            {
                return(Result.Fail(ResultCodes.PasswordError));
            }

            var newEntryPwd = request.NewPwd.ToMD5Base64();

            user.Pwd = newEntryPwd;

            await _adminUserRepository.UpdateAsync(user);

            return(Result.Ok());
        }
        public async Task <Result> Delete(int id)
        {
            var goods = await _goodsRepository.FirstOrDefaultAsync(id);

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

            var anyChild = await _goodsRepository.Query().AnyAsync(c => c.ParentId == id);

            if (anyChild)
            {
                return(Result.Fail(ResultCodes.RequestParamError, "当前商品存在商品组合,不允许删除"));
            }

            await _goodsRepository.RemoveAsync(goods);

            return(Result.Ok());
        }
        public async Task <Result> Delete(int id)
        {
            var order = await _orderRepository.FirstOrDefaultAsync(id);

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

            var status = new OrderStatus[] { OrderStatus.Complete, OrderStatus.Canceled };

            if (!status.Contains(order.OrderStatus))
            {
                return(Result.Fail(ResultCodes.RequestParamError, "当前订单状态不允许删除"));
            }

            await _orderRepository.RemoveAsync(order);

            return(Result.Ok());
        }
Exemple #17
0
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <returns></returns>
        public Task <Customer> GetUserAsync()
        {
            var userId = _accessor.HttpContext.GetUserId();

            return(_customerRepository.FirstOrDefaultAsync(userId));
        }
        public async Task <Result> PayBank([FromBody] WithdrawalPayBankRequest request)
        {
            var userId   = HttpContext.GetUserId();
            var bankCard = await _bankCardRepository.FirstOrDefaultAsync(request.Id);

            // var user = await _customerRepository.Query().Include(e => e.Assets).FirstOrDefaultAsync(e => e.Id == userId);
            var assets = await _assetsRepository.Query().FirstOrDefaultAsync(e => e.CustomerId == userId);

            if (assets == null)
            {
                return(Result.Fail(ResultCodes.RequestParamError, "可提现金额不足"));
            }
            if (assets.AvailableAmount <= 0)
            {
                return(Result.Fail(ResultCodes.RequestParamError, "可提现金额不足"));
            }
            if (assets.AvailableAmount < request.Amount)
            {
                return(Result.Fail(ResultCodes.RequestParamError, "金额不足"));
            }
            if (request.Amount < 100000)
            {
                return(Result.Fail(ResultCodes.RequestParamError, "金额不足1000,不可提现"));
            }

            var reservedAmount = (int)(request.Amount * 0.2);     //保留20%的金额
            var amount         = request.Amount - reservedAmount; //提现金额
            var handlingFee    = (int)(request.Amount * 0.001);   //微信手续费0.1%

            if (handlingFee < 100)
            {
                handlingFee = 100;
            }
            else if (handlingFee > 2500)
            {
                handlingFee = 2500;
            }

            string partnerTradeNo = DateTime.Now.ToString("yyyyMMdd") + GenerateHelper.GenOrderNo();

            var payBankRequest = new PayBankRequest
            {
                PartnerTradeNo = partnerTradeNo,
                Amount         = request.Amount,
                BankCode       = bankCard.BankCode,
                BankNo         = bankCard.BankNo,
                Desc           = "提现",
                TrueName       = bankCard.Name
            };

            var payBankResult = await _paymentService.PayBank(payBankRequest);

            var withdrawalHistory = new WithdrawalHistory
            {
                CustomerId     = bankCard.CustomerId,
                Name           = bankCard.Name,
                BankCode       = bankCard.BankCode,
                BankNo         = bankCard.BankNo,
                Amount         = amount,
                ReservedAmount = reservedAmount - reservedAmount,
                Status         = payBankResult.IsSuccess ? WithdrawalStatus.Success : WithdrawalStatus.Failed,
                Message        = payBankResult.Message,
                PartnerTradeNo = partnerTradeNo,
                Total          = request.Amount,
                HandlingFee    = handlingFee,
                Createat       = DateTime.Now
            };

            _withdrawalHistoryRepository.Insert(withdrawalHistory, false);

            using (var transaction = _withdrawalHistoryRepository.BeginTransaction())
            {
                await _withdrawalHistoryRepository.SaveAsync();

                if (payBankResult.IsSuccess)
                {
                    await _customerManager.UpdateAssets(assets, -request.Amount, reservedAmount - reservedAmount, "提现");
                }
                transaction.Commit();
            }

            return(Result.Ok(payBankResult));
        }