Ejemplo n.º 1
0
        public ActionResult Get()
        {
            ReturnMessage rm = new ReturnMessage();

            try
            {
                int                memberId = int.Parse(User.Claims.FirstOrDefault(p => p.Type == "jti").Value);
                TenantMemLevel     level    = DataManager.tenantMemberDao.getMemberLevel(memberId);
                List <ShopCartPrd> list     = DataManager.shopCartDao.getItemsByMember(memberId);
                if (level != null)
                {
                    double discount = level.discount * 0.01;
                    foreach (ShopCartPrd item in list)
                    {
                        if (item.SpecialRule == null || !item.SpecialRule.Contains(UserDisType.NO_DIS))
                        {
                            item.amount = (int)Math.Round(item.amount * discount, 0);
                        }
                    }
                }

                rm.code = MessageCode.SUCCESS;
                rm.data = list;
            }
            catch (Exception e)
            {
                rm.code = MessageCode.ERROR;
                rm.data = e.Message;
            }
            return(Ok(rm));
        }
Ejemplo n.º 2
0
        public ActionResult getMembmerLevelById(int id)
        {
            ReturnMessage  rm    = new ReturnMessage();
            TenantMemLevel level = DataManager.tenantMemberDao.getMemberLevelById(id);

            if (level != null)
            {
                rm.code = MessageCode.SUCCESS;
                rm.data = level;
            }
            else
            {
                rm.code = MessageCode.ERROR;
                rm.data = "not level member.";
            }
            return(Ok(rm));
        }
Ejemplo n.º 3
0
        public ActionResult getMembmerLevel()
        {
            ReturnMessage  rm       = new ReturnMessage();
            int            memberId = int.Parse(User.Claims.FirstOrDefault(p => p.Type == "jti").Value);
            TenantMemLevel level    = DataManager.tenantMemberDao.getMemberLevel(memberId);

            if (level != null)
            {
                rm.code = MessageCode.SUCCESS;
                rm.data = level;
            }
            else
            {
                rm.code = MessageCode.ERROR;
                rm.data = "not level member.";
            }
            return(Ok(rm));
        }
Ejemplo n.º 4
0
        public static ReturnMessage addOrder(OrderMaster orderMaster, UserInfo userInfo)
        {
            ReturnMessage rm          = new ReturnMessage();
            int           orderResult = MessageCode.ERROR;

            try
            {
                DateTime now = DateTime.Now;
                orderMaster.tenantId   = userInfo.tnenatId;
                orderMaster.memberId   = userInfo.memberId;
                orderMaster.dtOrder    = now;
                orderMaster.dtInStock  = now;
                orderMaster.createTime = now;
                orderMaster.updateTime = now;
                int total     = 0;
                int taxAmount = 0;
                DataManager.shopCartDao.deleteTimeOutItem(userInfo.memberId); //防止購入超時商品
                List <ShopCartPrd>          shopCartPrds = DataManager.shopCartDao.getItemsByMember(userInfo.memberId);
                List <OrderDetail>          detailList   = new List <OrderDetail>();
                Dictionary <int, TenantPrd> prdMap       = new Dictionary <int, TenantPrd>();
                TenantMemLevel tenantMemLevel            = DataManager.tenantMemberDao.getMemberLevel(userInfo.memberId);

                //是否有高級會員折扣
                double dis           = 1;
                int    memberLevelId = MessageCode.ERROR;
                if (tenantMemLevel != null)
                {
                    memberLevelId = tenantMemLevel.id;
                    dis           = tenantMemLevel.discount * 0.01;
                }

                //結算購物車價錢及規格數量
                foreach (ShopCartPrd item in shopCartPrds)
                {
                    TenantPrd prdItem = DataManager.tenantPrdDao.getTenandPrd(item.productId);
                    prdItem = isPrdSPecEnought(prdItem, item.prdSepc, item.count);
                    if (prdItem != null)
                    {
                        OrderDetail detail = new OrderDetail();
                        detail.prdId = item.productId;
                        detail.qty   = item.count;

                        detail.amount = item.amount;
                        if (item.SpecialRule == null || !item.SpecialRule.Contains(UserDisType.NO_DIS))
                        {
                            detail.amount = (int)(detail.amount * dis);
                        }

                        detail.unitPrice      = detail.amount / detail.qty;
                        detail.status         = "正常";
                        detail.createTime     = now;
                        detail.updateTime     = now;
                        detail.prdSpec        = item.prdSepc;
                        detail.prdCustPriceId = item.prdCustPriceId;
                        detail.priceGradeType = item.priceGradeType;
                        total += detail.amount;
                        detailList.Add(detail);
                        if (!prdMap.ContainsKey(prdItem.id))
                        {
                            prdMap.Add(prdItem.id, prdItem);
                        }
                    }
                }

                //檢查是否數量足夠
                foreach (OrderDetail item in detailList)
                {
                    TenantPrd prdItem = prdMap.GetValueOrDefault(item.prdId);
                    prdItem.stockNum = prdItem.stockNum - item.qty;
                    if (!string.IsNullOrEmpty(prdItem.zeroStockMessage) && prdItem.dtSellEnd > DateTime.Now)
                    {
                        if (prdItem.stockNum < 0)
                        {
                            Debug.WriteLine(prdItem.name);
                            rm.code = MessageCode.PRD_NOT_ENOUGHT;
                            return(rm);
                        }
                    }
                }

                //開始寫入價格
                if (total != 0)
                {
                    orderMaster.orderAmount = total;
                    if (orderMaster.isNeedInvoice || orderMaster.invoiceType.Equals("捐贈"))
                    {
                        taxAmount = Convert.ToInt32(total * 0.05);
                    }
                    total += taxAmount;
                    total += orderMaster.shippingAmount;
                    orderMaster.totalAmount = total;
                    // 5/14有需求說先將等待貨款拿掉
                    //orderMaster.payStatus = "等待貨款";
                    orderMaster.shippingStatus = "未出貨";
                    orderMaster.status         = "新訂單";
                    orderMaster.taxAmount      = taxAmount;
                    if (MessageCode.ERROR != memberLevelId)
                    {
                        orderMaster.levelId = memberLevelId;
                    }

                    OrderMaster master = DataManager.orderDao.addOrderMaster(orderMaster);

                    orderResult = master.id;
                    rm.data     = master;
                    foreach (OrderDetail item in detailList)
                    {
                        TenantPrd prdItem = prdMap.GetValueOrDefault(item.prdId);
                        DataManager.tenantPrdDao.updateTenandPrd(prdItem);

                        item.orderId = master.id;
                        DataManager.orderDao.addOrderDetail(item);
                    }
                    DataManager.shopCartDao.removeItemsByMember(userInfo.memberId);

                    OrderAmountHistory histroy = new OrderAmountHistory();
                    histroy.orderId          = master.id;
                    histroy.changeDesc       = "購物完成";
                    histroy.changeAmount     = total;
                    histroy.cumulativeAmount = 0;
                    histroy.status           = "正常";
                    histroy.createTime       = DateTime.Now;
                    histroy.creator          = userInfo.memberId;
                    DataManager.orderAmountHistoryDao.add(histroy);
                }
            }
            catch (Exception e)
            {
                MDebugLog.error("[COrderManager-addOrder] error: " + e);
            }
            rm.code = orderResult;
            return(rm);
        }
Ejemplo n.º 5
0
        public ActionResult getFreight()
        {
            ReturnMessage rm = new ReturnMessage();

            try
            {
                int  memberId = int.Parse(User.Claims.FirstOrDefault(p => p.Type == "jti").Value);
                Guid tenantId = Guid.Parse(User.Claims.FirstOrDefault(p => p.Type == "tenantId").Value);

                List <ShopCartPrd>       items    = DataManager.shopCartDao.getItemsByMember(memberId);
                List <TenantSetting>     settings = DataManager.tenantDao.getTenantSetting(tenantId);
                Dictionary <string, int> type     = new Dictionary <string, int>();
                TenantMemLevel           level    = DataManager.tenantMemberDao.getMemberLevel(memberId);
                foreach (TenantSetting setting in settings)
                {
                    if (!string.IsNullOrEmpty(setting.content))
                    {
                        type.Add(TenantSettingMapping.getType(setting.title), int.Parse(setting.content));
                    }
                }

                //step1 統整可選運費的方式
                HashSet <string> shipList = new HashSet <string>();
                int  total       = 0;
                bool hasOnlyFree = false;

                foreach (ShopCartPrd item in items)
                {
                    total      += item.amount;
                    hasOnlyFree = hasOnlyFree || item.SpecialRule.Contains("單一件免運");

                    //if (item.face2faceSet.Contains(TenantSettingTAG.FACE))
                    //{
                    //    shipList.Add(TenantSettingTAG.FACE);
                    //}

                    if (item.shipType.Contains(TenantSettingTAG.FACE))
                    {
                        shipList.Add(TenantSettingTAG.FACE);
                    }

                    if (item.shipType.Contains(TenantSettingTAG.NOMAL))
                    {
                        shipList.Add(TenantSettingTAG.NOMAL);
                    }

                    if (item.shipType.Contains(TenantSettingTAG.COOL))
                    {
                        shipList.Add(TenantSettingTAG.COOL);
                    }
                }
                double discount = 1;
                if (level != null)
                {
                    discount = level.discount * 0.01;
                }

                double totalPrice = Math.Round(Convert.ToDouble(total) * discount, 0);
                //step2 整理運費方式及運費
                List <ShipMethod> methods = new List <ShipMethod>();
                int freePrice             = type.GetValueOrDefault(TenantSettingTAG.FACE);
                foreach (string method in shipList)
                {
                    if (type.ContainsKey(method))
                    {
                        if (method.Equals(TenantSettingTAG.FACE))
                        {
                            ShipMethod shipMethod = new ShipMethod();
                            shipMethod.method = method;
                            shipMethod.price  = 0;
                            methods.Add(shipMethod);
                        }
                        else
                        {
                            ShipMethod shipMethod = new ShipMethod();
                            shipMethod.method = method;
                            shipMethod.price  = totalPrice > freePrice || hasOnlyFree ? 0 : type.GetValueOrDefault(method);
                            methods.Add(shipMethod);
                        }
                    }
                }

                rm.code = MessageCode.SUCCESS;
                rm.data = methods;
            }
            catch (Exception e)
            {
                rm.code = MessageCode.ERROR;
                rm.data = e.Message;
            }
            return(Ok(rm));
        }