public void CreateOrderItemRecordTest()
        {
            using (var client = new TuboAllianceClient())
            {
                var model = new CreateOrderItemRecordRequest();
                model.OrderId = "123497220";

                var orderItemList = new List <OrderItemRecord>();

                var orderItem = new OrderItemRecord();
                orderItem.CpsId   = new Guid("72CF04E7-E99D-4441-80EC-BADCF8DDF953");
                orderItem.DarenID = new Guid("00004371-77D8-4D26-A57E-E46426587BEA");
                orderItem.Pid     = "TR-CT-C2-MC5|8";
                orderItem.Number  = 1;
                orderItemList.Add(orderItem);

                var orderItem2 = new OrderItemRecord();
                orderItem2.CpsId   = new Guid("052E3B8D-5B39-4C5B-8F57-78B7BDFFD35A");
                orderItem2.DarenID = new Guid("00004371-77D8-4D26-A57E-E46426587BEA");
                orderItem2.Pid     = "GF-MOBIL-GIFT|18";
                orderItem2.Number  = 1;
                orderItemList.Add(orderItem2);

                //var orderItem3 = new OrderItemRecord();
                //orderItem3.CpsId = new Guid("dbcd2b00-e7e9-4d16-8fca-d92736ed48f7");
                //orderItem3.DarenID = new Guid("00010D2E-F4CD-430A-BEB0-AE6674F6EA46");
                //orderItem3.Pid = "LF-GiGi-G-1069|6"; ;
                //orderItem3.Number = 1;
                //orderItemList.Add(orderItem3);

                model.OrderItem = orderItemList;

                var result = client.CreateOrderItemRecordAsync(model);
                Assert.IsNotNull(result.Result);
            }
        }
Пример #2
0
        /// <summary>
        /// 佣金订单商品记录创建接口
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static async Task <int> CreateOrderItemRecordsManager(CreateOrderItemRecordRequest request)
        {
            int resultRow = 0;

            using (var dbHelper = DbHelper.CreateDbHelper())
            {
                try
                {
                    if (request.OrderItem?.Count > 0)
                    {
                        dbHelper.BeginTransaction();

                        var orderItemTmp = request.OrderItem.Select(item =>
                        {
                            return(new
                            {
                                request.OrderId,
                                item.DarenID,
                                item.CpsId,
                                item.Pid,
                                item.Number,
                                CreateTime = DateTime.Now,
                                IsDelete = 0
                            });
                        });

                        DataTable dtOrderItem = ConvertDataTable.ToDataTable(orderItemTmp);

                        string sqlCreateOrderItemTable = @"CREATE TABLE #orderItemTmp(
	                                         [OrderId] [nvarchar](50) NOT NULL,
	                                         [DarenID] [uniqueidentifier] NULL,
	                                         [CpsId] [uniqueidentifier] NULL,
	                                         [Pid] [nvarchar](50) NULL,
	                                         [Number] [int] NULL,
	                                         [CreateTime] [datetime]  NULL,
	                                         [IsDelete] [bit] NOT NULL);"    ;

                        await dbHelper.ExecuteNonQueryAsync(sqlCreateOrderItemTable);

                        using (SqlBulkCopy bulkcopy = new SqlBulkCopy((SqlConnection)dbHelper.Connection,
                                                                      SqlBulkCopyOptions.KeepIdentity, (SqlTransaction)dbHelper.Transaction))
                        {
                            bulkcopy.BulkCopyTimeout      = 660;
                            bulkcopy.DestinationTableName = "#orderItemTmp";
                            bulkcopy.WriteToServer(dtOrderItem);
                            bulkcopy.Close();
                        }


                        var sqlCreateOrderItemRecord = @"INSERT INTO [Activity].[dbo].[Cps_OrderItemRecord]
                                                                                   ([OrderId]
                                                                                   ,[DarenID]
                                                                                   ,[CpsId]
                                                                                   ,[PID]
                                                                                   ,[Number]
                                                                                   ,[CreateTime]
                                                                                   ,[IsDelete])
                                                                           SELECT   [OrderId]
                                                                                   ,[DarenID]
                                                                                   ,[CpsId]
                                                                                   ,[PID]
                                                                                   ,[Number]
                                                                                   ,[CreateTime]
                                                                                   ,[IsDelete]
		                                                                           FROM #orderItemTmp"        ;


                        using (var cmd = new SqlCommand(sqlCreateOrderItemRecord))
                        {
                            cmd.CommandType = CommandType.Text;
                            resultRow       = Convert.ToInt32(await dbHelper.ExecuteNonQueryAsync(cmd));
                        }

                        dbHelper.Commit();
                    }
                }

                catch (Exception ex)
                {
                    dbHelper.Rollback();
                    Logger.Error($"CreateOrderItemRecordManager佣金订单下单记录接口异常:{ex.Message};堆栈信息:{ex.StackTrace}");
                }
            }

            return(resultRow);
        }
        /// <summary>
        /// 佣金订单商品记录创建接口
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static async Task <CreateOrderItemRecordResponse> CreateOrderItemRecordManager(CreateOrderItemRecordRequest request)
        {
            var resultModule = new CreateOrderItemRecordResponse();

            resultModule.Success = false;

            try
            {
                //查询所有PID在佣金产品表中的记录
                var pidList               = request?.OrderItem?.Select(a => a.Pid).ToList();
                var cpsIDList             = request?.OrderItem?.Select(a => "" + a.CpsId).ToList();
                var commissionProductList = await DalTuboAlliance.GetCommissionProductByIdsDal(pidList, cpsIDList);

                //过滤当前请求的PID未在佣金产品表中存在的
                var orderItemRecords = new List <OrderItemRecord>();
                request.OrderItem.ForEach(orderItem =>
                {
                    var commissionProductCount = commissionProductList.Where(a => a.PID ==
                                                                             orderItem.Pid && a.CpsId == orderItem.CpsId).Count();

                    if (commissionProductCount > 0)
                    {
                        orderItemRecords.Add(orderItem);
                    }
                });

                request.OrderItem = orderItemRecords;
                var resultRow = await DalTuboAlliance.CreateOrderItemRecordsManager(request);

                if (resultRow > 0)
                {
                    resultModule.Success = true;
                }
            }
            catch (Exception ex)
            {
                Logger.Error($"CreateOrderItemRecordManager佣金订单商品记录创建接口异常:{ex.Message};堆栈信息:{ex.StackTrace}");
                resultModule.ErrorMessage = ex.Message;
            }

            return(resultModule);
        }
 /// <summary>
 /// 佣金订单商品记录创建接口
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public async Task <OperationResult <CreateOrderItemRecordResponse> > CreateOrderItemRecordAsync(CreateOrderItemRecordRequest request)
 {
     if (request == null || string.IsNullOrEmpty(request.OrderId) ||
         request.OrderItem == null || request.OrderItem?.Count <= 0)
     {
         return(OperationResult.FromError <CreateOrderItemRecordResponse>
                    (nameof(Resource.ParameterError), Resource.ParameterError));
     }
     else
     {
         return(OperationResult.FromResult(await TuboAllianceManager.CreateOrderItemRecordManager(request)));
     }
 }