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)); }
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)); }
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)); }
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); }
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)); }