Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
 public void addTenantMember(TenantMember tenantMember)
 {
     using (CrazyBuyDbContext dbContext = ContextInit())
     {
         dbContext.TenantMember.Add(tenantMember);
         dbContext.SaveChanges();
     }
 }
Exemplo n.º 5
0
 public TenantMember getTenantMemberByMemberId(int memberId)
 {
     using (CrazyBuyDbContext dbContext = ContextInit())
     {
         TenantMember model = dbContext.TenantMember.Where(
             m => m.memberId == memberId).SingleOrDefault();
         return(model);
     }
 }
Exemplo n.º 6
0
        public static bool isUserAdvanced(int memberId)
        {
            bool         isV          = false;
            TenantMember tenantMember = DataManager.tenantMemberDao.getTenantMemberByMemberId(memberId);

            if (tenantMember != null)
            {
                isV = tenantMember.levelId != null;
            }
            return(isV);
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        //畫面呈現價格
        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);
        }