예제 #1
0
    def first_update(self, user, seller_edit_info, connection):
        """ [어드민] seller의 본인 상세 정보 수정 : 회원가입 후 첫 수정
        Author : Chae hyun Kim
        Args:
            connection : 커넥션
            user_id : 로그인 유저의 user_id
            seller_edit_info : 새로 입력될 내용들
        Returns
            : True
        Note
            : 필수 입력란에 대한 value가 None일 경우 해당하는 error message 반환
        """
        seller_dao = SellerDao()
        if not seller_edit_info['profile']:
            raise ApiException(400, NOT_PROFILE)
        if not seller_edit_info['introduce']:
            raise ApiException(400, NOT_DESCRIPTION)
        if not seller_edit_info['callName']:
            raise ApiException(400, NOT_CALL_NAME)
        if not seller_edit_info['callStart']:
            raise ApiException(400, NOT_CALL_START)
        if not seller_edit_info['callEnd']:
            raise ApiException(400, NOT_CALL_END)
        if not seller_edit_info['postalCode']:
            raise ApiException(400, NOT_POSTAL)
        if not seller_edit_info['address']:
            raise ApiException(400, NOT_ADDRESS)
        if not seller_edit_info['detailAddress']:
            raise ApiException(400, NOT_DETAIL_ADDRESS)
        if not seller_edit_info['delivery_info']:
            raise ApiException(400, NOT_SHIPPING_DESCRIPTION)
        if not seller_edit_info['refund_info']:
            raise ApiException(400, NOT_ORDER_DESCRIPTION)

        # 선택 추가사항인 셀러의 상세소개에 대한 값이 들어왔지만 길이가 10자 미만일 경우
        if seller_edit_info['description']:
            if len(seller_edit_info['description']) < 10:
                raise ApiException(400, SHORT_INPUT_SELLER)

        # 첫 내용 기입과 이력 생성
        seller_dao.update_information(seller_edit_info, connection)
        seller_dao.create_seller_update_log(user, connection)
        # return 하기 전 manager도 생성되었는지 count로 확인
        check_manager_num = seller_dao.check_seller_manager_number(user, connection)
        if check_manager_num['totalCount'] == 0:
            raise ApiException(400, NOT_MANAGER)

        return True
예제 #2
0
    def manager_service(self, user, seller_edit_info, connection):
        seller_dao = SellerDao()

        # 키값 벨리데이션
        for one_request_manager in seller_edit_info['managers']:
            if 'name' not in one_request_manager:
                raise ApiException(400, NOT_MANAGER_NAME)
            if 'phoneNumber' not in one_request_manager:
                raise ApiException(400, NOT_MANAGER_NUMBER)
            if 'email' not in one_request_manager:
                raise ApiException(400, NOT_MANAGER_EMAIL)
        # 중복 벨리데이션 (핸드폰 번호 중복 불허)
        for one_request_manager in seller_edit_info['managers']:
            phone = list(filter(lambda d:d['phoneNumber'] == one_request_manager['phoneNumber'], seller_edit_info['managers']))
            if len(phone) > 1:
                raise ApiException(400, EXSISTING_MANAGER_PHONE)

        # 기존 매니저 리스트
        db_managers = seller_dao.get_seller_manager(user, connection)
        # 삭제 대상 추림 => 삭제전용 메소드로 보내짐(seller_edit_delete)
        for row in db_managers:
            find_manager = list(filter(lambda x:x['id'] == row['id'], seller_edit_info['managers']))
            if len(find_manager) == 0:
                one = {
                    'id' : row['id'],
                    'manager_id' : row['id'],
                    'user_id' : user['user_id'],
                    'changer_id' : user['changer_id']
                }
                SellerService().seller_edit_delete(one, connection)

        # 수정 대상 수정
        for one_request_manager in seller_edit_info['managers']:
            find_manager = list(filter(lambda x:x['id'] == one_request_manager['id'], db_managers))
            # 기존 매니저 요청 매니저가 일치함
            if len(find_manager) >= 1:
                one = {
                    'id': one_request_manager['id'],
                    'name': one_request_manager['name'],
                    'email': one_request_manager['email'],
                    'phoneNumber': one_request_manager['phoneNumber'],
                    'user_id': user['user_id'],
                    'changer_id' : user['changer_id']
                }                    
                seller_dao.update_manager(one, connection)
                seller_dao.create_manager_log(one, connection)            
        
        # 신규 대상을 추가
        for one_request_manager in seller_edit_info['managers']:
            # 추가 전에 이미 soft_delete 되지 않은 manager의 수가 3 이상이면 에러 반환
            check_manager_num = seller_dao.check_seller_manager_number(user, connection)
            if check_manager_num['totalCount'] >= 3:
                raise ApiException(400, MAX_LIMIT_MANAGER)
            # 신규는 ID가 전달 되지 않음
            if one_request_manager.get('id', None) is None:
                one = {
                    'name': one_request_manager['name'],
                    'email': one_request_manager['email'],
                    'phoneNumber': one_request_manager['phoneNumber'],
                    'user_id': user['user_id'],
                    'changer_id': user['changer_id']
                }                    
                one['id'] = seller_dao.insert_information_manager(one, connection)
                seller_dao.create_manager_log(one, connection)
        return True