Exemple #1
0
def service_userInfo(user):
    id = user.get("id", "")
    db = dbController.DB()
    try:
        sql = """
        SELECT
            `id`,
            `name`,
            `nickname`,
            `telnum`,
            `email`,
            CASE
                WHEN `gender` = 0 THEN "남자"
                WHEN `gender` = 1 THEN "여자"
                ELSE "설정 안 함" END AS gender
        FROM user_tb
        WHERE `id`=%(id)s;
        """
        db.execute(sql, {"id": id})
        user_info = db.fetchone_dict()
        if user_info:
            return True, "{0}님의 정보입니다.".format(user_info["name"]), user_info
        else:
            return False, "정보를 찾을 수 없습니다.", ''
    except:
        return False, "잠시 후에 시도해 주세요.", ''
    finally:
        db.close()
Exemple #2
0
def service_Login(user):
    login_id = user.get("id", None)
    login_pwd = user.get("pwd", None)
    if not login_id:
        return False, "아이디를 입력해 주세요."
    if not login_pwd:
        return False, "비밀번호를 입력해 주세요."

    login_data = {
        "id": login_id,
        "pwd": sha512(login_pwd.encode('utf-8')).hexdigest()
    }

    db = dbController.DB()

    try:
        db.execute(
            "SELECT COUNT(*) FROM user_tb WHERE `id`=%(id)s AND `pwd`=%(pwd)s",
            login_data)
        cnt = db.fetchone()[0]
        if cnt == 1:
            return True, "로그인 되었습니다."
        return False, "올바른 계정을 입력해 주세요."

    except:
        return False, "잠시 후에 시도해 주세요."
    finally:
        db.close()
Exemple #3
0
def itemList():
    db = dbController.DB()
    try:
        db.execute("SELECT * FROM items_tb;")
        data = db.fetchall_dict()
        return jsonify(result=True, data=data)
    except:
        return jsonify(result=False, msg="잠시후에 시도해 주세요.")
    finally:
        db.close()
Exemple #4
0
def service_userSInfo(data):
    # 한 페이지당 20명의 회원 반환으로 정의
    # 이름, 이메일로 검색 가능
    chk = data.get("chk", None)  # '0' == 모든리스트, '1' == 이름 검색, '2' == 이메일 검색
    if chk is None:
        return False, "구분을 정해 주세요."

    page = data.get("page", 0)
    page, chk = str(page), str(chk)

    if not page or not page.isdecimal() or int(page) < 1:
        return False, "페이지를 선택해 주세요."

    page = int(page) - 1
    search = data.get("search", "")

    db = dbController.DB()

    try:
        where = ""
        if chk == '1':
            where = "WHERE a.`name` LIKE '%%{}%%'".format(search)
        elif chk == '2':
            where = "WHERE a.`email` LIKE '%%{}%%'".format(search)

        sql = """
            SELECT
                a.`id`,
                a.`name`,
                a.`nickname`,
                a.`telnum`,
                a.`email`,
                CASE
                    WHEN a.`gender` = 0 THEN "남자"
                    WHEN a.`gender` = 1 THEN "여자"
                    ELSE "설정 안 함" END AS gender,
                DATE_FORMAT(
                    (SELECT MAX(b.payment_date) FROM order_attribute_tb b WHERE a.`id`=b.`order_id`),
                    '%Y-%m-%d %H:%i:%s'
                ) AS payment_date
            FROM user_tb a
            {0}
            LIMIT {1}, {2};
        """.format(where, page * 20, 20)
        db.execute(sql)
        data = db.fetchall_dict()
        return True, data
    except:
        return False, "잠시 후에 시도해 주세요."
    finally:
        db.close()
Exemple #5
0
def service_OrderItems(idx, uid):
    if not idx:
        return False, "제품을 선택해 주세요."
    
    db = dbController.DB()

    try:
        db.execute("SELECT COUNT(*) FROM user_tb WHERE `id`=%(id)s", {"id": uid})
        cnt = db.fetchone()[0]
        if not cnt:
            return False, "없는 아이디입니다."
        
        db.execute("SELECT `name` FROM items_tb WHERE `idx`=%(idx)s", {"idx": idx})
        item_name = db.fetchone_dict()
        if not item_name or not item_name.get("name", None):
            return False, "제품이 준비 중에 있습니다.<br/>잠시만 기다려 주세요."
        item_name = item_name["name"]

        made_orderNum = makeOrderNum(db, idx)
        if not made_orderNum: # 주문번호 생성 10회 반복해도 중복이 된다면 잠시 후 시도해 달라는 요청 리턴
            return False, "잠시 후에 시도해 주세요."
        
        data = {
            "order_num": made_orderNum,
            "order_id": uid,
            "item_name": item_name,
            "item_idx": idx
        }

        sql = """
            INSERT INTO order_attribute_tb(
                `order_num`, `order_id`, `item_name`, `item_idx`, `payment_date`
            ) VALUES (
                %(order_num)s, %(order_id)s, %(item_name)s, %(item_idx)s, NOW()
            );
        """
        db.execute(sql, data)
        db.commit()
        return True, f"주문번호 : {made_orderNum}<br/>이용해 주셔서 감사합니다."
    except:
        db.rollback()
        return False, "잠시 후에 시도해 주세요."
    finally:
        db.close()
def service_orderList(user):
    order_id = user.get("id")
    db = dbController.DB()
    try:
        sql = """
        SELECT
            a.`order_num`,
            a.`item_name`,
            b.`name`,
            b.`email`,
            DATE_FORMAT(a.`payment_date`, '%%Y-%%m-%%d %%H:%%i:%%s') AS payment_date
        FROM order_attribute_tb a
        LEFT OUTER JOIN user_tb b
            ON a.`order_id`=b.`id`
        WHERE `order_id`=%(order_id)s;
        """
        db.execute(sql, {"order_id": order_id})
        datas = db.fetchall_dict() or []
        return True, datas
    except:
        return False, "잠시 후에 시도해 주세요."
    finally:
        db.close()
        
Exemple #7
0
def service_Signup(user):
    pwd1, pwd2 = user.get("pwd1", ""), user.get("pwd2", "")
    if pwd1 and pwd2 and pwd1 != pwd2:
        return False, "비밀번호와 비밀번호 확인이 일치하지 않습니다."

    signdata = {
        "id": service.checkSpaceBar(user.get("id", "")),
        "pwd": service.checkSpaceBar(pwd1),
        "name": service.checkSpaceBar(user.get("name", "")),
        "nickname": service.checkSpaceBar(user.get("nickname", "")),
        "telnum": service.checkSpaceBar(user.get("telnum", "")),
        "email": service.checkSpaceBar(user.get("email", ""))
    }

    for v in signdata.values():
        if not v:
            return False, "공백을 제거해 주세요."

    if not service.idReg(signdata["id"]):
        return False, "아이디는 ( _ )를 제외한 특수문자를 사용할 수 없습니다."

    if len(signdata["pwd"]) < 10:
        return False, "비밀번호는 최소 10자 이상으로 설정해 주세요."

    if len(signdata["name"]) > 20:
        return False, "이름은 20자 이하로 설정해 주세요."

    if len(signdata["nickname"]) > 30:
        return False, "별명은 30자 이하로 설정해 주세요."

    if len(signdata["telnum"]) > 20 or not signdata["telnum"].isdecimal():
        return False, "적합한 전화번호를 작성해 주세요."

    if len(signdata["email"]) > 100 or not service.emailReg(signdata["email"]):
        return False, "적합한 E-mail형식으로 작성해 주세요."

    if not signdata["name"].isalpha():
        return False, "이름은 한글 및 영문으로 작성해 주세요."

    if not service.nicknameReg(signdata["nickname"]):
        return False, "별명은 영어 소문자로만 작성해 주세요."

    if not service.passwordReg(signdata["pwd"]):
        return False, "비밀번호는 영문 대/소문자, 숫자, 특수문자가 1개 이상 포함되어야 합니다."
    else:
        signdata["pwd"] = sha512(signdata["pwd"].encode('utf-8')).hexdigest()

    gender_chk = user.get("gender", None)

    db = dbController.DB()

    try:
        db.execute("SELECT COUNT(*) FROM user_tb WHERE `id`=%(id)s",
                   {"id": signdata["id"]})
        cnt = db.fetchone()[0]
        if cnt > 0:
            return False, "중복된 아이디입니다."

        key_sql = """
            INSERT INTO user_tb (
                `id`, `pwd`, `name`, `nickname`, `telnum`, `email`, `signup_date`
        """

        val_sql = """
            ) VALUES (
                %(id)s, %(pwd)s, %(name)s, %(nickname)s, %(telnum)s, %(email)s, NOW()
        """
        if gender_chk is not None and gender_chk.isdecimal(
        ) and gender_chk in ["0", "1"]:
            signdata["gender"] = int(gender_chk)
            key_sql += ", `gender`"
            val_sql += ", %(gender)s"

        sql = key_sql + val_sql + ");"
        db.execute(sql, signdata)
        db.commit()
        return True, "정상적으로 회원가입 되었습니다."
    except:
        db.rollback()
        return False, "잠시 후에 시도해 주세요."
    finally:
        db.close()