/// <summary> /// 创建公共订单部分 /// </summary> /// <param name="order">公共订单信息</param> /// <returns></returns> private PUB_ORDERS_COMMON CreateOrderCommon(OrderItem orderitem, dynamic groupDB) { dynamic commonorder = new PUB_ORDERS_COMMON(); commonorder.ORDER_ID = OrderCodeGen.GetOrderId(); commonorder.ORDER_GROUP_ID = groupDB.ORDER_GROUP_ID; commonorder.IS_DELETE = (Int16)0; //是否删除:未删除:0,已删除:1 commonorder.IS_CREDIT = (Int16)groupDB.IS_CREDIT; //订单类别: 0:原生订单;1:信用订单 commonorder.ORDER_STATUS = (Int16)0; //订单状态:待处理=0,已通过审核=1 ,未通过审核=20,等待备货=4,等待买家确认收货=5 ,交易关闭=10(系统自动),客户作废=11,客户拒收=12,异常订单=13, 无人签收=3, 客户拒收=12, 已签收=2, 已完成=9, 订单作废=18, 处理中=19 commonorder.SHIPPING_STATUS = (Int16)0; //发货状态:未发货=0,部分发货=1,已发货=2 // commonorder.REFUND_MONEY_STATUS = "";//仅退款状态:退款协议等待商家确认=0,商家不同意协议=1, 商家同意退款=2,商家同意部分退款=3,客服介入=6,退款关闭=7,退款成功=8,商家准备退款=9, 买家同意取消退款申请=10 // commonorder.REFUND_GOODSMONEY_STATUS = "";//退货退款状态:退货退款协议等待商家确认=0、商家不同意协议=1、等待买家退货=2、买家已发货等待商家确认=3、商家确认收货拒绝退款=4、商家确认收货准备退款=5、客服介入=6、退货退款关闭=7、退款成功=8、商家准备退款=9、等待买家发货=10、买家同意取消退款退货=11 // commonorder.REFUND_CHANGGOODS_STATUS = "";//换货状态:换货协议等待商家确认=0、商家不同意协议=1、换货处理中=2、客服介入=6、换货关闭=7、换货成功=8、买家同意取消换货=9、等待买家发货=10、换货处理中=11 // commonorder.REFUND_REPAIR_STATUS = "";//维修状态:维修协议等待商家确认=0、商家不同意协议=1、维修处理中=2、客服介入=6、维修关闭=7、维修成功=8、买家同意取消返修=9、等待买家发货=10 // commonorder.TRANSFOR_STATUS = "";//分配状态:待转发=0;已转发=1;驳回=2;回收=3 commonorder.ORDER_FROM = (Int16)orderitem.OrderFrom; //订单来源:商城=0,ETM=1,进销存=2,B2C=3,APP=4 commonorder.ORDER_TYPE = (Int16)this.OrderType; //订单类型:商城订单=0,彩票订单=1,机票订单=2,报刊订单=3,充值订单=4,火车票订单=5,交通违章订单=6,景点门票订单=7,旅游酒店订单=8,汽车票订单=9,就医助手订单=10,幸运大转盘=11,酒店预订=12,东莞通=13,信用卡=14,银行转账=15,水费订单=16 ,电费订单=17,煤气费订单=18,流量充值=19,电影票订单=20 commonorder.ORDER_CLASSIFY = (Int16)this.GetOrderClassify(orderitem); #region 设置产品信息 var productinfo = this.GetProductInfo(orderitem); if (productinfo == null) { throw new Exception("产品信息为空,无法创建订单!"); } commonorder.ITEM_TYPE = (Int16)productinfo.ItemType; //实体商品标志:实体商品=1,虚拟商品=0 // commonorder.OPERATE_STATUS = "";//操作状态:用与虚拟订单类的扩展 commonorder.PRODUCT_ID = productinfo.ProductID; //货品ID if (string.IsNullOrWhiteSpace(productinfo.ProductName)) { throw new Exception("订单的货品ProductName名称不能为空!"); } commonorder.PRODUCT_NAME = productinfo.ProductName; //货品名称 commonorder.PRODUCT_PRICE = productinfo.ProductPrice; //货品价格 commonorder.GOODS_ID = productinfo.GoodsID; //商品ID if (string.IsNullOrWhiteSpace(productinfo.GoodsName)) { throw new Exception("订单的商品GoodsName名称不能为空!"); } commonorder.GOODS_NAME = productinfo.GoodsName;; //商品名称 commonorder.GOODSCATEGORYSET_ID = productinfo.GoodsCategroySetID; //商品类目ID commonorder.BRAND_NAME = productinfo.BrandName; //品牌名称 commonorder.IMGURL = productinfo.ImgUrl; //商品图片URl commonorder.PRODUCT_DESCRIPTION = this.GenerateProductDescription(orderitem); //商品规格描述 #endregion if (orderitem.Quantity == 0) { throw new Exception("不能添加数量为零的订单项!"); } commonorder.PRODUCT_QUANTITY = orderitem.Quantity; //货品总数 commonorder.TOTAL_AMOUNT = orderitem.TotalAmount; //订单金额 commonorder.PAYMENT_STATUS = (Int16)0; //支付状态:未支付=0,部分支付=1,已支付=2,部分退款=3,全额退款=4,联合支付=5,无需支付=6 // commonorder.PAYMENT_DATE = "";//支付时间 commonorder.ORDER_ETM = orderitem.OrderETMID; //下订单时ETM机编号 // commonorder.PAY_ETM = "";//订单支付时ETM机编号 commonorder.MEMBER_ID = orderitem.MemberId; //订单购买会员ID commonorder.CREATOR = orderitem.MemberName; //下单会员名称 commonorder.CREATOR_IP = orderitem.CreateIP; //下单会员IP地址 commonorder.CREATE_DATE = groupDB.ORDER_DATE; //创建时间 commonorder.MODIFY_DATE = groupDB.ORDER_DATE; //修改时间 var storeinfo = this.GetStoreInfo(orderitem); if (string.IsNullOrWhiteSpace(storeinfo.StoreId)) { throw new Exception("商家编号不能为空。"); } commonorder.STORE_ID = storeinfo.StoreId; //商家ID commonorder.STORE_NAME = storeinfo.StoreName; //商家名称 // commonorder.DELIVERY_SN = "";//物流编号 // commonorder.DELIVERY_NAME = "";//物流名称 var deliveryInfo = this.GetDeliveryInfo(orderitem); if (deliveryInfo != null) { commonorder.SHIP_PROVINCES = deliveryInfo.ShipProvince; //收货省 commonorder.SHIP_CITY = deliveryInfo.ShipCity; //收货市 commonorder.SHIP_REGION = deliveryInfo.ShipRegion; //收货区 commonorder.SHIP_ADDR = deliveryInfo.ShipAddress; //收货详细地址 //commonorder.VERIFY_DELIVERY_DATE = "";//订单确认完成时间 commonorder.DELIVERYTYPE_ID = deliveryInfo.DeliveryTypeId; //配送方式ID commonorder.DELIVERYTYPENAME = deliveryInfo.DeliveryTypeName; //配送方式名称 } //commonorder.ISCOMMENTED = "";//该订单是否已评价(-1:订单交易完成但没评价 0:买家已评价 1:双方已评价 -8:无) commonorder.TOTAL_COST = 0; //订单总成本,默认值为0 commonorder.ALLOCATION_STATUS = (Int16)0; //分润标志,0:未分,1:待分,2:已分 return(commonorder); }
/// <summary> /// 创建订单组列表 /// </summary> /// <param name="orders">订单明细项</param> /// <returns>订单组实体表列</returns> private List <PUB_ORDERS_GROUP> CreateOrderGroupList(List <OrderItem> orderItems) { //TODO:: will be remove //java 主订单服务同步 if (orderItems.Count == 0) { throw new Exception("不存在订单明细项(订单项为0),无法创建订单"); } var result = new List <PUB_ORDERS_GROUP>(); //为方便取得本次业务各订单的会员和ETM等公共信息 var orderFirst = orderItems.FirstOrDefault().OrderCommon; //按店铺分一个订单组, 对应一个java订单 var orderList = new Dictionary <OrderItem, List <OrderItem> >(); orderItems.Select(o => o.OrderCommon.StoreInfo.StoreId).Distinct().ToList().ForEach(storeId => { //某一店铺的订单明细 var storeItems = orderItems.Where(o => o.OrderCommon.StoreInfo.StoreId == storeId).ToList(); //单头,明细 orderList.Add(storeItems[0], storeItems); }); if (OrderType > 0 && orderList.Count > 1) { throw new Exception("便民只能一次创建一个订单组"); } //接收java接口返回的订单号列表 var javaOrderIds = new Dictionary <string, string>(); //if (!string.IsNullOrWhiteSpace(orderFirst.OrderETMID)) //{ // orderFirst.OrderFrom = 1; //} //判断是否来源于ETM下单 var isFromETM = orderFirst.OrderFrom == 1; //处理同步 if (SyncToJava && (isFromETM || this.OrderType == 2 || this.OrderType == 16 || this.OrderType == 17 || this.OrderType == 18 || this.OrderType == 21 || this.OrderType == 6)) { //订单同步处理器 var orderManager = new OrderManager(); //接收java接口的返回结果 CreateOrderResponse createOrderResponse = null; //ETM库的商城订单类型OrderType=0;便民订单类型OrderType=n if (OrderType != 0) { try { _logger.Info("开始向Java同步订单!"); // java接口要接收的"订单"数据结构(便民) OrderInfo javaOrder = MapOrderForJave(orderItems); // 提交到java接口 createOrderResponse = orderManager.CreateOrder(javaOrder); javaOrderIds.Add(javaOrder.storeId, createOrderResponse.dataMap.orderId); } catch (Exception exception) { _logger.Error("创建订单同步到JAVA失败", exception); throw exception; } } else { MallOrderInfos javaOrders = new MallOrderInfos() { orderList = new MallOrderInfo[] { } }; javaOrders.memberId = orderFirst.MemberId.ToLower() == "etong_common_user" ? null : orderFirst.MemberId; //为方便组织出javaOrders.orderList var javaOrderList = new List <MallOrderInfo>(); foreach (var order in orderList) { //java接口要接收的"订单"数据结构(商城) MallOrderInfo javaOrder = MapOrderForJave(order.Value); //java接口要接收的"订单明细"数据结构 var javaOrderItems = new List <CreateOrderMallOrderitemlist>(); order.Value.ForEach(item => { javaOrderItems.Add(MapOrderItemForJava(item)); }); //java接口要接收的"订单"数据结构 javaOrder.orderItemList = javaOrderItems.ToArray(); //记住java接口要接收的"订单列表" javaOrderList.Add(javaOrder); } //java接口要接收的"订单列表"数据结构 javaOrders.orderList = javaOrderList.ToArray(); _logger.Info("开始向Java同步订单!"); //提交到java接口, 将整个订单组列表一次性提交到java接口, 这样能使用到java的数据库事务处理 createOrderResponse = orderManager.CreateMallOrder(javaOrders); javaOrderIds = createOrderResponse.dataMap.orderIds; } } //生成本地"订单组"列表. foreach (var g in orderList) { var javaOrderId = javaOrderIds.Where(o => o.Key == g.Key.OrderCommon.StoreInfo.StoreId).FirstOrDefault().Value; var groupId = string.IsNullOrWhiteSpace(javaOrderId) ? OrderCodeGen.GetOrderGroupId() : javaOrderId; var orderCount = OrderType == 0 ? orderList.Values.Count : 1; var totalAmount = g.Value.Sum(o => o.OrderCommon.TotalAmount); //生成本地订单组 dynamic group = new PUB_ORDERS_GROUP(); group.ORDER_GROUP_ID = groupId; group.IS_CREDIT = 0; group.ORDER_TYPE = OrderType; group.TOTAL_ORDERS = orderCount; group.TOTAL_AMOUNT = totalAmount; group.MEMBER_ID = g.Key.OrderCommon.MemberId; group.STORE_ID = g.Key.OrderCommon.StoreInfo.StoreId; group.STORE_NAME = g.Key.OrderCommon.StoreInfo.StoreName; group.ORDER_DATE = DateTime.Now; //本地订单组列表 result.Add(group); } return(result); }