Example #1
0
        public async Task <IActionResult> Pdf(string id)
        {
            Guid idToken;

            if (Guid.TryParse(id, out idToken) && idToken != Guid.Empty)
            {
                var token = await _tokenService.GetValidToken(idToken, TokenType.OrderInvoicePdfAdminGenerateRequest);

                if (token != null)
                {
                    int idOrder;
                    if (int.TryParse(token.Data, out idOrder))
                    {
                        var order = await _orderService.SelectAsync(idOrder, true);

                        if (order != null)
                        {
                            OrderInvoiceModel model = await _mapper.ToModelAsync <OrderInvoiceModel>(order);

                            return(View(model));
                        }
                    }
                }
            }
            return(View(null));
        }
Example #2
0
        public async Task <IActionResult> Base(int id)
        {
            var order = await _orderService.SelectAsync(id, true);

            if (order == null)
            {
                return(View(null));
            }

            var token =
                await
                _tokenService.CreateTokenAsync(order.Id.ToString(), TimeSpan.FromMinutes(BaseAppConstants.DEFAULT_TOKEN_EXPIRED_MINUTES),
                                               TokenType.OrderInvoicePdfAdminGenerateRequest);

            if (token == null)
            {
                return(View(null));
            }

            OrderInvoiceModel model = await _mapper.ToModelAsync <OrderInvoiceModel>(order);

            string invoicePageUrl = String.Format(BaseAppConstants.ORDER_INVOICE_PAGE_URL_TEMPLATE, _options.Value.AdminHost,
                                                  token.IdToken.ToString().ToLower());

            model.PDFUrl = String.Format(BaseAppConstants.PDF_URL_GENERATE_ORDER_INVOICE_TEMPLATE, _options.Value.PDFMyUrl.ServiceUrl,
                                         _options.Value.PDFMyUrl.LicenseKey, WebUtility.UrlEncode(invoicePageUrl), order.Id);

            return(View(model));
        }
Example #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="orderL"></param>
 /// <param name="uId"></param>
 /// <returns></returns>
 private void InsertOrderList(OrderListModel orderL, int uId, OrderInvoiceModel invoice, ref long orderId)
 {
     orderId = GetInserScalar(uId);
     if (orderId > 0)
     {
         DbUtil.Master.BeginTransaction();
         try
         {
             //保存订单明细 方法
             foreach (var dtl in orderL.OrdrList)
             {
                 dtl.OrderId = orderId;
                 OrderDtlService.InsertOrderDtl(dtl);
             }
             //保存订单信息
             string sql = $"UPDATE OrderList SET OrderPrice=?orderPrice,OrderPNumber=?orderPNumber,OrderState=?orderState,NameExpress=?nameExpress,ExpressCode=?expressCode,ExpressAmount=?expressAmount," +
                          "OrderAmount=?orderAmount,ReceivingAddress=?receivingAddress,Consignee=?consignee,Telephone=?telephone,CreateTime=?createTime,IsInvoice=?isInvoice,PaymentMethod=?paymentMethod," +
                          "PaymentMethodName=?paymentMethodName,Remarks=?remarks,IsSample=?isSample,Weight=?weight WHERE OrderId=?orderId AND UserId=?userId ";
             Dictionary <string, object> p = new Dictionary <string, object>();
             p["orderPrice"]        = orderL.OrderPrice;
             p["orderPNumber"]      = orderId;
             p["orderState"]        = 0; //未支付
             p["nameExpress"]       = orderL.NameExpress;
             p["expressCode"]       = orderL.ExpressCode;
             p["expressAmount"]     = orderL.ExpressAmount;
             p["orderAmount"]       = orderL.OrderAmount;
             p["receivingAddress"]  = orderL.ReceivingAddress;
             p["consignee"]         = orderL.Consignee;
             p["telephone"]         = orderL.Telephone;
             p["createTime"]        = DateTime.Now;
             p["isInvoice"]         = orderL.IsInvoice;
             p["paymentMethod"]     = orderL.PaymentMethod;
             p["paymentMethodName"] = orderL.PaymentMethodName;
             p["remarks"]           = orderL.Remarks;
             p["orderId"]           = orderId;
             p["userId"]            = uId;
             p["isSample"]          = orderL.IsSample;
             p["weight"]            = orderL.Weight;
             DbUtil.Master.ExecuteNonQuery(sql, p);
             invoice.OrderId      = orderId;
             invoice.OrderPNumber = orderId.ToString();
             if (orderL.IsInvoice == 1)
             {
                 OrderInvoiceService.Instance.InserInvoice(invoice);
             }
             DbUtil.Master.CommitTransaction();
         }
         catch (Exception ex)
         {
             DbUtil.Master.RollbackTransaction();
             LogUtil.Error(ex.Message);
             throw ex;
         }
     }
 }
Example #4
0
        public void InserInvoice(OrderInvoiceModel invoce)
        {
            string sql = $"INSERT OrderInvoice (OrderId,OrderPNumber,InvoicePayable,BusinessName,TaxpayerNumber,BillContactPhone,BillContactEmail,BillContent,InvoiceAmount,UserId)" +
                         " VALUES (?orderId,?orderPNumber,?invoicePayable,?businessName,?taxpayerNumber,?billContactPhone,?billContactEmail,?billContent,?invoiceAmount,?userId)";
            Dictionary <string, object> p = new Dictionary <string, object>();

            p["orderId"]          = invoce.OrderId;
            p["orderPNumber"]     = invoce.OrderPNumber;
            p["invoicePayable"]   = invoce.InvoicePayable;
            p["businessName"]     = invoce.BusinessName;
            p["taxpayerNumber"]   = invoce.TaxpayerNumber;
            p["billContactPhone"] = invoce.BillContactPhone;
            p["billContactEmail"] = invoce.BillContactEmail;
            p["billContent"]      = invoce.BillContent;
            p["invoiceAmount"]    = invoce.InvoiceAmount;
            p["userId"]           = invoce.UserId;
            DbUtil.Master.ExecuteNonQuery(sql, p);
        }
Example #5
0
 protected OrderInvoiceFacade(OrderInvoiceModel model) : base(model)
 {
 }
Example #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="spId"></param>
        /// <param name="spCount"></param>
        /// <param name="token"></param>
        /// <param name="isSC">是否来自于购物车</param>
        /// <returns></returns>
        public string WapPay(string spId, string spCount, string token, int isSC, int cityId, int exId, string exName,
                             string addres, string consignee, string phone, int isInvoice, int payid, string payName, string ramrk,
                             string invoicePayable, string businessName, string taxpayerNumber, string billContactPhone, string billContactEmail, string billContent, int IsSample)
        {
            var user = UserService.CkToken(token);

            if (user != null)
            {
                OrderListModel        orderList = new OrderListModel();
                long                  orderId   = 0;
                var                   idList    = spId.Split(',').Select(x => int.Parse(x)).ToList();
                var                   spcList   = spCount.Split(',').Select(x => int.Parse(x)).ToList();
                List <CommodityModel> comDtl    = new List <CommodityModel>();
                #region 获取基础数据
                if (isSC == 1)
                {
                    //获取购物车信息
                    var comStr = CommodityService.Instance.GetShoppingInId(token, spId);
                    comDtl = JsonUtil.Deserialize <List <CommodityModel> >(comStr);
                }
                else
                {
                    var data = CommodityService.Instance.GetCommodityInfo(Convert.ToInt32(spId));
                    comDtl.Add(JsonUtil.Deserialize <CommodityModel>(data));
                }
                #endregion
                //生成订单
                List <OrderDtlModel> oderDtl = new List <OrderDtlModel>();
                double orderAmount           = 0;
                #region 订单明细
                int weight = 0; //订单重量
                foreach (var cm in comDtl)
                {
                    int           cIndex = idList.FindIndex(o => o == cm.CommodityId);
                    OrderDtlModel dtl    = new OrderDtlModel();
                    dtl.CommodityId        = cm.CommodityId;
                    dtl.CommodityName      = cm.CommodityName;
                    dtl.CommodityGeneral   = cm.CommodityGeneral;
                    dtl.CommodityPrice     = cm.CommodityPrice;
                    dtl.CommodityUnitName  = cm.UnitIdName;
                    dtl.CommoditySpec      = cm.CommoditySpec;
                    dtl.CommodityBrandId   = cm.CommodityBrandId;
                    dtl.CommodityBrandName = cm.BrandName;
                    dtl.CommodityFamilyId  = cm.CommodityFamilyId;
                    dtl.CommodityImg       = cm.CommodityImg;
                    dtl.CommodityIndex     = cm.CommodityIndex;
                    dtl.CommodityCode      = cm.CommodityCode;
                    dtl.CommodityRH        = cm.CommodityRH;
                    dtl.CommodityRM        = cm.CommodityRM;
                    dtl.CommodityFL        = cm.CommodityFL;
                    dtl.UserId             = user.Uid;
                    dtl.CommNumber         = spcList[cIndex];
                    dtl.OriginalTotalPrice = spcList[cIndex] * (cm.CommodityPrice * cm.CommoditySpec);
                    orderAmount            = orderAmount + spcList[cIndex] * (cm.CommodityPrice * cm.CommoditySpec);
                    weight = weight + cm.CommoditySpec * dtl.CommNumber;
                    oderDtl.Add(dtl);
                }
                #endregion
                orderList.OrdrList   = oderDtl;
                orderList.OrderPrice = orderAmount;
                orderList.IsSample   = IsSample;
                //计算运费
                string cityStr  = CityExLogisticsAmountService.Instance.GetCityExLogisticsAmount(cityId, exId);
                var    cityData = JsonUtil.Deserialize <CityExLogisticsAmountModel>(cityStr);
                if (IsSample == 1)
                {
                    orderList.OrderAmount = 0;
                    orderList.NameExpress = string.Empty;
                }
                else
                {
                    orderList.Weight        = weight;
                    orderList.ExpressAmount = cityData.Amount * weight;
                    orderList.OrderAmount   = orderList.OrderPrice + orderList.ExpressAmount;
                    orderList.NameExpress   = exName;
                }
                orderList.ReceivingAddress  = addres;
                orderList.Consignee         = consignee;
                orderList.Telephone         = phone;
                orderList.IsInvoice         = isInvoice;
                orderList.PaymentMethod     = payid;
                orderList.PaymentMethodName = payName;
                orderList.Remarks           = ramrk;
                //保存发票抬头信息
                #region 发票
                OrderInvoiceModel invoice = new OrderInvoiceModel();
                invoice.InvoicePayable   = invoicePayable;
                invoice.BusinessName     = businessName;
                invoice.TaxpayerNumber   = taxpayerNumber;
                invoice.BillContactPhone = billContactPhone;
                invoice.BillContactEmail = billContactEmail;
                invoice.BillContent      = billContent;
                invoice.UserId           = user.Uid;
                invoice.InvoiceAmount    = orderList.OrderAmount;
                #endregion
                InsertOrderList(orderList, user.Uid, invoice, ref orderId);
                if (isSC == 1)
                {
                    //删除购物车
                    CommodityService.Instance.DeleteShopping(spId, token);
                }
                string key     = CryptoUtil.GetRandomAesKey();
                string wapSpId = CryptoUtil.AesEncryptHex(orderId.ToString(), key);
                CacheHelp.Set(wapSpId, DateTimeOffset.Now.AddDays(1), orderId.ToString());
                return(wapPay(orderList, orderId, IsSample, wapSpId));
            }
            else
            {
                return(UserService.ckTokenState());
            }
        }
        /// <summary>
        /// 得到数据列表
        /// <para>返回 OrderInvoiceList</para>
        /// </summary>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">每页行数</param>
        /// <param name="DBwhere">条件</param>
        /// <param name="orderWhere">排序</param>
        /// <returns></returns>
        public OrderInvoiceList GetPage(int pageIndex, int pageSize, string strWhere, string orderWhere)
        {
            OrderInvoiceList dataList = new OrderInvoiceList();

            dataList.PageIndex = pageIndex;
            dataList.PageSize  = pageSize;
            dataList.Data      = new List <OrderInvoiceModel>();
            dataList.PageCount = 0;
            dataList.RowCount  = 0;
            dataList.PageHtml  = "";

            string oidFilter  = string.Empty;
            string originOids = string.Empty;

            string Column = "id,invoiceName,invoiceAddress,invoicePhone,invoiceMoney,o.createDate,o.accId,o.oid,invoiceDesc,invoiceStatus,invoiceRemark,invoiceNo,invoiceOPeratorTime,invoiceOperatorId,invoiceAddressee,invoiceExpress";
            //List<OrderInvoiceModel> Invoiceorigin = GetPage(pageIndex, pageSize, Column, strWhere, orderWhere);

            //foreach (OrderInvoiceModel dr in Invoiceorigin)
            //{
            //    if (dr.oid != 0)
            //    {
            //        originOids += "," + dr.oid.ToString();
            //    }
            //}

            //T_OrderInfoDAL orderDalFilter = new T_OrderInfoDAL();
            //List<dynamic> orderFilter =
            //        orderDalFilter.GetListContainOrderBusiness(
            //            "T_OrderInfo.oid,T_OrderInfo.orderStatus,T_Order_Project.displayName bus_name",
            //            " T_OrderInfo.oid in(" + originOids.Trim(',') + ") and T_OrderInfo.orderStatus=2 ");
            //foreach (dynamic filter in orderFilter)
            //{
            //    oidFilter += "," + filter.oid.ToString();
            //}

            //strWhere += " oid in (" + oidFilter.Trim(',') + ") ";

            List <OrderInvoiceModel> InvoiceDs = GetPage(pageIndex, pageSize, Column, strWhere, orderWhere);

            if (InvoiceDs != null)
            {
                string accids = string.Empty;
                string oids   = string.Empty;
                string opids  = string.Empty;
                foreach (OrderInvoiceModel dr in InvoiceDs)
                {
                    if (dr.accId != 0)
                    {
                        accids += "," + dr.accId.ToString();
                    }
                    if (dr.oid != 0)
                    {
                        oids += "," + dr.oid.ToString();
                    }
                    if (dr.invoiceOperatorId != 0)
                    {
                        opids += "," + dr.invoiceOperatorId.ToString();
                    }
                }

                #region 得到相关 店铺信息

                List <T_Account> AccountDs = new List <T_Account>();
                if (accids.Length > 0)
                {
                    T_AccountDAL accDal = new T_AccountDAL();

                    AccountDs = accDal.GetListByColumn("id,CompanyName,UserRealName", " id in(" + accids.Trim(',') + ") ");
                }
                #endregion
                #region 得到相关  订单信息

                List <dynamic> OrderDs = new List <dynamic>();
                if (oids.Length > 0)
                {
                    T_OrderInfoDAL orderDal = new T_OrderInfoDAL();
                    OrderDs = orderDal.GetListContainOrderBusiness("T_OrderInfo.oid,T_OrderInfo.orderStatus,T_Order_Project.displayName bus_name", " T_OrderInfo.oid in(" + oids.Trim(',') + ") ");
                }
                #endregion
                #region 得到相关 操作人员信息
                List <dynamic> OperDs = new List <dynamic>();
                if (opids.Length > 0)
                {
                    Sys_Manage_UserDAL ManageUserDal = new Sys_Manage_UserDAL();
                    OperDs = ManageUserDal.GetList("Id,UserName", " Id in(" + opids.Trim(',') + ") ");
                }
                #endregion
                foreach (OrderInvoiceModel dr in InvoiceDs)
                {
                    OrderInvoiceModel OIModel = new OrderInvoiceModel();
                    if (dr.id != 0)
                    {
                        OIModel.id = dr.id;
                    }
                    #region 店铺信息
                    if (dr.accId != 0)
                    {
                        OIModel.accId = dr.accId;

                        foreach (T_Account t in AccountDs.Where(x => x.ID == OIModel.accId))
                        {
                            OIModel.CompanyName  = t.CompanyName;
                            OIModel.UserRealName = t.UserRealName;
                        }
                    }
                    #endregion
                    #region 订单信息
                    if (dr.oid != 0)
                    {
                        OIModel.oid = dr.oid;
                        try
                        {
                            foreach (dynamic busRow in OrderDs.Where(x => x.oid == OIModel.oid))
                            {
                                OIModel.bus_name = busRow.bus_name.ToString();
                                if (busRow.orderStatus != null && busRow.orderStatus.ToString() != "")
                                {
                                    OIModel.orderStat = int.Parse(busRow.orderStatus.ToString());
                                }
                                else
                                {
                                    OIModel.orderStat = 0;
                                }
                                OIModel.orderStatName = Enum.GetName(typeof(Model.Enum.OrderEnum.OrderStatus), OIModel.orderStat);
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                    #endregion
                    if (dr.createDate != null)
                    {
                        OIModel.createDate = Convert.ToDateTime(dr.createDate);
                    }
                    if (dr.invoiceMoney != null)
                    {
                        OIModel.invoiceMoney = Convert.ToDecimal(dr.invoiceMoney);
                    }
                    OIModel.invoiceName      = dr.invoiceName;
                    OIModel.invoiceDesc      = dr.invoiceDesc;
                    OIModel.invoicePhone     = dr.invoicePhone;
                    OIModel.invoiceAddress   = dr.invoiceAddress;
                    OIModel.invoiceAddressee = dr.invoiceAddressee;
                    if (dr.invoiceStatus != null)
                    {
                        OIModel.invoiceStatus = dr.invoiceStatus;
                        if (OIModel.invoiceStatus == 1)
                        {
                            OIModel.invoiceStatusName = "已开发票";
                        }
                    }
                    OIModel.invoiceNo     = dr.invoiceNo;
                    OIModel.invoiceRemark = dr.invoiceRemark;
                    if (dr.invoiceOperatorId != 0)
                    {
                        OIModel.invoiceOperatorId = dr.invoiceOperatorId;
                        if (OperDs != null && OperDs.Count > 0)
                        {
                            foreach (dynamic opDr in OperDs.Where(x => x.Id == OIModel.invoiceOperatorId))
                            {
                                OIModel.invoiceOperatorName = opDr.UserName;
                            }
                        }
                    }
                    if (dr.invoiceOPeratorTime != null)
                    {
                        OIModel.invoiceOPeratorTime = Convert.ToDateTime(dr.invoiceOPeratorTime);
                    }

                    dataList.Data.Add(OIModel);
                }
                //总行数
                int count = GetPageCount(strWhere);
                if (count != 0)
                {
                    dataList.RowCount = count;
                }
                if (dataList.RowCount > 0)
                {
                    dataList.PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(dataList.RowCount) / Convert.ToDecimal(dataList.PageSize)));
                }
            }
            return(dataList);
        }