public bool Insert(financialStatements model)
        {
            DynamicParameters paras = new DynamicParameters();

            paras.Add("@Code", model.Code, System.Data.DbType.String);
            paras.Add("@CreateTime", model.CreateTime, System.Data.DbType.String);
            paras.Add("@UserPhone", model.UserPhone, System.Data.DbType.String);
            paras.Add("@UserCreateTime", model.UserCreateTime, System.Data.DbType.String);
            paras.Add("@StoreName", model.StoreName, System.Data.DbType.String);
            paras.Add("@ProductionType", model.ProductionType, System.Data.DbType.String);
            paras.Add("@Cstname", model.Cstname, System.Data.DbType.String);
            paras.Add("@ProductionCode", model.ProductionCode, System.Data.DbType.String);
            paras.Add("@ProductionName", model.ProductionName, System.Data.DbType.String);
            paras.Add("@Iquantity", model.Iquantity, System.Data.DbType.String);
            paras.Add("@Itaxunitprice", model.Itaxunitprice, System.Data.DbType.String);
            paras.Add("@Isum", model.Isum, System.Data.DbType.String);
            paras.Add("@CpersonName", model.CpersonName, System.Data.DbType.String);
            paras.Add("@PayType", model.PayType, System.Data.DbType.String);
            paras.Add("@AmountOfIncome", model.AmountOfIncome, System.Data.DbType.String);
            paras.Add("@DonationAmount", model.DonationAmount, System.Data.DbType.String);
            paras.Add("@CouponUseCode", model.CouponUseCode, System.Data.DbType.String);
            paras.Add("@CouponUseMoney", model.CouponUseMoney, System.Data.DbType.String);
            paras.Add("@GetCouponTime", model.GetCouponTime, System.Data.DbType.String);
            paras.Add("@UseWalletMoney", model.UseWalletMoney, System.Data.DbType.String);
            paras.Add("@Ratio", model.Ratio, System.Data.DbType.String);
            paras.Add("@RecordsOfConsumptionCreateTime", model.RecordsOfConsumptionCreateTime, System.Data.DbType.String);
            paras.Add("@WriteOffUser", model.WriteOffUser, System.Data.DbType.String);
            paras.Add("@ProductionCode1", model.ProductionCode1, System.Data.DbType.String);
            paras.Add("@ProductionName1", model.ProductionName1, System.Data.DbType.String);
            paras.Add("@ExperiencePrice", model.ExperiencePrice, System.Data.DbType.String);
            paras.Add("@Iquantity1", model.Iquantity1, System.Data.DbType.String);
            paras.Add("@RecordsMoney", model.RecordsMoney, System.Data.DbType.String);
            paras.Add("@CouponUseMoney1", model.CouponUseMoney1, System.Data.DbType.String);
            paras.Add("@ActualConsumption", model.ActualConsumption, System.Data.DbType.String);
            paras.Add("@UseWalletMoney1", model.UseWalletMoney1, System.Data.DbType.String);
            paras.Add("@UseWalletAccountPrincipal", model.UseWalletAccountPrincipal, System.Data.DbType.String);
            paras.Add("@FinancialRevenueAccounting", model.FinancialRevenueAccounting, System.Data.DbType.String);
            paras.Add("@Imoney", model.Imoney, System.Data.DbType.String);
            paras.Add("@ProductInfoRate", model.ProductInfoRate, System.Data.DbType.String);
            paras.Add("@Itax", model.Itax, System.Data.DbType.String);
            paras.Add("@GrossProfit", model.GrossProfit, System.Data.DbType.String);
            paras.Add("@OrderNo", model.OrderNo, System.Data.DbType.String);
            string sql = (@"INSERT INTO dbo.financialStatements
           (Code,CreateTime ,UserPhone,UserCreateTime,StoreName ,ProductionType,Cstname ,ProductionCode,ProductionName
           ,Iquantity,Itaxunitprice,Isum,CpersonName,PayType,AmountOfIncome ,DonationAmount
           ,CouponUseCode,CouponUseMoney,GetCouponTime,UseWalletMoney,Ratio,RecordsOfConsumptionCreateTime
           ,WriteOffUser,ProductionCode1,ProductionName1,ExperiencePrice,Iquantity1
           ,RecordsMoney ,CouponUseMoney1 ,ActualConsumption ,UseWalletMoney1,UseWalletAccountPrincipal
           ,FinancialRevenueAccounting,Imoney ,ProductInfoRate ,Itax ,GrossProfit,OrderNo)
                values(@Code,@CreateTime ,@UserPhone,@UserCreateTime,@StoreName ,@ProductionType,@Cstname ,@ProductionCode,@ProductionName
           ,@Iquantity,@Itaxunitprice,@Isum,@CpersonName,@PayType,@AmountOfIncome ,@DonationAmount
           ,@CouponUseCode,@CouponUseMoney,@GetCouponTime,@UseWalletMoney,@Ratio,@RecordsOfConsumptionCreateTime
           ,@WriteOffUser,@ProductionCode1,@ProductionName1,@ExperiencePrice,@Iquantity1
           ,@RecordsMoney ,@CouponUseMoney1 ,@ActualConsumption ,@UseWalletMoney1,@UseWalletAccountPrincipal
           ,@FinancialRevenueAccounting,@Imoney ,@ProductInfoRate ,@Itax ,@GrossProfit,@OrderNo)");

            DapperSqlHelper.ExcuteNonQuery <Coupon>(sql, paras, false);
            return(true);
        }
        /// <summary>
        /// 充值
        /// </summary>
        /// <param name="userCode"></param>
        /// <param name="order"></param>
        /// <param name="payType"></param>
        /// <returns></returns>
        public financialStatements getDataRechargeRecord(string userCode, string typeCode, UseWallet useWallet, string storeCode, decimal?ratio, string payType)
        {
            ICouponService       _couponService      = new CouponService();
            IRechargeTypeService rt                  = new RechargeTypeService();
            IProductInfoService  _productInfoService = new ProductInfoService();
            ICouponTypeService   _couponTypeService  = new CouponTypeService();
            IUseWalletService    _useWalletService   = new UseWalletService();
            IUserStoreService    _userStoreService   = new UserStoreService();
            IStoreService        _storeService       = new StoreService();
            IUserInfo            _userService        = new UserInfo();
            var rechargetype = rt.GetRechargeTypeByCode(typeCode);
            var uw           = _useWalletService.GetUseWalletCountMoney(userCode);

            if (string.IsNullOrEmpty(storeCode))
            {
                var us = _userStoreService.GetUserStorebyUserCode(userCode);
                storeCode = us.MembershipCardStore;
            }
            var s = _storeService.GetStore(storeCode);
            var u = _userService.GetUserByCode(userCode);
            financialStatements fs = new financialStatements();

            fs.Code           = Guid.NewGuid().ToString();
            fs.CreateTime     = DateTime.Now;
            fs.UserPhone      = u?.Phone;
            fs.UserCreateTime = u?.CreateTime;
            fs.StoreName      = s?.StoreName;
            fs.ProductionType = "体验服务";
            fs.Cstname        = "普通销售";
            fs.ProductionCode = rechargetype?.RechargeTypeCode;
            fs.ProductionName = rechargetype?.RechargeTypeName;
            fs.Iquantity      = 1;
            fs.Itaxunitprice  = useWallet?.AccountPrincipal;
            fs.Isum           = useWallet?.AccountPrincipal;
            fs.CpersonName    = "业务员";
            fs.PayType        = payType;
            fs.AmountOfIncome = useWallet?.AccountPrincipal;
            fs.DonationAmount = useWallet?.DonationAmount;
            fs.CouponUseCode  = "";
            fs.CouponUseMoney = 0;
            fs.UseWalletMoney = uw?.TotalAmount + useWallet?.AccountPrincipal + useWallet?.DonationAmount;

            if (ratio != null)
            {
                fs.Ratio = Math.Round(100 - Convert.ToDouble(ratio) * 100, 2).ToString() + '%';
            }

            fs.UseWalletMoney1           = fs?.UseWalletMoney;
            fs.UseWalletAccountPrincipal = uw?.AccountPrincipal + useWallet?.AccountPrincipal;

            fs.ProductInfoRate = "0";
            return(fs);
        }
        public IHttpActionResult WriteOff(string userCode, string orderCode)
        {
            LogHelper.WriteLog("WriteOff userCode" + userCode);
            LogHelper.WriteLog("WriteOff orderCode" + orderCode);
            SimpleResult result = new SimpleResult();
            IRecordsOfConsumptionService _service          = new RecordsOfConsumptionService();
            IWriteOffService             _writeOffServicee = new WriteOffService();
            IOrderService _orderservice = new OrderService();

            try
            {
                if (UserAuthorization)
                {
                    var use = userInfo.GetUserByCode(userCode);
                    if (use != null)
                    {
                        if (_service.IsWriteOffUser(use.Phone))
                        {
                            var order = _orderservice.GetOrderByCode(orderCode);
                            if (order != null && !order.IsWriteOff)
                            {
                                order.IsWriteOff = true;
                                if (_orderservice.UpdateOrder(order) > 0)
                                {
                                    result.Status = Result.SUCCEED;
                                    IFinancialStatementsService _financialStatementsService = new FinancialStatementService();
                                    //写入核销数据到报表中
                                    financialStatements fs = null;
                                    if (string.IsNullOrEmpty(order.WxPrepayId))
                                    {
                                        var recordsOfConsumption = _service.GetRecordsOfConsumptionByOrderCode(orderCode);
                                        fs = _financialStatementsService.getWriteOff(use.UserName, order.UserCode, orderCode, "会员卡", recordsOfConsumption?.RecordsAccountPrincipalMoney);
                                    }
                                    else
                                    {
                                        fs = _financialStatementsService.getWriteOff(use.UserName, order.UserCode, orderCode, "微信", null);
                                    }
                                    LogHelper.WriteLog("financialStatements " + fs.Code);
                                    if (fs != null)
                                    {
                                        _financialStatementsService.Insert(fs);
                                    }
                                }
                                else
                                {
                                    result.Msg    = "订单已经被核销";
                                    result.Status = Result.SYSTEM_ERROR;
                                }
                            }
                            else
                            {
                                result.Msg    = "订单已经被核销";
                                result.Status = Result.SYSTEM_ERROR;
                            }
                        }
                        else
                        {
                            result.Msg    = "您不是核销人员。";
                            result.Status = Result.SYSTEM_ERROR;
                        }
                    }
                    else
                    {
                        result.Msg    = "没有当前用户";
                        result.Status = Result.SYSTEM_ERROR;
                    }
                }
                else
                {
                    result.Status   = Result.FAILURE;
                    result.Resource = ReAccessToken;
                    result.Msg      = TokenMessage;
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog("WriteOff userCode" + userCode + " orderCode" + orderCode, ex);
                result.Status = Result.FAILURE;
                result.Msg    = ex.Message;
            }
            LogHelper.WriteLog("WriteOff result" + Json(result));
            return(Json(result));
        }
        public IHttpActionResult WxPayOrder(string userCode, string orderCode, string prepayid)
        {
            LogHelper.WriteLog("WxPayOrder接口");
            LogHelper.WriteLog("userCode " + userCode);
            LogHelper.WriteLog("orderCode " + orderCode);
            LogHelper.WriteLog("prepayid " + prepayid);

            SimpleResult result = new SimpleResult();
            IRecordsOfConsumptionService _service = new RecordsOfConsumptionService();
            IStoreService  _storeService          = new StoreService();
            ICouponService _couponservice         = new CouponService();

            try
            {
                if (UserAuthorization)
                {
                    using (var scope = new TransactionScope())//创建事务
                    {
                        if (!string.IsNullOrEmpty(prepayid))
                        {
                            IOrderService  _orderService  = new OrderService();
                            ICouponService _couponService = new CouponService();
                            IUserInfo      _userService   = new UserInfo();
                            IStoreService  _Storeservice  = new StoreService();
                            var            now            = DateTime.Now;
                            var            order          = _orderService.GetOrderByCode(orderCode);
                            if (order != null)
                            {
                                var store = _Storeservice.GetStore(order.StoreCode);
                                if (store != null)
                                {
                                    var PayTime = Common.wxPayOrderQuery(prepayid, store.appid.Trim(), store.mchid);
                                    LogHelper.WriteLog("微信支付时间: " + PayTime);
                                    if (ConfigurationManager.AppSettings["isWxpay"] != null && ConfigurationManager.AppSettings["isWxpay"].ToString() == "true")
                                    {
                                        if (!string.IsNullOrEmpty(PayTime))
                                        {
                                            DateTime dt = DateTime.ParseExact(PayTime, "yyyyMMddHHmmss", null);
                                            LogHelper.WriteLog("更新的订单: " + orderCode);
                                            order.PayTime = dt;
                                            _orderService.UpdateOrder(order);
                                            var ss = _couponService.GetCouponByOrderCode(orderCode);
                                            if (ss != null)
                                            {
                                                _couponService.UsedUpdate(ss.CouponUseCode, userCode, orderCode);
                                                LogHelper.WriteLog("更新的钱包和优惠券couponCode: " + ss.CouponUseCode);
                                            }


                                            LogHelper.WriteLog("报表写入数据开始");
                                            IFinancialStatementsService _financialStatementsService = new FinancialStatementService();
                                            LogHelper.WriteLog("报表表数据更新");
                                            financialStatements fs = _financialStatementsService.getData(userCode, order, "微信");
                                            LogHelper.WriteLog("报表表数据更新完成");

                                            _financialStatementsService.Insert(fs);
                                            LogHelper.WriteLog("报表写入数据结束" + fs.Code);
                                            result.Status = Result.SUCCEED;
                                        }
                                        else
                                        {
                                            result.Status = Result.SYSTEM_ERROR;
                                            result.Msg    = "微信支付没有成功";
                                        }
                                    }
                                    else
                                    {
                                        order.PayTime = DateTime.Now;
                                        _orderService.UpdateOrder(order);
                                        var ss = _couponService.GetCouponByOrderCode(orderCode);
                                        if (ss != null)
                                        {
                                            _couponService.UsedUpdate(ss.CouponUseCode, userCode, orderCode);
                                            LogHelper.WriteLog("更新的钱包和优惠券couponCode: " + ss.CouponUseCode);
                                        }


                                        LogHelper.WriteLog("报表写入数据开始");
                                        IFinancialStatementsService _financialStatementsService = new FinancialStatementService();
                                        LogHelper.WriteLog("报表表数据更新");
                                        financialStatements fs = _financialStatementsService.getData(userCode, order, "微信");
                                        LogHelper.WriteLog("报表表数据更新完成");

                                        _financialStatementsService.Insert(fs);
                                        LogHelper.WriteLog("报表写入数据结束" + fs.Code);
                                        result.Status = Result.SUCCEED;
                                    }
                                }
                                else
                                {
                                    result.Status = Result.SYSTEM_ERROR;
                                    result.Msg    = "订单对应的店铺不对";
                                }
                            }
                            else
                            {
                                result.Status = Result.SYSTEM_ERROR;
                                result.Msg    = "订单编码不对";
                            }
                        }
                        scope.Complete();//这是最后提交事务
                    }
                }
                else
                {
                    result.Status   = ResultType;
                    result.Resource = ReAccessToken;
                    result.Msg      = TokenMessage;
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog("WxPayOrder userCode" + userCode + " orderCode" + orderCode + " prepayid " + prepayid, ex);
                result.Status = Result.FAILURE;
                result.Msg    = ex.Message;
                LogHelper.WriteLog("微信支付回掉 " + ex.Message);
                LogHelper.WriteLog("微信支付回掉 " + ex.StackTrace);
            }
            LogHelper.WriteLog("WxPayOrder result" + Json(result));
            return(Json(result));
        }
        public IHttpActionResult PayOrder([FromBody] PayOrderParam param)
        {
            SimpleResult result = new SimpleResult();
            IRecordsOfConsumptionService _service   = new RecordsOfConsumptionService();
            ICouponService      _couponService      = new CouponService();
            IUseWalletService   _useWalletService   = new UseWalletService();
            IStoreService       _stoeservice        = new StoreService();
            IProductInfoService _productInfoService = new ProductInfoService();

            try
            {
                if (UserAuthorization)
                {
                    LogHelper.WriteLog("PayOrder接口");
                    LogHelper.WriteLog("productCode  param.userCode" + param.paytype);
                    LogHelper.WriteLog("productCode param.money " + param.money);
                    LogHelper.WriteLog("productCode param.orderCode" + param.orderCode);
                    LogHelper.WriteLog("productCode param.peopleCount" + param.peopleCount);
                    LogHelper.WriteLog("productCode param.productCode" + param.productCode);
                    LogHelper.WriteLog("productCode param.storeId" + param.storeId);
                    LogHelper.WriteLog("productCode param.userCode " + param.userCode);
                    LogHelper.WriteLog("productCode param.couponCode " + param.couponCode);
                    var isExistProduct = _productInfoService.IsExistProduct(param.productCode);
                    if (!isExistProduct)
                    {
                        result.Status   = Result.SYSTEM_ERROR;
                        result.Msg      = "商品已失效或不存在";
                        result.Resource = null;
                    }
                    if (param.paytype == 0)
                    {
                        LogHelper.WriteLog("会员支付 " + param.paytype);

                        var isPay = true;
                        if (!string.IsNullOrEmpty(param.couponCode))
                        {
                            var n = _couponService.Exist(param.couponCode);
                            if (n == 1)
                            {
                                result.Status   = Result.SYSTEM_ERROR;
                                result.Msg      = "优惠卷不存在";
                                result.Resource = null;
                                isPay           = false;
                            }
                            else if (n == 2)
                            {
                                result.Status   = Result.SYSTEM_ERROR;
                                result.Msg      = "优惠卷已经被使用";
                                result.Resource = null;
                                isPay           = false;
                            }
                        }

                        if (isPay)
                        {
                            if (_useWalletService.ExistMoney(param.userCode, param.money))
                            {
                                var re = _service.PayOrder(param.productCode, param.userCode, param.peopleCount, param.dateTime, param.money, param.storeId, param.orderCode, param.couponCode);
                                result.Resource = "SUCCEED";
                                result.Status   = Result.SUCCEED;
                                LogHelper.WriteLog("result.Status " + Result.SUCCEED);
                            }
                            else
                            {
                                result.Status   = Result.SYSTEM_ERROR;
                                result.Msg      = "账号余额不足";
                                result.Resource = null;
                                LogHelper.WriteLog("result.Status " + Result.SYSTEM_ERROR);
                            }
                        }
                    }
                    else
                    {
                        var isPay = true;
                        if (!string.IsNullOrEmpty(param.couponCode))
                        {
                            var n = _couponService.Exist(param.couponCode);
                            if (n == 1)
                            {
                                result.Status   = Result.SYSTEM_ERROR;
                                result.Msg      = "优惠卷不存在";
                                result.Resource = null;
                                isPay           = false;
                            }
                            else if (n == 2)
                            {
                                result.Status   = Result.SYSTEM_ERROR;
                                result.Msg      = "优惠卷已经被使用";
                                result.Resource = null;
                                isPay           = false;
                            }
                        }
                        if (isPay)
                        {
                            using (var scope = new TransactionScope())//创建事务
                            {
                                LogHelper.WriteLog("微信支付 " + param.userCode);
                                IUserStoreService _userStoreservice = new UserStoreService();
                                var store        = _stoeservice.GetStore(param.storeId);
                                var couponser    = _couponService.GetCouponByCode(param.couponCode);
                                var userStoreser = _userStoreservice.GetUserStorebyUserCodestoreCode(param.userCode, param.storeId);
                                if (userStoreser != null)
                                {
                                    if (param.money != 0)
                                    {
                                        //生成微信预支付订单
                                        var wxprepay = Common.wxPayOrderSomething(userStoreser.OpenID, param.money.ToString(), couponser?.CouponTypeName, store);
                                        if (wxprepay != null)
                                        {
                                            var order = _service.WxPayOrder(param.productCode, param.userCode, param.peopleCount, param.dateTime, param.money, wxprepay.prepayid, param.storeId, param.orderCode, param.couponCode);
                                            if (!string.IsNullOrEmpty(param.couponCode))
                                            {
                                                _couponService.UsedUpdate(param.couponCode, param.userCode, order.OrderCode);
                                            }
                                            WxOrder wxorder = new WxOrder();
                                            wxorder.orderCode    = order.OrderCode;
                                            wxorder.wxJsApiParam = wxprepay.wxJsApiParam;
                                            wxorder.prepayid     = wxprepay.prepayid;
                                            wxorder.IsWxPay      = true;
                                            result.Resource      = wxorder;
                                            result.Status        = Result.SUCCEED;
                                        }
                                        else
                                        {
                                            result.Msg    = "微信下单失败,重新提交订单";
                                            result.Status = Result.SYSTEM_ERROR;
                                        }
                                    }
                                    else
                                    {
                                        var order = _service.WxPayNoMoneyOrder(param.productCode, param.userCode, param.peopleCount, param.dateTime, param.money, null, param.couponCode);
                                        _couponService.UsedUpdate(param.couponCode, param.userCode, order.OrderCode);
                                        LogHelper.WriteLog("更新的钱包和优惠券couponCode: " + param.couponCode);

                                        LogHelper.WriteLog("报表写入数据开始");
                                        IFinancialStatementsService _financialStatementsService = new FinancialStatementService();
                                        LogHelper.WriteLog("报表表数据更新");
                                        financialStatements fs = _financialStatementsService.getData(param.userCode, order, "微信");
                                        LogHelper.WriteLog("报表表数据更新完成");

                                        _financialStatementsService.Insert(fs);
                                        LogHelper.WriteLog("报表写入数据结束" + fs.Code);
                                        WxOrder wxorder = new WxOrder();
                                        wxorder.orderCode = order.OrderCode;
                                        result.Resource   = "SUCCEED";
                                        result.Status     = Result.SUCCEED;
                                    }
                                }
                                else
                                {
                                    result.Resource = "";
                                    result.Status   = Result.SYSTEM_ERROR;
                                }
                                scope.Complete();//这是最后提交事务
                            }
                        }
                    }
                }
                else
                {
                    result.Status   = ResultType;
                    result.Resource = ReAccessToken;
                    result.Msg      = TokenMessage;
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog("WxPayOrder PayOrder ", ex);
                result.Status = Result.FAILURE;
                result.Msg    = ex.Message;

                LogHelper.WriteLog("微信支付", ex);
            }
            LogHelper.WriteLog("PayOrder result" + Json(result));
            return(Json(result));
        }
示例#6
0
        public IHttpActionResult GetOrderList(string userCode)
        {
            LogHelper.WriteLog("GetOrderList userCode" + userCode);
            SimpleResult      result            = new SimpleResult();
            IOrderService     _service          = new OrderService();
            IUserStoreService _userStoreService = new UserStoreService();
            IStoreService     _Storeservice     = new StoreService();

            try
            {
                if (UserAuthorization)
                {
                    var list      = _service.GetOrderList(userCode);
                    var userSotre = _userStoreService.GetUserStorebyUserCode(userCode);
                    var store     = _Storeservice.GetStore(userSotre.MembershipCardStore);
                    if (store != null)
                    {
                        using (var scope = new TransactionScope())//创建事务
                        {
                            foreach (var item in list)
                            {
                                if (!string.IsNullOrEmpty(item.WxPrepayId) && item.PayTime == null)
                                {
                                    var PayTime = Common.wxPayOrderQuery(item.WxPrepayId, store.appid.Trim(), store.mchid);
                                    if (!string.IsNullOrEmpty(PayTime))
                                    {
                                        LogHelper.WriteLog("GetOrderList PayTime" + PayTime);
                                        DateTime dt = DateTime.ParseExact(PayTime, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
                                        item.PayTime = dt;
                                        _service.UpdateOrder(item);

                                        LogHelper.WriteLog("报表写入数据开始");
                                        IFinancialStatementsService _financialStatementsService = new FinancialStatementService();
                                        LogHelper.WriteLog("报表表数据更新");
                                        financialStatements fs = _financialStatementsService.getData(userCode, item, "微信");

                                        LogHelper.WriteLog("报表表数据更新完成");

                                        _financialStatementsService.Insert(fs);
                                        LogHelper.WriteLog("报表写入数据结束" + fs.Code);
                                    }
                                }
                            }
                            scope.Complete();//这是最后提交事务
                        }
                    }
                    list            = list.OrderByDescending(t => t.CreateTime)?.ToList();
                    result.Resource = list;
                    result.Status   = Result.SUCCEED;
                }
                else
                {
                    result.Status   = ResultType;
                    result.Resource = ReAccessToken;
                    result.Msg      = TokenMessage;
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog("GetOrderList userCode" + userCode, ex);
                result.Status = Result.FAILURE;
                result.Msg    = ex.Message;
            }
            LogHelper.WriteLog("GetOrderList result" + Json(result));
            return(Json(result));
        }
        public string  PayOrder(string productCode, string userCode, string peopleCount, DateTime dateTime, decimal money, string storeId, string orderCode = "", string couponCode = "")
        {
            string msg = "SUCCEED";
            IProductInfoService          _productInfoService = new ProductInfoService();
            DateTime                     now                         = DateTime.Now;
            ICouponService               _couponService              = new CouponService();
            IOrderService                _orderService               = new OrderService();
            IUserInfo                    _userService                = new UserInfo();
            IStoreService                _storeService               = new StoreService();
            IUserStoreService            _userStoreService           = new UserStoreService();
            IRecordsOfConsumptionService _recordsOfConsumption       = new RecordsOfConsumptionService();
            IUseWalletService            _useWalletService           = new UseWalletService();
            IFinancialStatementsService  _financialStatementsService = new FinancialStatementService();
            ICouponTypeService           _couponTypeService          = new CouponTypeService();
            var   u  = _userService.GetUserByCode(userCode);
            var   p  = _productInfoService.GetProductInfo(productCode);
            var   s  = _storeService.GetStore(storeId);
            var   uw = _useWalletService.GetUseWalletCountMoney(userCode);
            var   accountPrincipal = _useWalletService.GetUseAccountPrincipalByUserCode(userCode);
            Order order            = new Order();

            order.Money = money;
            int ss = 0;

            if (int.TryParse(peopleCount, out ss))
            {
                order.Number = ss;
            }
            order.PayTime               = now;
            order.StoreCode             = storeId;
            order.UserCode              = userCode;
            order.ProductCode           = productCode;
            order.CreateTime            = now;
            order.ExperienceVoucherCode = couponCode;
            order.AppointmentTime       = dateTime;
            order.WxPrepayId            = string.Empty;
            financialStatements fs = _financialStatementsService.getData(userCode, order, "会员卡");

            using (var scope = new TransactionScope())//创建事务
            {
                if (!string.IsNullOrEmpty(orderCode))
                {
                    var temporder = _orderService.GetOrderByCode(orderCode);
                    if (temporder != null && temporder.UserCode == userCode)
                    {
                        order.OrderCode  = temporder.OrderCode;
                        order.CreateTime = temporder.CreateTime;
                        order.OrderNO    = temporder.OrderNO;
                        _orderService.UpdateOrder(order);
                        msg = temporder.OrderCode;
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(order.OrderCode))
                        {
                            order.OrderCode = Guid.NewGuid().ToString();
                            order.OrderNO   = WxPayApi.GenerateOutTradeNo().ToString();
                            orderCode       = order.OrderCode;
                        }
                        msg = _orderService.InsertOrder(order);
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(order.OrderCode))
                    {
                        order.OrderCode = Guid.NewGuid().ToString();
                        order.OrderNO   = WxPayApi.GenerateOutTradeNo().ToString();
                        orderCode       = order.OrderCode;
                    }
                    msg = _orderService.InsertOrder(order);
                }
                fs.OrderNo = order?.OrderNO;
                if (money == 0)
                {
                    LogHelper.WriteLog("会员支付0元 " + money);
                    LogHelper.WriteLog("couponCode " + couponCode);
                    _couponService.UsedUpdate(couponCode, userCode, orderCode);

                    LogHelper.WriteLog("financialStatements " + fs.Code);

                    _financialStatementsService.Insert(fs);
                }
                else
                {
                    LogHelper.WriteLog("couponCode " + couponCode);
                    _couponService.UsedUpdate(couponCode, userCode, orderCode);
                    LogHelper.WriteLog("会员支付金额 " + money);
                    decimal?recordsaccountPrincipalTemp = 0m;
                    _useWalletService.UpdateData(userCode, money, orderCode, out recordsaccountPrincipalTemp);
                    LogHelper.WriteLog("会员支付金额 accountPrincipal " + accountPrincipal);
                    LogHelper.WriteLog("会员支付金额 aecordsdonationAmountTemp " + recordsaccountPrincipalTemp);
                    fs.UseWalletAccountPrincipal = accountPrincipal - recordsaccountPrincipalTemp;
                    LogHelper.WriteLog("financialStatements " + fs.Code);

                    _financialStatementsService.Insert(fs);
                }


                scope.Complete();//这是最后提交事务
            }
            return(msg);
        }
        /// <summary>
        /// 购买获取报表的实体
        /// </summary>
        /// <param name="userCode"></param>
        /// <param name="order"></param>
        /// <param name="payType"></param>
        /// <returns></returns>
        public financialStatements getData(string userCode, Order order, string payType)
        {
            ICouponService      _couponService      = new CouponService();
            IProductInfoService _productInfoService = new ProductInfoService();
            ICouponTypeService  _couponTypeService  = new CouponTypeService();
            IUseWalletService   _useWalletService   = new UseWalletService();
            IStoreService       _storeService       = new StoreService();
            IUserInfo           _userService        = new UserInfo();
            var uw = _useWalletService.GetUseWalletCountMoney(userCode);
            var s  = _storeService.GetStore(order.StoreCode);
            var p  = _productInfoService.GetProductInfo(order.ProductCode);
            var u  = _userService.GetUserByCode(userCode);
            financialStatements fs = new financialStatements();

            fs.Code           = Guid.NewGuid().ToString();
            fs.CreateTime     = order.CreateTime;
            fs.UserPhone      = u?.Phone;
            fs.UserCreateTime = u?.CreateTime;
            fs.StoreName      = s?.StoreName;
            fs.OrderNo        = order.OrderNO;
            switch (p.Type)
            {
            case "1":
                fs.ProductionType = "体验服务"; break;

            case "2":
                fs.ProductionType = "硬件产品"; break;

            case "3":
                fs.ProductionType = "水吧服务"; break;

            case "4":
                fs.ProductionType = "衍生品"; break;

            case "5":
                fs.ProductionType = "配件"; break;
            }
            fs.Cstname        = "普通销售";
            fs.ProductionCode = p.ProductCode;
            fs.ProductionName = p.ProductName;
            fs.Iquantity      = order.Number;
            fs.Itaxunitprice  = p.ExperiencePrice;
            if (payType.Equals("微信"))
            {
                fs.Isum = order.Money;
            }
            else
            {
                fs.Isum = p.ExperiencePrice * order.Number;
            }
            fs.CpersonName    = p.CreatorName;
            fs.PayType        = payType;
            fs.AmountOfIncome = order.Money;
            fs.DonationAmount = 0;
            fs.CouponUseCode  = order.ExperienceVoucherCode;
            if (!string.IsNullOrEmpty(order.ExperienceVoucherCode))
            {
                var coupon      = _couponService.GetCouponByCode(order.ExperienceVoucherCode);
                var couponMoney = _couponTypeService.GetCouponTypeByCode(coupon?.CouponTypeCode);
                if (couponMoney != null)
                {
                    fs.CouponUseMoney = couponMoney.Money;
                }
            }
            fs.GetCouponTime = order.CreateTime;
            if (payType.Equals("微信"))
            {
                fs.UseWalletMoney = order.Money;
                fs.Ratio          = "100%";
            }
            else
            {
                fs.UseWalletMoney            = uw.TotalAmount;
                fs.UseWalletMoney1           = fs.UseWalletMoney;
                fs.UseWalletAccountPrincipal = uw.AccountPrincipal;
                if (!string.IsNullOrEmpty(uw.Ratio))
                {
                    fs.Ratio = Math.Round(100 - Convert.ToDouble(uw.Ratio) * 100, 2).ToString() + '%';
                }
                fs.UseWalletMoney            = uw.TotalAmount - order.Money;
                fs.UseWalletAccountPrincipal = uw.AccountPrincipal - order.Money * (1 - Convert.ToDecimal(uw.Ratio));
                if (fs.UseWalletMoney != 0)
                {
                    if (!string.IsNullOrEmpty(uw.Ratio))
                    {
                        fs.Ratio = Math.Round(100 - Convert.ToDouble(uw.Ratio) * 100, 2).ToString() + '%';
                    }
                    else
                    {
                        fs.Ratio = "100%";
                    }
                }
                else
                {
                    fs.Ratio = "100%";
                }
                fs.UseWalletMoney1 = fs.UseWalletMoney;
            }

            fs.ProductInfoRate = p.Rate + "%";
            return(fs);
        }
        /// <summary>
        /// 核销
        /// </summary>
        /// <param name="userCode"></param>
        /// <param name="order"></param>
        /// <param name="payType"></param>
        /// <returns></returns>
        public financialStatements getWriteOff(string wfuserName, string userCode, string orderCode, string payType, decimal?RecordsAccountPrincipalMoney)
        {
            var                 dateTime            = DateTime.Now;
            ICouponService      _couponService      = new CouponService();
            IProductInfoService _productInfoService = new ProductInfoService();
            ICouponTypeService  _couponTypeService  = new CouponTypeService();
            IUseWalletService   _useWalletService   = new UseWalletService();
            IOrderService       _orderService       = new OrderService();
            IStoreService       _storeService       = new StoreService();
            IUserInfo           _userService        = new UserInfo();
            var                 order = _orderService.GetOrderByCode(orderCode);
            var                 uw    = _useWalletService.GetUseWalletCountMoneyWf(userCode);
            var                 s     = _storeService.GetStore(order.StoreCode);
            var                 p     = _productInfoService.GetProductInfo(order.ProductCode);
            var                 u     = _userService.GetUserByCode(userCode);
            financialStatements fs    = new financialStatements();

            fs.OrderNo        = order?.OrderNO;
            fs.Code           = Guid.NewGuid().ToString();
            fs.CreateTime     = dateTime;
            fs.UserPhone      = u?.Phone;
            fs.UserCreateTime = u?.CreateTime;
            fs.StoreName      = s?.StoreName;
            switch (p.Type)
            {
            case "1":
                fs.ProductionType = "体验服务"; break;

            case "2":
                fs.ProductionType = "硬件产品"; break;

            case "3":
                fs.ProductionType = "水吧服务"; break;

            case "4":
                fs.ProductionType = "衍生品"; break;

            case "5":
                fs.ProductionType = "配件"; break;
            }
            fs.Cstname        = "普通销售";
            fs.ProductionCode = "";
            fs.ProductionName = "";
            fs.Iquantity      = 0;
            fs.Itaxunitprice  = 0;
            fs.Isum           = 0;
            fs.CpersonName    = p.CreatorName;
            fs.PayType        = payType;
            fs.AmountOfIncome = 0;
            fs.DonationAmount = 0;
            fs.CouponUseCode  = "";
            fs.CouponUseMoney = 0;
            fs.GetCouponTime  = null;
            if (payType.Equals("微信"))
            {
                fs.UseWalletMoney = order.Money;
                fs.Ratio          = "100%";
            }
            else
            {
                fs.UseWalletMoney            = uw.TotalAmount;
                fs.UseWalletMoney1           = fs.UseWalletMoney;
                fs.UseWalletAccountPrincipal = uw.AccountPrincipal;
                if (!string.IsNullOrEmpty(uw.Ratio))
                {
                    fs.Ratio = Math.Round(100 - Convert.ToDouble(uw.Ratio) * 100, 2).ToString() + '%';
                }
            }
            fs.RecordsOfConsumptionCreateTime = dateTime;
            fs.WriteOffUser    = wfuserName;
            fs.ProductionCode1 = p.ProductCode;
            fs.ProductionName1 = p.ProductName;
            fs.ExperiencePrice = p.ExperiencePrice;
            fs.Iquantity1      = order.Number;
            fs.RecordsMoney    = p.ExperiencePrice * order.Number;
            if (!string.IsNullOrEmpty(order.ExperienceVoucherCode))
            {
                var coupon      = _couponService.GetCouponByCode(order.ExperienceVoucherCode);
                var couponMoney = _couponTypeService.GetCouponTypeByCode(coupon?.CouponTypeCode);
                if (couponMoney != null)
                {
                    fs.CouponUseMoney1   = couponMoney.Money;
                    fs.ActualConsumption = fs.RecordsMoney - fs.CouponUseMoney1;
                    if (fs.ActualConsumption < 0m)
                    {
                        fs.ActualConsumption = 0m;
                    }
                }
            }
            else
            {
                fs.ActualConsumption = fs.RecordsMoney;
            }

            if (payType.Equals("微信"))
            {
                fs.FinancialRevenueAccounting = fs.ActualConsumption;
            }
            else
            {
                fs.FinancialRevenueAccounting = RecordsAccountPrincipalMoney;
            }
            fs.Imoney          = fs.FinancialRevenueAccounting / (Convert.ToDecimal((Convert.ToDouble(p.Rate)) * 0.01) + 1);
            fs.ProductInfoRate = p.Rate + "%";
            fs.Itax            = fs.Imoney * Convert.ToDecimal((Convert.ToDouble(p.Rate)) * 0.01);
            fs.GrossProfit     = fs.Imoney;
            return(fs);
        }