Exemplo n.º 1
0
        public async Task <bool> ToggleLocationEnabled(int locationId)
        {
            Location location = await _db.Location.FindAsync(locationId);

            location.Enabled = !location.Enabled;
            await _db.SaveChangesAsync();

            return(location.Enabled);
        }
Exemplo n.º 2
0
        public async Task <FoodOrder> Create(CydcContext db, int userId, FoodOrderClientInfo clientInfo)
        {
            var menu = await db.FoodMenu.FindAsync(MenuId);

            var dateNow   = DateTime.Now;
            var foodOrder = new FoodOrder
            {
                OrderUserId         = userId,
                OrderTime           = dateNow,
                LocationId          = AddressId,
                FoodMenuId          = MenuId,
                TasteId             = TasteId,
                Comment             = Comment,
                FoodOrderClientInfo = clientInfo,
            };

            foodOrder.AccountDetails.Add(new AccountDetails
            {
                UserId     = userId,
                CreateTime = dateNow,
                Amount     = -menu.Price
            });
            db.Add(foodOrder);
            await db.SaveChangesAsync();

            decimal amount = await db.AccountDetails.Where(x => x.UserId == userId).SumAsync(x => x.Amount);

            if (amount >= 0)
            {
                await AutoPay(db, foodOrder);
            }
            return(foodOrder);
        }
Exemplo n.º 3
0
        private async Task <int> AutoPay(CydcContext db, FoodOrder order)
        {
            order = await db.FoodOrder
                    .Include(x => x.FoodOrderPayment)
                    .SingleAsync(x => x.Id == order.Id);

            order.FoodOrderPayment = new FoodOrderPayment
            {
                PayedTime = DateTime.Now
            };
            return(await db.SaveChangesAsync());
        }
Exemplo n.º 4
0
        public async Task <bool> ToggleStatus(int menuId)
        {
            FoodMenu menu = _db.FoodMenu.Find(menuId);

            menu.Enabled = !menu.Enabled;
            await _db.SaveChangesAsync();

            return(menu.Enabled);
        }
Exemplo n.º 5
0
        public async Task <IActionResult> SaveComment(int orderId, [FromBody] string comment)
        {
            FoodOrder order = await _db.FoodOrder.FindAsync(orderId);

            if (order.OrderUserId != int.Parse(User.GetUserId()))
            {
                return(Forbid());
            }
            if (order.OrderTime < DateTime.Now.Date)
            {
                return(BadRequest("Order must be today."));
            }

            order.Comment = comment;
            await _db.SaveChangesAsync();

            return(Ok(order.Comment));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Remind(int toUserId)
        {
            var user = await _db.Users
                       .Where(x => x.Id == toUserId)
                       .Select(x => new
            {
                UserId   = x.Id,
                UserName = x.UserName,
                Phone    = x.PhoneNumber,
                Balance  = x.AccountDetails.Sum(v => v.Amount),
                HasToday = x.SmsSendLogReceiveUser.Any(v => v.SendTime > DateTime.Now.Date),
            })
                       .FirstOrDefaultAsync();

            if (user == null)
            {
                return(BadRequest("用户不存在。"));
            }
            if (string.IsNullOrWhiteSpace(user.Phone))
            {
                return(BadRequest($"用户电话不存在或格式不对: {user.Phone}。"));
            }
            if (user.Balance >= 0)
            {
                return(BadRequest($"用户账户余额必须大于0: {user.Balance}。"));
            }
            if (user.HasToday)
            {
                return(BadRequest($"一天只能给用户催一次帐。"));
            }

            string[] parameters = new[] { user.UserName, (-user.Balance).ToString("N2") };

            var smsSendLog = new SmsSendLog
            {
                OperationUserId  = int.Parse(User.GetUserId()),
                ReceiveUserId    = toUserId,
                SendTime         = DateTime.Now,
                TemplateId       = _smsTemplateConfig.RemindTemplateId,
                ReceiveUserPhone = user.Phone,
                Parameter        = JsonConvert.SerializeObject(parameters),
            };

            _db.SmsSendLog.Add(smsSendLog);
            await _db.SaveChangesAsync();

            var client = new SmsSingleSender(_smsConfig.AppId, _smsConfig.AppKey);
            var result = client.sendWithParam("86", user.Phone,
                                              templateId: _smsTemplateConfig.RemindTemplateId,
                                              parameters: parameters,
                                              sign: _smsTemplateConfig.Sign,
                                              extend: "", ext: "");

            smsSendLog.SmsSendResult = new SmsSendResult
            {
                ErrorMessage     = result.errMsg,
                ExtensionMessage = result.ext,
                ErrorCode        = result.result,
                Fee = (byte)result.fee,
                Sid = result.sid,
            };
            await _db.SaveChangesAsync();

            return(result.result switch
            {
                0 => Ok(),
                _ => BadRequest(result.errMsg),
            });