public static List <TenantPrdCatCount> getAllCats(Guid tenantId, int memberId) { TenantMember tenantMember = DataManager.tenantMemberDao.getTenantMemberByMemberId(memberId); string userLvType = UserLevelType.NORMAL; if (tenantMember != null) { userLvType = tenantMember.levelId == null ? UserLevelType.NORMAL : UserLevelType.ADVANCED; } List <TenantPrdCatCount> data = DataManager.tenantPrdCatDao.getAllPrdCats(tenantId, memberId); List <TenantPrdCatCount> result = new List <TenantPrdCatCount>(); foreach (TenantPrdCatCount item in data) { if (isCatCanRead(item.id, memberId, userLvType)) { if (item.parentId != null) { item.count = item.count + item.pcount; } else { item.count = item.pcount + item.ccount; } result.Add(item); } } return(result); }
/// <summary> /// Update existing tenant member. /// </summary> /// <param name="tenantMember">Tenant member with updated information.</param> /// <returns></returns> public TenantMember Update(TenantMember tenantMember) { var url = $"v2/tenantmember/{tenantMember.Id}"; var result = ExecutePost <TenantMember>(url, tenantMember); return(result); }
/// <summary> /// Create a new tenant member. /// </summary> /// <param name="tenantMember">Tenant member to create.</param> public TenantMember Create(TenantMember tenantMember) { var url = $"v2/tenantmember"; var result = ExecutePost <TenantMember>(url, tenantMember); return(result); }
public void addTenantMember(TenantMember tenantMember) { using (CrazyBuyDbContext dbContext = ContextInit()) { dbContext.TenantMember.Add(tenantMember); dbContext.SaveChanges(); } }
public TenantMember getTenantMemberByMemberId(int memberId) { using (CrazyBuyDbContext dbContext = ContextInit()) { TenantMember model = dbContext.TenantMember.Where( m => m.memberId == memberId).SingleOrDefault(); return(model); } }
public static bool isUserAdvanced(int memberId) { bool isV = false; TenantMember tenantMember = DataManager.tenantMemberDao.getTenantMemberByMemberId(memberId); if (tenantMember != null) { isV = tenantMember.levelId != null; } return(isV); }
public ActionResult Login([FromBody] Dictionary <string, string> data) { ReturnMessage result = new ReturnMessage(); try { Dictionary <string, string> rm = new Dictionary <string, string>(); // STEP0: 在產生 JWT Token 之前,可以依需求做身分驗證 if (data.ContainsKey("tenantCode") && data.ContainsKey("user") && data.ContainsKey("pwd")) { string user = data.GetValueOrDefault("user"); string pwd = Utils.ConverToMD5(data.GetValueOrDefault("pwd")); string tenantCode = data.GetValueOrDefault("tenantCode"); string userName; string userUuid; string tenantId; string tenantType; string type; string userNameId; string userType = UserType.GUEST; Tenant tenant = DataManager.tenantDao.getTenantByTenantCode(tenantCode); Member member = DataManager.memberDao.getMemberByCellPhone(tenant.tenantId, user, pwd); member = member == null?DataManager.memberDao.getMemberByEmail(tenant.tenantId, user, pwd) : member; if (member != null) { // login userName = member.name; userUuid = member.memberId.ToString(); userNameId = member.name; tenantType = member.tenantType; userType = CTenantManager.isOwner(member.memberId) ? UserType.ADMIN : UserType.MEMBER; type = UserType.ADMIN.Equals(userType) ? UserType.ADMIN : LoginType.LOGIN_USER; TenantMember tenantMember = DataManager.tenantMemberDao.getTenantMemberByMemberId(member.memberId); tenantId = tenantMember.tenantId.ToString(); if (tenantId != null) { // updateLoginTime member.dtLastLogin = DateTime.Now; type = tenantMember.custPriceGradeId == null ? type : UserType.SPC_MEMBER + ":" + tenantMember.custPriceGradeId; DataManager.memberDao.updateMember(member); } else { tenantId = tenant.tenantId.ToString(); } } else { // not login for guest string id = Guid.NewGuid().ToString(); userName = LoginType.GUEST; userUuid = id; userNameId = id; tenantType = ""; type = LoginType.GUEST; tenantId = tenant.tenantId.ToString(); } // STEP1: 建立使用者的 Claims 聲明,這會是 JWT Payload 的一部分 var userClaims = new ClaimsIdentity(new[] { new Claim(JwtRegisteredClaimNames.NameId, userNameId.ToString()), new Claim(JwtRegisteredClaimNames.Jti, userUuid), new Claim("MemberName", userName), new Claim("MemberTenantType", tenantType), new Claim("type", type), new Claim("userType", userType), new Claim("tenantId", tenantId) }); // STEP2: 取得對稱式加密 JWT Signature 的金鑰 // 這部分是選用,但此範例在 Startup.cs 中有設定 ValidateIssuerSigningKey = true 所以這裡必填 var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"])); // STEP3: 建立 JWT TokenHandler 以及用於描述 JWT 的 TokenDescriptor var tokenHandler = new JwtSecurityTokenHandler(); var tokenDescriptor = new SecurityTokenDescriptor { Issuer = _config["Jwt:Issuer"], Audience = _config["Jwt:Issuer"], Subject = userClaims, Expires = DateTime.Now.AddHours(8), SigningCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256) }; // 產出所需要的 JWT Token 物件 var securityToken = tokenHandler.CreateToken(tokenDescriptor); // 產出序列化的 JWT Token 字串 var serializeToken = tokenHandler.WriteToken(securityToken); rm.Add("code", MessageCode.SUCCESS.ToString()); rm.Add("token", serializeToken); rm.Add("type", type); rm.Add("userType", userType); rm.Add("tenantId", tenantId); rm.Add("name", userName); rm.Add("id", userUuid); return(Ok(rm)); } else { rm.Add("code", MessageCode.ERROR.ToString()); rm.Add("message", "data input error."); return(BadRequest(rm)); } } catch (Exception e) { result.code = MessageCode.ERROR; result.data = e.Message; } return(Ok(result)); }
public static bool addMember(Member member, Guid tenantId) { bool isV = false; try { DateTime now = DateTime.Now; member.createTime = now; member.updateTime = now; member.memberCode = getMemberCode(); member.password = Utils.ConverToMD5(member.password); int memberId = DataManager.memberDao.addMember(member); Tenant tenant = DataManager.tenantDao.getTenant(tenantId); Member admin = DataManager.memberDao.getMember(tenant.createdMemberId); //判斷是否需要寄送mailNotice TenantSetting setting = DataManager.tenantDao.getTenantSetting(tenantId, "MemCheckType"); if (setting != null) { TenantSetting mailInfo = null; MailInfo mail = null; string type = null; List <MailSend> sendList = new List <MailSend>(); switch (setting.content) { case "Auto": mailInfo = DataManager.tenantDao.getTenantSetting(tenantId, "MemPassMailInfo"); mail = JsonConvert.DeserializeObject <MailInfo>(mailInfo.content); type = "會員自動審核"; break; case "Manual": mailInfo = DataManager.tenantDao.getTenantSetting(tenantId, "MemReviewMailInfo"); mail = JsonConvert.DeserializeObject <MailInfo>(mailInfo.content); type = "會員審核提醒"; break; } if (mail != null) { MailSend mailSend = new MailSend { memberId = memberId, tenantId = tenantId.ToString(), mail = member.email, tenantName = tenant.tenantName, CC = admin.email }; sendList.Add(mailSend); Debug.WriteLine("asdsada" + mail.content.Replace("\n", "</br>")); MailNotice mailNotice = new MailNotice { tenantId = tenantId, type = type, title = mail.subject, content = mail.content.Replace("\n", "</br>"), sendTo = JsonConvert.SerializeObject(sendList), isAuto = true, dtSend = DateTime.Now.AddMinutes(10), isSend = false, status = "正常", createTime = DateTime.Now, creator = memberId }; DataManager.mailNoticeDao.add(mailNotice); } } TenantMember tenantMember = new TenantMember(); tenantMember.tenantId = tenantId; tenantMember.memberId = memberId; tenantMember.isBlockade = false; tenantMember.status = "待審核"; tenantMember.creator = member.memberId; tenantMember.createTime = now; tenantMember.updateTime = now; DataManager.tenantMemberDao.addTenantMember(tenantMember); isV = true; } catch (Exception e) { Debug.WriteLine("[CMemberManager-addMember] error:" + e.StackTrace); } return(isV); }
//畫面呈現價格 public static List <PrdPrice> getPrdPrices(TenantPrd prd, string userType, int userId, string tenantGrade) { List <PrdPrice> prices = new List <PrdPrice>(); switch (userType) { case LoginType.LOGIN_USER: TenantMember tenantMember = DataManager.tenantMemberDao.getTenantMemberByMemberId(userId); PrdPrice prdPriceUser = new PrdPrice(); prdPriceUser.price = prd.fixedprice == null ? 0 : (int)prd.fixedprice; prdPriceUser.type = CHType.PRICE_NORMAL; prdPriceUser.priceGradeType = ""; prdPriceUser.custPriceGradeId = 0; prices.Add(prdPriceUser); prdPriceUser = new PrdPrice(); prdPriceUser.price = prd.memberPrice == null ? 0 : (int)prd.memberPrice; prdPriceUser.type = CHType.PRICE_MEMBER; prdPriceUser.priceGradeType = ""; prdPriceUser.custPriceGradeId = 0; prices.Add(prdPriceUser); if (UserGradeType.TRANS.Equals(tenantMember.gradeType)) { prdPriceUser = new PrdPrice(); prdPriceUser.price = prd.transferPrice == null ? 0 : (int)prd.transferPrice; prdPriceUser.type = CHType.PRICE_NTRANS; prdPriceUser.priceGradeType = "轉批價"; prdPriceUser.custPriceGradeId = 0; prices.Add(prdPriceUser); } break; case UserType.ADMIN: PrdPrice prdPriceAdmin = new PrdPrice(); prdPriceAdmin.price = prd.fixedprice == null ? 0 : (int)prd.fixedprice; prdPriceAdmin.type = CHType.PRICE_NORMAL; prdPriceAdmin.priceGradeType = ""; prdPriceAdmin.custPriceGradeId = 0; prices.Add(prdPriceAdmin); prdPriceAdmin = new PrdPrice(); prdPriceAdmin.price = prd.memberPrice == null ? 0 : (int)prd.memberPrice; prdPriceAdmin.type = CHType.PRICE_MEMBER; prdPriceAdmin.priceGradeType = ""; prdPriceAdmin.custPriceGradeId = 0; prices.Add(prdPriceAdmin); Debug.WriteLine("[CMemberManager-addMember] error:" + tenantGrade); if (tenantGrade != "轉批媽" && tenantGrade != "批發商") { break; } prdPriceAdmin = new PrdPrice(); prdPriceAdmin.price = prd.transferPrice == null ? 0 : (int)prd.transferPrice; prdPriceAdmin.type = CHType.PRICE_NTRANS; prdPriceAdmin.priceGradeType = "轉批價"; prdPriceAdmin.custPriceGradeId = 0; prices.Add(prdPriceAdmin); break; default: if (userType.StartsWith(UserType.SPC_MEMBER)) { string custGrade = userType.Split(":")[1]; PrdPrice prdPriceSPCMember = new PrdPrice(); prdPriceSPCMember.price = prd.fixedprice == null ? 0 : (int)prd.fixedprice; prdPriceSPCMember.type = CHType.PRICE_NORMAL; prdPriceSPCMember.priceGradeType = ""; prdPriceSPCMember.custPriceGradeId = 0; prices.Add(prdPriceSPCMember); prdPriceSPCMember = new PrdPrice(); prdPriceSPCMember.price = prd.memberPrice == null ? 0 : (int)prd.memberPrice; prdPriceSPCMember.type = CHType.PRICE_MEMBER; prdPriceSPCMember.priceGradeType = ""; prdPriceSPCMember.custPriceGradeId = 0; prices.Add(prdPriceSPCMember); CustSpcPrice spc_price = DataManager.tenantPrdDao.getSpcTenantPrdPrice(prd.tenantId, prd.id, int.Parse(custGrade)); if (spc_price != null) { prdPriceSPCMember = new PrdPrice(); prdPriceSPCMember.price = spc_price.price; prdPriceSPCMember.type = spc_price.name; prdPriceSPCMember.priceGradeType = "自訂價"; prdPriceSPCMember.custPriceGradeId = spc_price.id; prices.Add(prdPriceSPCMember); } } break; } return(prices); }