コード例 #1
0
        public CustomJsonResult GetMy(RupGiftGiveGetMy rup)
        {
            var query = (from o in CurrentDb.GiftGive
                         where
                         o.CurrentQuantity > 0 &&
                         o.ClientId == this.CurrentUserId
                         select new { o.Id, o.SkuId, o.CurrentQuantity, o.LockQuantity, o.AvailableQuantity, o.CreateTime });

            query = query.OrderByDescending(r => r.CreateTime);

            var list = query.ToList();

            List <object> oList = new List <object>();

            foreach (var item in list)
            {
                var sku = CurrentDb.ProductSku.Where(m => m.Id == item.SkuId).FirstOrDefault();

                oList.Add(new
                {
                    Id         = sku.Id,
                    ImgUrl     = ImgSet.GetMain(sku.DisplayImgUrls),
                    Name       = sku.Name,
                    Quantity   = item.CurrentQuantity,
                    CreateTime = item.CreateTime
                });
            }

            return(new CustomJsonResult(ResultType.Success, ResultCode.Success, "", new { skus = oList }));
        }
コード例 #2
0
        public CustomJsonResult Edit(string operater, string merchId, RopPrdKindEdit rop)
        {
            CustomJsonResult result = new CustomJsonResult();


            using (TransactionScope ts = new TransactionScope())
            {
                var prdKind = CurrentDb.PrdKind.Where(m => m.Id == rop.Id).FirstOrDefault();
                if (prdKind == null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "数据为空"));
                }
                prdKind.Name           = rop.Name;
                prdKind.DispalyImgUrls = rop.DispalyImgUrls.ToJsonString();
                prdKind.MainImgUrl     = ImgSet.GetMain(prdKind.DispalyImgUrls);
                prdKind.Description    = rop.Description;
                prdKind.MendTime       = DateTime.Now;
                prdKind.Mender         = operater;

                CurrentDb.SaveChanges();
                ts.Complete();

                result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "保存成功");
            }

            return(result);
        }
コード例 #3
0
        /// <summary>
        /// 保存海报信息
        /// </summary>
        /// <param name="set"></param>
        /// <param name="userTypes"></param>
        /// <returns></returns>
        public bool SaveImgSet(ImgSet set, List <int> userTypes)
        {
            var model = _context.ImgSets.FirstOrDefault(x => x.Id == set.Id);
            List <ImgSetOfUserType> list = new List <ImgSetOfUserType>();

            userTypes.ForEach(x =>
            {
                var setOfType      = new ImgSetOfUserType();
                setOfType.ImgSetId = set.Id;
                setOfType.UserType = x;
                list.Add(setOfType);
            });
            if (model == null)
            {
                _context.ImgSets.Add(set);
            }
            else
            {
                model.Ttile    = set.Ttile;
                model.ImgType  = set.ImgType;
                model.ImgUrl   = set.ImgUrl;
                model.TurnUrl  = set.TurnUrl;
                model.SortedId = set.SortedId;
                var _q = _context.ImgSetOfUserTypes.Where(x => x.ImgSetId == set.Id);
                _context.ImgSetOfUserTypes.RemoveRange(_q);
            }
            _context.ImgSetOfUserTypes.AddRange(list);
            return(_context.SaveChanges() > 0);
        }
コード例 #4
0
        public CustomJsonResult Edit(string operater, string merchId, RopStoreEdit rop)
        {
            CustomJsonResult result = new CustomJsonResult();

            using (TransactionScope ts = new TransactionScope())
            {
                var isExistStore = CurrentDb.Store.Where(m => m.MerchId == merchId && m.Id != rop.Id && m.Name == rop.Name).FirstOrDefault();
                if (isExistStore != null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "名称已存在,请使用其它"));
                }

                var store = CurrentDb.Store.Where(m => m.Id == rop.Id).FirstOrDefault();

                store.Name           = rop.Name;
                store.Address        = rop.Address;
                store.BriefDes       = rop.BriefDes;
                store.DispalyImgUrls = rop.DispalyImgUrls.ToJsonString();
                store.MainImgUrl     = ImgSet.GetMain(store.DispalyImgUrls);
                store.IsOpen         = rop.IsOpen;
                store.MendTime       = DateTime.Now;
                store.Mender         = operater;
                CurrentDb.SaveChanges();
                ts.Complete();
                result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "保存成功");
            }
            return(result);
        }
コード例 #5
0
        public CustomJsonResult GetList(string operater, string merchId, RupPrdProductGetList rup)
        {
            var result = new CustomJsonResult();

            var query = (from u in CurrentDb.PrdProduct
                         where (rup.Name == null || u.Name.Contains(rup.Name))
                         &&
                         u.MerchId == merchId
                         select new { u.Id, u.Name, u.BriefDes, u.CreateTime, u.DispalyImgUrls });


            int total = query.Count();

            int pageIndex = rup.Page - 1;
            int pageSize  = rup.Limit;

            query = query.OrderByDescending(r => r.CreateTime).Skip(pageSize * (pageIndex)).Take(pageSize);

            var list = query.ToList();

            List <object> olist = new List <object>();

            foreach (var item in list)
            {
                var prdKindNames = CurrentDb.PrdKind.Where(p => (from d in CurrentDb.PrdProductKind
                                                                 where d.PrdProductId == item.Id
                                                                 select d.PrdKindId).Contains(p.Id)).Select(m => m.Name).ToArray();
                string str_prdKindNames = prdKindNames.Length != 0 ? string.Join(",", prdKindNames) : "";

                var prdProductSkus = CurrentDb.PrdProductSku.Where(m => m.PrdProductId == item.Id).ToList();

                var list_Sku = new List <object>();

                foreach (var prdProductSku in prdProductSkus)
                {
                    list_Sku.Add(new { Id = prdProductSku.Id, SalePrice = prdProductSku.SalePrice, SpecDes = prdProductSku.SpecDes });
                }

                olist.Add(new
                {
                    Id         = item.Id,
                    Name       = item.Name,
                    BriefDes   = item.BriefDes,
                    MainImgUrl = ImgSet.GetMain(item.DispalyImgUrls),
                    KindNames  = str_prdKindNames,
                    Skus       = list_Sku,
                    CreateTime = item.CreateTime,
                });
            }


            PageEntity pageEntity = new PageEntity {
                PageSize = pageSize, Total = total, Items = olist
            };

            result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "", pageEntity);

            return(result);
        }
コード例 #6
0
    public IEnumerator InitCCImg(CardSetPack Cs)
    {
        MainStand_raw = Cs.stand_image;
        Shadow_raw    = Cs.bg_image;

        if (MainStand == null)
        {
            yield return(false);
        }
        else
        {
            Texture2D tas = Cs.stand_image_t2;

            var income_img_ratio = (float)(tas.height / tas.width);
            var orig_img_ratio   = (float)Cs.stand_image.height / Cs.stand_image.width;

            var ms_sprite = MainStand.GetComponent <SpriteRenderer>();
            ms_sprite.sprite = Sprite.Create(tas,
                                             new Rect(0, 0, tas.width, tas.height),
                                             new Vector2(0.5f, 0f)
                                             );
            MainStand.AddComponent <BoxCollider2D>();

            var mtrans = MainStand.GetComponent <RectTransform>();
            mtrans.localScale = new Vector3((float)(income_img_ratio / orig_img_ratio), 1, 1);
        }

        if (Shadow == null)
        {
            yield return(false);
        }
        else
        {
            Texture2D tas = Cs.bg_image_t2;
            var       income_img_ratio = (float)1 / (tas.width / tas.height);
            var       orig_img_ratio   = (float)Cs.bg_image.height / Cs.bg_image.width;

            var ms_sprite = Shadow.GetComponent <SpriteRenderer>();
            ms_sprite.sprite = Sprite.Create(tas,
                                             new Rect(0, 0, tas.width, tas.height),
                                             new Vector2(0.5f, 1f)
                                             );
            var mtrans = Shadow.GetComponent <RectTransform>();
            mtrans.localScale = new Vector3((float)(income_img_ratio / orig_img_ratio), 1, 1);
        }

        if (CCMainSet == null)
        {
            yield return(false);
        }
        else
        {
            this.transform.Find("cc").localScale = new Vector3(ratio, ratio, 1);
        }

        yield return(true);
    }
コード例 #7
0
    public IEnumerator InitCCImg(AssetBundle ab, CardSet Cs)
    {
        if (ab == null)
        {
            yield return(false);
        }

        MainStand_raw = Cs.stand_image;
        Shadow_raw    = Cs.bg_image;

        if (MainStand == null)
        {
            yield return(false);
        }
        else
        {
            Texture2D tas       = ab.LoadAsset(MainStand_raw.name) as Texture2D;
            var       ms_sprite = MainStand.GetComponent <SpriteRenderer>();
            ms_sprite.sprite = Sprite.Create(tas,
                                             new Rect(0, 0, tas.width, tas.height),
                                             new Vector2(0.5f, 0f)
                                             );
            MainStand.AddComponent <BoxCollider2D>();
        }

        if (Shadow == null)
        {
            yield return(false);
        }
        else
        {
            Texture2D tas       = ab.LoadAsset(Shadow_raw.name) as Texture2D;
            var       ms_sprite = Shadow.GetComponent <SpriteRenderer>();
            ms_sprite.sprite = Sprite.Create(tas,
                                             new Rect(0, 0, tas.width, tas.height),
                                             new Vector2(0.5f, 1f)
                                             );
        }

        if (CCMainSet == null)
        {
            yield return(false);
        }
        else
        {
            CCMainSet.localScale = new Vector3(ratio, ratio, 1);
        }

        yield return(true);
    }
コード例 #8
0
        public CustomJsonResult Add(string operater, string merchId, RopStoreAdd rop)
        {
            CustomJsonResult result = new CustomJsonResult();

            using (TransactionScope ts = new TransactionScope())
            {
                var isExistStore = CurrentDb.Store.Where(m => m.MerchId == merchId && m.Name == rop.Name).FirstOrDefault();
                if (isExistStore != null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "名称已存在,请使用其它"));
                }

                var store = new Store();
                store.Id             = GuidUtil.New();
                store.MerchId        = merchId;
                store.Name           = rop.Name;
                store.Address        = rop.Address;
                store.BriefDes       = rop.BriefDes;
                store.IsOpen         = false;
                store.DispalyImgUrls = rop.DispalyImgUrls.ToJsonString();
                store.MainImgUrl     = ImgSet.GetMain(store.DispalyImgUrls);
                store.CreateTime     = DateTime.Now;
                store.Creator        = operater;
                CurrentDb.Store.Add(store);


                //默认 快递商品库存
                var storeSellChannel = new StoreSellChannel();
                storeSellChannel.Id         = GuidUtil.New();
                storeSellChannel.Name       = "快递商品";
                storeSellChannel.MerchId    = merchId;
                storeSellChannel.StoreId    = store.Id;
                storeSellChannel.RefType    = E_StoreSellChannelRefType.Express;
                storeSellChannel.RefId      = GuidUtil.Empty();
                storeSellChannel.CreateTime = DateTime.Now;
                store.Creator = operater;


                CurrentDb.SaveChanges();
                ts.Complete();
                result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "保存成功");
            }

            return(result);
        }
コード例 #9
0
        public CustomJsonResult Add(string operater, string merchId, RopPrdKindAdd rop)
        {
            var result = new CustomJsonResult();

            using (TransactionScope ts = new TransactionScope())
            {
                var isExists = CurrentDb.PrdKind.Where(m => m.Name == rop.Name).FirstOrDefault();
                if (isExists != null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "该名称已经存在"));
                }

                var pPrdKind = CurrentDb.PrdKind.Where(m => m.Id == rop.PId).FirstOrDefault();
                if (pPrdKind == null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "找不到上级节点"));
                }

                var productKind = new PrdKind();
                productKind.Id             = GuidUtil.New();
                productKind.PId            = rop.PId;
                productKind.Name           = rop.Name;
                productKind.IconImgUrl     = rop.IconImgUrl;
                productKind.DispalyImgUrls = rop.DispalyImgUrls.ToJsonString();
                productKind.MainImgUrl     = ImgSet.GetMain(productKind.DispalyImgUrls);
                productKind.MerchId        = merchId;
                productKind.Description    = rop.Description;
                productKind.Depth          = pPrdKind.Depth + 1;
                productKind.CreateTime     = DateTime.Now;
                productKind.Creator        = operater;
                CurrentDb.PrdKind.Add(productKind);

                CurrentDb.SaveChanges();
                ts.Complete();

                result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "保存成功");
            }

            return(result);
        }
コード例 #10
0
        public ActionResult AddImgSet(string setId = "")
        {
            Guid setGuid = Utils.ParseGuid(setId);

            var list = _system.GetUserTypeByImgSetId(setGuid);

            if (list == null)
            {
                list = new List <UserType>();
            }
            ViewBag.UserTypeList = list;
            var model = _system.GetImgeSetById(setGuid);

            var typelist = manager.GetTypeList();

            ViewBag.TypeList = typelist;
            if (model == null)
            {
                model = new ImgSet();
            }
            return(View(model));
        }
コード例 #11
0
        public CustomJsonResult Add(string operater, string merchId, RopPrdProductAdd rop)
        {
            CustomJsonResult result = new CustomJsonResult();


            if (string.IsNullOrEmpty(rop.Name))
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "商品名称不能为空"));
            }

            if (rop.KindIds == null || rop.KindIds.Count == 0)
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "至少选择一个商品模块"));
            }

            if (rop.SubjectIds == null || rop.SubjectIds.Count == 0)
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "至少选择一个商品栏目"));
            }

            if (rop.DispalyImgUrls == null || rop.DispalyImgUrls.Count == 0)
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "至少上传一张商品图片"));
            }

            using (TransactionScope ts = new TransactionScope())
            {
                var prdProduct = new PrdProduct();
                prdProduct.Id             = GuidUtil.New();
                prdProduct.MerchId        = merchId;
                prdProduct.Name           = rop.Name;
                prdProduct.BarCode        = rop.BarCode;
                prdProduct.PinYinName     = Pinyin.ConvertEncoding(prdProduct.Name, Encoding.UTF8, Encoding.GetEncoding("GB2312"));
                prdProduct.PinYinIndex    = Pinyin.GetInitials(prdProduct.PinYinName, Encoding.GetEncoding("GB2312"));
                prdProduct.DispalyImgUrls = rop.DispalyImgUrls.ToJsonString();
                prdProduct.MainImgUrl     = ImgSet.GetMain(prdProduct.DispalyImgUrls);
                prdProduct.DetailsDes     = rop.DetailsDes;
                prdProduct.BriefDes       = rop.BriefDes;
                prdProduct.Creator        = operater;
                prdProduct.CreateTime     = DateTime.Now;

                foreach (var sku in rop.Skus)
                {
                    var prdProductSku = new PrdProductSku();
                    prdProductSku.Id           = GuidUtil.New();
                    prdProductSku.MerchId      = prdProduct.MerchId;
                    prdProductSku.PrdProductId = prdProduct.Id;
                    prdProductSku.Name         = prdProduct.Name;
                    prdProductSku.SpecDes      = sku.SpecDes;
                    prdProductSku.SalePrice    = sku.SalePrice;
                    prdProductSku.Creator      = operater;
                    prdProductSku.CreateTime   = DateTime.Now;
                    CurrentDb.PrdProductSku.Add(prdProductSku);
                }

                if (rop.KindIds != null)
                {
                    prdProduct.PrdKindIds = string.Join(",", rop.KindIds.ToArray());

                    foreach (var kindId in rop.KindIds)
                    {
                        var productSkuKind = new PrdProductKind();
                        productSkuKind.Id           = GuidUtil.New();
                        productSkuKind.PrdKindId    = kindId;
                        productSkuKind.PrdProductId = prdProduct.Id;
                        productSkuKind.Creator      = operater;
                        productSkuKind.CreateTime   = DateTime.Now;
                        CurrentDb.PrdProductKind.Add(productSkuKind);
                    }
                }

                if (rop.SubjectIds != null)
                {
                    prdProduct.PrdSubjectIds = string.Join(",", rop.SubjectIds.ToArray());

                    foreach (var subjectId in rop.SubjectIds)
                    {
                        var productSkuSubject = new PrdProductSubject();
                        productSkuSubject.Id           = GuidUtil.New();
                        productSkuSubject.PrdSubjectId = subjectId;
                        productSkuSubject.PrdProductId = prdProduct.Id;
                        productSkuSubject.Creator      = operater;
                        productSkuSubject.CreateTime   = DateTime.Now;
                        CurrentDb.PrdProductSubject.Add(productSkuSubject);
                    }
                }

                CurrentDb.PrdProduct.Add(prdProduct);
                CurrentDb.SaveChanges();
                ts.Complete();

                result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "保存成功");
            }

            return(result);
        }
コード例 #12
0
        public PrdProductModel GetProduct(string storeId, string productId)
        {
            //先从缓存信息读取商品信息
            PrdProductModel prdProductByCache = RedisHashUtil.Get <PrdProductModel>(redis_key_product_info, productId);

            //如商品信息从缓存取不到,读取数据库信息加载
            if (prdProductByCache == null)
            {
                var prdProductByDb = CurrentDb.PrdProduct.Where(m => m.Id == productId).FirstOrDefault();
                if (prdProductByDb == null)
                {
                    return(null);
                }

                var prdProductRefSkuByDb = CurrentDb.PrdProductSku.Where(m => m.PrdProductId == prdProductByDb.Id && m.IsRef == true).FirstOrDefault();
                if (prdProductRefSkuByDb == null)
                {
                    return(null);
                }

                prdProductByCache = new PrdProductModel();

                prdProductByCache.Id             = prdProductByDb.Id;
                prdProductByCache.Name           = prdProductByDb.Name;
                prdProductByCache.DispalyImgUrls = prdProductByDb.DispalyImgUrls.ToJsonObject <List <ImgSet> >();
                prdProductByCache.MainImgUrl     = ImgSet.GetMain(prdProductByDb.DispalyImgUrls);
                prdProductByCache.DetailsDes     = prdProductByDb.DetailsDes;
                prdProductByCache.BriefDes       = prdProductByDb.BriefDes;


                prdProductByCache.RefSku = new PrdProductModel.RefSkuModel {
                    Id = prdProductRefSkuByDb.Id, SalePrice = prdProductRefSkuByDb.SalePrice, SpecDes = prdProductRefSkuByDb.SpecDes
                };


                RedisManager.Db.HashSetAsync(redis_key_product_info, prdProductByCache.Id, Newtonsoft.Json.JsonConvert.SerializeObject(prdProductByCache), StackExchange.Redis.When.Always);
            }

            if (prdProductByCache.RefSku == null)
            {
                return(null);
            }

            //从缓存中取店铺的商品库存信息

            var refSkuStock = CacheServiceFactory.StoreSellChannelStock.GetStock(storeId, prdProductByCache.RefSku.Id);

            if (refSkuStock == null)
            {
                LogUtil.Info(string.Format("库存,Product,StoreId:{0},SkuId:{1},数据为NULL", storeId, prdProductByCache.RefSku.Id));
            }
            else
            {
                if (refSkuStock.Stocks == null || refSkuStock.Stocks.Count == 0)
                {
                    LogUtil.Info(string.Format("库存,Product,StoreId:{0},SkuId:{1},Stocks为NULL", storeId, prdProductByCache.RefSku.Id));
                }
                else
                {
                    prdProductByCache.RefSku.ReceptionMode  = Entity.E_ReceptionMode.Machine;
                    prdProductByCache.RefSku.SumQuantity    = refSkuStock.Stocks.Where(m => m.RefType == Entity.E_StoreSellChannelRefType.Machine).Sum(m => m.SumQuantity);
                    prdProductByCache.RefSku.LockQuantity   = refSkuStock.Stocks.Where(m => m.RefType == Entity.E_StoreSellChannelRefType.Machine).Sum(m => m.LockQuantity);
                    prdProductByCache.RefSku.SellQuantity   = refSkuStock.Stocks.Where(m => m.RefType == Entity.E_StoreSellChannelRefType.Machine).Sum(m => m.SellQuantity);
                    prdProductByCache.RefSku.SalePrice      = refSkuStock.Stocks[0].SalePrice;
                    prdProductByCache.RefSku.SalePriceByVip = refSkuStock.Stocks[0].SalePriceByVip;
                    prdProductByCache.RefSku.IsOffSell      = refSkuStock.Stocks[0].IsOffSell;
                }
            }

            prdProductByCache.BriefDes = prdProductByCache.BriefDes.NullToEmpty();

            return(prdProductByCache);
        }
コード例 #13
0
        public CustomJsonResult <RetOrderUnifiedOrder> UnifiedOrder(string operater, string clientId, RopOrderUnifiedOrder rop)
        {
            CustomJsonResult <RetOrderUnifiedOrder> result = new CustomJsonResult <RetOrderUnifiedOrder>();

            try
            {
                lock (lock_UnifiedOrder)
                {
                    var ret = new RetOrderUnifiedOrder();

                    using (TransactionScope ts = new TransactionScope())
                    {
                        LogUtil.Info("用户id:" + clientId);

                        var wxUserInfo = CurrentDb.WxUserInfo.Where(m => m.ClientId == clientId).FirstOrDefault();

                        if (wxUserInfo == null)
                        {
                            return(new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Failure, ResultCode.Failure, "找不到用户微信信息", null));
                        }

                        var orderByBuyed = CurrentDb.Order.Where(m => m.ClientId == clientId && m.PromoteId == rop.PromoteId && m.Status == Enumeration.OrderStatus.Payed).FirstOrDefault();
                        if (orderByBuyed != null)
                        {
                            return(new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Failure, ResultCode.Failure, "您已成功抢购,支付成功", null));
                        }

                        var promoteBlackList = CurrentDb.PromoteBlackList.Where(m => m.PromoteId == rop.PromoteId && m.ClientId == clientId).FirstOrDefault();
                        if (promoteBlackList != null)
                        {
                            return(new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Failure, ResultCode.Failure, "谢谢参与,已售罄", null));
                        }

                        var promote = CurrentDb.Promote.Where(m => m.Id == rop.PromoteId).FirstOrDefault();

                        if (promote != null)
                        {
                            if (promote.TargetType == Enumeration.PromoteTargetType.NotStudent)
                            {
                                var student = CurrentDb.Student.Where(m => m.Phone == rop.PromoteUser.CtPhone).FirstOrDefault();
                                if (student != null)
                                {
                                    return(new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Failure, ResultCode.Failure, "仅限于非学员参与报名,谢谢关注", null));
                                }
                            }


                            var promoteUser = CurrentDb.PromoteUser.Where(m => m.ClientId == clientId && m.PromoteId == rop.PromoteId).FirstOrDefault();

                            if (promoteUser == null)
                            {
                                promoteUser                    = new PromoteUser();
                                promoteUser.Id                 = GuidUtil.New();
                                promoteUser.PromoteId          = rop.PromoteId;
                                promoteUser.ClientId           = clientId;
                                promoteUser.BroadcastChannelId = rop.BcId;
                                promoteUser.RefereerId         = rop.RefereerId;
                                promoteUser.CtName             = rop.PromoteUser.CtName;
                                promoteUser.CtPhone            = rop.PromoteUser.CtPhone;
                                promoteUser.CtIsStudent        = rop.PromoteUser.CtIsStudent;
                                promoteUser.CtSchool           = rop.PromoteUser.CtSchool;
                                promoteUser.CreateTime         = DateTime.Now;
                                promoteUser.Creator            = operater;
                                CurrentDb.PromoteUser.Add(promoteUser);
                            }
                            else
                            {
                                promoteUser.BroadcastChannelId = rop.BcId;
                                promoteUser.RefereerId         = rop.RefereerId;
                                promoteUser.CtName             = rop.PromoteUser.CtName;
                                promoteUser.CtPhone            = rop.PromoteUser.CtPhone;
                                promoteUser.CtIsStudent        = rop.PromoteUser.CtIsStudent;
                                promoteUser.CtSchool           = rop.PromoteUser.CtSchool;
                            }



                            foreach (var sku in rop.Skus)
                            {
                                var productSku = CurrentDb.ProductSku.Where(m => m.Id == sku.SkuId).FirstOrDefault();

                                if (productSku == null)
                                {
                                    return(new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Failure, ResultCode.Failure, "找不到该商品", null));
                                }

                                var promoteSku = CurrentDb.PromoteSku.Where(m => m.PromoteId == rop.PromoteId && m.SkuId == sku.SkuId && m.BuyStartTime <= this.DateTime && m.BuyEndTime >= this.DateTime).FirstOrDefault();

                                if (promoteSku == null)
                                {
                                    return(new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Failure, ResultCode.Failure, "谢谢参与,活动已经结束", null));
                                }

                                if (!string.IsNullOrEmpty(promoteSku.RefereePromoteId))
                                {
                                    var clientCoupon = CurrentDb.ClientCoupon.Where(m => m.PromoteId == promoteSku.RefereePromoteId && m.ClientId == clientId && m.IsBuy == true).FirstOrDefault();
                                    if (clientCoupon == null)
                                    {
                                        return(new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Failure, ResultCode.Failure, "谢谢参与,您没有资格参与购买", null));
                                    }
                                }

                                if (promoteSku.StockQuantity > -1)
                                {
                                    if (promoteSku.SellQuantity <= 0)
                                    {
                                        return(new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Failure, ResultCode.Failure, "谢谢参与,商品已经售罄", null));
                                    }
                                }
                            }
                        }

                        var order = CurrentDb.Order.Where(m => m.PromoteId == rop.PromoteId && m.ClientId == clientId && m.Status == Entity.Enumeration.OrderStatus.WaitPay).FirstOrDefault();

                        if (order == null)
                        {
                            string orderId = GuidUtil.New();

                            var l_orderDetails = new List <OrderDetails>();

                            foreach (var sku in rop.Skus)
                            {
                                var productSku = CurrentDb.ProductSku.Where(m => m.Id == sku.SkuId).FirstOrDefault();

                                var productSkuOriginalPrice = productSku.SalePrice;
                                var productSkuSalePrice     = productSku.SalePrice;

                                var promoteSku = CurrentDb.PromoteSku.Where(m => m.PromoteId == rop.PromoteId && m.SkuId == sku.SkuId && m.BuyStartTime <= this.DateTime && m.BuyEndTime >= this.DateTime).FirstOrDefault();
                                if (promoteSku != null)
                                {
                                    productSkuSalePrice = promoteSku.SkuSalePrice;

                                    if (promoteSku.StockQuantity > -1)
                                    {
                                        promoteSku.SellQuantity -= 1;
                                        promoteSku.LockQuantity += 1;
                                    }
                                }

                                var orderDetails = new OrderDetails();
                                orderDetails.Id                 = GuidUtil.New();
                                orderDetails.ClientId           = clientId;
                                orderDetails.OrderId            = orderId;
                                orderDetails.BroadcastChannelId = rop.BcId;
                                orderDetails.PromoteId          = rop.PromoteId;
                                orderDetails.SkuId              = productSku.Id;
                                orderDetails.SkuName            = productSku.Name;
                                orderDetails.SkuImgUrl          = ImgSet.GetMain(productSku.DisplayImgUrls);
                                orderDetails.Quantity           = 1;
                                orderDetails.SalePrice          = productSkuSalePrice;
                                orderDetails.OriginalAmount     = productSkuOriginalPrice;
                                orderDetails.DiscountAmount     = productSkuOriginalPrice - productSkuSalePrice;
                                orderDetails.ChargeAmount       = orderDetails.OriginalAmount - orderDetails.DiscountAmount;
                                orderDetails.CreateTime         = this.DateTime;
                                orderDetails.Creator            = operater;
                                orderDetails.Status             = Enumeration.OrderDetailsStatus.WaitPay;
                                CurrentDb.OrderDetails.Add(orderDetails);
                                l_orderDetails.Add(orderDetails);
                            }


                            order                    = new Order();
                            order.Id                 = orderId;
                            order.ClientId           = clientId;
                            order.Sn                 = SnUtil.Build(Enumeration.BizSnType.Order, order.ClientId);
                            order.BroadcastChannelId = rop.BcId;
                            order.PromoteId          = rop.PromoteId;
                            order.RefereerId         = rop.RefereerId;
                            order.OriginalAmount     = l_orderDetails.Sum(m => m.OriginalAmount);
                            order.DiscountAmount     = l_orderDetails.Sum(m => m.DiscountAmount);
                            order.ChargeAmount       = order.OriginalAmount - order.DiscountAmount;
                            order.SubmitTime         = this.DateTime;
                            order.CreateTime         = this.DateTime;
                            order.Creator            = operater;
                            order.IsInVisiable       = true;
                            order.Status             = Enumeration.OrderStatus.WaitPay; //待支付状态

                            CurrentDb.Order.Add(order);
                            CurrentDb.SaveChanges();
                        }


                        bool    isNeedBuy    = true;
                        decimal chargeAmount = order.ChargeAmount;
                        if (chargeAmount <= 0)
                        {
                            isNeedBuy = false;
                        }

                        string[] testClientId = new string[2] {
                            "62c587c13c124f96b436de9522fb31f0", "4faecb3507aa48698405cf492dc26916"
                        };

                        if (isNeedBuy)
                        {
                            if (testClientId.Contains(order.ClientId))
                            {
                                chargeAmount = 0.01m;
                            }

                            string goods_tag = "";
                            string prepayId  = SdkFactory.Wx.Instance().GetPrepayId(operater, "JSAPI", wxUserInfo.OpenId, order.Sn, chargeAmount, goods_tag, Common.CommonUtil.GetIP(), "商品购买", order.PayExpireTime);
                            if (string.IsNullOrEmpty(prepayId))
                            {
                                LogUtil.Error("去结算,微信支付中生成预支付订单失败");
                                return(new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Failure, ResultCode.Failure, "抢购失败,刷新页面再试试", null));
                            }

                            order.WxPrepayId    = prepayId;
                            order.PayExpireTime = this.DateTime.AddMinutes(2);

                            Task4Factory.Tim2Global.Enter(TimerTaskType.CheckOrderPay, order.PayExpireTime.Value, order);

                            ret.IsBuy      = false;
                            ret.WxPrepayId = order.WxPrepayId;
                        }
                        else
                        {
                            ret.IsBuy = true;
                            BizFactory.Order.PayCompleted(operater, order.Sn, this.DateTime);
                        }

                        CurrentDb.SaveChanges();
                        ts.Complete();

                        ret.OrderId = order.Id;
                        ret.OrderSn = order.Sn;

                        result = new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Success, ResultCode.Success, "操作成功", ret);
                        LogUtil.Info("去结算结束");
                    }
                }

                return(result);
            }
            catch (Exception ex)
            {
                LogUtil.Error("检查下单发生异常", ex);

                return(new CustomJsonResult <RetOrderUnifiedOrder>(ResultType.Exception, ResultCode.Exception, "下单发生异常", null));
            }
        }
コード例 #14
0
        public string SaveImgSet(ImgSet set, List <int> userTypeList)
        {
            var res = _system.SaveImgSet(set, userTypeList);

            return(Utils.SerializeObject(res));
        }