public async Task <IActionResult> Get()
        {
            IEnumerable <fw_houseinfo> entityDto = null;
            await Task.Run(() =>
            {
                entityDto = _fwHouseinfoRpt.FindBy(f => f.IsValid);
            });

            var entity        = _mapper.Map <IEnumerable <fw_houseinfo>, IEnumerable <HouseinfoDto> >(entityDto).ToList();
            var houseTypeList = _setHouseTypeRpt.GetAll().ToList();
            var dicList       = _sysDicRpt.GetAll().ToList();

            foreach (var hs in entity)
            {
                var ht = houseTypeList.FirstOrDefault(f => f.Id == hs.HouseType);
                if (ht != null)
                {
                    hs.HouseTypeTxt = ht.TypeName;
                    hs.HouseFee     = ht.AllPrice;
                    hs.PreFee       = ht.PreReceiveFee;
                }

                var dic = dicList.FirstOrDefault(f => f.Id == hs.State);
                if (dic != null)
                {
                    hs.StateTxt = dic.DicName;
                }
            }
            return(new OkObjectResult(entity.OrderBy(f => f.Code)));
        }
        public async Task <IActionResult> Post([FromBody] CheckInOrderDto value)
        {
            //订单信息
            string createBy = string.Empty;
            var    order    = value.YxOrder;

            order.CreatedAt = DateTime.Now;
            order.UpdatedAt = DateTime.Now;
            order.IsValid   = true;
            if (User.Identity is ClaimsIdentity identity)
            {
                createBy = identity.Name ?? "admin";
            }
            order.CreatedBy = createBy;
            order.Status    = "未结账";
            order.OrderNo   = GetOrderNo(order.InType);
            _yxOrderRpt.Add(order);
            //事务处理
            using (var tran = _context.Database.BeginTransaction())
            {
                try
                {
                    _yxOrderRpt.Commit();
                    //订单明细
                    foreach (var orderDetail in value.YxOrderList)
                    {
                        orderDetail.OrderId   = order.Id;
                        orderDetail.CreatedAt = DateTime.Now;
                        orderDetail.UpdatedAt = DateTime.Now;
                        orderDetail.IsValid   = true;
                        orderDetail.CreatedBy = createBy;
                        //计算预计退房时间
                        orderDetail.PreLeaveTime = DateTime.Today.AddDays(orderDetail.Days + 1).AddHours(12);
                        _yxOrderlistRpt.Add(orderDetail);
                        //修改房屋状态
                        var houseInfo = _fwHouseinfoRpt.FindBy(f => f.Code == orderDetail.HouseCode).FirstOrDefault();
                        //新增房态日志
                        _fwStatelogRepository.Add(new fw_statelog()
                        {
                            HouseCode = orderDetail.HouseCode,
                            OldState  = houseInfo.State,
                            NewState  = 1003,
                            OrderNo   = order.OrderNo,
                            CreatedAt = DateTime.Now,
                            UpdatedAt = DateTime.Now,
                            IsValid   = true,
                            CreatedBy = createBy
                        });
                        if (houseInfo != null)
                        {
                            houseInfo.State   = 1003; //住人净
                            houseInfo.OrderNo = order.OrderNo;
                            houseInfo.CusName = value.YxOrderList.Count == 1 && orderDetail.CusName != order.CusName ? order.CusName + "," + orderDetail.CusName : orderDetail.CusName;
                        }
                        //添加到客户资料表中
                        if (!_yxCustomerRpt.Exist(f => f.IDCardNo == order.IdCard))
                        {
                            var customer = new yx_customer
                            {
                                CustomerName = orderDetail.CusName,
                                IDCardNo     = orderDetail.IdCard,
                                Mobile       = order.CusPhone,
                                IsValid      = true,
                                CreatedBy    = createBy,
                                CreatedAt    = DateTime.Now,
                                UpdatedAt    = DateTime.Now
                            };
                            _yxCustomerRpt.Add(customer);
                        }
                    }

                    if (order.PayType == 1)
                    {
                        //预授权支付
                        _cwPreauthRepository.Add(new cw_preauth()
                        {
                            HouseCode = value.YxOrderList.First().HouseCode,
                            CusName   = order.CusName,
                            AuthNo    = order.BillNo,
                            Amount    = order.HouseFee,
                            OrderNo   = order.OrderNo,
                            Remark    = order.Remark,
                            CreatedBy = order.CreatedBy,
                            CreatedAt = DateTime.Now,
                            IsValid   = true
                        });
                        _cwPreauthRepository.Commit();
                    }
                    else
                    {
                        //预定金
                        _cwPrefeeRepository.Add(new cw_prefee()
                        {
                            HouseCode = value.YxOrderList.First().HouseCode,
                            CusName   = order.CusName,
                            PayType   = order.PayType,
                            Amount    = order.HouseFee,
                            OrderNo   = order.OrderNo,
                            Remark    = order.Remark,
                            CreatedBy = order.CreatedBy,
                            CreatedAt = DateTime.Now,
                            IsValid   = true
                        });
                        _cwPrefeeRepository.Commit();
                    }

                    _yxCustomerRpt.Commit();
                    _fwStatelogRepository.Commit();
                    _fwHouseinfoRpt.Commit();
                    _yxOrderlistRpt.Commit();
                    tran.Commit();
                }
                catch (Exception e)
                {
                    tran.Rollback();
                    return(BadRequest(e.Message));
                }
            }

            return(new OkObjectResult(value));
        }