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()
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()
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()
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()
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()
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()