Ejemplo n.º 1
0
        public void CanUseSmallWarehouse()
        {
            Game.CargoShips[0].Load(new List <IGood> {
                new Tobacco()
            });
            Game.CargoShips[1].Load(new List <IGood> {
                new Coffee()
            });
            Game.CargoShips[2].Load(new List <IGood> {
                new Sugar()
            });
            var smallWarehouse = new SmallWarehouse();

            smallWarehouse.AddWorker(new Colonist());
            RoleOwner.Buildings.Add(smallWarehouse);
            var goodCount = 7;

            for (var i = 0; i < goodCount; i++)
            {
                RoleOwner.Goods.Add(new Indigo());
            }

            ReselectRole();

            var storeGoods = new StoreGoods {
                SmallWarehouse = GoodType.Indigo
            };

            CanExecuteActionOnce(storeGoods, RoleOwner);
            Assert.Empty(RoleOwner.Goods);

            RoleOwner.Role.CleanUp();
            Assert.Equal(goodCount, RoleOwner.Goods.Count);
        }
Ejemplo n.º 2
0
        private void ExecuteStoreGoods(StoreGoods storeGoods, IPlayer player)
        {
            var largeWarehouse = GetLargeWarehouseOrDefault(player);

            if (storeGoods.LargeWarehouse1.HasValue)
            {
                largeWarehouse?.StoreGoods(storeGoods.LargeWarehouse1.Value, player);
            }

            if (storeGoods.LargeWarehouse2.HasValue)
            {
                largeWarehouse?.StoreGoods(storeGoods.LargeWarehouse2.Value, player);
            }

            var smallWarehouse = GetSmallWarehouseOrDefault(player);

            if (storeGoods.SmallWarehouse.HasValue)
            {
                smallWarehouse?.StoreGoods(storeGoods.SmallWarehouse.Value, player);
            }

            if (storeGoods.DefaultStorage.HasValue)
            {
                var goodToStore =
                    player.Goods.FirstOrDefault(g => g.Type == storeGoods.DefaultStorage.Value);
                if (goodToStore != null)
                {
                    _defaultStore[player.UserId] = goodToStore;
                    player.Goods.Remove(goodToStore);
                }
            }

            SetPlayerPhase(player, EndedPhase);
        }
Ejemplo n.º 3
0
        public void CanStoreGoodsWithoutDelivering()
        {
            Game.CargoShips[0].Load(new List <IGood> {
                new Tobacco()
            });
            Game.CargoShips[1].Load(new List <IGood> {
                new Coffee()
            });
            Game.CargoShips[2].Load(new List <IGood> {
                new Sugar()
            });
            for (var i = 0; i < 3; i++)
            {
                RoleOwner.Goods.Add(new Indigo());
            }

            ReselectRole();

            var storeGoods = new StoreGoods {
                DefaultStorage = GoodType.Indigo
            };

            CanExecuteActionOnce(storeGoods, RoleOwner);
            Assert.Equal(2, RoleOwner.Goods.Count);

            RoleOwner.Role.CleanUp();
            Assert.Single(RoleOwner.Goods);
        }
Ejemplo n.º 4
0
        //查找订单列表-电商
        public List <StoreAdminGoodsOrder> GetAdminListForStores(string where, int pagesize, int pageindex, out int totalCount, bool export = false, MySqlParameter[] param = null)
        {
            List <StoreAdminGoodsOrder> list = new List <StoreAdminGoodsOrder>();
            string sql;
            string sqlCount;

            sql  = $@"select orders.Id,orders.OrderId,orders.BuyPrice,orders.UserId,orders.AccepterName as NickName,orders.AccepterTelePhone as TelePhone,orders.Message,orders.CreateDate,orders.State,orders.OrderNum,orders.Remark,orders.FreightPrice,orders.Address,orders.buyMode,c.nickName as userName,l.name as levelname from storegoodsorder orders ";
            sql += $"left join c_userinfo c on c.Id = orders.userid ";
            sql += $"left join viprelation v on v.uid = orders.userid and v.state >=0 ";
            sql += $"left join viplevel l on v.levelid = l.id and l.state >= 0 ";
            sql += $"{(string.IsNullOrEmpty(where) ? "" : " where " + where)} order by orders.Id desc {(pagesize == 0 ? "" : " limit " + (pageindex <= 0 ? 0 : pageindex - 1) * pagesize + "," + pagesize)}";

            if (export)//导出Excel的话,不需要分页
            {
                sql  = $@"select g.goodsname,s.count,s.price,orders.Id,orders.OrderId,orders.BuyPrice,orders.UserId,orders.AccepterName as NickName,orders.AccepterTelePhone as TelePhone,orders.Message,orders.CreateDate,orders.State,orders.OrderNum,orders.Remark,orders.FreightPrice,orders.Address,orders.buyMode,c.nickName as userName,l.name as levelname from storegoodsorder orders ";
                sql += $"left join c_userinfo c on c.Id = orders.userid ";
                sql += $"left join viprelation v on v.uid = orders.userid ";
                sql += $"left join viplevel l on v.levelid = l.id ";
                sql += $"left join storegoodscart s on orders.id = s.goodsorderid and s.state = 1 ";
                sql += $"left join storegoods g on g.id = s.goodsid ";
                sql += $"{(string.IsNullOrEmpty(where) ? "" : " where " + where)} order by orders.Id desc ";
            }
            sqlCount  = $@"select count(0) from storegoodsorder orders ";
            sqlCount += $"left join c_userinfo c on c.Id = orders.userid ";
            sqlCount += $"left join viprelation v on v.uid = orders.userid ";
            sqlCount += $"left join viplevel l on v.levelid = l.id ";
            sqlCount += $"{(string.IsNullOrEmpty(where) ? "" : " where " + where)}";


            using (MySqlDataReader dr = SqlMySql.ExecuteDataReaderMaster(connName, CommandType.Text, sql, param))
            {
                while (dr.Read())
                {
                    StoreAdminGoodsOrder        model      = GetModel(dr);
                    List <StoreGoodsCart>       cartlist   = StoreGoodsCartBLL.SingleModel.GetList($"GoodsOrderId={model.Id}");
                    List <StoreOrderCardDetail> detaillist = new List <StoreOrderCardDetail>();
                    foreach (StoreGoodsCart item in cartlist)
                    {
                        StoreOrderCardDetail cart = new StoreOrderCardDetail();
                        cart.Id = item.Id;
                        StoreGoods goods = StoreGoodsBLL.SingleModel.GetModel(item.GoodsId);
                        if (goods != null)
                        {
                            cart.GoodsName = goods.GoodsName;
                            cart.ImgUrl    = goods.ImgUrl;
                        }
                        cart.SpecInfo = item.SpecInfo;
                        cart.Price    = item.Price;
                        cart.Count    = item.Count;
                        detaillist.Add(cart);
                    }
                    model.GoodsList = detaillist;
                    list.Add(model);
                }
            }
            //totalCount = GetCountBySql(sqlCount);
            totalCount = Convert.ToInt32(SqlMySql.ExecuteScalar(connName, CommandType.Text, sqlCount, param));
            return(list);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 根据模板类型返回填充模板内容(餐饮)
        /// </summary>
        /// <param name="OrderId"></param>
        /// <param name="sendMsgType"></param>
        /// <returns></returns>
        public object getTemplateMessageData(int OrderId, SendTemplateMessageTypeEnum sendMsgType)
        {
            StoreGoodsOrder       model    = GetModel(OrderId) ?? new StoreGoodsOrder();
            List <StoreGoodsCart> modelDtl = StoreGoodsCartBLL.SingleModel.GetList($" GoodsOrderId = {model.Id} ") ?? new List <StoreGoodsCart>();

            string            modelDtlName   = "";
            string            goodsIds       = string.Join(",", modelDtl.Select(s => s.GoodsId).Distinct());
            List <StoreGoods> storeGoodsList = StoreGoodsBLL.SingleModel.GetListByIds(goodsIds);

            modelDtl.ForEach(x =>
            {
                StoreGoods good = storeGoodsList?.FirstOrDefault(f => f.Id == x.GoodsId) ?? new StoreGoods();
                x.goodsMsg      = good;
            });
            modelDtlName = string.Join("+", modelDtl.Select(x => x.goodsMsg.GoodsName));

            //店名
            string           storeName  = "";
            Store            stroe      = StoreBLL.SingleModel.GetModel(model.StoreId) ?? new Store();
            List <ConfParam> paramslist = ConfParamBLL.SingleModel.GetListByRId(stroe.appId);
            ConfParam        cinfo      = paramslist?.Where(w => w.Param == "nparam").FirstOrDefault();

            if (cinfo != null)
            {
                storeName = cinfo.Value;
            }

            object postData = new object();

            switch (sendMsgType)
            {
            case SendTemplateMessageTypeEnum.电商订单支付成功通知:
                postData = new
                {
                    keyword1 = new { value = model.OrderNum, color = "#000000" },
                    keyword2 = new { value = model.CreateDateStr, color = "#000000" },
                    keyword3 = new { value = modelDtlName, color = "#000000" },
                    keyword4 = new { value = model.PayDateStr, color = "#000000" },
                    keyword5 = new { value = Enum.GetName(typeof(miniAppBuyMode), model.buyMode), color = "#000000" },
                    keyword6 = new { value = model.BuyPriceStr, color = "#000000" },
                    keyword7 = new { value = Enum.GetName(typeof(OrderState), model.State), color = "#000000" },
                };
                break;

            case SendTemplateMessageTypeEnum.电商订单配送通知:
                postData = new
                {
                    keyword1 = new { value = model.CreateDateStr, color = "#000000" },
                    keyword2 = new { value = storeName, color = "#000000" },
                    keyword3 = new { value = model.OrderNum, color = "#000000" },
                    keyword4 = new { value = model.Address, color = "#000000" },
                    keyword5 = new { value = model.DistributeDateStr, color = "#000000" },
                    keyword6 = new { value = modelDtlName, color = "#000000" },
                    keyword7 = new { value = Enum.GetName(typeof(OrderState), model.State), color = "#000000" },
                };
                break;
            }
            return(postData);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 方法操作:1.创建订单,2.将购物车对应内容转为订单内容,3.减库存
        /// </summary>
        /// <param name="order"></param>
        /// <param name="goodsCar"></param>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        public bool addGoodsOrder(StoreGoodsOrder order, List <StoreGoodsCart> goodsCar, C_UserInfo userInfo, ref string msg)
        {
            TransactionModel TranModel = new TransactionModel();

            //创建订单
            TranModel.Add(BuildAddSql(order));

            //定义临时变量接收订单Id
            //var dbOrderId = "@dbOrderId";
            //TranModel.Add($" select {dbOrderId} := last_insert_id(); ");

            //将购物车记录转为订单明细记录
            TranModel.Add($" update StoreGoodsCart set GoodsOrderId = (select last_insert_id()),State = 1,UserId = {userInfo.Id} where id in ({string.Join(",", goodsCar.Select(s => s.Id).Distinct())}) and state = 0; ");

            //根据订单内记录数量减库存
            List <StoreGoods> goodsList = StoreGoodsBLL.SingleModel.GetList($" Id in ({string.Join(",", goodsCar.Select(x => x.GoodsId).Distinct().ToList())}) ");

            Utility.Easyui.EasyuiHelper <StoreGoodsAttrDetail> goodDtlJsonHelper = new Utility.Easyui.EasyuiHelper <StoreGoodsAttrDetail>();
            //msg += "a";
            goodsCar.ForEach(x =>
            {
                StoreGoods good = goodsList.Where(y => y.Id == x.GoodsId).FirstOrDefault();
                if (string.IsNullOrWhiteSpace(x.SpecIds))
                {
                    good.Stock -= x.Count;
                }
                else
                {
                    good.Stock -= x.Count;
                    //var goodList = good.GASDetailList.Where(z => z.id.Equals(x.SpecIds));
                    List <StoreGoodsAttrDetail> GASDetailList = new List <StoreGoodsAttrDetail>();
                    good.GASDetailList.ForEach(y =>
                    {
                        if (y.id.Equals(x.SpecIds))
                        {
                            y.count -= x.Count;
                        }
                        GASDetailList.Add(y);
                    });
                    //规格库存详情重新赋值
                    good.AttrDetail = goodDtlJsonHelper.SToJsonArray(GASDetailList);
                }
            });
            // msg += "b";

            goodsList.ForEach(x =>
            {
                TranModel.Add($" update storegoods set Stock={x.Stock},AttrDetail='{x.AttrDetail}' where Id = {x.Id} ");
            });


            string stringSql = "";

            for (int i = 0; i < TranModel.sqlArray.Length; i++)
            {
                stringSql += TranModel.sqlArray[i];
            }
            return(ExecuteTransactionDataCorect(TranModel.sqlArray, TranModel.ParameterArray));
        }
Ejemplo n.º 7
0
        public StoreInfo GetStoreInfo(string storeId)
        {
            StoreInfo     storeInfo = null;
            StringBuilder builder   = new StringBuilder();

            builder.AppendFormat(MallSqls.SELECT_STORE_BY_STORE_ID, storeId);
            string    sql = builder.ToString();
            DataTable dt  = DatabaseOperationWeb.ExecuteSelectDS(sql, "T").Tables[0];

            if (dt != null && dt.Rows.Count == 1)
            {
                storeInfo = new StoreInfo
                {
                    storeAddr    = dt.Rows[0]["STORE_ADDR"].ToString(),
                    storeId      = dt.Rows[0]["STORE_ID"].ToString(),
                    storeCardImg = dt.Rows[0]["STORE_CARD_IMG"].ToString(),
                    storeCode    = dt.Rows[0]["STORE_CODE"].ToString(),
                    storeDesc    = dt.Rows[0]["STORE_DESC"].ToString(),
                    storeImg     = dt.Rows[0]["STORE_IMG"].ToString(),
                    storeName    = dt.Rows[0]["STORE_NAME"].ToString(),
                    storeTel     = dt.Rows[0]["STORE_TEL"].ToString(),
                    storeRate    = Convert.ToInt32(dt.Rows[0]["STORE_RATE"]),
                };
                builder.Clear();
                builder.AppendFormat(MallSqls.SELECT_STORE_IMG_BY_STORE_ID, storeId);
                sql = builder.ToString();
                dt  = DatabaseOperationWeb.ExecuteSelectDS(sql, "T").Tables[0];
                foreach (DataRow dr in dt.Rows)
                {
                    StoreImg storeImg = new StoreImg
                    {
                        storeId    = dr["STORE_ID"].ToString(),
                        storeImg   = dr["STORE_IMG"].ToString(),
                        storeImgId = dr["STORE_IMG_ID"].ToString(),
                    };

                    storeInfo.storeImgs.Add(storeImg);
                }
                builder.Clear();
                builder.AppendFormat(MallSqls.SELECT_STORE_GOODS_BY_STORE_ID, storeId);
                sql = builder.ToString();
                dt  = DatabaseOperationWeb.ExecuteSelectDS(sql, "T").Tables[0];
                foreach (DataRow dr in dt.Rows)
                {
                    StoreGoods storeGoods = new StoreGoods
                    {
                        storeId           = dr["STORE_ID"].ToString(),
                        storeGoodsDesc    = dr["STORE_GOODS_DESC"].ToString(),
                        storeGoodsId      = dr["STORE_GOODS_ID"].ToString(),
                        storeGoodsImg     = dr["STORE_GOODS_IMG"].ToString(),
                        storeGoodsName    = dr["STORE_GOODS_NAME"].ToString(),
                        storeGoodsImgOpen = dr["STORE_GOODS_IMG_OPEN"].ToString(),
                    };

                    storeInfo.storeGoods.Add(storeGoods);
                }
            }
            return(storeInfo);
        }
Ejemplo n.º 8
0
 public override void OnIn(object data)
 {
     goods = (StoreGoods)data;
     goodsName.text = goods.name;
     Icon.spriteName = goods.iconSpriteName;
     Icon.MakePixelPerfect();
     price.text = "" + goods.silver;
 }
Ejemplo n.º 9
0
 public void init(StoreGoods goods)
 {
     this.storeGoods = goods;
     name.text = goods.name;
     Icon.spriteName = goods.iconSpriteName;
     Icon.MakePixelPerfect();
     price.text = "" + goods.silver;
     describe.text = "description of " + goods.name;//goods.describe;
 }
Ejemplo n.º 10
0
        public StoreGoodsModel(StoreGoods storeGoods) : base(storeGoods.Goods)
        {
            this.StoreGoodsId = storeGoods.Id;

            this.StoreGoodsQuantity = storeGoods.Quantity;
            this.Price          = storeGoods.Price;
            this.TotalAomount   = storeGoods.TotalAomount;
            this.StoreGoodsNote = storeGoods.Note;
        }
Ejemplo n.º 11
0
 public void init(StoreGoods goods)
 {
     if(goods == null){
         title.text = "Sorry";
         description.text = "Your storage is full!";
     }else	{
         title.text = "Purchase Successful";
         description.text = "Room for content about coin can go right here so use it wisely!";
         this.storeGoods = goods;
     }
 }
Ejemplo n.º 12
0
        /// <summary>
        /// 方法操作:1.创建订单,2.将购物车对应内容转为订单内容,3.减库存
        /// </summary>
        /// <param name="order"></param>
        /// <param name="goodsCar"></param>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        public bool addGoodsOrder(StoreGoodsOrder order, List <StoreGoodsCart> goodsCar, C_UserInfo userInfo, StringBuilder sb, ref string msg)
        {
            TransactionModel TranModel = new TransactionModel();

            //更新会员打折后的购物车
            if (sb != null)
            {
                TranModel.Add(sb.ToString());
            }
            //创建订单
            TranModel.Add(BuildAddSql(order));

            //将购物车记录转为订单明细记录
            TranModel.Add($" update StoreGoodsCart set GoodsOrderId = (select last_insert_id()),State = 1,UserId = {userInfo.Id} where id in ({string.Join(",", goodsCar.Select(s => s.Id).Distinct())}) and state = 0; ");

            //根据订单内记录数量减库存
            List <StoreGoods> goodsList = StoreGoodsBLL.SingleModel.GetList($" Id in ({string.Join(",", goodsCar.Select(x => x.GoodsId).Distinct().ToList())}) ");

            Utility.Easyui.EasyuiHelper <StoreGoodsAttrDetail> goodDtlJsonHelper = new Utility.Easyui.EasyuiHelper <StoreGoodsAttrDetail>();
            goodsCar.ForEach(x =>
            {
                StoreGoods good = goodsList.Where(y => y.Id == x.GoodsId).FirstOrDefault();
                if (string.IsNullOrWhiteSpace(x.SpecIds))
                {
                    good.Stock -= x.Count;
                }
                else
                {
                    good.Stock -= x.Count;
                    List <StoreGoodsAttrDetail> GASDetailList = new List <StoreGoodsAttrDetail>();
                    good.GASDetailList.ForEach(y =>
                    {
                        if (y.id.Equals(x.SpecIds))
                        {
                            y.count -= x.Count;
                        }
                        GASDetailList.Add(y);
                    });
                    //规格库存详情重新赋值
                    good.AttrDetail = goodDtlJsonHelper.SToJsonArray(GASDetailList);
                }
            });

            goodsList.ForEach(x =>
            {
                StoreGoodsBLL.SingleModel.RemoveStoreGoodsCache(x.Id);
                TranModel.Add($" update storegoods set Stock={x.Stock},AttrDetail='{x.AttrDetail}' where Id = {x.Id} ");
            });

            return(ExecuteTransactionDataCorect(TranModel.sqlArray, TranModel.ParameterArray));
        }
Ejemplo n.º 13
0
        //查找订单列表
        public List <StoreAdminGoodsOrder> GetAdminList(string where, int pagesize, int pageindex, out int totalCount, bool export = false)
        {
            List <StoreAdminGoodsOrder> list = new List <StoreAdminGoodsOrder>();
            string sql;
            string sqlCount;

            sql = $@"select orders.Id,orders.OrderId,orders.BuyPrice,orders.UserId,orders.AccepterName as NickName,orders.AccepterTelePhone as TelePhone,orders.Message,orders.CreateDate,orders.State,orders.OrderNum,orders.Remark,orders.FreightPrice,orders.Address from storegoodsorder orders {(string.IsNullOrEmpty(where) ? "" : " where " + where)} order by Id desc {(pagesize == 0 ? "" : " limit " + (pageindex <= 0 ? 0 : pageindex - 1) * pagesize + "," + pagesize)}";
            //sql = $@"select orders.Id,orders.OrderId,orders.BuyPrice,orders.UserId,user.NickName,user.TelePhone,orders.Message,orders.CreateDate,orders.State,orders.OrderNum,orders.Remark,orders.FreightPrice,orders.Address from miniappgoodsorder orders inner join c_userinfo user on user.Id=orders.UserId {(string.IsNullOrEmpty(where) ? "" : " where " + where)} order by Id desc {(pagesize == 0 ? "" : " limit " + (pageindex <= 0 ? 0 : pageindex - 1) * pagesize + "," + pagesize)}";
            if (export)//导出Excel的话,不需要分页
            {
                sql = $@"select orders.Id,orders.OrderId,orders.BuyPrice,orders.UserId,orders.AccepterName as NickName,orders.AccepterTelePhone as TelePhone,orders.Message,orders.CreateDate,orders.State,orders.OrderNum,orders.Remark,orders.FreightPrice,orders.Address from storegoodsorder orders {(string.IsNullOrEmpty(where) ? "" : " where " + where)} order by Id desc";
                //sql = $@"select orders.Id,orders.OrderId,orders.BuyPrice,orders.UserId,user.NickName,user.TelePhone,orders.Message,orders.CreateDate,orders.State,orders.OrderNum,orders.Remark,orders.FreightPrice,orders.Address from miniappgoodsorder orders inner join c_userinfo user on user.Id=orders.UserId {(string.IsNullOrEmpty(where) ? "" : " where " + where)} order by Id desc";
            }
            sqlCount = $@"select count(*) from storegoodsorder orders {(string.IsNullOrEmpty(where) ? "" : " where " + where)}";


            using (MySqlDataReader dr = SqlMySql.ExecuteDataReaderMaster(connName, CommandType.Text, sql, null))
            {
                while (dr.Read())
                {
                    StoreAdminGoodsOrder        model      = GetModel(dr);
                    List <StoreGoodsCart>       cartlist   = StoreGoodsCartBLL.SingleModel.GetList($"GoodsOrderId={model.Id}");
                    List <StoreOrderCardDetail> detaillist = new List <StoreOrderCardDetail>();

                    string            goodsIds       = string.Join(",", cartlist?.Select(s => s.GoodsId).Distinct());
                    List <StoreGoods> storeGoodsList = StoreGoodsBLL.SingleModel.GetListByIds(goodsIds);

                    foreach (StoreGoodsCart item in cartlist)
                    {
                        StoreOrderCardDetail cart = new StoreOrderCardDetail();
                        cart.Id = item.Id;
                        StoreGoods goods = storeGoodsList?.FirstOrDefault(f => f.Id == item.GoodsId);
                        if (goods != null)
                        {
                            cart.GoodsName = goods.GoodsName;
                            cart.ImgUrl    = goods.ImgUrl;
                        }
                        cart.SpecInfo = item.SpecInfo;
                        cart.Price    = item.Price;
                        cart.Count    = item.Count;
                        detaillist.Add(cart);
                    }
                    model.GoodsList = detaillist;
                    list.Add(model);
                }
            }
            totalCount = GetCountBySql(sqlCount);
            return(list);
        }
Ejemplo n.º 14
0
        public void CanUseLargeWarehouse()
        {
            Game.CargoShips[0].Load(new List <IGood> {
                new Tobacco()
            });
            Game.CargoShips[1].Load(new List <IGood> {
                new Coffee()
            });
            Game.CargoShips[2].Load(new List <IGood> {
                new Sugar()
            });
            var largeWarehouse = new LargeWarehouse();

            largeWarehouse.AddWorker(new Colonist());
            RoleOwner.Buildings.Add(largeWarehouse);
            var indigoCount = 5;

            for (var i = 0; i < indigoCount; i++)
            {
                RoleOwner.Goods.Add(new Indigo());
            }
            var cornCount = 7;

            for (var i = 0; i < cornCount; i++)
            {
                RoleOwner.Goods.Add(new Corn());
            }


            ReselectRole();

            var storeGoods = new StoreGoods {
                LargeWarehouse1 = GoodType.Indigo,
                LargeWarehouse2 = GoodType.Corn
            };

            CanExecuteActionOnce(storeGoods, RoleOwner);
            Assert.Empty(RoleOwner.Goods);

            RoleOwner.Role.CleanUp();
            Assert.Equal(indigoCount + cornCount, RoleOwner.Goods.Count);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 商品订单过期-蔡华兴
        /// </summary>
        public void StoreGoodsOrderTimeOut(int timeoutlength = -30)
        {
            TransactionModel tranModel = new TransactionModel();



            //订单超过30分钟取消订单
            List <StoreGoodsOrder> orderList = GetList($"State=0 and  CreateDate < date_add(NOW(), interval {timeoutlength} MINUTE)", 100, 1);

            if (orderList != null && orderList.Count > 0)
            {
                log4net.LogHelper.WriteInfo(this.GetType(), "小程序商品订单过期(订单超过30分钟取消订单)");
                tranModel = new TransactionModel();
                //订单明细
                List <StoreGoodsCart> orderdetaillist = orderList.Any() ? StoreGoodsCartBLL.SingleModel.GetList($"State =1 and GoodsOrderId in ({string.Join(",", orderList.Select(s => s.Id).Distinct())})") : new List <StoreGoodsCart>();
                if (orderdetaillist != null && orderdetaillist.Count > 0)
                {
                    //商品
                    List <StoreGoods> goodlist = StoreGoodsBLL.SingleModel.GetList($"Id in ({string.Join(",", orderdetaillist.Select(s => s.GoodsId).Distinct())})");
                    if (goodlist != null && goodlist.Count > 0)
                    {
                        foreach (StoreGoodsOrder item in orderList)
                        {
                            //商品明细
                            List <StoreGoodsCart> orderdetails = orderdetaillist.Any() ? orderdetaillist.Where(w => w.GoodsOrderId == item.OrderId).ToList() : new List <StoreGoodsCart>();
                            if (orderdetails != null && orderdetails.Count > 0)
                            {
                                for (int i = 0; i < orderdetails.Count; i++)
                                {
                                    //商品
                                    StoreGoods good = goodlist.Where(w => w.Id == orderdetails[i].GoodsId).FirstOrDefault();
                                    if (good != null)
                                    {
                                        //商品加总库存
                                        good.Stock += orderdetails[i].Count;
                                        List <StoreGoodsAttrDetail> GASDetailList = good.GASDetailList;
                                        //订单明细中的规格属性,加规格属性库存
                                        for (int j = 0; j < GASDetailList.Count; j++)
                                        {
                                            if (GASDetailList[j].id == orderdetails[i].SpecIds)
                                            {
                                                GASDetailList[j].count += orderdetails[i].Count;
                                                good.AttrDetail         = SerializeHelper.SerToJson(GASDetailList);
                                                break;
                                            }
                                        }
                                        //更改商品总库存和规格属性库存
                                        tranModel.Add($"update StoreGoods set AttrDetail='{good.AttrDetail}',Inventory={good.Inventory} where Id={good.Id}");
                                    }
                                }
                            }

                            //订单状态改成已过期
                            item.State = -1;
                            tranModel.Add($"update StoreGoodsOrder set State={item.State} where Id={item.Id} and State = 0");

                            //加订单操作日志
                            StoreGoodsOrderLog model = new StoreGoodsOrderLog();
                            model.UserId       = 0;
                            model.GoodsOrderId = item.Id;
                            model.LogInfo      = " 30分钟未付款,系统自动改为已过期! ";
                            model.CreateDate   = DateTime.Now;
                            tranModel.Add(StoreGoodsOrderLogBLL.SingleModel.BuildAddSql(model));

                            ExecuteTransactionDataCorect(tranModel.sqlArray, tranModel.ParameterArray);
                        }
                    }
                }
            }
        }