Пример #1
0
        protected override CommandResult <Hashtable> OnExecute(object commandParameter)
        {
            var param  = commandParameter as SaveAddressParameter;
            var result = new CommandResult <Hashtable>();

            using (CoreContext context = new CoreContext())
            {
                var acc = context.MemberInfo.Where(m => m.AccountId == param.MemberAccount).Select(m => m.ZlOpenId).FirstOrDefault();
                param.MemberAccount = acc;
                var res = ZlanAPICaller.ExecuteShop("Member.SaveAddress", param);

                if (res["ErrorCode"].Value <string>() == "0000" && res["Result"]["Data"] != null)
                {
                    result.Data         = res["Result"]["Data"].ToObject <Hashtable>();
                    result.ErrorCode    = res["ErrorCode"].Value <int>();
                    result.ErrorMessage = res["ErrorMsg"].Value <string>();
                }
                else
                {
                    result.ErrorCode    = -1;
                    result.ErrorMessage = "创建地址失败,请刷新页面重试";
                }
            }
            return(result);
        }
Пример #2
0
        protected override CommandResult <IList <ParamKeyValuePair> > OnExecute(object commandParameter)
        {
            var param  = commandParameter as LoadAddressParameter;
            var result = new CommandResult <IList <ParamKeyValuePair> >();

            var res = ZlanAPICaller.ExecuteShop("Pub.LoadAddress", param);

            result.ErrorCode    = res["ErrorCode"].Value <int>();
            result.ErrorMessage = res["ErrorMsg"].Value <string>();
            if (res["Result"]["List"] != null)
            {
                result.Data = res["Result"]["List"].ToObject <IList <ParamKeyValuePair> >();
            }
            return(result);
        }
Пример #3
0
        protected override CommandResult <List <Hashtable> > OnExecute(object commandParameter)
        {
            var result = new CommandResult <List <Hashtable> >();
            var param  = commandParameter as ComputePromotionParameter;
            var res    = new LoadPinConfigComand().Execute(new LoadPinConfigParameter()
            {
                PinId = param.ActId
            });

            if (res.ErrorCode == 0)
            {
                var       configArry = JsonConvert.DeserializeObject <JArray>((res.Data["Config"] as PinConfig).Config);
                Hashtable hash       = new Hashtable
                {
                    //["ProductNo"] = config["ProductNo"].Value<string>(),
                    //["SalePrice"] = config["SalePrice"].Value<decimal>(),
                    //["ProductSkuNo"] = config["ProductSkuNo"].Value<decimal>(),
                    ["Counter"]    = 1,
                    ["DeptCode"]   = "0001",
                    ["TypePrefix"] = "-1",
                    ["TypeId"]     = "-1"
                };
                foreach (var item in configArry)
                {
                    if (item["ProductSkuNo"].Value <string>() == param.ProductSkuNo)
                    {
                        hash["ProductNo"]    = item["ProductNo"].Value <string>();
                        hash["SalePrice"]    = item["SalePrice"].Value <decimal>();
                        hash["ProductSkuNo"] = item["ProductSkuNo"].Value <string>();
                        break;
                    }
                }
                var url = ConfigurationUtil.GetSection("PromotionUrl").Value as string;;

                var _data = new { ActId = param.ActId, ProductList = new List <Hashtable>()
                                  {
                                      hash
                                  } };
                var respromotion = ZlanAPICaller.Call <CommandResult <List <Hashtable> > >(url, _data);
                if (respromotion.ErrorCode == 0)
                {
                    result.Data = respromotion.Data;
                }
            }
            return(result);
        }
Пример #4
0
        protected override CommandResult <List <AddressData> > OnExecute(object commandParameter)
        {
            var param  = commandParameter as LoadAddressListParameter;
            var result = new CommandResult <List <AddressData> >();

            using (CoreContext context = new CoreContext())
            {
                var acc = context.MemberInfo.Where(m => m.AccountId == param.MemberAccount).Select(m => m.ZlOpenId).FirstOrDefault();
                param.MemberAccount = acc;

                var res = ZlanAPICaller.ExecuteShop("Member.LoadAddressList", param);
                result.ErrorCode    = res["ErrorCode"].Value <int>();
                result.ErrorMessage = res["ErrorMsg"].Value <string>();
                if (res["Result"]["List"] != null)
                {
                    result.Data = res["Result"]["List"].ToObject <List <AddressData> >();
                }
            }
            return(result);
        }
Пример #5
0
        protected override CommandResult <int> OnExecute(object commandParameter)
        {
            var result = new CommandResult <int>();
            var param  = commandParameter as SetPinInfoSuccessParameter;

            using (CoreContext context = new CoreContext())
            {
                //设置拼团成功
                result.Data = context.Database.ExecuteSqlCommand("update pin_info set status=9 where recid=@p0 and status!=9 ", param.MainId);
                if (result.Data > 0)
                {
                    foreach (var item in param.OrderNo)
                    {
                        try
                        {
                            var order = context.PinOrder.Where(p => p.OrderNo == item).FirstOrDefault();

                            var zlopenid = context.MemberInfo.Where(m => m.AccountId == order.MemberAccount).Select(m => m.ZlOpenId).FirstOrDefault();
                            var wxopneid = "";
                            using (MySqlConnection conn = new MySqlConnection(ConfigurationUtil.GetSection("ConnectionStrings")["ShopConnectString"]))
                            {
                                conn.Open();
                                MySqlCommand com = new MySqlCommand(@"select wx_open_id  from member_info where account_id=?acc ", conn);
                                com.Parameters.Add(new MySqlParameter("acc", zlopenid));

                                MySqlDataReader reader = com.ExecuteReader();
                                while (reader.Read())
                                {
                                    wxopneid = reader["wx_open_id"] as string;
                                }
                                reader.Close();
                                conn.Close();
                            }
                            if (!string.IsNullOrEmpty(wxopneid))
                            {
                                ActiveMQMessagePusher.Push("Message", new Dictionary <string, string>
                                {
                                    { "MessageKey", "PinSuccess" }
                                }, new
                                {
                                    WxOpenId = wxopneid,
                                    OrderNo  = item,
                                    Product  = JsonConvert.DeserializeObject <Hashtable>(order.ProductConfig)["ProductName"] as string
                                });
                            }
                        }
                        catch (Exception ex)
                        {
                            LogUtil.LogText("sendmessage:MessageKey:PinSuccess", item, ex.Message);
                        }
                    }


                    var confirmRes = ZlanAPICaller.ExecuteSys("Sys.ChangeOrderConfirm", new { param.OrderNo, Type = "SUCCESS" });
                    if (!confirmRes["ErrorCode"].Value <string>().Equals("0000"))
                    {
                        LogUtil.Log("CreatePinOrder", param.MainId.ToString(), confirmRes["ErrorMsg"].Value <string>());

                        result.ErrorCode    = -1;
                        result.ErrorMessage = "解锁商城订单失败";
                        return(result);
                    }
                }
            }
            return(result);
        }
Пример #6
0
        protected override CommandResult <string> OnExecute(object commandParameter)
        {
            var result = new CommandResult <string>();
            var param  = commandParameter as CreatePinParameter;

            using (CoreContext context = new CoreContext())
            {
                //使用zlopenid,因为此时没有登录
                var ZlOpenId = context.MemberInfo.Where(m => m.AccountId == param.MemberAccount).Select(m => m.ZlOpenId).FirstOrDefault();
                var pinCofig = context.PinConfig.Where(p => p.PingId == param.PinId && DateTime.Now >= p.StartDate && p.EndDate >= DateTime.Now).FirstOrDefault();
                if (pinCofig == null)
                {
                    result.ErrorCode    = -1;
                    result.ErrorMessage = "找不到拼团活动";
                    return(result);
                }

                var    configArry = JsonConvert.DeserializeObject <JArray>(pinCofig.Config);
                string config     = "";
                foreach (var item in configArry)
                {
                    if (item["ProductSkuNo"].Value <string>() == param.ProductSkuNo)
                    {
                        config = JsonConvert.SerializeObject(item);
                        break;
                    }
                }
                using (var tran = context.Database.BeginTransaction())
                {
                    PinInfo pinInfo  = null;
                    int     pinCount = 0;
                    if (param.MainId > 0)
                    {
                        pinInfo = context.PinInfo.Where(p => p.Recid == param.MainId && p.PingId == param.PinId && p.EndDate >= DateTime.Now).FirstOrDefault();
                        if (pinInfo != null && pinInfo.MemberAccount == param.MemberAccount)
                        {
                            result.ErrorCode    = -1;
                            result.ErrorMessage = "不能参与自己发起的团";
                            return(result);
                        }
                        pinCount = context.PinOrder.Where(p => p.MainId == param.MainId && p.Status == 1).Count();
                        if (pinCount == 0)
                        {
                            result.ErrorCode    = -1;
                            result.ErrorMessage = "参数错误";
                            return(result);
                        }
                    }
                    if (pinInfo == null)
                    {
                        var endDate = DateTime.Now.AddDays(Convert.ToInt32(pinCofig.MaxDate));
                        if (DateTime.Now.ToString("yyyy-MM-dd") == Convert.ToDateTime(pinCofig.EndDate).ToString("yyyy-MM-dd"))
                        {
                            endDate = Convert.ToDateTime(pinCofig.EndDate);
                        }
                        pinInfo = new PinInfo()
                        {
                            MaxDate       = pinCofig.MaxDate,
                            PingId        = pinCofig.PingId,
                            Status        = 1,
                            Config        = config,
                            CreateDate    = DateTime.Now,
                            EndDate       = endDate,
                            MemberAccount = param.MemberAccount,
                            MinCount      = pinCofig.MinCount
                        };
                        context.PinInfo.Add(pinInfo);
                        context.SaveChanges();
                    }
                    if (pinInfo.Status == 9)
                    {
                        result.ErrorCode    = -1;
                        result.ErrorMessage = "拼团失败,该团已满人";
                        return(result);
                    }
                    if (pinInfo.Status == -1)
                    {
                        result.ErrorCode    = -1;
                        result.ErrorMessage = "拼团失败,该团已失效";
                        return(result);
                    }
                    if (pinInfo.EndDate < DateTime.Now)
                    {
                        result.ErrorCode    = -1;
                        result.ErrorMessage = "拼团失败,该团已失效";
                        return(result);
                    }


                    try
                    {
                        var pinOrder = new PinOrder()
                        {
                            Status        = 0,
                            ProductConfig = pinInfo.Config,
                            CreateDate    = DateTime.Now,
                            MainId        = pinInfo.Recid,
                            MemberAccount = param.MemberAccount
                        };
                        context.PinOrder.Add(pinOrder);
                        //创建商城订单
                        JObject productconfig = JsonConvert.DeserializeObject <JObject>(pinInfo.Config);
                        var     res           = new CreateShopOrderCommand().Execute(new CreateShopOrderParameter()
                        {
                            ZlOpenId     = ZlOpenId,
                            ProductSkuNo = productconfig["ProductSkuNo"].Value <string>(),
                            AddressId    = param.AddressId,
                            Id           = pinCofig.PingId
                        });
                        if (!string.IsNullOrEmpty(res.Data))
                        {
                            pinOrder.OrderNo = res.Data;
                        }
                        else
                        {
                            result.ErrorCode    = -1;
                            result.ErrorMessage = res.ErrorMessage;
                            return(result);
                        }

                        context.SaveChanges();
                        result.Data = pinOrder.OrderNo;

                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                        result = ErrorResult <string> .ParameterError;
                        result.ErrorMessage = ex.Message;
                        return(result);
                    }

                    //未成团锁定商城订单状态
                    var confirmRes = ZlanAPICaller.ExecuteSys("Sys.ChangeOrderConfirm", new
                    {
                        OrderNo = new List <string> {
                            result.Data
                        },
                        Type = "AWAIT"
                    });
                    if (!confirmRes["ErrorCode"].Value <string>().Equals("0000"))
                    {
                        LogUtil.Log("CreatePinOrder", result.Data, confirmRes["ErrorMsg"].Value <string>());

                        result.ErrorCode    = -1;
                        result.ErrorMessage = "锁定商城订单状态失败";
                        return(result);
                    }
                }
            }

            return(result);
        }
Пример #7
0
        protected override CommandResult <string> OnExecute(object commandParameter)
        {
            var param  = commandParameter as CreateShopOrderParameter;
            var result = new CommandResult <string>();

            using (CoreContext context = new CoreContext())
            {
                //if (DateTime.Now == DateTime.Parse("2018-10-31 23:30:00"))
                {
                    var acc = param.ZlOpenId;

                    //移除购物车
                    var RemoveProductRes = ZlanAPICaller.ExecuteShop("Member.RemoveProduct", $"{{ 'MemberAccount': '{acc}','SkuCodeList':['{param.ProductSkuNo}'] }}");
                    if (RemoveProductRes["ErrorCode"].Value <string>() == "0000")
                    {
                        //加入购物车
                        var SelectProductRes = ZlanAPICaller.ExecuteShop("Member.SelectProduct", $"{{ 'ProductList':[{{ 'Increment': 0, 'Counter': 1, 'ProductSkuCode':'{param.ProductSkuNo}', 'Remark': ''}}], 'MemberAccount': '{acc}' }}");
                        if (SelectProductRes["ErrorCode"].Value <string>() == "0000")
                        {
                            //确认结算产品
                            var ConfirmSelectProductRes = ZlanAPICaller.ExecuteShop("Member.ConfirmSelectProduct", $"{{ 'MemberAccount': '{acc}','SkuCodeList':['{param.ProductSkuNo}'] }}");
                            //生成订单
                            if (ConfirmSelectProductRes["ErrorCode"].Value <string>() == "0000")
                            {
                                var CouponTicket = new Dictionary <string, IList <string> >();
                                CouponTicket["Coupon"]     = new List <string>();
                                CouponTicket["RedPackage"] = new List <string>();
                                var orderParam = new { MemberAccount = acc, param.AddressId, PaymentId = 3, Kind = "shop", CouponTicket, UseSpecialDiscount = 0, VCartDiscount = 0, Score = 0, ActId = param.Id };
                                LogUtil.Log("Pin.CreateShopOrder_CreateOrderRes", param.ProductSkuNo, JsonConvert.SerializeObject(orderParam));
                                var CreateOrderRes = ZlanAPICaller.ExecuteShop("Member.CreateOrder", orderParam);
                                if (CreateOrderRes["ErrorCode"].Value <string>() == "0000")
                                {
                                    result.Data = CreateOrderRes["Result"]["PaymentNo"].Value <string>();// context.Database.ExecuteSqlCommand($"update  pin_order set order_no={CreateOrderRes["Result"]["PaymentNo"].Value<string>()},status=1 where recid={param.Id}");
                                    //book.Status = 1;
                                    //book.ShopOrderNo = CreateOrderRes["Result"]["PaymentNo"].Value<string>();
                                    //book.CouponTicket = res.Data;
                                    //context.SaveChanges();
                                }
                                else
                                {
                                    result.ErrorCode    = -1;
                                    result.ErrorMessage = CreateOrderRes["ErrorMsg"].Value <string>();
                                    LogUtil.Log("Pin.CreateShopOrder_CreateOrderRes", param.ProductSkuNo, result.ErrorMessage);
                                }
                            }
                            else
                            {
                                result.ErrorCode    = -1;
                                result.ErrorMessage = ConfirmSelectProductRes["ErrorMsg"].Value <string>();
                                LogUtil.Log("Pin.CreateShopOrder_ConfirmSelectProductRes", param.ProductSkuNo, result.ErrorMessage);
                            }
                        }
                        else
                        {
                            result.ErrorCode    = -1;
                            result.ErrorMessage = SelectProductRes["ErrorMsg"].Value <string>();
                            LogUtil.Log("Pin.CreateShopOrder_SelectProductRes", param.ProductSkuNo, result.ErrorMessage);
                        }
                    }
                    else
                    {
                        result.ErrorCode    = -1;
                        result.ErrorMessage = RemoveProductRes["ErrorMsg"].Value <string>();
                        LogUtil.Log("CreateShopOrder_RemoveProductRes", param.ProductSkuNo, result.ErrorMessage);
                    }
                }
            }
            return(result);
        }
Пример #8
0
        protected override CommandResult <int> OnExecute(object commandParameter)
        {
            // var param = commandParameter as CreateShopOrderParameter;
            var result = new CommandResult <int>();

            using (CoreContext context = new CoreContext())
            {
                //if (DateTime.Now == DateTime.Parse("2018-10-31 23:30:00"))
                {
                    var bookList = context.BookInfo.FromSql(@"select b.* from book_info b left join pay_order p on p.order_no=b.order_no  where p.`STATUS`=1 and b.`STATUS` !=1 ").ToList();
                    foreach (var book in bookList)
                    {
                        var acc          = context.MemberInfo.Where(m => m.AccountId == book.MemberAccount).Select(m => m.ZlOpenId).FirstOrDefault();
                        var couponticket = book.CouponTicket;
                        if (string.IsNullOrEmpty(couponticket))
                        {
                            int?couponId = context.BookInfo.Where(b => b.OrderNo == book.OrderNo && b.MemberAccount == book.MemberAccount).Select(b => b.CouponId).FirstOrDefault();
                            var url      = ConfigurationUtil.GetSection("CouponUrl").Value as string;
                            //领取抵扣优惠券
                            var res = ZlanAPICaller.Call <CommandResult <string> >(url, new { MemberAccount = acc, RuleId = couponId });
                            if (res.ErrorCode == 0)
                            {
                                context.Database.ExecuteSqlCommand($"update book_info set coupon_ticket={res.Data} where order_no={book.OrderNo}");
                                couponticket = res.Data;
                            }
                            else
                            {
                                result.ErrorCode    = res.ErrorCode;
                                result.ErrorMessage = res.ErrorMessage;
                                LogUtil.Log("CreateShopOrder_TakeCoupon", book.OrderNo, res.ErrorMessage);
                            }
                        }

                        {
                            //移除购物车
                            var RemoveProductRes = ZlanAPICaller.ExecuteShop("Member.RemoveProduct", $"{{ 'MemberAccount': '{acc}','SkuCodeList':['{book.ProductSkuNo}'] }}");
                            if (RemoveProductRes["ErrorCode"].Value <string>() == "0000")
                            {
                                //加入购物车
                                var SelectProductRes = ZlanAPICaller.ExecuteShop("Member.SelectProduct", $"{{ 'ProductList':[{{ 'Increment': 0, 'Counter': 1, 'ProductSkuCode':'{book.ProductSkuNo}', 'Remark': ''}}], 'MemberAccount': '{acc}' }}");
                                if (SelectProductRes["ErrorCode"].Value <string>() == "0000")
                                {
                                    //确认结算产品
                                    var ConfirmSelectProductRes = ZlanAPICaller.ExecuteShop("Member.ConfirmSelectProduct", $"{{ 'MemberAccount': '{acc}','SkuCodeList':['{book.ProductSkuNo}'] }}");
                                    //生成订单
                                    if (ConfirmSelectProductRes["ErrorCode"].Value <string>() == "0000")
                                    {
                                        var CouponTicket = new Dictionary <string, IList <string> >();
                                        CouponTicket["Coupon"] = new List <string>()
                                        {
                                            couponticket
                                        };
                                        CouponTicket["RedPackage"] = new List <string>();
                                        var orderParam = new { MemberAccount = acc, book.AddressId, PaymentId = 3, Kind = "shop", CouponTicket, UseSpecialDiscount = 0, VCartDiscount = 0, Score = 0 };
                                        LogUtil.Log("CreateShopOrder_CreateOrderRes", book.OrderNo, JsonConvert.SerializeObject(orderParam));
                                        var CreateOrderRes = ZlanAPICaller.ExecuteShop("Member.CreateOrder", orderParam);
                                        if (CreateOrderRes["ErrorCode"].Value <string>() == "0000")
                                        {
                                            result.Data += context.Database.ExecuteSqlCommand($"update book_info set Status=1,Shop_Order_No={CreateOrderRes["Result"]["PaymentNo"].Value<string>()} where order_no={book.OrderNo}");
                                            //book.Status = 1;
                                            //book.ShopOrderNo = CreateOrderRes["Result"]["PaymentNo"].Value<string>();
                                            //book.CouponTicket = res.Data;
                                            //context.SaveChanges();
                                        }
                                        else
                                        {
                                            result.ErrorCode    = -1;
                                            result.ErrorMessage = CreateOrderRes["ErrorMsg"].Value <string>();
                                            LogUtil.Log("CreateShopOrder_CreateOrderRes", book.OrderNo, result.ErrorMessage);
                                        }
                                    }
                                    else
                                    {
                                        result.ErrorCode    = -1;
                                        result.ErrorMessage = ConfirmSelectProductRes["ErrorMsg"].Value <string>();
                                        LogUtil.Log("CreateShopOrder_ConfirmSelectProductRes", book.OrderNo, result.ErrorMessage);
                                    }
                                }
                                else
                                {
                                    result.ErrorCode    = -1;
                                    result.ErrorMessage = SelectProductRes["ErrorMsg"].Value <string>();
                                    LogUtil.Log("CreateShopOrder_SelectProductRes", book.OrderNo, result.ErrorMessage);
                                }
                            }
                            else
                            {
                                result.ErrorCode    = -1;
                                result.ErrorMessage = RemoveProductRes["ErrorMsg"].Value <string>();
                                LogUtil.Log("CreateShopOrder_RemoveProductRes", book.OrderNo, result.ErrorMessage);
                            }
                        }
                    }
                }
            }
            return(result);
        }