Exemplo n.º 1
0
 def __init__(self, real_name, mobile, email, region, *roles):
     self.log = Log('User')
     self.log.logger.debug(type(roles))
     self.tool = Tool()
     self.request = Request()
     self.mobile = mobile
     self.user_info = self.tool.query_user_info_by_mobile(self.mobile)
     self.role_list = self.tool.get_role_code(*roles)
     self.real_name = real_name
     self.email = email
     self.region = region
     data_uc = Config('uc').data
     employee_data = data_uc['http://dev.uc.worldfarm.com'][
         '/admin/emp/add']
     employee_data["mobile"] = self.mobile
     employee_data["realName"] = self.real_name
     employee_data["email"] = self.email
     employee_data["mobileRegion"] = self.region
     employee_data["roles"] = self.role_list
     admin = EmployeeSession('007', '123456')
     employee_data["_tk_"] = admin.token
     employee_data["_deviceId_"] = admin.deviceId
     add_employee = self.request.post(
         url="http://dev.uc.worldfarm.com/admin/emp/add",
         data=employee_data)
     self.log.logger.debug(add_employee)
Exemplo n.º 2
0
 def __init__(self, account, password, Etype=1):
     self.log = Log('Employee')
     self.tool = Tool()
     self.request = Request()
     emp = EmployeeSession(account, password)
     self.password = emp.password
     self.token, self.deviceId = emp.token, emp.deviceId
     if Etype == 1:
         self.employee_info = self.tool.miaoshu_query_user_info_by_mobile(
             account, 2)
         # self.log.logger.debug("员工信息:%s" % self.employee_info)
     elif Etype == 2:
         self.employee_info = self.tool.miaoshu_query_user_info_by_email(
             account, 2)
     else:
         return
     if self.employee_info != ():
         self.employee_info = self.employee_info[0]
         self.employee_id = self.employee_info["id"]
         self.employee_real_name = self.employee_info["real_name"]
         self.employee_nickname = self.employee_info["nickname"]
         self.employee_sex = self.employee_info["sex"]
         self.employee_mobile = self.employee_info["mobile"]
         self.employee_email = self.employee_info["email"]
         self.employee_account_status = self.employee_info["account_status"]
         self.employee_account_type = self.employee_info["account_type"]
         self.employee_head_img = self.employee_info["head_img"]
         self.employee_register_time = self.employee_info["create_time"]
         self.employee_edit_time = self.employee_info["edit_time"]
         self.employee_channel_shop_id = None
Exemplo n.º 3
0
    def __init__(self, mobile):
        self.log = Log('User')
        self.tool = Tool()
        self.request = Request()
        # self.user_info = self.tool.miaoshu_query_user_info_by_mobile(mobile, 1)
        # if self.user_info != ():
        #     self.user_info = self.user_info[0]
        #     if self.user_info['channel_status'] is not None:
        #         self.tool.ms_delete_user_by_mobile(mobile)
        us = UserSession(mobile)
        self.encryptedPwd = us.encrypted_password
        self.token, self.device_id = us.token, us.deviceId
        self.user_info = self.tool.miaoshu_query_user_info_by_mobile(mobile, 1)
        if self.user_info != ():
            self.user_info = self.user_info[0]

            self.user_id = self.user_info["id"]
            self.real_name = self.user_info["real_name"]
            self.nickname = self.user_info["nickname"]
            self.sex = self.user_info["sex"]
            self.mobile = self.user_info["mobile"]
            self.email = self.user_info["email"]
            self.account_status = self.user_info["account_status"]
            self.account_type = self.user_info["account_type"]
            self.head_img = self.user_info["head_img"]
            self.register_time = self.user_info["create_time"]
            self.edit_time = self.user_info["edit_time"]
            self.channel_shop_id = None
            self.supplier_shop_id = None
Exemplo n.º 4
0
 def __init__(self, supplier):
     self.log = Log('SupplierAction')
     self.supplier = supplier
     self.request = Request()
     self.tool = Tool()
     self.redis = Redis()
     self.db = DataBaseOperate()
     self.ps = 10
Exemplo n.º 5
0
 def __init__(self, translator):
     self.log = Log('TranslatorAction')
     self.translator = translator
     self.data_sso = Config('sso').data
     self.data_trade = Config('trade').data
     self.data_sms = Config('sms').data
     self.data_base = DataBaseOperate()
     self.request = Request()
     self.tool = Tool()
Exemplo n.º 6
0
 def __init__(self, promoter):
     self.log = Log('PromoterAction')
     self.promoter = promoter
     self.data_sso = Config('sso').data
     self.data_trade = Config('trade').data
     self.data_sms = Config('sms').data
     self.request = Request()
     self.tool = Tool()
     self.ps = 10
Exemplo n.º 7
0
 def __init__(self, seller_agent):
     self.log = Log('sellerAgent')
     self.sellerAgent = seller_agent
     self.data_sso = Config('sso').data
     self.data_trade = Config('trade').data
     self.data_sms = Config('sms').data
     self.request = Request()
     self.tool = Tool()
     self.ps = 10
Exemplo n.º 8
0
 def __init__(self, buyer):
     """
     初始化方法的一个常用数据
     :param buyer: 传的是一个用户对象
     """
     self.log = Log('buyer')
     self.buyer = buyer
     self.data_sso = Config('sso').data
     self.data_trade = Config('trade').data
     self.data_sms = Config('sms').data
     self.request = Request()
     self.tool = Tool()
     self.ps = 10
Exemplo n.º 9
0
class Employee(object):
    hosts = Config('config').data['hosts'][Config('config').data['run']]

    def __init__(self, account, password, Etype=1):
        self.log = Log('Employee')
        self.tool = Tool()
        self.request = Request()
        emp = EmployeeSession(account, password)
        self.password = emp.password
        self.token, self.deviceId = emp.token, emp.deviceId
        if Etype == 1:
            self.employee_info = self.tool.miaoshu_query_user_info_by_mobile(
                account, 2)
            # self.log.logger.debug("员工信息:%s" % self.employee_info)
        elif Etype == 2:
            self.employee_info = self.tool.miaoshu_query_user_info_by_email(
                account, 2)
        else:
            return
        if self.employee_info != ():
            self.employee_info = self.employee_info[0]
            self.employee_id = self.employee_info["id"]
            self.employee_real_name = self.employee_info["real_name"]
            self.employee_nickname = self.employee_info["nickname"]
            self.employee_sex = self.employee_info["sex"]
            self.employee_mobile = self.employee_info["mobile"]
            self.employee_email = self.employee_info["email"]
            self.employee_account_status = self.employee_info["account_status"]
            self.employee_account_type = self.employee_info["account_type"]
            self.employee_head_img = self.employee_info["head_img"]
            self.employee_register_time = self.employee_info["create_time"]
            self.employee_edit_time = self.employee_info["edit_time"]
            self.employee_channel_shop_id = None

    def employee_logout(self):
        """
        员工退出登录
        :return:
        """
        data = {"token": self.token}
        response = Request().post(url=self.hosts['MS_PASSPORT'] +
                                  "/admin/service/logout",
                                  data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
Exemplo n.º 10
0
 def __init__(self, account, password):
     gender = {'1': '男', '2': '女'}
     self.log = Log('Employee')
     self.tool = Tool()
     employee_info = self.tool.query_employee_info_by_account(account)[0]
     self.real_name = employee_info['real_name']
     self.log.logger.debug("工号 %s 的 姓名 为 %s" %
                           (str(account), self.real_name))
     self.mobile = employee_info['mobile']
     self.log.logger.debug("工号 %s 的 手机号 为 %s" % (str(account), self.mobile))
     self.mobile_region = employee_info['mobile_region']
     self.log.logger.debug("工号 %s 的 手机国际区号 为 %s" %
                           (str(account), self.mobile_region))
     self.account_status = employee_info['account_status']
     self.log.logger.debug("工号 %s 的 账户状态 为 %s" %
                           (str(account), self.account_status))
     self.account_type = employee_info['account_type']
     self.log.logger.debug("工号 %s 的 账户类型 为 %s" %
                           (str(account), self.account_type))
     self.email = employee_info['email']
     self.log.logger.debug("工号 %s 的 邮箱 为 %s" % (str(account), self.email))
     self.email_state = employee_info['email_state']
     self.log.logger.debug("工号 %s 的 邮箱状态 为 %s" %
                           (str(account), self.email_state))
     self.user_id = employee_info['id']
     self.log.logger.debug("工号 %s 的 用户id 为 %s" %
                           (str(account), self.user_id))
     self.register_time = employee_info['register_time']
     self.log.logger.debug("工号 %s 的 注册时间 为 %s" %
                           (str(account), self.register_time))
     self.account = str(account)
     self.log.logger.debug("工号 %s 的 工号 为 %s" % (str(account), str(account)))
     self.birthday = employee_info['birthday']
     self.log.logger.debug("工号 %s 的 生日 为 %s" %
                           (str(account), self.birthday))
     self.head_img = employee_info['head_img']
     self.log.logger.debug("工号 %s 的 头像 为 %s" %
                           (str(account), self.head_img))
     # self.sex = employee_info['sex']
     # self.log.logger.debug("工号 %s 的 性别 为 %s" % (str(account), gender[str(self.sex)]))
     self.request = Request()
     session = EmployeeSession(account, password)
     self.token = session.token
     self.log.logger.debug("工号 %s 的 token 为 %s" %
                           (str(account), session.token))
     self.device_id = session.deviceId
     self.log.logger.debug("工号 %s 的 deviceId 为 %s" %
                           (str(account), session.deviceId))
Exemplo n.º 11
0
class SupplierAction(object):
    hosts = Config('config').data['hosts'][Config('config').data['run']]

    def __init__(self, supplier):
        self.log = Log('SupplierAction')
        self.supplier = supplier
        self.request = Request()
        self.tool = Tool()
        self.redis = Redis()
        self.db = DataBaseOperate()
        self.ps = 10

    def supp_upload(self, address, name):
        """
            上传供应商身份证照片
            :return:
            """
        response = self.request.post_file(
            url=self.hosts['MS_USER'] + '/mobile/supplier/upload',
            file_path=address,
            data_dict={
                "_tk_": self.supplier.token,
                "_deviceId_": self.supplier.device_id,
                "identityFile": name
            },
            file_key="identityFile")
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def supp_update(self, positive_img, negative_img):
        """
        提交供应商身份证认证资料
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "userId": self.supplier.user_id,
            "positive": positive_img,
            "negative": negative_img
        }
        rul = self.hosts['MS_USER'] + "/mobile/supplier/update"
        data = bind_data
        response = self.request.post(rul, data)
        json_response = json.loads(response)
        query_re = self.tool.ms_query_supplier_supp_update_by_user_id(
            self.supplier.user_id)
        if query_re is not None:
            query_re = query_re[0]
        if json_response["status"] == "OK":
            assert query_re['positive'] == positive_img
            assert query_re['negative'] == negative_img
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def supp_get_fail(self):
        """
        获取未通过的供应商身份认证资料
        断言需优化
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "userId": self.supplier.user_id
        }
        rul = self.hosts['MS_USER'] + "/mobile/supplier/get-fail"
        data = bind_data
        response = self.request.post(rul, data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def shop_get(self):
        """
        通过当前用户,获取店铺信息
        断言需优化
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     '/mobile/shop/get',
                                     data=bind_data)
        json_response = json.loads(response)
        query_re = self.tool.ms_query_supplier_shop_get_by_user_id(
            self.supplier.user_id)
        if query_re is not None:
            query_re = query_re[0]
        if json_response["status"] == "OK":
            assert query_re['id'] == json_response["content"]["shopId"]
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def upload_avatar(self, address, name):
        """
        上传店铺头像
        :return:
        """
        response = self.request.post_file(
            url=self.hosts['MS_SHOP'] + '/mobile/shop/upload-avatar',
            file_path=address,
            data_dict={
                "_tk_": self.supplier.token,
                "_deviceId_": self.supplier.device_id,
                "avatar": name
            },
            file_key='avatar')
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def shop_send_verify_code(self, shop_mobile):
        """
        发送修改店铺联系电话验证码
        断言需优化
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "mobile": shop_mobile
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     "/mobile/shop/send-verify-code",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def shop_update_mobile(self, shop_mobile):
        """
        提交修改店铺联系电话验证码
        断言需优化
        :return:
        """
        bind_data = {
            "_tk_":
            self.supplier.token,
            "_deviceId_":
            self.supplier.device_id,
            "mobile":
            shop_mobile,
            "verifyCode":
            int(
                self.redis.get('ShopManagerImpl:modify_shop_mobile:%s_%s' %
                               (str(self.supplier.user_id), str(shop_mobile))))
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     "/mobile/shop/update-mobile",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def update_shop_info(self, shop):
        """
        更新店铺信息
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "sellerId": self.supplier.user_id,
            "name": shop.name,
            "shopId": self.supplier.supplier_shop_id,
            # "mobile": shop.mobile,
            "contact": shop.contact,
            "avatar": shop.avatar
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     '/mobile/shop/update-shop-info',
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response

    def update_address(self, province, city, area, address):
        """
        更新供应商店铺地址
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "sellerId": self.supplier.user_id,
            "province": province,
            "city": city,
            "area": area,
            "address": address
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     "/mobile/supplier/update-address",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_update_address_by_shop_id(
                self.shop_get()["shopId"])
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['province'] == province
                assert query_re['city'] == city
                assert query_re['area'] == area
                assert query_re['address'] == address
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def switch_status(self, switch_status):
        """
        更新店铺营业状态(10 营业中 20 休息)
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "status": switch_status,
            "check": "true"
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     "/mobile/shop/switch-status",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_switch_status_by_shop_id(
                self.shop_get()["shopId"])
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['status'] == switch_status
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def category_list(self, category_id):
        """
        查询分类
        :return:
        """
        bind_data = {"categoryId": category_id}
        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/category/list",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_category_list_by_category_id(
                category_id)
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['count(*)'] == len(json_response['content'])
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def category_list_all(self):
        """
        查询所有分类
        :return:
        """
        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/category/list",
                                     data={})
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_category_list_all_by_status(
                10)
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['count(*)'] == len(json_response['content'])
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def store_unit_list(self):
        """
        查询库存单位列表
        :return:
        """
        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/store-unit/list",
                                     data={})
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_store_unit_list_by_is_delete(
                0)
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['count(*)'] == len(json_response['content'])
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"][0]["id"]

    def freight_template_all(self):
        """
        获取运费模板
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     "/mobile/freightTemplate/all",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_freight_template_all_by_shop_id(
                self.shop_get()["shopId"])
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['count(*)'] == len(json_response['content'])
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def freight_template_add(self, title, freigh_per_km, free_price,
                             free_distance, free_price_status,
                             free_distance_status):
        """
        新建运费模板
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "title": title,
            "freighPerKm": freigh_per_km,
            "freePrice": free_price,
            "freeDistance": free_distance,
            "freePriceStatus": free_price_status,
            "freeDistanceStatus": free_distance_status
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     "/mobile/freightTemplate/add",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_freight_template_add_by_freight_id(
                json_response["content"])
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                # assert query_re['shop_id'] == self.shop_get()["shopId"]
                # assert query_re['title'] == title
                # assert query_re['freigh_per_km'] == freigh_per_km
                # assert query_re['free_price'] == free_price
                # assert query_re['free_distance'] == free_distance
                # assert query_re['free_price_status'] == free_price_status
                # assert query_re['free_distance_status'] == free_distance_status
                pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def freight_template_delete(self, freight_id):
        """
        删除运费模板
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "id": freight_id
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     "/mobile/freightTemplate/delete",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_freight_template_delete_by_freight_id(
                freight_id)
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['shop_id'] == self.shop_get()["shopId"]
                assert query_re['id'] == freight_id
                assert query_re['is_delete'] == 1
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def freight_template_edit(self,
                              freight_id,
                              title=None,
                              freigh_per_km=None,
                              free_price=None,
                              free_distance=None,
                              free_price_status=None,
                              free_distance_status=None):
        """
        修改运费模板
        :return:
        """
        query_re = self.tool.ms_query_supplier_freight_template_edit_by_freight_id(
            freight_id)[0]
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "id": freight_id
        }
        if title is None:
            bind_data['title'] = query_re['title']
        else:
            bind_data['title'] = title
        if freigh_per_km is None:
            bind_data['freighPerKm'] = query_re['freigh_per_km']
        else:
            bind_data['freighPerKm'] = freigh_per_km
        if free_price is None:
            bind_data['freePrice'] = query_re['free_price']
        else:
            bind_data['freePrice'] = free_price
        if free_price is None:
            bind_data['freeDistance'] = query_re['free_distance']
        else:
            bind_data['freeDistance'] = free_distance
        if free_price is None:
            bind_data['freePriceStatus'] = query_re['free_price_status']
        else:
            bind_data['freePriceStatus'] = free_price_status
        if free_price is None:
            bind_data['freeDistanceStatus'] = query_re['free_distance_status']
        else:
            bind_data['freeDistanceStatus'] = free_price
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     "/mobile/freightTemplate/edit",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_freight_template_edit_by_freight_id(
                freight_id)
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                if bind_data['title'] != query_re['title']:
                    assert query_re['title'] == title
                if bind_data['freighPerKm'] != query_re['freigh_per_km']:
                    assert query_re['freigh_per_km'] == freigh_per_km
                if bind_data['freePrice'] != query_re['free_price']:
                    assert query_re['free_price'] == free_price
                if bind_data['freeDistance'] != query_re['free_distance']:
                    assert query_re['free_distance'] == free_distance
                if bind_data['freePriceStatus'] != query_re[
                        'free_price_status']:
                    assert query_re['free_price_status'] == free_price_status
                if bind_data['freeDistanceStatus'] != query_re[
                        'free_distance_status']:
                    assert query_re[
                        'free_distance_status'] == free_distance_status
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def freight_template_get(self, freight_id):
        """
        获取单个运费模板
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "id": freight_id
        }
        url = self.hosts['MS_SHOP'] + "/mobile/freightTemplate/get/%s" % str(
            freight_id)
        response = self.request.post(url=url, data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_freight_template_get_by_freight_id(
                freight_id)
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['title'] == json_response["content"]["title"]
                assert query_re['freigh_per_km'] == json_response["content"][
                    "freighPerKm"]
                assert query_re['free_price'] == json_response["content"][
                    "freePrice"]
                assert query_re['free_distance'] == json_response["content"][
                    "freeDistance"]
                assert query_re['free_price_status'] == json_response[
                    "content"]["freePriceStatus"]
                assert query_re['free_distance_status'] == json_response[
                    "content"]["freeDistanceStatus"]
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def upload_img(self, img_address, img_name):
        """
        上传图片
        :return:
        """
        response = self.request.post_file(
            url=self.hosts['MS_PRODUCT'] + '/common/product/upload-img',
            file_path=img_address,
            data_dict={
                "_tk_": self.supplier.token,
                "_deviceId_": self.supplier.device_id,
                "file": img_name
            },
            file_key="file")
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def status_list(self):
        """
        查询商品状态
        :return:
        """
        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/product/status-list",
                                     data={})
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            assert json_response["content"][0]["id"] == 0
            assert json_response["content"][1]["id"] == 10
            assert json_response["content"][2]["id"] == 20
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def product_list(self,
                     parent_id=None,
                     category_id=None,
                     status=None,
                     sort=None,
                     search=None):
        """
        供应商商品列表
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "shopId": self.shop_get()["shopId"],
            "parentId": parent_id,
            "categoryId": category_id,
            "status": status,
            "sort": sort,
            "search": search
        }
        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/product/list",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_product_list_by_shop_id(
                self.shop_get()["shopId"])
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['count(*)'] == json_response["content"]["tc"]
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]["datas"]

    def product_find(self, product_pcode):
        """
        供应商商品详情
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "pcode": product_pcode
        }
        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/product/find",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def status_update(self, product_pcode, product_operation):
        """
        商品上架/下架/删除
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "pcode": product_pcode,
            "operation": product_operation
        }
        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/product/status-update",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_status_update_by_product_pcode(
                product_pcode)
            if query_re is not None:
                query_re = query_re[0]
                if product_operation == 30:
                    assert query_re['is_delete'] == 1
                else:
                    assert query_re['status'] == product_operation
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def product_update(self,
                       pn,
                       parent_id=None,
                       category_id=None,
                       product_name=None,
                       store_unit_id=None,
                       product_content=None,
                       price=None,
                       store=None,
                       freight_id=None,
                       status=None,
                       img=None):
        """
        更新商品信息
        :return:
        """
        query_re = self.tool.ms_query_supplier_product_update_by_pcode(
            self.product_list()[pn]["pcode"])[0]
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "shopId": self.shop_get()["shopId"],
            "pcode": self.product_list()[pn]["pcode"],
            "parentId": parent_id,
            "categoryId": category_id,
            "name": product_name,
            "storeUnitId": store_unit_id,
            "content": product_content,
            "price": price,
            "store": store,
            "freightId": freight_id,
            "status": status,
            "serviceType": 30,
            "imgs": img
        }
        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/product/update",
                                     data=bind_data)
        if parent_id is None:
            bind_data['parentId'] = query_re['parent']
        else:
            bind_data['parentId'] = parent_id
        if category_id is None:
            bind_data['categoryId'] = query_re['category_id']
        else:
            bind_data['categoryId'] = category_id
        if product_name is None:
            bind_data['name'] = query_re['name']
        else:
            bind_data['name'] = product_name
        if store_unit_id is None:
            bind_data['storeUnitId'] = query_re['store_unit_id']
        else:
            bind_data['storeUnitId'] = store_unit_id
        if product_content is None:
            bind_data['content'] = query_re['content']
        else:
            bind_data['content'] = product_content
        if price is None:
            bind_data['price'] = query_re['price']
        else:
            bind_data['price'] = price
        if store is None:
            bind_data['store'] = query_re['store']
        else:
            bind_data['store'] = store
        if freight_id is None:
            bind_data['freightId'] = query_re['freight_id']
        else:
            bind_data['freightId'] = freight_id
        if status is None:
            bind_data['status'] = query_re['STATUS']
        else:
            bind_data['status'] = status
        if img is None:
            bind_data['imgs'] = query_re['url']
        else:
            bind_data['imgs'] = img
        response = self.request.post(
            url="http://192.168.62.253:31005/mobile/product/update",
            data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            if json_response["status"] == "OK":
                query_re = self.tool.ms_query_supplier_product_update_by_pcode(
                    self.product_list()[pn]["pcode"])[0]
                if bind_data['parentId'] != query_re['parent']:
                    assert query_re['parent'] == parent_id
                if bind_data['categoryId'] != query_re['category_id']:
                    assert query_re['category_id'] == category_id
                if bind_data['name'] != query_re['name']:
                    assert query_re['name'] == product_name
                if bind_data['storeUnitId'] != query_re['store_unit_id']:
                    assert query_re['store_unit_id'] == store_unit_id
                if bind_data['content'] != query_re['content']:
                    assert query_re['content'] == product_content
                if bind_data['price'] != query_re['price']:
                    assert query_re['price'] == price
                if bind_data['store'] != query_re['store']:
                    assert query_re['store'] == store
                if bind_data['freightId'] != query_re['freight_id']:
                    assert query_re['freight_id'] == freight_id
                if bind_data['status'] != query_re['STATUS']:
                    assert query_re['STATUS'] == status
                if bind_data['imgs'] != query_re['url']:
                    assert query_re['url'] == img
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def store_list(self):
        """
        库存列表
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "shopId": self.shop_get()["shopId"],
            "pn": 1,
            "ps": 20
        }
        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/product/store-list",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_store_list_by_shop_id(
                self.shop_get()["shopId"])
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['count(*)'] == json_response["content"]["tc"]
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]["datas"]

    def store_update(self, stores):
        """
        库存更新
        断言需优化
        :return:
        """

        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/product/store-update",
                                     bind_data={
                                         "_tk_": self.supplier.token,
                                         "_deviceId_": self.supplier.device_id,
                                         "shopId": self.shop_get()["shopId"],
                                         "stores": stores
                                     })
        pcode_list = []
        for i in list(stores):
            pcode_list.append(i['pcode'])
        store_list = []
        for j in list(stores):
            store_list.append(j['store'])
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            query_re = self.tool.ms_query_supplier_store_update_by_pcode(
                pcode_list)
            if query_re is not None:
                query_re = query_re[0]
            if json_response["status"] == "OK":
                assert query_re['store'] == store_list
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def supp_order_list(self):
        """
        供应商订单列表
        断言需优化
        :return:
        """
        bind_data = {"shopId": self.shop_get()["shopId"]}
        response = self.request.post(url=self.hosts['MS_ORDER'] +
                                     "/mobile/supply/order/list",
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def _mobile_supply_channel_order_list(self, orderStatus, pn, ps):
        '''
        baiying:基地查看商品列表
        :param orderStatus:
        :param pn:
        :param ps:
        :return:
        '''
        data = {
            '_tk_': self.supplier.token,
            '_deviceId_': self.supplier.device_id,
            'orderStatus': orderStatus,
            'pn': pn,
            'ps': ps
        }
        response = self.request.post(
            url='http://dev.ms.order.sjnc.com/mobile/supply/channel/order/list',
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response

    def _mobile_supply_channel_order_detail(self, orderNo):
        '''
        baiying:基地查看订单详情
        :param orderNo:
        :return:
        '''
        data = {
            '_tk_': self.supplier.token,
            '_deviceId_': self.supplier.device_id,
            'orderNo': orderNo
        }
        response = self.request.post(
            url=
            'http://dev.ms.order.sjnc.com/mobile/supply/channel/order/detail',
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response

    def _mobile_supply_channel_order_refuse(self, orderNo):
        '''
        baiying:基地拒绝苗叔的取消订单申请
        :param orderNo:
        :return:
        '''
        data = {
            '_tk_': self.supplier.token,
            '_deviceId_': self.supplier.device_id,
            'orderNo': orderNo
        }
        response = self.request.post(
            url=
            'http://dev.ms.order.sjnc.com/mobile/supply/channel/order/refuse',
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response

    def _mobile_supply_channel_order_agree(self, orderNo):
        '''
        baiying:基地同意苗叔的取消订单申请
        :param orderNo:
        :return:
        '''
        data = {
            '_tk_': self.supplier.token,
            '_deviceId_': self.supplier.device_id,
            'orderNo': orderNo
        }
        response = self.request.post(
            url=
            'http://dev.ms.order.sjnc.com/mobile/supply/channel/order/agree',
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response

    def _mobile_supply_channel_order_finish_send(self, orderNo):
        '''
        baiying:基地完成配送订单
        :param orderNo:
        :return:
        '''
        data = {
            '_tk_': self.supplier.token,
            '_deviceId_': self.supplier.device_id,
            'orderNo': orderNo
        }
        response = self.request.post(
            url=
            'http://dev.ms.order.sjnc.com/mobile/supply/channel/order/finish-send',
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")

    def _mobile_supply_channel_order_pending_count(self, shopId):
        data = {
            '_tk_': self.supplier.token,
            '_deviceId_': self.supplier.device_id,
            'shopId': shopId
        }
        response = self.request.post(
            url=
            'http://dev.ms.order.sjnc.com/mobile/supply/channel/order/pending-count',
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response

    def get_shop_id_by_type(self, seller_id, type=30):
        """
        张鹏飞:根据user_id获取店铺信息
        :param seller_id: user_id
        :param type: 店铺类型,20是苗叔,30是基地
        :return: 返回店铺的基本信息
        """
        data = {
            '_tk_': self.supplier.token,
            '_deviceId_': self.supplier.device_id,
            'sellerId': seller_id,
            'type': type
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     '/mobile/shop/get-by-type',
                                     data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response

    # def update_shop_info(self, shop):
    #     """
    #     张鹏飞:更新店铺信息
    #     :return:
    #     """
    #     bind_data = {"_tk_": self.supplier.token,
    #                  "_deviceId_": self.supplier.device_id,
    #                  "sellerId": self.supplier.user_id,
    #                  "name": shop.name,
    #                  "shopId": self.supplier.channel_shop_id,
    #                  # "mobile": shop.mobile,
    #                  "contact": shop.contact,
    #                  "avatar": shop.avatar}
    #     response = self.request.post(url=self.hosts['MS_SHOP'] + '/mobile/shop/update-shop-info',
    #                                  data=bind_data)
    #     json_response = json.loads(response)
    #     update_shop_info = self.tool.ms_query_update_shop_info_by_seller_id(self.supplier.user_id)[0]
    #     if json_response["status"] == "OK":
    #         assert update_shop_info["name"] == bind_data['name']
    #         # assert update_shop_info["mobile"] == bind_data['mobile']
    #         assert update_shop_info["contact"] == bind_data['contact']
    #     elif json_response["status"] == "ERROR":
    #         raise Exception("status返回ERROR")
    #     else:
    #         raise Exception("status未返回OK或ERROR")
    #     return json_response["content"]

    def product_save(self, product):
        """
        上架新商品
        :param product: 传入商品对象,Product.py
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "parentId": product.parent_category_id,
            "categoryId": product.category_id,
            "name": product.name,
            "shopId": product.supplier_shop_id,
            "price": product.price,
            "storeUnitId": product.unit_id,
            "content": product.content,
            "store": product.store,
            "freightId": product.freight_id,
            "status": product.status,
            "serviceType": product.product_serviceType,
            "imgs": product.image
        }
        response = self.request.post(url=self.hosts['MS_PRODUCT'] +
                                     "/mobile/product/save",
                                     data=bind_data)
        product_info = self.tool.ms_query_channel_product_info_by_shop_id(
            self.get_shop_id_by_type(
                self.supplier.user_id).get('content').get('shopId'))
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response

    def add_address(self, shop):
        """
        新增地址
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "_language_": 'zh',
            "addressId": shop.addressId,
            "shopId": shop.shopId,
            "lng": shop.lng,
            "lat": shop.lat,
            "province": shop.province,
            "city": shop.city,
            "area": shop.area,
            "address": shop.address
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     "/mobile/address/add",
                                     data=bind_data)
        add_address_info = self.tool.ms_query_latest_address_info_by_shop_id(
            self.get_shop_id_by_type(
                self.supplier.user_id).get('content').get('shopId'))[0]
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response

    def switch_status(self, shop_id, status=10, check="true"):
        """
        更新店铺营业状态(10 营业中 20 休息)
        :return:
        """
        bind_data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "shopId": shop_id,
            "status": status,
            "check": check
        }
        response = self.request.post(url=self.hosts['MS_SHOP'] +
                                     "/mobile/shop/switch-status",
                                     data=bind_data)
        json_response = json.loads(response)
        update_shop_info = self.tool.ms_query_update_shop_info_by_seller_id(
            self.supplier.user_id)[0]
        if json_response["status"] == "OK":
            assert update_shop_info["status"] == status
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response["content"]

    def _mobile_address_add(self, receiver, contact_number, province, city,
                            address, door_number, lng, lat, is_default):
        """
        陈秀娟:添加收货地址
        :param receiver:
        :param contact_number:
        :param province:
        :param city:
        :param address:
        :param door_number:
        :param lng:
        :param lat:
        :param is_default:
        :return:
        """
        data = {
            '_tk_': self.supplier.token,
            '_deviceId_': self.supplier.device_id,
            'receiver': receiver,
            'contactNumber': contact_number,
            'province': province,
            'city': city,
            'address': address,
            'doorNumber': door_number,
            'lng': lng,
            'lat': lat,
            'isDefault': is_default
        }
        response = self.request.post(url=self.hosts['MS_USER'] +
                                     '/mobile/address/add',
                                     data=data)
        print(response)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response

    def history_address(self, shop_id):
        """
        获取历史地址列表
        :return:
        """
        data = {
            "_tk_": self.supplier.token,
            "_deviceId_": self.supplier.device_id,
            "shopId": shop_id
        }
        response = self.request.post(
            url='http://dev.ms.shop.sjnc.com/mobile/address/history',
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")
        return json_response
Exemplo n.º 12
0
class Main(unittest.TestCase):
    op_account = Config('config').data['User'][Config(
        'config').data['run']]['op']
    product_name = Config('productname').data['product_name']
    L = Log('Main')
    toot = Tool()
    # 登录
    buyer = User('18380581406')
    # 切换角色
    pa = PurchaserAction(buyer)
    at = AndroidTool()
    distributor = User('18380581416')
    di = DistributorAction(distributor)

    supplier = User('18380581426')
    su = SupplierAction(supplier)

    operator = Employee(op_account['account'], op_account['password'], 1)
    op = OperatorAction(operator)

    def tearDown(self):
        pass

    def setUp(self):
        url = 'http://203.6.234.220:9660/download/attachments/1016059/user-avatar'
        resp = self.di._mobile_apply_channel_status()
        if resp.get('content') in (1, 2, 3):
            if resp.get('content') in (1, 3):
                self.di._mobile_apply_channel()
            resp = self.op._admin_audit_list(1, 10, 2, self.distributor.mobile,
                                             2).get('content').get('datas')[0]
            self.op._admin_audit_pass(id=resp.get('id'),
                                      user_id=resp.get('userId'),
                                      positive=url,
                                      negative=url,
                                      name='Draven',
                                      gender=1,
                                      birthday='2018-11-11',
                                      id_num='513902199309091011',
                                      province=41,
                                      city=4140,
                                      district=1101104,
                                      address='领馆科技')
        resp = self.di._mobile_apply_channel_status()
        if resp.get('content') == 4:
            self.di._mobile_shop_server_server(10, 10)
            self.di._mobile_shop_server_server(20, 10)

        shop_info = self.di.get_shop_id_by_type(self.distributor.user_id)
        shop_id = shop_info.get('content').get('shopId')
        self.distributor.channel_shop_id = shop_id

        self.L.logger.debug('客户端查询地址列表')
        address_list = self.pa._mobile_address_list()
        if len(address_list['content']) == 0:
            self.L.logger.debug('用户添加收货地址')
            self.pa._mobile_address_add('xiu', self.buyer.mobile, '41', '4101',
                                        '天府五街', 'E3-9', 104.069, 30.539, 1)

    def test0033(self):
        try:
            apk_path = '/Users/hengxin/Downloads/苗叔-20181130\(v1.0.24\).apk'
            self.at.launch_app_by_apk(apk_path)
            self.at.login_miaoshu("18602832572", "888888")
            self.at.enter_shop("自动化刷单勿删")
            self.at.pay_product()
            self.at.tear_down_miaoshu()
            Mail().send_html_email()
            self.L.logger.info("测试完成, 邮件发送成功")
        except Exception as e:
            self.at.get_screen_shot()
            self.L.logger.debug("错误信息: %s" % e)
            self.at.tear_down_miaoshu()

    def test0034(self):
        """
        服务订单的完整流程
        :return:
        """
        shopinfo = self.di.get_shop_id_by_type(self.distributor.user_id)
        shop_id = shopinfo.get('content').get('shopId')
        self.distributor.channel_shop_id = shop_id
        shop = Shop(self.distributor)
        self.L.logger.debug('渠道商新增商品')
        for i in range(3):
            p = Product(user=self.distributor, product_name=str(i))
            self.di.product_save(p)
        self.L.logger.debug('添加接单点')
        self.di.add_address(shop)
        self.L.logger.debug('开始接单')
        self.di.switch_status(shop_id=shop_id)

        order_no = self.di._mobile_channel_service_order_submit(
            buyerId=self.buyer.user_id,
            shopId=shop_id,
            serviceType=20,
            doorTime='2019-12-16 08:00',
            content='养猪',
            earnestMoneyPrice=1,
            doorAddress='ce',
            lng=103,
            lat=40)
        self.di._mobile_channel_service_order_detail(order_no['content'])
        order_info = self.pa._mobile_customer_service_order_detail(
            order_no['content'])
        caindex = self.pa.cashier_index(
            order_info['content']['earnestMoneyTradeNo'])
        self.pa.weipay_pay(order_info['content']['earnestMoneyTradeNo'],
                           caindex['content']['channelList'][0]['id'],
                           order_info['content']['earnestMoneyPrice'])
        self.pa.pay_callback(order_info['content']['earnestMoneyTradeNo'],
                             order_info['content']['earnestMoneyPrice'])
        time.sleep(15)
        self.pa._mobile_customer_service_order_detail(order_no['content'])
        self.di._mobile_channel_service_order_detail(order_no['content'])
        self.di._mobile_channel_service_order_finish_door(
            order_no['content'], 10)

        order_info = self.pa._mobile_customer_service_order_detail(
            order_no['content'])
        caindex = self.pa.cashier_index(
            order_info['content']['tailMoneyTradeNo'])
        self.pa.weipay_pay(order_info['content']['tailMoneyTradeNo'],
                           caindex['content']['channelList'][0]['id'],
                           order_info['content']['tailMoneyPrice'])
        self.pa.pay_callback(order_info['content']['tailMoneyTradeNo'],
                             order_info['content']['tailMoneyPrice'])

        time.sleep(15)
        self.pa._mobile_customer_service_order_detail(order_no['content'])
        self.di._mobile_channel_service_order_detail(order_no['content'])

    def test0035(self):
        """
        服务订单的取消流程
        :return:
        """
        shopinfo = self.di.get_shop_id_by_type(self.distributor.user_id)
        shop_id = shopinfo.get('content').get('shopId')
        self.distributor.channel_shop_id = shop_id

        shop = Shop(self.distributor)
        self.L.logger.debug('渠道商新增商品')
        for i in range(3):
            p = Product(user=self.distributor, product_name=str(i))
            self.di.product_save(p)
        self.L.logger.debug('添加接单点')
        self.di.add_address(shop)
        self.L.logger.debug('开始接单')
        self.di.switch_status(shop_id=shop_id)

        order_no = self.di._mobile_channel_service_order_submit(
            buyerId=self.buyer.user_id,
            shopId=shop_id,
            serviceType=10,
            doorTime='2019-12-16 08:00',
            content='养猪',
            earnestMoneyPrice=1,
            doorAddress='ce',
            lng=103,
            lat=40)
        self.di._mobile_channel_service_order_detail(order_no['content'])
        self.pa._mobile_customer_service_order_detail(order_no['content'])
        self.pa._mobile_customer_service_order_cancel(order_no['content'])
        self.pa._mobile_customer_service_order_detail(order_no['content'])
        self.di._mobile_channel_service_order_detail(order_no['content'])

    def test0036(self):
        """
        张鹏飞:服务订单列表  订单状态,10:待下单, 20:待上门, 30:已结款, 40:已完成, 50: 已取消
        :return:
        """
        self.L.logger.debug("卖家服务订单列表")
        self.di._mobile_channel_service_order_list(10)
        self.di._mobile_channel_service_order_list(20)
        self.di._mobile_channel_service_order_list(30)
        self.di._mobile_channel_service_order_list(40)
        self.di._mobile_channel_service_order_list(50)
        self.L.logger.debug("买家服务订单列表")
        self.pa._mobile_customer_service_order_list(10)
        self.pa._mobile_customer_service_order_list(20)
        self.pa._mobile_customer_service_order_list(30)
        self.pa._mobile_customer_service_order_list(40)
        self.pa._mobile_customer_service_order_list(50)

    def test0037(self):
        """
        张鹏飞:商品订单正向流程
        :return:
        """
        shop_info = self.di.get_shop_id_by_type(self.distributor.user_id)
        shop_id = shop_info.get('content').get('shopId')
        self.distributor.channel_shop_id = shop_id

        self.L.logger.debug('苗叔查询运费模板列表')
        freight_list = self.di.all_freight()
        if len(freight_list['content']) <= 1:
            self.L.logger.debug('苗叔添加运费模板')
            self.di.freight_save_or_update(shop_id, '测试模板66', 500, 10000, 2000)

        self.L.logger.debug('更新店铺信息')
        shop = Shop(self.distributor)
        self.di.update_shop_info(shop)
        self.L.logger.debug('渠道商新增商品')
        for i in range(3):
            p = Product(user=self.distributor,
                        product_name=random.choice(self.product_name))
            self.di.product_save(p)
            if i == 0:
                self.L.logger.debug('苗叔筛选查看库存商品列表')
                store_list = self.di.store_list_product(p)
                pro_code = store_list.get('content').get('datas')[0]['pcode']
                self.L.logger.debug('苗叔更新商品库存')
                self.di.store_update_product(pro_code)

                self.L.logger.debug('苗叔筛选查看商品列表')
                pro_list = self.di.list_product(p)
                pro_code = pro_list.get('content').get('datas')[0]['pcode']
                self.L.logger.debug('苗叔上架商品')
                self.di.status_update_product(pro_code)
                self.L.logger.debug('苗叔下架商品')
                self.di.status_update_product(pro_code, 20)
                self.L.logger.debug('苗叔删除商品')
                self.di.status_update_product(pro_code, 30)

        self.L.logger.debug('添加接单点')
        self.di.add_address(shop)
        self.L.logger.debug('开始接单')
        self.di.switch_status(shop_id=shop_id)

        self.L.logger.debug('客户端查询地址列表')
        address_list = self.pa._mobile_address_list()
        address = address_list['content'][0]
        add_id = address['id']

        self.L.logger.debug('客户端查询店铺信息')
        self.pa.get_shop_info_by_id(shop_id)
        self.L.logger.debug('店铺内商品列表')
        product_list = self.pa.get_shop_products_by_shop_id(shop_id)
        p_code = self.pa.tool.get_pro_code_by_pro_list(product_list['content'])

        self.L.logger.debug('添加购物车')
        self.pa.cart_add(p_code)
        self.L.logger.debug('购物车列表')
        cart_list = self.pa.get_cart_list()
        self.L.logger.debug('购物车结算')
        sure_order = self.pa.cart_balance(
            self.pa.tool.get_cart_ids_by_cart_list(cart_list, shop_id), add_id)
        self.L.logger.debug('确认提交订单')
        order = self.pa.submit_order(
            self.pa.tool.order_info_change(sure_order))
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('收银台')
        order_pay_info = self.pa.cashier_index(order['content']['tradeNo'])
        self.L.logger.debug('支付')
        self.pa.weipay_pay(order['content']['tradeNo'],
                           order_pay_info['content']['channelList'][0]['id'],
                           order_pay_info['content']['amount'])
        self.L.logger.debug('付款')
        self.pa.pay_callback(order['content']['tradeNo'],
                             order_pay_info['content']['amount'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('买家未完成配送前取消订单')
        self.pa._mobile_customer_order_apply_refund(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('苗叔拒绝取消订单')
        self.di._mobile_channel_order_refuse(order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('渠道商完成配送')
        self.di.finish_send_order(order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('买家完成配送后取消订单')
        self.pa._mobile_customer_order_apply_refund(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('苗叔拒绝取消订单')
        self.di._mobile_channel_order_refuse(order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('用户确认收货')
        self.pa.confirm_receive(order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])

    def test0038(self):
        """
        张鹏飞:待付款订单取消
        :return:
        """
        shop_info = self.di.get_shop_id_by_type(self.distributor.user_id)
        shop_id = shop_info.get('content').get('shopId')
        self.distributor.channel_shop_id = shop_id

        self.L.logger.debug('更新店铺信息')
        shop = Shop(self.distributor)
        self.di.update_shop_info(shop)
        self.L.logger.debug('渠道商新增商品')
        for i in range(3):
            p = Product(user=self.distributor, product_name=str(i))
            self.di.product_save(p)
        self.L.logger.debug('添加接单点')
        self.di.add_address(shop)
        self.L.logger.debug('开始接单')
        self.di.switch_status(shop_id=shop_id)

        self.L.logger.debug('客户端查询地址列表')
        address_list = self.pa._mobile_address_list()
        address = address_list['content'][0]
        add_id = address['id']

        self.L.logger.debug('客户端查询店铺信息')
        self.pa.get_shop_info_by_id(shop_id)
        self.L.logger.debug('店铺内商品列表')
        product_list = self.pa.get_shop_products_by_shop_id(shop_id)
        p_code = self.pa.tool.get_pro_code_by_pro_list(product_list['content'])

        self.L.logger.debug('添加购物车')
        self.pa.cart_add(p_code)
        self.L.logger.debug('购物车列表')
        cart_list = self.pa.get_cart_list()
        self.L.logger.debug('购物车结算')
        sure_order = self.pa.cart_balance(
            self.pa.tool.get_cart_ids_by_cart_list(cart_list, shop_id), add_id)
        self.L.logger.debug('确认提交订单')
        order = self.pa.submit_order(
            self.pa.tool.order_info_change(sure_order))
        self.L.logger.debug('关闭订单')
        self.pa.order_close(order['content']['orderNo'])

    def test0039(self):
        """
        张鹏飞:待配送订单取消成功
        :return:
        """
        shop_info = self.di.get_shop_id_by_type(self.distributor.user_id)
        shop_id = shop_info.get('content').get('shopId')
        self.distributor.channel_shop_id = shop_id

        self.L.logger.debug('更新店铺信息')
        shop = Shop(self.distributor)
        self.di.update_shop_info(shop)
        self.L.logger.debug('渠道商新增商品')
        for i in range(3):
            p = Product(user=self.distributor, product_name=str(i))
            self.di.product_save(p)
        self.L.logger.debug('添加接单点')
        self.di.add_address(shop)
        self.L.logger.debug('开始接单')
        self.di.switch_status(shop_id=shop_id)

        # self.L.logger.debug('用户添加收货地址')
        # self.pa._mobile_address_add('xiu', 19982917912, '41', '4101', '天府五街', 'E3-9', 104.069, 30.539, 1)
        self.L.logger.debug('客户端查询地址列表')
        address_list = self.pa._mobile_address_list()
        address = address_list['content'][0]
        add_id = address['id']

        self.L.logger.debug('客户端查询店铺信息')
        self.pa.get_shop_info_by_id(shop_id)
        self.L.logger.debug('店铺内商品列表')
        product_list = self.pa.get_shop_products_by_shop_id(shop_id)
        p_code = self.pa.tool.get_pro_code_by_pro_list(product_list['content'])

        self.L.logger.debug('添加购物车')
        self.pa.cart_add(p_code)
        self.L.logger.debug('购物车列表')
        cart_list = self.pa.get_cart_list()
        self.L.logger.debug('购物车结算')
        sure_order = self.pa.cart_balance(
            self.pa.tool.get_cart_ids_by_cart_list(cart_list, shop_id), add_id)
        self.L.logger.debug('确认提交订单')
        order = self.pa.submit_order(
            self.pa.tool.order_info_change(sure_order))
        self.L.logger.debug('订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('收银台')
        order_pay_info = self.pa.cashier_index(order['content']['tradeNo'])
        self.L.logger.debug('支付')
        self.pa.weipay_pay(order['content']['tradeNo'],
                           order_pay_info['content']['channelList'][0]['id'],
                           order_pay_info['content']['amount'])
        self.L.logger.debug('付款')
        self.pa.pay_callback(order['content']['tradeNo'],
                             order_pay_info['content']['amount'])

        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('买家未完成配送前取消订单')
        self.pa._mobile_customer_order_apply_refund(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('苗叔拒绝取消订单')
        self.di._mobile_channel_order_refuse(order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('买家未完成配送前取消订单')
        self.pa._mobile_customer_order_apply_refund(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('苗叔同意取消订单')
        self.di._mobile_channel_order_agree(order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])

    def test0040(self):
        """
        张鹏飞:已配送完成的订单,买家取消订单,卖家同意
        :return:
        """
        shop_info = self.di.get_shop_id_by_type(self.distributor.user_id)
        shop_id = shop_info.get('content').get('shopId')
        self.distributor.channel_shop_id = shop_id

        self.L.logger.debug('更新店铺信息')
        shop = Shop(self.distributor)
        self.di.update_shop_info(shop)
        self.L.logger.debug('渠道商新增商品')
        for i in range(3):
            p = Product(user=self.distributor, product_name=str(i))
            self.di.product_save(p)
        self.L.logger.debug('添加接单点')
        self.di.add_address(shop)
        self.L.logger.debug('开始接单')
        self.di.switch_status(shop_id=shop_id)

        # self.L.logger.debug('用户添加收货地址')
        # self.pa._mobile_address_add('xiu', 19982917912, '41', '4101', '天府五街', 'E3-9', 104.069, 30.539, 1)
        self.L.logger.debug('客户端查询地址列表')
        address_list = self.pa._mobile_address_list()
        address = address_list['content'][0]
        add_id = address['id']

        self.L.logger.debug('客户端查询店铺信息')
        self.pa.get_shop_info_by_id(shop_id)
        self.L.logger.debug('店铺内商品列表')
        product_list = self.pa.get_shop_products_by_shop_id(shop_id)
        p_code = self.pa.tool.get_pro_code_by_pro_list(product_list['content'])

        self.L.logger.debug('添加购物车')
        self.pa.cart_add(p_code)
        self.L.logger.debug('购物车列表')
        cart_list = self.pa.get_cart_list()
        self.L.logger.debug('购物车结算')
        sure_order = self.pa.cart_balance(
            self.pa.tool.get_cart_ids_by_cart_list(cart_list, shop_id), add_id)
        self.L.logger.debug('确认提交订单')
        order = self.pa.submit_order(
            self.pa.tool.order_info_change(sure_order))
        self.L.logger.debug('订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('收银台')
        order_pay_info = self.pa.cashier_index(order['content']['tradeNo'])
        self.L.logger.debug('支付')
        self.pa.weipay_pay(order['content']['tradeNo'],
                           order_pay_info['content']['channelList'][0]['id'],
                           order_pay_info['content']['amount'])
        self.L.logger.debug('付款')
        self.pa.pay_callback(order['content']['tradeNo'],
                             order_pay_info['content']['amount'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('买家未完成配送前取消订单')
        self.pa._mobile_customer_order_apply_refund(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('苗叔拒绝取消订单')
        self.di._mobile_channel_order_refuse(order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('渠道商完成配送')
        self.di.finish_send_order(order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('买家完成配送后取消订单')
        self.pa._mobile_customer_order_apply_refund(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])
        self.L.logger.debug('苗叔同意取消订单')
        self.di._mobile_channel_order_agree(order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('买家订单详情')
        self.pa.order_detail(order['content']['orderNo'])
        self.L.logger.debug('卖家订单详情')
        self.di.shopping_order_detail(order['content']['orderNo'])

    def test0041(self):
        """
        张鹏飞:商品订单列表  订单状态,10:待下单, 20:待上门, 30:已结款, 40:已完成, 50: 已取消
        :return:
        """
        self.L.logger.debug("卖家商品订单待处理列表")
        self.di.list_order(20)
        self.L.logger.debug("卖家商品订单待买家收货列表")
        self.di.list_order(30)
        self.L.logger.debug("卖家商品订单已完成列表")
        self.di.list_order(40)
        self.L.logger.debug("卖家商品订单已退款已取消列表")
        self.di.list_order(70)
        self.L.logger.debug("买家商品订单列表")
        self.pa.order_list(10)
        self.pa.order_list(20)
        self.pa.order_list(30)
        self.pa.order_list(40)
        self.pa.order_list((50, 70))

    def test0042(self):
        """
        baiying:苗叔向基地购买商品正向流程
        :return:
        """
        shop_info = self.su.get_shop_id_by_type(self.supplier.user_id)
        shop_id = shop_info.get('content').get('shopId')
        self.supplier.supplier_shop_id = shop_id
        self.L.logger.debug('更新店铺信息')
        shop = Shop(self.supplier)
        self.su.update_shop_info(shop)
        self.L.logger.debug('基地新增商品')
        for i in range(3):
            p = Product(user=self.supplier, product_name=str(i))
            self.su.product_save(p)
        self.L.logger.debug('基地地址')
        address_list = self.su.history_address(shop_id)
        if len(address_list['content']) == 0:
            self.L.logger.debug('基地添加店铺地址')
            self.su._mobile_address_add('xiu', self.buyer.mobile, '41', '4101',
                                        '天府五街', 'E3-9', 104.069, 30.539, 1)
        self.L.logger.debug('开始接单')
        self.su.switch_status(shop_id=shop_id)
        self.L.logger.debug('客户端查询地址列表')
        address_list = self.di._mobile_address_list()
        address = address_list['content'][0]
        add_id = address['id']
        self.L.logger.debug('客户端查询店铺信息')
        self.di.get_shop_info_by_id(shop_id)
        self.L.logger.debug('店铺内商品列表')
        product_list = self.pa.get_shop_products_by_shop_id(shop_id)
        p_code = self.pa.tool.get_pro_code_by_pro_list(product_list['content'])
        self.L.logger.debug('添加购物车')
        self.di.cart_add(p_code)
        self.L.logger.debug('购物车列表')
        cart_list = self.di.get_cart_list()
        self.L.logger.debug('购物车结算')
        sure_order = self.di.cart_balance(
            self.pa.tool.get_cart_ids_by_cart_list(cart_list, shop_id), add_id)
        self.L.logger.debug('确认提交订单')
        order = self.di.submit_order(
            self.pa.tool.order_info_change(sure_order))
        self.L.logger.debug('苗叔订单详情')
        self.di._mobile_supply_customer_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('收银台')
        order_pay_info = self.di.cashier_index(order['content']['tradeNo'])
        self.L.logger.debug('支付')
        self.di.weipay_pay(order['content']['tradeNo'],
                           order_pay_info['content']['channelList'][0]['id'],
                           order_pay_info['content']['amount'])
        self.L.logger.debug('付款')
        self.di.pay_callback(order['content']['tradeNo'],
                             order_pay_info['content']['amount'])
        time.sleep(10)
        self.L.logger.debug('苗叔订单详情')
        self.di._mobile_supply_customer_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('基地订单详情')
        self.su._mobile_supply_channel_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('苗叔未完成配送前取消订单')
        self.di._mobile_supply_customer_order_apply_refund(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('苗叔订单详情')
        self.di._mobile_supply_customer_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('基地订单详情')
        self.su._mobile_supply_channel_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('苗叔未完成配送前取消订单')
        self.L.logger.debug('基地拒绝取消订单')
        self.su._mobile_supply_channel_order_refuse(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('苗叔订单详情')
        self.di._mobile_supply_customer_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('基地订单详情')
        self.su._mobile_supply_channel_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('基地完成配送')
        self.su._mobile_supply_channel_order_finish_send(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('苗叔订单详情')
        self.di._mobile_supply_customer_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('基地订单详情')
        self.su._mobile_supply_channel_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('苗叔完成配送后取消订单')
        self.di._mobile_supply_customer_order_apply_refund(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('苗叔订单详情')
        self.di._mobile_supply_customer_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('基地订单详情')
        self.su._mobile_supply_channel_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('基地拒绝取消订单')
        self.su._mobile_supply_channel_order_refuse(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('苗叔订单详情')
        self.di._mobile_supply_customer_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('基地订单详情')
        self.su._mobile_supply_channel_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('苗叔确认收货')
        self.di._mobile_supply_customer_order_confirm_receive(
            order['content']['orderNo'])
        time.sleep(10)
        self.L.logger.debug('苗叔订单详情')
        self.di._mobile_supply_customer_order_detail(
            order['content']['orderNo'])
        self.L.logger.debug('基地订单详情')
        self.su._mobile_supply_channel_order_detail(
            order['content']['orderNo'])

    def test0043(self):
        """
        张鹏飞:运营后台订单数据
        :return:
        """
        self.op._admin_report_order_pie_sta('2018-12-1', '2018-12-20')
        self.op._admin_report_order_summary_sta('2018-12-1', '2018-12-20')
        self.op._admin_report_service_order_service_data_card(
            '2018-12-1', '2018-12-20')
        self.op._admin_report_service_order_service_data_trend(
            '2018-12-1', '2018-12-20')
        self.op._admin_report_service_order_service_type_distribution(
            '2018-12-1', '2018-12-20')
Exemplo n.º 13
0
 def __init__(self,
              mobile,
              password,
              register=False,
              login_type=1,
              mobile_region=86):
     self.log = Log('User')
     self.tool = Tool()
     self.request = Request()
     self.user_info = self.tool.query_user_info_by_mobile(mobile)
     if self.user_info != ():
         self.user_info = self.user_info[0]
     if register:
         if self.user_info:
             self.tool.delete_user_by_mobile(mobile)
         else:
             pass
         self.dataSSO = Config('sso').data
         validate_code_data = \
             self.dataSSO['http://dev.sso.worldfarm.com']['/mobile/sso/register/validate-verify-code']
         validate_code_data["mobileRegion"] = mobile_region
         validate_code_data["mobile"] = mobile
         validate_code = self.request.post(
             url=
             "http://dev.sso.worldfarm.com/mobile/sso/register/validate-verify-code",
             data=validate_code_data)
         business_token = json.loads(validate_code)["content"]
         register_data = self.dataSSO['http://dev.sso.worldfarm.com'][
             '/mobile/sso/register']
         register_data["mobileRegion"] = mobile_region
         register_data["mobile"] = mobile
         register_data["newPassword"] = password
         register_data["businessToken"] = business_token
         self.request.post(
             url="http://dev.sso.worldfarm.com/mobile/sso/register",
             data=register_data)
         user_info = self.tool.query_user_info_by_mobile(mobile)[0]
         self.user_id = user_info["id"]
         self.real_name = user_info["real_name"]
         self.user_name = user_info["username"]
         self.sex = user_info["sex"]
         self.mobile_region = user_info["mobile_region"]
         self.mobile = user_info["mobile"]
         self.email = user_info["email"]
         self.email_state = user_info["email_state"]
         self.account_status = user_info["account_status"]
         self.account_type = user_info["account_type"]
         self.head_img = user_info["head_img"]
         self.company_name = user_info["company_name"]
         self.register_time = user_info["register_time"]
         self.nation_id = user_info["nation_id"]
         self.province_id = user_info["province_id"]
         self.city_id = user_info["city_id"]
         self.address = user_info["address"]
         self.birthday = user_info["birthday"]
         self.edit_time = user_info["edit_time"]
         self.log.logger.debug("手机号为 %s 的用户注册成功, id为%s" %
                               (str(self.mobile), str(self.user_id)))
         us = UserSession(mobile, password, login_type)
         self.password = password
         self.token, self.device_id = us.token, us.deviceId
         self.language = 'zh'
     else:
         if self.user_info:
             self.user_id = self.user_info["id"]
             self.real_name = self.user_info["real_name"]
             self.user_name = self.user_info["username"]
             self.sex = self.user_info["sex"]
             self.mobile_region = self.user_info["mobile_region"]
             self.mobile = self.user_info["mobile"]
             self.email = self.user_info["email"]
             self.email_state = self.user_info["email_state"]
             self.account_status = self.user_info["account_status"]
             self.account_type = self.user_info["account_type"]
             self.head_img = self.user_info["head_img"]
             self.company_name = self.user_info["company_name"]
             self.register_time = self.user_info["register_time"]
             self.nation_id = self.user_info["nation_id"]
             self.province_id = self.user_info["province_id"]
             self.city_id = self.user_info["city_id"]
             self.address = self.user_info["address"]
             self.birthday = self.user_info["birthday"]
             self.edit_time = self.user_info["edit_time"]
             us = UserSession(mobile, password, login_type)
             self.password = password
             self.token, self.device_id = us.token, us.deviceId
             self.language = 'zh'
         else:
             raise Exception(
                 '手机号 %s 无对应用户: 1. 若需老账号请修改手机号; 2. 若需新注册添加, register=True' %
                 str(mobile))
Exemplo n.º 14
0
class User(object):
    hosts = Config('config').data['hosts'][Config('config').data['run']]

    def __init__(self, mobile):
        self.log = Log('User')
        self.tool = Tool()
        self.request = Request()
        # self.user_info = self.tool.miaoshu_query_user_info_by_mobile(mobile, 1)
        # if self.user_info != ():
        #     self.user_info = self.user_info[0]
        #     if self.user_info['channel_status'] is not None:
        #         self.tool.ms_delete_user_by_mobile(mobile)
        us = UserSession(mobile)
        self.encryptedPwd = us.encrypted_password
        self.token, self.device_id = us.token, us.deviceId
        self.user_info = self.tool.miaoshu_query_user_info_by_mobile(mobile, 1)
        if self.user_info != ():
            self.user_info = self.user_info[0]

            self.user_id = self.user_info["id"]
            self.real_name = self.user_info["real_name"]
            self.nickname = self.user_info["nickname"]
            self.sex = self.user_info["sex"]
            self.mobile = self.user_info["mobile"]
            self.email = self.user_info["email"]
            self.account_status = self.user_info["account_status"]
            self.account_type = self.user_info["account_type"]
            self.head_img = self.user_info["head_img"]
            self.register_time = self.user_info["create_time"]
            self.edit_time = self.user_info["edit_time"]
            self.channel_shop_id = None
            self.supplier_shop_id = None

    def automatic_login(self):
        """
        自动登录
        :return:
        """
        data = {
            'token': self.token,
            'deviceId': self.device_id,
            'encryptedPwd': self.encryptedPwd
        }
        response = Request().post(url=self.hosts['MS_PASSPORT'] +
                                  "/mobile/sso/automatic-login",
                                  data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            self.token = json_response['content']['token']
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def user_logout(self):
        """
        用户退出登录
        :return:
        """
        data = {"token": self.token}
        response = Request().post(url=self.hosts['MS_PASSPORT'] +
                                  "/mobile/sso/logout",
                                  data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def check_token(self):
        """
        验证用户token
        :return:
        """
        data = {'token': self.token, 'deviceId': self.device_id}
        response = Request().post(url=self.hosts['MS_PASSPORT'] +
                                  "/api/sso/check-token",
                                  data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def clear_token(self, app_id='MS_APP'):
        """
        清除用户token
        :return:
        """
        data = {'userId': self.user_id, 'appId': app_id}
        response = Request().post(url=self.hosts['MS_PASSPORT'] +
                                  "/api/sso/clear-token",
                                  data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            raise Exception("status返回ERROR")
        else:
            raise Exception("status未返回OK或ERROR")

    def _mobile_user_update_nickname(self, nickname):
        """
        张鹏飞: 新用户登录后,添加昵称调用
        :param nickname: 昵称
        :return:
        """
        data = {
            '_tk_': self.token,
            '_deviceId_': self.device_id,
            'nickname': nickname
        }
        response = self.request.post(url=self.hosts['MS_USER'] +
                                     '/mobile/user/update-nickname',
                                     data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            pass
        else:
            raise Exception("status未返回OK或ERROR")
Exemplo n.º 15
0
class Main(unittest.TestCase):
    L = Log('Main')
    tool = Tool()
    user = User("18602832572", "123456a", register=False)
    appbuyeraction = AppBuyerAction(user)
    webbuyeraction = WebBuyerAction(user)
    pa = PromoterAction(Employee('100028', '123456'))
    # user = User("13658082213", "123456a", register=False)
    # buyeraction = BuyerAction(user)
    # employee = Employee(buyeraction.get_customer_account(), '123456')
    emp = Employee("100005", "123456")
    dataTRADE = Config('trade').data
    service = ServiceAction(emp)
    seller_agent = SellerAgent(user)

    def tearDown(self):
        pass

    def setUp(self):
        pass

    def test2000(self):
        """
        mobile卖家中介模糊搜索农场
        :return:
        """
        selleragency = SellerAgent(self.user)
        selleragency.mobile_seller_agent_search_farm("漫花庄园", language='zh')

    def test2001(self):
        """
        mobile卖家中介新增农场备注
        :return:
        """
        selleragency = SellerAgent(self.user)
        selleragency.mobile_seller_agency_add_remark(415,
                                                     "lalal",
                                                     language='zh')

    def test2002(self):
        """
        mobile卖家中介关闭农场
        :return:
        """
        selleragency = SellerAgent(self.user)
        selleragency.mobile_seller_agency_close_farm(522, 30, language='zh')

    def test2003(self):
        """
        mobile卖家中介关闭农场列表
        :return:
        """
        selleragency = SellerAgent(self.user)
        selleragency.mobile_seller_agency_close_farm_list(419, language='zh')

    def test2004(self):
        """
        mobile卖家中介农场详情
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.mobile_seller_agency_farm_detail(140.7842627,
                                                     37.8301386,
                                                     523,
                                                     language='zh')

    def test2005(self):
        """
        mobile卖家中介已发布农场列表
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.mobile_seller_agency_farm_list(2, language='zh')

    def test2006(self):
        """
        mobile卖家中介已发布农场地图页
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.mobile_seller_agency_map_list(140.7842627,
                                                  37.8301386,
                                                  language='zh')

    def test2007(self):
        """
        mobile卖家中介农场详情
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.mobile_seller_agency_update_farm(516, {"area": 12},
                                                     language='zh')

    def test2008(self):
        """
        mobile卖家中介农场主
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.mobile_seller_agency_farmer_detail(528, language='zh')

    def test2009(self):
        """
        mobile卖家中介更新农场主
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.mobile_seller_agency_farmer_update(
            528,
            '王二麻子',
            1,
            "2018-01-01",
            18602883456,
            "https://zyp-farm-2.oss-ap-southeast-1.aliyuncs.com/data/farm/head/1535092943322.jpg",
            '嘿嘿嘿',
            11,
            language='zh')

    def test2010(self):
        """
        mobile卖家中介增加资质
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.mobile_seller_agency_use_add(
            '王二麻子',
            "叽里呱啦大公司", '[{"type": "2",'
            '"url": "https://zyp-farm-2.oss-ap-southeast-1.aliyuncs.com/data/farm/head/1535093109545.jpg"},'
            '{"type": "3",'
            '"url": "https://zyp-farm-2.oss-ap-southeast-1.aliyuncs.com/data/farm/head/1535092873551.jpg"},'
            '{"type": "4",'
            '"url": "https://zyp-farm-2.oss-ap-southeast-1.aliyuncs.com/data/farm/head/1535092943322.jpg"}]',
            language='zh')

    def test2011(self):
        """
        mobile卖家中介资质状态
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.mobile_seller_agency_use_status(language='zh')

    def test2012(self):
        """
        mobile卖家中介农场意向买家列表
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.mobile_seller_agency_farm_buyer_list(414,
                                                         3,
                                                         1,
                                                         language='zh')

    def test2013(self):
        """
        mobile卖家中介消息意向买家列表
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.mobile_seller_agency_message_buyer_list(language='zh')

    def test2014(self):
        """
        mobile卖家中介IM发送农场
        :return:
        """
        selleragency = SellerAgent(self.user)
        selleragency.mobile_seller_agency_im_send_farm_list("庄园",
                                                            language='zh')

    def test2015(self):
        """
        web卖家中介新增备注
        :return:
        """
        selleragency = SellerAgent(self.user)
        selleragency.web_seller_agency_add_remark(415,
                                                  "web自动化测试备注",
                                                  language='zh')

    def test2016(self):
        """
        web卖家中介新增农场
        :return:
        """
        selleragency = SellerAgent(self.user)
        selleragency.web_seller_agent_add_farm("web测试大娃二娃农场名",
                                               "种植",
                                               "南澳大利亚",
                                               "2000万-3500万",
                                               "5000亩-10000亩",
                                               language='zh')

    def test2017(self):
        """
        web卖家中介关闭农场
        :return:
        """
        selleragency = SellerAgent(self.user)
        selleragency.web_seller_agency_close_farm(522, 30, language='zh')

    def test2018(self):
        """
        web卖家中介关闭农场列表
        :return:
        """
        selleragency = SellerAgent(self.user)
        selleragency.web_seller_agency_close_farm_list(419, language='zh')

    def test2019(self):
        """
        web卖家中介农场详情
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.web_seller_agency_farm_detail(140.7842627,
                                                  37.8301386,
                                                  523,
                                                  language='zh')

    def test2020(self):
        """
        web卖家中介已发布农场列表
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.web_seller_agency_farm_list(2, language='zh')

    def test2021(self):
        """
        web卖家中介更新农场
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.web_seller_agency_update_farm(516, {"area": 12},
                                                  language='zh')

    def test2022(self):
        """
        web卖家中介农场主
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.web_seller_agency_farmer_detail(528, language='zh')

    def test2023(self):
        """
        web卖家中介更新农场主
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.web_seller_agency_farmer_update(528,
                                                    {'realName': ' web测试'},
                                                    language='zh')

    def test2024(self):
        """
        web卖家中介增加资质
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.web_seller_agency_use_add(
            '王二麻子',
            "叽里呱啦大公司", '[{"type": "2",'
            '"url": "https://zyp-farm-2.oss-ap-southeast-1.aliyuncs.com/data/farm/head/1535093109545.jpg"},'
            '{"type": "3",'
            '"url": "https://zyp-farm-2.oss-ap-southeast-1.aliyuncs.com/data/farm/head/1535092873551.jpg"},'
            '{"type": "4",'
            '"url": "https://zyp-farm-2.oss-ap-southeast-1.aliyuncs.com/data/farm/head/1535092943322.jpg"}]',
            language='zh')

    def test2025(self):
        """
        web卖家中介资质状态
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.web_seller_agency_use_status(language='zh')

    def test2026(self):
        """
        web卖家中介农场意向买家列表
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.web_seller_agency_farm_buyer_list(414, 3, 1, language='zh')

    def test2027(self):
        """
        web卖家中介消息意向买家列表
        :return:
        """
        seleragency = SellerAgent(self.user)
        seleragency.web_seller_agency_message_buyer_list(language='zh')

    def test2028(self):
        """
        mobile卖家中介新增农场
        :return:
        """
        selleragency = SellerAgent(self.user)
        selleragency.mobile_seller_agent_add_farm("web测试大娃二娃农场名",
                                                  "种植",
                                                  "南澳大利亚",
                                                  "2000万-3500万",
                                                  "5000亩-10000亩",
                                                  language='zh')

    def test0001(self):
        """
        app买家绑定销售ID
        :return:
        """

        re = self.appbuyeraction.app_buyer_sale_bind(487)
        print(re)
        re = self.appbuyeraction.app_buyer_query_sale(487)
        print(re)

    def test0002(self):
        """
        app查询用户个人信息
        :return:
        """
        user_info = self.appbuyeraction.app_buyer_user_detail()
        print(user_info)

    def test0003(self):
        """
        app感兴趣
        :return:
        """
        print(
            self.appbuyeraction.app_get_order_no(
                self.appbuyeraction.app_get_farm_list_first_id()))

    def test0004(self):
        """
        app用户修改个人信息
        :return:
        """
        self.appbuyeraction.app_buyer_update_user(
            "星买家", "男", "成都大农科技有限公司", "前端工程师",
            "http://zyp-farm-2.oss-ap-southeast-1.aliyuncs.com/data/farm/head/1530012058085.png"
        )

    def test0005(self):
        """
        app上传购买资质
        :return:
        """
        farm_id = self.appbuyeraction.app_get_farm_list_first_id()
        is_add = self.appbuyeraction.app_buyer_resource_is_add(
            self.appbuyeraction.app_get_order_no(farm_id))
        r = self.appbuyeraction.app_buyer_resource_add(
            farm_id, self.appbuyeraction.app_get_order_no(farm_id))
        print(is_add)
        print(r)

    def test0006(self):
        """
        app查看购买资质详情
        :return:
        """
        farm_id = self.appbuyeraction.app_get_farm_list_first_id()
        r = self.appbuyeraction.app_buyer_resource_detail(
            self.appbuyeraction.app_get_order_no(farm_id))
        print(r)

    def test0008(self):
        """
        app卖家中介上传及认证
        :return:
        """
        self.seller_agent.mobile_approve_seller_agent("张鹏飞", "大农科技")
        self.tool.operator_approve_seller_agent("18380581401", True)

    def test0009(self):
        """
        app卖家中介绑定客服,地推
        :return:
        """
        self.pa.promoter_bind_seller_agent(self.user.user_id)

    def test0007(self):
        """
        app卖家发布场--买家感兴趣--客服邀请上传资质--买家上传资质--客服审核资质
        :return:
        """
        farm_id = self.seller_agent.mobile_seller_agent_add_farm(
            "调试农场名",
            "种植",
            "南澳大利亚",
            "2000万-3500万",
            "5000亩-10000亩",
            language='zh')
        # farm_id = self.buyeraction.app_get_farm_id()
        order_no = self.appbuyeraction.app_get_order_no(farm_id)
        order_id = self.tool.query_order_id_by_order_no(order_no)
        self.service.service_send_auth_url(order_id)
        self.appbuyeraction.app_buyer_resource_is_add(order_no)
        self.appbuyeraction.app_buyer_resource_add(farm_id, order_no)
        response_resource_list = self.service.service_buyer_resource_list(
            order_no, self.user.real_name)
        response_resource_list = json.loads(response_resource_list)
        resource_list = response_resource_list.get('content').get('datas')
        resource_id = None
        for resource in resource_list:
            resource_order_no = resource.get('orderNo')
            if resource_order_no == order_no:
                resource_id = resource.get('id')
        self.service.service_buyer_resource_audit(resource_id, 2, "接口测试不通过")

    def test0010(self):
        """
        app农场列表
        :return:
        """
        print(self.appbuyeraction.app_get_farm_list())

    def test0011(self):
        """
        app农场详情
        :return:
        """
        self.appbuyeraction.app_get_farm_detail(
            self.appbuyeraction.app_get_farm_list_first_id())

    def test0012(self):
        """
        web端
        卖家发布场--买家感兴趣--客服邀请上传资质--买家上传资质--客服审核资质
        :return:
        """
        farm_id = self.seller_agent.web_seller_agent_add_farm("调试农场名",
                                                              "种植",
                                                              "南澳大利亚",
                                                              "2000万-3500万",
                                                              "5000亩-10000亩",
                                                              language='zh')
        order_no = self.webbuyeraction.web_get_order_no(farm_id)
        order_id = self.tool.query_order_id_by_order_no(order_no)
        self.service.service_send_auth_url(order_id)
        self.webbuyeraction.web_buyer_resource_is_add(order_no)
        self.webbuyeraction.web_buyer_resource_add(farm_id, order_no)
        response_resource_list = self.service.service_buyer_resource_list(
            order_no, self.user.real_name)
        response_resource_list = json.loads(response_resource_list)
        resource_list = response_resource_list.get('content').get('datas')
        resource_id = None
        for resource in resource_list:
            resource_order_no = resource.get('orderNo')
            if resource_order_no == order_no:
                resource_id = resource.get('id')
        self.service.service_buyer_resource_audit(resource_id, 2, "接口测试不通过")

    def test0013(self):
        """
        app查询是都显示认证提示
        :return:
        """
        self.appbuyeraction.app_buyer_update_show_auth()

    def test0014(self):
        """
        添加订阅规则
        :return:
        """
        self.appbuyeraction.app_buyer_subscribe_add()

    def test0015(self):
        """
        订阅规则详情
        :return:
        """
        self.appbuyeraction.app_buyer_subscribe_detail()

    def test0016(self):
        """
        修改订阅规则
        :return:
        """
        self.appbuyeraction.app_buyer_subscribe_update()
Exemplo n.º 16
0
class PromoterAction(object):

    def __init__(self, promoter):
        self.log = Log('PromoterAction')
        self.promoter = promoter
        self.data_sso = Config('sso').data
        self.data_trade = Config('trade').data
        self.data_sms = Config('sms').data
        self.request = Request()
        self.tool = Tool()
        self.ps = 10

    def promoter_bind_seller_agent(self, seller_agent_id):
        bind_data = {'sellerAgencyId': str(seller_agent_id),
                     "_tk_": self.promoter.token,
                     "_deviceId_": self.promoter.device_id}
        response = self.request.post(url='http://dev.trade.worldfarm.com/mobile/intermediary/bind',
                                     data=bind_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        elif json_response["status"] == "ERROR":
            json_response["errorMsg"] == "卖家中介已被其他用户绑定"
        else:
            raise Exception("status未返回OK或ERROR")

    def promoter_get_agent_detail(self, seller_agent_id):
        agent_data = {'sellerAgencyId': str(seller_agent_id),
                      "_tk_": self.promoter.token,
                      "_deviceId_": self.promoter.device_id}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/intermediary/detail',
                          data=agent_data)

    def promoter_get_own_detail(self):
        agent_data = {"_tk_": self.promoter.token,
                      "_deviceId_": self.promoter.device_id}
        detail = self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/user/detail',
                                   data=agent_data)
        json_detail = json.loads(detail)
        employee_info = self.tool.query_employee_info_by_account(self.promoter.account)[0]
        birthday = json_detail["content"]["birthday"]/1000
        birthday_string = time.strftime("%Y-%m-%d", time.localtime(birthday))
        assert employee_info["birthday"] == birthday_string
        assert employee_info["head_img"] == json_detail["content"]["headImg"]
        assert employee_info["mobile"] == json_detail["content"]["mobile"]
        assert employee_info["mobile_region"] == json_detail["content"]["mobileRegion"]
        assert employee_info["real_name"] == json_detail["content"]["realName"]

    def promoter_update_birthday(self, birthday):
        birthday_data = {"_tk_": self.promoter.token,
                         "_deviceId_": self.promoter.device_id,
                         "birthday": birthday}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/user/update-birthday',
                          data=birthday_data)
        employee_info = self.tool.query_employee_info_by_account(self.promoter.account)[0]
        assert employee_info['birthday'] == birthday

    def promoter_update_head_img(self,
                                 head_img='http://zyp-farm-2.oss-ap-southeast-1.aliyuncs.com'
                                          '/data/farm/head/1530012246905.png'):
        img_data = {"_tk_": self.promoter.token,
                    "_deviceId_": self.promoter.device_id,
                    "headImg": head_img}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/user/update-head-img',
                          data=img_data)
        employee_info = self.tool.query_employee_info_by_account(self.promoter.account)[0]
        assert employee_info['head_img'] == head_img

    def promoter_update_mobile(self, mobile, mobile_region=86):
        mobile_data = {"_tk_": self.promoter.token,
                       "_deviceId_": self.promoter.device_id,
                       "mobileRegion": str(mobile_region),
                       "mobile": str(mobile)}
        response = self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/user/update-mobile',
                                     data=mobile_data)
        json_response = json.loads(response)
        employee_info = self.tool.query_employee_info_by_account(self.promoter.account)[0]
        if json_response["status"] == "OK":
            assert employee_info['mobile_region'] == str(mobile_region)
            assert employee_info['mobile'] == str(mobile)
        elif json_response["status"] == "ERROR":
            assert json_response["errorMsg"] == "该手机号已存在"
        else:
            raise Exception("status未返回OK或ERROR")

    def promoter_update_real_name(self, real_name):
        real_name_data = {"_tk_": self.promoter.token,
                          "_deviceId_": self.promoter.device_id,
                          "realName": real_name}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/user/update-real-name',
                          data=real_name_data)
        employee_info = self.tool.query_employee_info_by_account(self.promoter.account)[0]
        assert employee_info['real_name'] == str(real_name)

    def promoter_update_sex(self, sex):
        gender = {"男": 1, "女": 2}
        real_name_data = {"_tk_": self.promoter.token,
                          "_deviceId_": self.promoter.device_id,
                          "sex": gender[sex]}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/user/update-sex',
                          data=real_name_data)
        employee_info = self.tool.query_employee_info_by_account(self.promoter.account)[0]
        assert employee_info['sex'] == gender[sex]

    def promoter_update_signature(self, signature='这家伙很懒什么都没留下'):
        signature_data = {"_tk_": self.promoter.token,
                          "_deviceId_": self.promoter.device_id,
                          "signature": signature}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/user/update-signature',
                          data=signature_data)
        employee_info = self.tool.query_employee_info_by_account(self.promoter.account)[0]
        assert employee_info['signature'] == signature

    def promoter_add_visa(self, visa_time, expiry_time, visa_img_url):
        visa_data = {"_tk_": self.promoter.token,
                     "_deviceId_": self.promoter.device_id,
                     "visaTime": visa_time,
                     "expiryTime": expiry_time,
                     "visaImgUrl": visa_img_url}
        response = self.request.post(url='http://dev.trade.worldfarm.com/mobile/visa/add',
                                     data=visa_data)
        employee_info = self.tool.query_employee_info_by_account(self.promoter.account)[0]
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            assert employee_info['visa_time'] == visa_time
            assert employee_info['expiry_time'] == expiry_time
            assert employee_info['url'] == visa_img_url
        elif json_response["status"] == "ERROR":
            assert json_response['errorMsg'] == "用户已添加签证信息,不能重复添加"
        else:
            raise Exception("status未返回OK或ERROR")

    def promoter_visa_detail(self):
        visa_data = {"_tk_": self.promoter.token,
                     "_deviceId_": self.promoter.device_id}
        visa_detail = self.request.post(url='http://dev.trade.worldfarm.com/mobile/visa/detail',
                                        data=visa_data)
        json_detail = json.loads(visa_detail)
        employee_info = self.tool.query_employee_info_by_account(self.promoter.account)[0]
        visa_time_unix = json_detail['content']['visaTime'] / 1000
        expiry_time_unix = json_detail['content']['expiryTime'] / 1000
        visa_time = time.strftime("%Y-%m-%d", time.localtime(visa_time_unix))
        expiry_time = time.strftime("%Y-%m-%d", time.localtime(expiry_time_unix))
        assert employee_info['visa_time'] == visa_time
        assert employee_info['expiry_time'] == expiry_time
        assert employee_info['url'] == json_detail['content']['visaImgUrl']

    def promoter_update_visa(self, visa_time, expiry_time, visa_img_url):
        visa_data = {"_tk_": self.promoter.token,
                     "_deviceId_": self.promoter.device_id,
                     "visaTime": visa_time,
                     "expiryTime": expiry_time,
                     "visaImgUrl": visa_img_url}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/visa/update',
                          data=visa_data)
        employee_info = self.tool.query_employee_info_by_account(self.promoter.account)[0]
        assert employee_info['visa_time'] == visa_time
        assert employee_info['expiry_time'] == expiry_time
        assert employee_info['url'] == visa_img_url

    def promoter_query_agent_farm(self, seller_agent_id, name_like=''):
        query_data = {"_tk_": self.promoter.token,
                      "_deviceId_": self.promoter.device_id,
                      "sellerAgencyId": str(seller_agent_id),
                      "nameLike": name_like}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/farm/im/send-farm/list',
                          data=query_data)

    def promoter_add_potential_agent_remark(self, seller_agent_id, remark):
        remark_data = {"_tk_": self.promoter.token,
                       "_deviceId_": self.promoter.device_id,
                       "sellerId": str(seller_agent_id),
                       "remark": remark}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/farm/potential-agency/add-remark',
                          data=remark_data)

    def promoter_bind_potential_agent(self, potential_agent_id):
        potential_agent_data = {"_tk_": self.promoter.token,
                                "_deviceId_": self.promoter.device_id,
                                "agencyId": str(potential_agent_id)}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/farm/potential-agency/bind',
                          data=potential_agent_data)

    def promoter_query_potential_agent_detail(self, potential_agent_id):
        potential_agent_data = {"_tk_": self.promoter.token,
                                "_deviceId_": self.promoter.device_id,
                                "sellerId": str(potential_agent_id)}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/farm/potential-agency/detail',
                          data=potential_agent_data)

    def promoter_query_potential_agent_list(self, sort_code=2, sort_type='desc', lng='', lat='', pn=1, ps=20):
        query_data = {"_tk_": self.promoter.token,
                      "_deviceId_": self.promoter.device_id,
                      "sortCode": sort_code,
                      "sortType": sort_type,
                      "lat": lat,
                      "lng": lng,
                      "pn": pn,
                      "ps": ps}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/farm/potential-agency/list',
                          data=query_data)

    def promoter_query_farm_dynamic_list(self, lng=133.8713537, lat=-23.6993532, pn=1, ps=20):
        query_data = {"_tk_": self.promoter.token,
                      "_deviceId_": self.promoter.device_id,
                      "lat": lat,
                      "lng": lng,
                      "pn": pn,
                      "ps": ps}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/farm/dynamic/list',
                          data=query_data)

    def promoter_bind_agent_list(self, sort_code=1):
        sort_data = {"_tk_": self.promoter.token,
                     "_deviceId_": self.promoter.device_id,
                     "sortCode": sort_code}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/farm/bind/list',
                          data=sort_data)

    def promoter_bind_agent_detail(self, seller_agent_id, lng=133.8713537, lat=-23.6993532):
        query_data = {"_tk_": self.promoter.token,
                      "_deviceId_": self.promoter.device_id,
                      "lat": lat,
                      "lng": lng,
                      "sellerAgencyId": seller_agent_id}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/farm/bind/detail',
                          data=query_data)

    def promoter_bind_agent_update_remark(self, seller_agent_id, remark):
        remark_data = {"_tk_": self.promoter.token,
                       "_deviceId_": self.promoter.device_id,
                       "remark": remark,
                       "sellAgencyId": seller_agent_id}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/farm/bind/update-remark',
                          data=remark_data)

    def promoter_query_farm_detail(self, farm_id, pn=1, ps=20):
        farm_data = {"_tk_": self.promoter.token,
                     "_deviceId_": self.promoter.device_id,
                     "farmId": farm_id,
                     "pn": pn,
                     "ps": ps}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/promoter/farm/detail',
                          data=farm_data)

    def promoter_query_buyer_list(self, farm_id, seller_agent_id, pn=1, ps=20):
        farm_data = {"_tk_": self.promoter.token,
                     "_deviceId_": self.promoter.device_id,
                     "farmId": farm_id,
                     "sellerAgencyId": seller_agent_id,
                     "pn": pn,
                     "ps": ps}
        self.request.post(url='http://dev.trade.worldfarm.com/mobile/order/promotion/buyer-list',
                          data=farm_data)
Exemplo n.º 17
0
class TranslatorAction(object):
    def __init__(self, translator):
        self.log = Log('TranslatorAction')
        self.translator = translator
        self.data_sso = Config('sso').data
        self.data_trade = Config('trade').data
        self.data_sms = Config('sms').data
        self.data_base = DataBaseOperate()
        self.request = Request()
        self.tool = Tool()

    def translator_query_translate_list(self, farm_type=None, key_word=None):
        """
        已发布农场-待翻译农场列表
        :param farm_type: 详见farm_types字典
        :param key_word: 农场名称或农场地址
        :return: 返回与关键字匹配的已发布待翻译农场里列表
        """
        farm_types = {
            '休闲': 1,
            '畜牧': 2,
            '养殖': 2,
            '酒庄': 3,
            '葡萄园': 3,
            '林木': 4,
            '狩猎': 4,
            '综合': 5,
            '种植': 6
        }
        search_data = {
            "search": key_word,
            "_tk_": self.translator.token,
            "_deviceId_": self.translator.device_id
        }
        if farm_type:
            search_data["type"] = farm_types[farm_type]
        else:
            search_data["type"] = ""
        response = self.request.post(
            url='http://dev.trade.worldfarm.com/admin/farm/translate-list',
            data=search_data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            to_translate_list = json_response["content"]["datas"]
            farm_id_set = set([farm["id"] for farm in to_translate_list])
            translate_list_data = self.data_base.operate(
                '39.104.28.40', 'farm-trade',
                'SELECT id FROM t_farm WHERE language_type != 3')
            data_base_id = [farm["id"] for farm in translate_list_data]
            assert farm_id_set.issubset(data_base_id)
            return to_translate_list
        else:
            raise Exception("Error: %s" % json_response["errorMsg"])

    def translator_query_translate_farm_detail(self, farm_id):
        """
        已发布农场-待翻译农场详情
        :param farm_id: 已发布待翻译农场id
        :return: 返回对应id农场详情
        """
        response = self.request.get(
            url='http://dev.trade.worldfarm.com'
            '/admin/farm/translate-detail/%s?_tk_=%s&_deviceId_=%s' %
            (str(farm_id), self.translator.token, self.translator.device_id))
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            farm_json = json_response["content"]
            farm_data_base = self.tool.query_farm_detail_by_farm_id(farm_id)[0]
            assert farm_json["address"] == farm_data_base["address"]
            assert farm_json["addressEn"] == farm_data_base["address_en"]
            assert farm_json["area"] == farm_data_base["area"]
            assert farm_json["areaCode"] == farm_data_base["area_code"]
            assert farm_json["farmName"] == farm_data_base["farm_name"]
            assert farm_json["farmNameEn"] == farm_data_base["farm_name_en"]
            assert farm_json["id"] == farm_data_base["id"]
            assert farm_json["languageType"] == farm_data_base["language_type"]
            assert farm_json["lat"] == farm_data_base["lat"]
            assert farm_json["lng"] == farm_data_base["lng"]
            assert farm_json["totalPrice"] == farm_data_base["total_price"]
            assert farm_json["type"] == farm_data_base["type"]
            assert farm_json["unitCode"] == farm_data_base["unit_code"]
            assert farm_json["content"].replace(
                '\\', '') == farm_data_base["content"].replace('\\', '')
            return farm_json
        else:
            raise Exception("Error: %s" % json_response["errorMsg"])

    def translator_query_published_farm_detail(self):
        """

        :return:
        """
        data = {
            "_tk_": self.translator.token,
            "_deviceId_": self.translator.device_id
        }
        response = self.request.post(
            url='http://dev.trade.worldfarm.com/admin/farm/published-detail',
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        else:
            raise Exception("Error: %s" % json_response["errorMsg"])

    def translator_query_published_farm_list(self):
        """

        :return:
        """
        data = {
            "_tk_": self.translator.token,
            "_deviceId_": self.translator.device_id
        }
        response = self.request.post(
            url='http://dev.trade.worldfarm.com/admin/farm/published-detail',
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            pass
        else:
            raise Exception("Error: %s" % json_response["errorMsg"])
Exemplo n.º 18
0
 def __init__(self,
              farm_name="自动化默认农场名",
              state_name="北部地区",
              farm_type="综合",
              area_range="500亩以下",
              price_range="500万以下"):
     farm_type_dict = {
         "休闲": 1,
         "畜牧": 2,
         "养殖": 2,
         "种植": 6,
         "酒庄": 3,
         "葡萄园": 3,
         "林木": 4,
         "狩猎": 4,
         "综合": 5
     }
     farm_area_dict = {
         "500亩以下": self.fake.random_int(1, 82),
         "500亩-5000亩": self.fake.random_int(83, 823),
         "5000亩-10000亩": self.fake.random_int(824, 1647),
         "10000亩-50000亩": self.fake.random_int(1648, 8236),
         "50000亩以上": self.fake.random_int(8237, 16473)
     }
     total_price_dict = {
         "500万以下": self.fake.random_int(1, 980392),
         "500万-2000万": self.fake.random_int(1020408, 3921568),
         "2000万-3500万": self.fake.random_int(4081632, 6862745),
         "3500万-5000万": self.fake.random_int(7142857, 9803921),
         "5000万以上": self.fake.random_int(10204081, 19607843)
     }
     city = Tool().query_random_city(state_name)
     self.farm_name = farm_name
     self.farm_name_en = self.fake_en.name() + " Farm"
     self.L.logger.debug("中文农场名 为 %s" % self.farm_name)
     self.L.logger.debug("英文农场名 为 %s" % self.farm_name_en)
     self.farm_type = farm_type_dict[farm_type]
     self.L.logger.debug("农场类型 为 %s %s" % (self.farm_type, farm_type))
     city_name = city[0]
     self.L.logger.debug("农场的州-市 为 %s %s" % (state_name, city_name))
     self.farm_address = city[1]["address"]
     self.L.logger.debug("中文农场地址 为 %s" % self.farm_address)
     self.farm_address_en = city[1]["address"]
     self.L.logger.debug("英文农场地址 为 %s" % self.farm_address_en)
     self.lat = city[1]["lat"]
     self.L.logger.debug("农场维度lat 为 %s" % self.lat)
     self.lng = city[1]["lng"]
     self.L.logger.debug("农场经度lng 为 %s" % self.lng)
     self.nation_id = 25
     self.L.logger.debug("农场的nationId 为 %d" % self.nation_id)
     self.province_id = city[1]["state"]
     self.L.logger.debug("农场的provinceId 为 %d" % self.province_id)
     self.city_id = city[1]["city"]
     self.L.logger.debug("农场的cityId 为 %d" % self.city_id)
     self.area = farm_area_dict[area_range]
     self.L.logger.debug("农场的面积 为 %s 英亩" % str(self.area))
     self.total_price = total_price_dict[price_range]
     self.L.logger.debug("农场的总价 为 %s 澳元" % str(self.total_price))
     self.unitCode = "AUD"
     self.L.logger.debug("农场的货币单位 为 %s" % self.unitCode)
     self.unit_price = self.total_price / self.area
     self.L.logger.debug("农场的单价 为 %s 澳元" % str(self.unit_price))
     self.water_rights = "中文水权描述:" + self.fake.text().replace('\n', ' ')
     self.L.logger.debug(self.water_rights)
     self.water_rights_en = "英文水权描述:" + self.fake_en.text().replace(
         '\n', ' ')
     self.L.logger.debug(self.water_rights_en)
     self.regulations = "中文土地使用规定:" + self.fake.text().replace('\n', ' ')
     self.L.logger.debug(self.regulations)
     self.regulations_en = "英文土地使用规定:" + self.fake_en.text().replace(
         '\n', ' ')
     self.L.logger.debug(self.regulations_en)
     self.rainfall = self.fake.random_int(20, 1000)
     self.L.logger.debug("降雨量 %s毫升/年" % self.rainfall)
     self.disadvantage = "中文杂草和虫害:" + self.fake.text().replace('\n', ' ')
     self.L.logger.debug(self.disadvantage)
     self.disadvantage_en = "英文杂草和虫害:" + self.fake_en.text().replace(
         '\n', ' ')
     self.L.logger.debug(self.disadvantage_en)
     self.area_code = 'mu'
     self.L.logger.debug("中文面积单位: %s" % self.area_code)
     self.area_code_en = 'acre'
     self.L.logger.debug("英文面积单位: %s" % self.area_code_en)
     self.soil_ph = 3  #float(self.fake.random_int(-10, 150)/10)
     self.L.logger.debug("土壤PH值: %s" % self.soil_ph)
     self.soil_type = self.fake.random_int(1, 3)
     redis = Redis()
     self.images = '[{"type":"1", ' \
                   '"url":"' + redis.get("image%s" % str(self.fake.random_int(1, 75))) + '"},' \
                   '{"type":"2", ' \
                   '"url":"' + redis.get("image%s" % str(self.fake.random_int(1, 75))) + '"},' \
                   '{"type":"3", ' \
                   '"url":"' + redis.get("image%s" % str(self.fake.random_int(1, 75))) + '"},' \
                   '{"type":"4", ' \
                   '"url":"' + redis.get("image%s" % str(self.fake.random_int(1, 75))) + '"}]'
     self.L.logger.debug("农场Banner 为 %s " % str(self.images))
     self.content = '[{"type":"1", ' \
                    '"value":"' + redis.get("image%s" % str(self.fake.random_int(1, 75))) + '"},'\
                    '{"type":"2", ' \
                    '"value":"' + self.fake.text().replace("\n", " ") + '"},' \
                    '{"type":"1", ' \
                    '"value":"' + redis.get("image%s" % str(self.fake.random_int(1, 75))) + '"},' \
                    '{"type":"2", ' \
                    '"value":"' + self.fake.text().replace("\n", " ") + '"}]'
     self.L.logger.debug("中文农场介绍 为 %s " % str(self.content))
     self.content_en = '[{"type":"1", ' \
                       '"value":"' + redis.get("image%s" % str(self.fake.random_int(1, 75))) + '"},'\
                       '{"type":"2", ' \
                       '"value":"' + self.fake_en.text().replace("\n", " ") + '"},' \
                       '{"type":"1", ' \
                       '"value":"' + redis.get("image%s" % str(self.fake.random_int(1, 75))) + '"},' \
                       '{"type":"2", ' \
                       '"value":"' + self.fake_en.text().replace("\n", " ") + '"}]'
     self.L.logger.debug("英文农场介绍 为 %s " % str(self.content_en))
Exemplo n.º 19
0
class WebBuyerAction(object):

    def __init__(self, buyer):
        """
        初始化方法的一个常用数据
        :param buyer: 传的是一个用户对象
        """
        self.log = Log('buyer')
        self.buyer = buyer
        self.data_sso = Config('sso').data
        self.data_trade = Config('trade').data
        self.data_sms = Config('sms').data
        self.request = Request()
        self.tool = Tool()
        self.ps = 10

    def web_buyer_update_user(self, real_name, sex, company_name, company_post, head_img=None):
        """
        修改个人信息
        :param real_name: 名字
        :param sex:性别, 男或女
        :param company_name: 公司名称
        :param company_post: 公司职位
        :param head_img: 头像
        :return:
        """
        gender = {'男': 1, '女': 2}
        update_data = self.data_trade['http://dev.trade.worldfarm.com']['/web/buyer/user/update']
        update_data["head_img"] = head_img
        update_data["realName"] = real_name
        update_data["sex"] = gender[sex]
        update_data["companyName"] = company_name
        update_data["companyPosition"] = company_post
        update_data["_tk_"] = self.buyer.token
        update_data["_deviceId_"] = self.buyer.device_id
        self.request.post(url="http://dev.trade.worldfarm.com/web/buyer/user/update",
                          data=update_data)
        user_info = self.tool.query_user_info_by_mobile(self.buyer.mobile)[0]
        assert user_info["real_name"] == real_name
        assert user_info["sex"] == gender[sex]
        assert user_info["company_name"] == company_name
        assert user_info["company_position"] == company_post
        assert user_info["head_img"] == head_img
        self.log.logger.debug("姓名 更新为 %s" % real_name)
        self.log.logger.debug("性别 更新为 %s" % sex)
        self.log.logger.debug("公司 更新为 %s" % company_name)
        self.log.logger.debug("职位 更新为 %s" % company_post)
        self.log.logger.debug("头像 更新为 %s" % head_img)

    def web_change_password(self, newpwd):
        """
        修改密码
        :param newpwd: 新密码,6-15位数字和字母的组合
        :return:
        """
        data = self.data_sso.get('http://dev.sso.worldfarm.com').get('/web/sso/update-pwd')
        data['mobile'] = self.buyer.mobile
        data['password'] = self.buyer.password
        data['newPassword'] = newpwd
        data['token'] = self.buyer.token
        data["_deviceId_"] = self.buyer.device_id
        r = self.request.post(url='http://dev.sso.worldfarm.com/web/sso/update-pwd', data=data).decode('utf-8')
        print(r)
        self.log.logger.debug("修改密码为: %s" % newpwd)

    def web_get_farm_list(self, city_id=None, farm_type=None, min_price=None, max_price=None,
                          min_area=None, max_area=None, sort_code=2):
        """
        获取农场列表
        :return:
        """
        data = self.data_trade['http://dev.trade.worldfarm.com']['/web/buyer/farm/list']
        data['ps'] = self.ps
        data['provinceId'] = city_id
        data['farmTypeList'] = farm_type
        data['minPrice'] = min_price
        data['maxPrice'] = max_price
        data['minArea'] = min_area
        data['maxArea'] = max_area
        data['sortCode'] = sort_code
        data['_language_'] = self.buyer.language
        farm_list = Request().post(url="http://dev.trade.worldfarm.com/web/buyer/farm/list", data=data)
        farm_list_json = json.loads(farm_list).get('content').get('datas')
        query_farm_list = self.tool.query_farm_list()
        for i in range(len(farm_list_json)):
            assert farm_list_json[i].get('id') == query_farm_list[i].get('farm_id')
            assert farm_list_json[i].get('type') == query_farm_list[i].get('type')
            assert farm_list_json[i].get('lng') == query_farm_list[i].get('lng')
            assert farm_list_json[i].get('lat') == query_farm_list[i].get('lat')
            # assert farm_list_json[i].get('imgLisst') == "[" + query_farm_list[i].get('url') + "]"
        return farm_list_json

    def web_get_farm_detail(self, farm_id):
        """
        获取农场详情
        :param farm_id: 农场ID
        :return:
        """
        data = self.data_trade['http://dev.trade.worldfarm.com']['/web/buyer/farm/detail']
        data['farmId'] = farm_id
        data['_language_'] = self.buyer.language
        farm_detail = Request().post(url="http://dev.trade.worldfarm.com/web/buyer/farm/detail", data=data)
        farm_detail_json = json.loads(farm_detail)
        query_farm_detail = self.tool.query_farm_detail_by_farm_id(farm_id)
        assert farm_detail_json.get('content').get('id') == query_farm_detail[0].get('id')
        return farm_detail

    def web_get_farm_list_first_id(self):
        """
        获取农场的ID
        :return:
        """
        farm_detail = self.web_get_farm_detail(self.web_get_farm_list()[0]['id'])
        farm_id = json.loads(farm_detail)['content']['id']
        return farm_id

    def web_get_customer_id_by_farm(self, farm_id):
        """
        获取农场对应的客服ID
        :param farm_id: 农场ID
        :return:
        """
        farm_detail = self.web_get_farm_detail(farm_id)
        farm_detail_json = json.loads(farm_detail)
        customer_service_id = farm_detail_json['content']['customerServiceId']
        return customer_service_id

    def web_get_order_no(self, farm_id):
        """
        生成订单,并返回订单号
        :param farm_id: 农场ID
        :return: 订单No
        """
        data = self.data_trade['http://dev.trade.worldfarm.com']['/web/order/submit-order']
        data['farmId'] = farm_id
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        order_no = Request().post(url="http://dev.trade.worldfarm.com/web/order/submit-order", data=data)
        order_no_json = json.loads(order_no)
        return order_no_json['content']['orderNo']

    def web_get_customer_account(self, farm_id):
        """
        获取客服IM返回客服的登录账户
        :param farm_id: 农场ID
        :return:
        """
        data = self.data_sms['http://dev.sms.worldfarm.com']['/web/im-auth/buyer/get/service-accid']
        data['userId'] = self.web_get_customer_id_by_farm(farm_id)
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        service_id = Request().post(url="http://dev.sms.worldfarm.com"
                                        "/web/im-auth/buyer/get/service-accid", data=data)
        service_id = str(json.loads(service_id)['content']).split('@')[0]
        account = self.tool.query_employee_user_no_by_user_id(service_id)
        return account

    def web_buyer_sale_bind(self, sale_id):
        """
        绑定销售ID
        :param sale_id: 销售ID
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/buyer/user/sale-bind')
        data['saleId'] = sale_id
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        re = Request().post(url="http://dev.trade.worldfarm.com/web/buyer/user/sale-bind", data=data)
        query_sale_id = self.tool.query_sale_id_by_user_id(self.buyer.user_id)[0].get('salesman_id')
        assert sale_id == query_sale_id
        return re

    def web_buyer_query_sale(self, sale_id):
        """
        查询销售
        :param sale_id: 销售ID
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/buyer/user/query-sale')
        data['saleId'] = sale_id
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        re = Request().post(url="http://dev.trade.worldfarm.com/web/buyer/user/query-sale", data=data)
        query_sale_id = self.tool.query_sale_id_by_user_id(self.buyer.user_id)[0].get('salesman_id')
        assert sale_id == query_sale_id
        return re

    def web_buyer_sale_bind_update(self, sale_id):
        """
        更新销售ID
        :param sale_id: 销售ID
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/buyer/user/sale-bind-update')
        data['saleId'] = sale_id
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        re = Request().post(url="http://dev.trade.worldfarm.com/web/buyer/user/sale-bind-update", data=data)
        query_sale_id = self.tool.query_sale_id_by_user_id(self.buyer.user_id)[0].get('salesman_id')
        assert sale_id == query_sale_id
        return re

    def web_buyer_user_detail(self):
        """
        查询用户的detail
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/buyer/user/detail')
        if data is None:
            data = {}
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        user_detail = Request().post(url="http://dev.trade.worldfarm.com/web/buyer/user/detail", data=data)
        user_detail_content = eval(user_detail).get('content')
        query_user_detail = self.tool.query_user_detail_by_user_id(self.buyer.user_id)[0]
        assert user_detail_content.get('realName') == query_user_detail.get('real_name')
        return user_detail

    def web_buyer_resource_add(self, farm_id, order_no):
        """
        上传购买资质
        :param farm_id: 农场ID
        :param order_no: 订单的NO
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/buyer-resource/add')
        data['farmId'] = farm_id
        data['orderNo'] = order_no
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(url="http://dev.trade.worldfarm.com/web/buyer-resource/add", data=data)
        return r

    def web_buyer_resource_detail(self, order_no):
        """
        订单的购买资质详情
        :param order_no: 订单号
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/buyer-resource/detail')
        data['orderNo'] = order_no
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(url="http://dev.trade.worldfarm.com/web/buyer-resource/detail", data=data)
        return r

    def web_buyer_resource_is_add(self, order_no):
        """
        判断订单是否可以上传购买资质
        :param order_no: 订单号
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/buyer-resource/is-add')
        data['orderNo'] = order_no
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(url="http://dev.trade.worldfarm.com/web/buyer-resource/is-add", data=data)
        return r

    def web_buyer_resource_list(self, order_no, status, buyer_name):
        """
        购买资质列表
        :param order_no: 订单号
        :param status: 资质状态
        :param buyer_name: 买家姓名
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/buyer-resource/resource-list')
        data['orderNo'] = order_no
        data['status'] = status
        data['buyerName'] = buyer_name
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(url="http://dev.trade.worldfarm.com/web/buyer-resource/resource-list", data=data)
        return r

    def web_buyer_farm_recommend_list(self, farm_id):
        """
        农场相关推荐
        :param farm_id: 农场ID
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/buyer/farm/recommend-list')
        data['farmId'] = farm_id
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(url="http://dev.trade.worldfarm.com/web/buyer/farm/recommend-list", data=data)
        return r

    def web_buyer_order_del(self, order_no_list=None):
        """
        买家删除订单
        :param order_no_list: 使用,分割,eg:1,2,3
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/order/del')
        data['orderNoList'] = order_no_list
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(url="http://dev.trade.worldfarm.com/web/order/del", data=data)
        return r

    def web_buyer_order_list(self, type_no=0):
        """
        感兴趣列表
        :param type_no: 0,1;默认填0,1表示查询的list是可以删除的order
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get('/web/order/list')
        data['type'] = type_no
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(url="http://dev.trade.worldfarm.com/web/order/list", data=data)
        return r
Exemplo n.º 20
0
class SellerAgent(object):
    def __init__(self, seller_agent):
        self.log = Log('sellerAgent')
        self.sellerAgent = seller_agent
        self.data_sso = Config('sso').data
        self.data_trade = Config('trade').data
        self.data_sms = Config('sms').data
        self.request = Request()
        self.tool = Tool()
        self.ps = 10

    def mobile_approve_seller_agent(self, real_name, company_name):
        approve_info = self.tool.query_approve_status(self.sellerAgent.mobile)
        if approve_info:
            if approve_info[0]['status'] == 2:
                approve_data = self.data_trade[
                    'http://dev.trade.worldfarm.com'][
                        '/mobile/seller-agency/user/add']
                approve_data["realName"] = real_name
                approve_data["companyName"] = company_name
                # approve_data["resource"] = resource
                approve_data["_tk_"] = self.sellerAgent.token
                approve_data["_deviceId_"] = self.sellerAgent.device_id
                self.request.post(
                    url=
                    "http://dev.trade.worldfarm.com/mobile/seller-agency/user/add",
                    data=approve_data)
                self.log.logger.debug("中介姓名 更新为 %s" % real_name)
                self.log.logger.debug("中介公司 更新为 %s" % company_name)
                # self.log.logger.debug("中介资料 更新为 %s" % resource)
            else:
                raise Exception('手机号 %s 的用户, 认证状态为 %s, 1为待审核, 3为审核通过' % (str(
                    self.sellerAgent.mobile), str(approve_info[0]['status'])))
        else:
            approve_data = self.data_trade['http://dev.trade.worldfarm.com'][
                '/mobile/seller-agency/user/add']
            approve_data["realName"] = real_name
            approve_data["companyName"] = company_name
            # approve_data["resource"] = resource
            approve_data["_tk_"] = self.sellerAgent.token
            approve_data["_deviceId_"] = self.sellerAgent.device_id
            self.request.post(
                url=
                "http://dev.trade.worldfarm.com/mobile/seller-agency/user/add",
                data=approve_data)
            self.log.logger.debug("中介姓名 更新为 %s" % real_name)
            self.log.logger.debug("中介公司 更新为 %s" % company_name)
            # self.log.logger.debug("中介资料 更新为 %s" % resource)

    def mobile_seller_agent_add_farm(self, farm_name, farm_type, farm_state,
                                     price_range, are_range, language):
        data = self.data_trade['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/farm/add-farm']
        fm = Farm(farm_name=farm_name,
                  farm_type=farm_type,
                  state_name=farm_state,
                  price_range=price_range,
                  area_range=are_range)
        fmr = Farmer()
        data['farmName'] = fm.farm_name
        data['provinceId'] = fm.province_id
        data['cityId'] = fm.city_id
        data['area'] = fm.area
        data['totalPrice'] = fm.total_price
        data['images'] = fm.images
        data['type'] = fm.farm_type
        data['address'] = fm.farm_address
        data['lat'] = fm.lat
        data['lng'] = fm.lng
        data['content'] = fm.content
        data['headImg'] = fmr.head_img
        data['realName'] = fmr.real_name
        data['birthday'] = fmr.birthday
        data['mobile'] = fmr.mobile
        data['farmerAddress'] = fmr.farmer_address
        data['sex'] = fmr.sex
        data['ownedFarmerNum'] = fmr.owned_farmer_num
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['_language_'] = language
        user_id = self.tool.query_user_id_by_mobile(self.sellerAgent.mobile)
        farmId = Request().post(
            url=
            "http://dev.trade.worldfarm.com/mobile/seller-agency/farm/add-farm",
            data=data)
        add_farm = json.loads(farmId)['content']
        farm_info = self.tool.query_latest_farm_info(user_id)
        # self.assertEqual(farm_info["address_en"], data['address'])
        # self.assertEqual(farm_info["area"], data['area'])
        # self.assertEqual(farm_info["farm_name_en"], data['farmName'])
        # self.assertEqual(farm_info["lat"], data['lat'])
        # self.assertEqual(farm_info["lng"], data['lng'])
        # self.assertEqual(farm_info["status"], 20)
        # self.assertEqual(farm_info["total_price"], data['totalPrice'])
        # self.assertEqual(farm_info["type"], data['type'])
        return add_farm

    def mobile_seller_agent_search_farm(self, keyWords, language):
        # 模糊搜索农场列表
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/farm/search']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['keyWords'] = keyWords
        r = Request().post(
            url='http://dev.trade.worldfarm.com/mobile/farm/search', data=data)
        r_content = json.loads(r)['content']
        query_search_farm_list = self.tool.query_farm_list_by_keywords(
            keyWords)[0]
        assert r_content[0] == query_search_farm_list

    def mobile_seller_agency_add_remark(self, farmId, remark, language):
        # 卖家中介新增备注
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/farm/add-remark']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['farmId'] = farmId
        data['remark'] = remark
        add = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/farm/add-remark',
            data=data)
        add_remark = json.loads(add)
        # query_add_remark = self.tool.query_remark_by_farm_id(farmId)
        assert add_remark['status'] == 'OK'

    def mobile_seller_agency_close_farm(self, farmId, type, language):
        # 卖家中介关闭农场
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/farm/close']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['farmId'] = farmId
        data['type'] = type  #30已售出50暂不销售
        r = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/farm/close',
            data=data)
        r_close = json.loads(r)
        query_close_farm = self.tool.query_close_farm_by_farm_id(
            self.sellerAgent.user_id)
        if r_close == {
                'errorCode': '00030003',
                'errorMsg': '农场已售出或者已关闭',
                'status': 'ERROR'
        }:
            assert r_close['errorMsg'] == str('农场已售出或者已关闭')
            assert r_close['status'] == 'ERROR'
        else:
            assert r_close.get['farm_id'] == query_close_farm['id']
            assert r_close['status'] == query_close_farm['status']

    def mobile_seller_agency_close_farm_list(self, pn, language):
        # 卖家中介关闭农场列表
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/farm/closed-list']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['pn'] = pn
        r = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/farm/closed-list',
            data=data)
        r_close = json.loads(r).get('content').get('datas')
        query_close_list = self.tool.query_close_list_by_seller_agency_id(
            self.sellerAgent.user_id)
        for i in range(len(r_close)):
            assert r_close[i].get('id') == query_close_list[i].get('id')
            assert r_close[i].get('imgUrl') == query_close_list[i].get(
                'img_url')
            assert r_close[i].get('askNum') == query_close_list[i].get(
                'ask_num')

    def mobile_seller_agency_farm_detail(self, lng, lat, farmId, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/farm/detail']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['lng'] = lng
        data['lat'] = lat
        data['farmId'] = farmId
        r_detail = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/farm/detail',
            data=data)
        query_farm_detail = self.tool.query_farm_detail_by_farm_id(farmId)[0]
        json_detail = json.loads(r_detail)
        assert json_detail['content']['id'] == query_farm_detail['id']
        assert json_detail['content']['farmName'] == query_farm_detail[
            'farm_name']
        assert json_detail['content']['address'] == query_farm_detail[
            'address']
        assert json_detail['content']['nationId'] == query_farm_detail[
            'nation_id']
        # assert json_detail['content']['passBuyerCount'] == query_farm_detail['']
        assert json_detail['content']['soilPh'] == query_farm_detail['soil_ph']

    def mobile_seller_agency_im_send_farm_list(self, nameLike, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/farm/im/send-farm/list']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['nameLike'] = nameLike
        r = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/farm/im/send-farm/list',
            data=data)
        r_farm_list = json.loads(r).get('content').get('datas')
        query_farm_list = self.tool.query_farm_list_by_seller_agency_id_or_name(
            nameLike, self.sellerAgent.user_id)
        for i in range(len(r_farm_list)):
            assert r_farm_list[i].get('type') == query_farm_list[i].get('type')
            # assert r_farm_list[i].get('totalPrice') == query_farm_list[i].get('total_price')

    def mobile_seller_agency_farm_list(self, sortCode, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/farm/list']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['sortCode'] = sortCode
        r = Request().post(
            url='http://dev.trade.worldfarm.com/mobile/seller-agency/farm/list',
            data=data)
        r_farm_list = json.loads(r).get('content').get('datas')
        query_farm_list = self.tool.query_farm_list_by_seller_agency_id(
            self.sellerAgent.user_id)
        for i in range(len(r_farm_list)):
            assert r_farm_list[i].get('id') == query_farm_list[i].get('id')
            # assert r_farm_list[i].get('farmName') == query_farm_list[i].get('farm_name')
            assert r_farm_list[i].get('askNum') == query_farm_list[i].get(
                'ask_num')

    def mobile_seller_agency_map_list(self, lng, lat, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/farm/map-list']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['lng'] = lng
        data['lat'] = lat
        r = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/farm/map-list',
            data=data)
        r_farm_list = json.loads(r).get('content').get('datas')
        query_farm_list = self.tool.query_map_list_by_seller_agency_id(
            self.sellerAgent.user_id)
        for i in range(len(r_farm_list)):
            assert r_farm_list[i].get('id') == query_farm_list[i].get('id')
            # assert r_farm_list[i].get('farmName') == query_farm_list[i].get('farm_name')
            assert r_farm_list[i].get('askNum') == query_farm_list[i].get(
                'ask_num')

    # def seller_agency_update_farm(self, nationId, provinceId, cityId, farmName, type, area, totalPrice,
    #                               lng, lat, address, images, content, farmId, language):
    #     data = Config('trade').data['http://dev.trade.worldfarm.com']['/mobile/seller-agency/farm/update-farm']
    #     data['language'] = language
    #     data['_tk_'] = self.sellerAgent.token
    #     data['_deviceId_'] = self.sellerAgent.device_id
    #     data['nationId'] = nationId
    #     data['provinceId'] = provinceId
    #     data['cityId'] = cityId
    #     data['farmName'] = farmName
    #     data['totalPrice'] = totalPrice
    #     data['address'] = address
    #     data['content'] = content
    #     data['area'] = area
    #     data['farmId'] = farmId
    #     data['type'] = type
    #     data['lng'] = lng
    #     data['lat'] = lat
    #     data['images'] = images
    #     r = Request().post(url='http://dev.trade.worldfarm.com/mobile/seller-agency/farm/update-farm', data=data)
    #     r_update_farm = json.loads(r)
    #     assert r_update_farm['status'] == 'OK'

    def mobile_seller_agency_update_farm(self, farm_id, update_data, language):
        data = {
            "_tk_": self.sellerAgent.token,
            "_deviceId_": self.sellerAgent.device_id,
            "farmId": farm_id
        }
        r = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/farm/detail',
            data=data)
        r_farm_detail = json.loads(r).get('content')
        for k, v in update_data.items():
            r_farm_detail[k] = v
        r_farm_detail['_tk_'] = self.sellerAgent.token
        r_farm_detail['_deviceId_'] = self.sellerAgent.device_id
        r_farm_detail['language'] = language
        r_farm_detail['farmId'] = farm_id
        R = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/farm/update-farm',
            data=r_farm_detail)
        r_update_farm = json.loads(R)
        assert r_update_farm['status'] == 'OK'

    def mobile_seller_agency_farmer_detail(self, farmId, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/farmer/detail']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['farmId'] = farmId
        r_detail = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/farmer/detail',
            data=data)
        query_farm_detail = self.tool.query_farmer_detail_by_farm_id(farmId)[0]
        json_detail = json.loads(r_detail)
        assert json_detail['content']['realName'] == query_farm_detail[
            'real_name']
        # assert json_detail['content']['farmId'] == query_farm_detail['farm_id']
        # assert json_detail['content']['address'] == query_farm_detail['address']
        # assert json_detail['content']['nationId'] == query_farm_detail['nation_id']
        # # assert json_detail['content']['passBuyerCount'] == query_farm_detail['']
        # assert json_detail['content']['soilPh'] == query_farm_detail['soil_ph']

    def mobile_seller_agency_farmer_update(self, farmId, realName, sex,
                                           birthday, mobile, headImg,
                                           farmerAddress, ownedFarmerNum,
                                           language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/farmer/update']
        data['language'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['realName'] = realName
        data['sex'] = sex
        data['birthday'] = birthday
        data['mobile'] = mobile
        data['headImg'] = headImg
        data['farmerAddress'] = farmerAddress
        data['ownedFarmerNum'] = ownedFarmerNum
        data['farmId'] = farmId
        r = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/farmer/update',
            data=data)
        r_update_farm = json.loads(r)
        assert r_update_farm['status'] == 'OK'

    def mobile_seller_agency_use_add(self, realName, companyName, resource,
                                     language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/user/add']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['realName'] = realName
        data['companyName'] = companyName
        data['resource'] = resource
        r_detail = Request().post(
            url='http://dev.trade.worldfarm.com/mobile/seller-agency/user/add',
            data=data)
        json_detail = json.loads(r_detail)
        assert json_detail['status'] == 'OK'
        print(r_detail)

    def mobile_seller_agency_use_status(self, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/seller-agency/user/status']
        if data is None:
            data = {}
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        r_detail = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/seller-agency/user/status',
            data=data)
        query_seller_agent_detail = self.tool.query_user_status_by_seller_agency_id(
            self.sellerAgent.user_id)[0]
        json_detail = json.loads(r_detail)
        assert json_detail['status'] == 'OK'
        assert json_detail['content'] == query_seller_agent_detail['status']

    def mobile_seller_agency_farm_buyer_list(self, farmId, type, pn, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/order/seller-agency/farm/buyer-list']
        # if data is None:
        #     data = {}
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['farmId'] = farmId
        data['type'] = type
        data['pn'] = pn
        r_detail = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/order/seller-agency/farm/buyer-list',
            data=data)
        r_buyer_list = json.loads(r_detail).get('content').get('datas')
        query_user_list = self.tool.query_buyer_list_by_farm_id(farmId)
        for i in range(len(query_user_list)):
            assert r_buyer_list[i].get('buyerId') == query_user_list[i].get(
                'buyer_id')

    def mobile_seller_agency_message_buyer_list(self, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/mobile/order/seller-agency/message/buyer-list']
        # if data is None:
        #     data = {}
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        r_detail = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/order/seller-agency/message/buyer-list',
            data=data)
        r_message_buyer_list = json.loads(r_detail).get('content').get('datas')
        query_user_list = self.tool.query_message_buyer_list_by_farm_id(
            self.sellerAgent.user_id)
        for i in range(len(r_message_buyer_list)):
            assert r_message_buyer_list[i].get(
                'farmId') == query_user_list[i].get('farm_id')

    def web_seller_agent_add_farm(self, farm_name, farm_type, farm_state,
                                  price_range, are_range, language):
        data = self.data_trade['http://dev.trade.worldfarm.com'][
            '/web/seller-agency/farm/add-farm']
        fm = Farm(farm_name=farm_name,
                  farm_type=farm_type,
                  state_name=farm_state,
                  price_range=price_range,
                  area_range=are_range)
        fmr = Farmer()
        data['farmName'] = fm.farm_name
        data['provinceId'] = fm.province_id
        data['cityId'] = fm.city_id
        data['area'] = fm.area
        data['totalPrice'] = fm.total_price
        data['images'] = fm.images
        data['type'] = fm.farm_type
        data['address'] = fm.farm_address
        data['lat'] = fm.lat
        data['lng'] = fm.lng
        data['content'] = fm.content
        data['headImg'] = fmr.head_img
        data['realName'] = fmr.real_name
        data['birthday'] = fmr.birthday
        data['mobile'] = fmr.mobile
        data['farmerAddress'] = fmr.farmer_address
        data['sex'] = fmr.sex
        data['ownedFarmerNum'] = fmr.owned_farmer_num
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['_language_'] = language
        user_id = self.tool.query_user_id_by_mobile(self.sellerAgent.mobile)
        farmId = Request().post(
            url=
            "http://dev.trade.worldfarm.com/web/seller-agency/farm/add-farm",
            data=data)
        add_farm = json.loads(farmId)['content']
        farm_info = self.tool.query_latest_farm_info(user_id)
        # self.assertEqual(farm_info["address_en"], data['address'])
        # self.assertEqual(farm_info["area"], data['area'])
        # self.assertEqual(farm_info["farm_name_en"], data['farmName'])
        # self.assertEqual(farm_info["lat"], data['lat'])
        # self.assertEqual(farm_info["lng"], data['lng'])
        # self.assertEqual(farm_info["status"], 20)
        # self.assertEqual(farm_info["total_price"], data['totalPrice'])
        # self.assertEqual(farm_info["type"], data['type'])
        return add_farm

    def web_seller_agency_add_remark(self, farmId, remark, language):
        # 卖家中介新增备注
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/seller-agency/farm/add-remark']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['farmId'] = farmId
        data['remark'] = remark
        add = Request().post(
            url=
            'http://dev.trade.worldfarm.com/web/seller-agency/farm/add-remark',
            data=data)
        add_remark = json.loads(add)
        query_add_remark = self.tool.query_remark_by_farm_id(farmId)
        assert add_remark['status'] == 'OK'
        # assert add_remark['farm_id'] == query_add_remark['id']
        # assert add_remark['remark'] == query_add_remark['remark']

    def web_seller_agency_close_farm(self, farmId, type, language):
        # 卖家中介关闭农场
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/seller-agency/farm/close']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['farmId'] = farmId
        data['type'] = type  # 30已售出50暂不销售
        r = Request().post(
            url='http://dev.trade.worldfarm.com/web/seller-agency/farm/close',
            data=data)
        r_close = json.loads(r)
        query_close_farm = self.tool.query_close_farm_by_farm_id(
            self.sellerAgent.user_id)
        if r_close == {
                'errorCode': '00030003',
                'errorMsg': '农场已售出或者已关闭',
                'status': 'ERROR'
        }:
            assert r_close['errorMsg'] == str('农场已售出或者已关闭')
            assert r_close['status'] == 'ERROR'
        else:
            assert r_close.get['farm_id'] == query_close_farm['id']
            assert r_close['status'] == query_close_farm['status']

    def web_seller_agency_close_farm_list(self, pn, language):
        # 卖家中介关闭农场列表
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/seller-agency/farm/closed-list']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['pn'] = pn
        r = Request().post(
            url=
            'http://dev.trade.worldfarm.com/web/seller-agency/farm/closed-list',
            data=data)
        r_close = json.loads(r).get('content').get('datas')
        query_close_list = self.tool.query_close_list_by_seller_agency_id(
            self.sellerAgent.user_id)
        for i in range(len(r_close)):
            assert r_close[i].get('id') == query_close_list[i].get('id')
            assert r_close[i].get('imgUrl') == query_close_list[i].get(
                'img_url')
            assert r_close[i].get('askNum') == query_close_list[i].get(
                'ask_num')

    def web_seller_agency_farm_detail(self, lng, lat, farmId, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/seller-agency/farm/detail']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['lng'] = lng
        data['lat'] = lat
        data['farmId'] = farmId
        r_detail = Request().post(
            url='http://dev.trade.worldfarm.com/web/seller-agency/farm/detail',
            data=data)
        query_farm_detail = self.tool.query_farm_detail_by_farm_id(farmId)[0]
        json_detail = json.loads(r_detail)
        assert json_detail['content']['id'] == query_farm_detail['id']
        assert json_detail['content']['farmName'] == query_farm_detail[
            'farm_name']
        assert json_detail['content']['address'] == query_farm_detail[
            'address']
        assert json_detail['content']['nationId'] == query_farm_detail[
            'nation_id']
        # assert json_detail['content']['passBuyerCount'] == query_farm_detail['']
        assert json_detail['content']['soilPh'] == query_farm_detail['soil_ph']

    def web_seller_agency_im_send_farm_list(self, nameLike, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/seller-agency/farm/im/send-farm/list']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['nameLike'] = nameLike
        r = Request().post(
            url=
            'http://dev.trade.worldfarm.com/web/seller-agency/farm/im/send-farm/list',
            data=data)
        r_farm_list = json.loads(r).get('content').get('datas')
        query_farm_list = self.tool.query_farm_list_by_seller_agency_id_or_name(
            nameLike, self.sellerAgent.user_id)
        for i in range(len(r_farm_list)):
            assert r_farm_list[i].get('type') == query_farm_list[i].get('type')

    def web_seller_agency_farm_list(self, sortCode, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/seller-agency/farm/list']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['sortCode'] = sortCode
        r = Request().post(
            url='http://dev.trade.worldfarm.com/web/seller-agency/farm/list',
            data=data)
        r_farm_list = json.loads(r).get('content').get('datas')
        query_farm_list = self.tool.query_farm_list_by_seller_agency_id(
            self.sellerAgent.user_id)
        for i in range(len(r_farm_list)):
            assert r_farm_list[i].get('id') == query_farm_list[i].get('id')
            # assert r_farm_list[i].get('farmName') == query_farm_list[i].get('farm_name')
            assert r_farm_list[i].get('askNum') == query_farm_list[i].get(
                'ask_num')

    def web_seller_agency_update_farm(self, farm_id, update_data, language):
        data = {
            "_tk_": self.sellerAgent.token,
            "_deviceId_": self.sellerAgent.device_id,
            "farmId": farm_id
        }
        r = Request().post(
            url='http://dev.trade.worldfarm.com/web/seller-agency/farm/detail',
            data=data)
        r_farm_detail = json.loads(r).get('content')
        for k, v in update_data.items():
            r_farm_detail[k] = v
        r_farm_detail['_tk_'] = self.sellerAgent.token
        r_farm_detail['_deviceId_'] = self.sellerAgent.device_id
        r_farm_detail['language'] = language
        R = Request().post(
            url=
            'http://dev.trade.worldfarm.com/web/seller-agency/farm/update-farm',
            data=r_farm_detail)
        r_update_farm = json.loads(R)
        assert r_update_farm['status'] == 'OK'

    def web_seller_agency_farmer_detail(self, farmId, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/seller-agency/farmer/detail']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['farmId'] = farmId
        r_detail = Request().post(
            url=
            'http://dev.trade.worldfarm.com/web/seller-agency/farmer/detail',
            data=data)
        query_farm_detail = self.tool.query_farmer_detail_by_farm_id(farmId)[0]
        json_detail = json.loads(r_detail)
        assert json_detail['content']['realName'] == query_farm_detail[
            'real_name']
        # assert json_detail['content']['farmId'] == query_farm_detail['farm_id']
        # assert json_detail['content']['address'] == query_farm_detail['address']
        # assert json_detail['content']['nationId'] == query_farm_detail['nation_id']
        # # assert json_detail['content']['passBuyerCount'] == query_farm_detail['']
        # assert json_detail['content']['soilPh'] == query_farm_detail['soil_ph']

    def web_seller_agency_farmer_update(self, farmId, update_data, language):
        data = {
            "_tk_": self.sellerAgent.token,
            "_deviceId_": self.sellerAgent.device_id,
            "farmId": farmId
        }
        r = Request().post(
            url=
            'http://dev.trade.worldfarm.com/web/seller-agency/farmer/detail',
            data=data)
        r_farmer_detail = json.loads(r).get('content')
        for k, v in update_data.items():
            r_farmer_detail[k] = v
        r_farmer_detail['_tk_'] = self.sellerAgent.token
        r_farmer_detail['_deviceId_'] = self.sellerAgent.device_id
        r_farmer_detail['language'] = language
        R = Request().post(
            url=
            'http://dev.trade.worldfarm.com/web/seller-agency/farmer/update',
            data=r_farmer_detail)
        r_update_farm = json.loads(R)
        assert r_update_farm['status'] == 'OK'

    def web_seller_agency_use_add(self, realName, companyName, resource,
                                  language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/seller-agency/user/add']
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['realName'] = realName
        data['companyName'] = companyName
        data['resource'] = resource
        r_detail = Request().post(
            url='http://dev.trade.worldfarm.com/web/seller-agency/user/add',
            data=data)
        json_detail = json.loads(r_detail)
        assert json_detail['status'] == 'OK'
        print(r_detail)

    def web_seller_agency_use_status(self, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/seller-agency/user/status']
        if data is None:
            data = {}
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        r_detail = Request().post(
            url='http://dev.trade.worldfarm.com/web/seller-agency/user/status',
            data=data)
        query_seller_agent_detail = self.tool.query_user_status_by_seller_agency_id(
            self.sellerAgent.user_id)[0]
        json_detail = json.loads(r_detail)
        assert json_detail['status'] == 'OK'
        assert json_detail['content'] == query_seller_agent_detail['status']

    def web_seller_agency_farm_buyer_list(self, farmId, type, pn, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/order/seller-agency/farm/buyer-list']
        # if data is None:
        #     data = {}
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        data['farmId'] = farmId
        data['type'] = type
        data['pn'] = pn
        r_detail = Request().post(
            url=
            'http://dev.trade.worldfarm.com/mobile/order/seller-agency/farm/buyer-list',
            data=data)
        r_buyer_list = json.loads(r_detail).get('content').get('datas')
        query_user_list = self.tool.query_buyer_list_by_farm_id(farmId)
        for i in range(len(query_user_list)):
            assert r_buyer_list[i].get('buyerId') == query_user_list[i].get(
                'buyer_id')

    def web_seller_agency_message_buyer_list(self, language):
        data = Config('trade').data['http://dev.trade.worldfarm.com'][
            '/web/order/seller-agency/message/buyer-list']
        # if data is None:
        #     data = {}
        data['_language_'] = language
        data['_tk_'] = self.sellerAgent.token
        data['_deviceId_'] = self.sellerAgent.device_id
        r_detail = Request().post(
            url=
            'http://dev.trade.worldfarm.com/web/order/seller-agency/message/buyer-list',
            data=data)
        r_message_buyer_list = json.loads(r_detail).get('content').get('datas')
        query_user_list = self.tool.query_message_buyer_list_by_farm_id(
            self.sellerAgent.user_id)
        for i in range(len(r_message_buyer_list)):
            assert r_message_buyer_list[i].get(
                'farmId') == query_user_list[i].get('farm_id')
Exemplo n.º 21
0
class AppBuyerAction(object):
    def __init__(self, buyer):
        """
        初始化方法的一个常用数据
        :param buyer: 传的是一个用户对象
        """
        self.log = Log('buyer')
        self.buyer = buyer
        self.data_sso = Config('sso').data
        self.data_trade = Config('trade').data
        self.data_sms = Config('sms').data
        self.request = Request()
        self.tool = Tool()
        self.ps = 10

    def app_buyer_interest_or_not(self, farm_id):
        """
        买家加星或者取消加星
        :param farm_id: 农场ID
        :return: 返回成功或者失败或者未返回则是抛异常
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/interest/interest-or-not')
        data['farmId'] = farm_id
        data["_tk_"] = self.buyer.token
        data["_deviceId_"] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        response = self.request.post(
            url=
            "http://dev.trade.worldfarm.com/mobile/buyer/interest/interest-or-not",
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            return True
        elif json_response["status"] == "ERROR":
            json_response["errorMsg"] = "加星失败!"
            return False
        else:
            raise Exception("status未返回OK或ERROR")

    def app_buyer_batch_cancel_interest(self, farm_id_list):
        """
        批量取消加星
        :param farm_id_list: 农场ID列表
        :return: 返回成功或者失败或者未返回则是抛异常
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/interest/batch-cancel-interest')
        data['farmIds'] = farm_id_list
        data["_tk_"] = self.buyer.token
        data["_deviceId_"] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        response = self.request.post(
            url=
            "http://dev.trade.worldfarm.com/mobile/buyer/interest/batch-cancel-interest",
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            return True
        elif json_response["status"] == "ERROR":
            json_response["errorMsg"] = "加星失败!"
            return False
        else:
            raise Exception("status未返回OK或ERROR")

    def app_buyer_interest_farm_list(self):
        """
        加星的列表,即感兴趣列表
        :return: 正确返回农场列表,失败返回False
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/interest/interest-farm-list')
        data['ps'] = self.ps
        data['pn'] = 1
        data["_tk_"] = self.buyer.token
        data["_deviceId_"] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        response = self.request.post(
            url=
            "http://dev.trade.worldfarm.com/mobile/buyer/interest/interest-farm-list",
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            return json_response
        elif json_response["status"] == "ERROR":
            json_response["errorMsg"] = "加载失败!"
            return False
        else:
            raise Exception("status未返回OK或ERROR")

    def app_buyer_get_banner_by_type(self, banner_type):
        """
        根据类型获取banner
        :param banner_type: banner的类型
        :return: 返回banner
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/banner/get-by-type')
        data['type'] = banner_type
        data['ps'] = self.ps
        data['pn'] = 1
        data['_language_'] = self.buyer.language
        response = self.request.post(
            url="http://dev.trade.worldfarm.com/mobile/banner/get-by-type",
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            return json_response
        elif json_response["status"] == "ERROR":
            json_response["errorMsg"] = "加载失败!"
            return False
        else:
            raise Exception("status未返回OK或ERROR")

    def app_buyer_intent_livestock_order(self, name, mobile,
                                         contact_information):
        """
        创建畜牧的意向订单
        :param name: 姓名
        :param mobile: 手机号
        :param contact_information: 邮箱
        :return: 成功返回订单号
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/intent-order/add-livestock')
        data['name'] = name
        data['mobile'] = mobile
        data['contactInformation'] = contact_information
        data['_language_'] = self.buyer.language
        response = self.request.post(
            url=
            "http://dev.trade.worldfarm.com/mobile/intent-order/add-livestock",
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            return json_response
        elif json_response["status"] == "ERROR":
            json_response["errorMsg"] = "创建畜牧服务的意向订单失败!"
            return False
        else:
            raise Exception("status未返回OK或ERROR")

    def app_buyer_intent_translation_order(self, farm_id):
        """
        创建翻译服务的意向订单
        :param farm_id: 农场的ID
        :return: 成功返回创建的订单编号
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/intent-order/add-translation')
        data['farmId'] = farm_id
        data['_language_'] = self.buyer.language
        response = self.request.post(
            url=
            "http://dev.trade.worldfarm.com/mobile/intent-order/add-translation",
            data=data)
        json_response = json.loads(response)
        if json_response["status"] == "OK":
            return json_response
        elif json_response["status"] == "ERROR":
            json_response["errorMsg"] = "创建翻译服务的意向订单失败!"
            return False
        else:
            raise Exception("status未返回OK或ERROR")

    def app_buyer_update_user(self,
                              real_name,
                              sex,
                              company_name,
                              company_post,
                              head_img=None):
        """
        修改个人信息
        :param real_name: 姓名
        :param sex: 性别,男或女
        :param company_name: 公司名称
        :param company_post: 公司职位
        :param head_img: 头像url
        :return:
        """
        gender = {'男': 1, '女': 2}
        update_data = self.data_trade['http://dev.trade.worldfarm.com'][
            '/mobile/buyer/user/update']
        update_data["head_img"] = head_img
        update_data["realName"] = real_name
        update_data["sex"] = gender[sex]
        update_data["companyName"] = company_name
        update_data["companyPosition"] = company_post
        update_data["_tk_"] = self.buyer.token
        update_data["_deviceId_"] = self.buyer.device_id
        update_data['_language_'] = self.buyer.language
        self.request.post(
            url="http://dev.trade.worldfarm.com/mobile/buyer/user/update",
            data=update_data)
        user_info = self.tool.query_user_info_by_mobile(self.buyer.mobile)[0]
        assert user_info["real_name"] == real_name
        assert user_info["sex"] == gender[sex]
        assert user_info["company_name"] == company_name
        assert user_info["company_position"] == company_post
        assert user_info["head_img"] == head_img
        self.log.logger.debug("姓名 更新为 %s" % real_name)
        self.log.logger.debug("性别 更新为 %s" % sex)
        self.log.logger.debug("公司 更新为 %s" % company_name)
        self.log.logger.debug("职位 更新为 %s" % company_post)
        self.log.logger.debug("头像 更新为 %s" % head_img)

    def app_change_password(self, newpwd):
        """
        修改密码
        :param newpwd: 新密码
        :return:
        """
        data = self.data_sso.get('http://dev.sso.worldfarm.com').get(
            '/mobile/sso/update-pwd')
        data['mobile'] = self.buyer.mobile
        data['password'] = self.buyer.password
        data['newPassword'] = newpwd
        data['token'] = self.buyer.token
        data["_deviceId_"] = self.buyer.device_id
        r = self.request.post(
            url='http://dev.sso.worldfarm.com/mobile/sso/update-pwd',
            data=data).decode('utf-8')
        print(r)
        self.log.logger.debug("修改密码为: %s" % newpwd)

    def app_get_farm_list(self,
                          city_id=None,
                          farm_type=None,
                          min_price=None,
                          max_price=None,
                          min_area=None,
                          max_area=None,
                          sort_code=2):
        """
        获取农场列表
        :return:
        """
        data = self.data_trade['http://dev.trade.worldfarm.com'][
            '/mobile/buyer/farm/list']
        data['ps'] = self.ps
        data['provinceId'] = city_id
        data['farmTypeList'] = farm_type
        data['minPrice'] = min_price
        data['maxPrice'] = max_price
        data['minArea'] = min_area
        data['maxArea'] = max_area
        data['sortCode'] = sort_code
        data['_language_'] = self.buyer.language
        farm_list = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer/farm/list",
            data=data)
        farm_list_json = json.loads(farm_list).get('content').get('datas')
        # query_farm_list = self.tool.query_farm_list()
        # for i in range(len(farm_list_json)):
        #     assert farm_list_json[i].get('id') == query_farm_list[i].get('farm_id')
        #     assert farm_list_json[i].get('type') == query_farm_list[i].get('type')
        #     assert farm_list_json[i].get('lng') == query_farm_list[i].get('lng')
        #     assert farm_list_json[i].get('lat') == query_farm_list[i].get('lat')
        #     assert farm_list_json[i].get('imgLisst') == "[" + query_farm_list[i].get('url') + "]"
        return farm_list_json

    def app_buyer_get_map_list(self,
                               left_top_lng,
                               left_top_lat,
                               right_bottom_lng,
                               right_bottom_lat,
                               zoom_level,
                               province_id,
                               sort_code=1,
                               nation_id=25,
                               trigger=None,
                               farm_type_list=None,
                               min_price=None,
                               max_price=None,
                               min_area=None,
                               max_area=None):
        """
        地图农场列表
        :param left_top_lng: 左上角的经度
        :param left_top_lat: 左上角的未读
        :param right_bottom_lng: 右下角的经度
        :param right_bottom_lat: 右下角的未读
        :param zoom_level: 聚合等级
        :param province_id: 城市ID
        :param sort_code: 排序的code
        :param nation_id: 国家的ID
        :param trigger:
        :param farm_type_list: 农场类型集合
        :param min_price: 最小的价格
        :param max_price: 最大的价格
        :param min_area: 最小的面积
        :param max_area: 最大的面积
        :return:
        """
        data = self.data_trade['http://dev.trade.worldfarm.com'][
            '/mobile/buyer/farm/map-list']
        data['leftTopLng'] = left_top_lng
        data['leftTopLat'] = left_top_lat
        data['rightBottomLng'] = right_bottom_lng
        data['rightBottomLat'] = right_bottom_lat
        data['zoomLevel'] = zoom_level
        data['nationId'] = nation_id
        data['provinceId'] = province_id
        data['trigger'] = trigger
        data['farmTypeList'] = farm_type_list
        data['trigger'] = trigger
        data['minPrice'] = min_price
        data['maxPrice'] = max_price
        data['minArea'] = min_area
        data['maxArea'] = max_area
        data['sortCode'] = sort_code
        data['ps'] = self.ps
        data['_language_'] = self.buyer.language
        farm_list = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer/farm/map-list",
            data=data)
        farm_list_json = json.loads(farm_list)
        return farm_list_json.get('content').get('datas')

    def app_get_farm_detail(self, farm_id):
        """
        获取农场详情
        :return:
        """
        data = self.data_trade['http://dev.trade.worldfarm.com'][
            '/mobile/buyer/farm/detail']
        data['farmId'] = farm_id
        data['_language_'] = self.buyer.language
        farm_detail = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer/farm/detail",
            data=data)
        json_response = json.loads(farm_detail)
        if json_response["status"] == "OK":
            farm_json = json_response["content"]
            farm_data_base = self.tool.query_farm_detail_by_farm_id(farm_id)[0]
            assert farm_json["address"] == farm_data_base["address"]
            assert farm_json["addressEn"] == farm_data_base["address_en"]
            assert farm_json["area"] == farm_data_base["area"]
            assert farm_json["areaCode"] == farm_data_base["area_code"]
            assert farm_json["farmName"] == farm_data_base["farm_name"]
            assert farm_json["farmNameEn"] == farm_data_base["farm_name_en"]
            assert farm_json["id"] == farm_data_base["id"]
            assert farm_json["languageType"] == farm_data_base["language_type"]
            assert farm_json["lat"] == farm_data_base["lat"]
            assert farm_json["lng"] == farm_data_base["lng"]
            assert farm_json["totalPrice"] == farm_data_base["total_price"]
            assert farm_json["type"] == farm_data_base["type"]
            assert farm_json["unitCode"] == farm_data_base["unit_code"]
            return farm_json
        else:
            raise Exception("Error: %s" % json_response["errorMsg"])

    def app_get_farm_list_first_id(self):
        """
        获取列表第一个农场的ID
        :return:
        """
        farm_detail = self.app_get_farm_detail(
            self.app_get_farm_list()[0]['id'])
        farm_id = json.loads(farm_detail)['content']['id']
        return farm_id

    def app_get_customer_id_by_farm(self, farm_id):
        """
        获取农场对应的客服ID
        :return:
        """
        farm_detail = self.app_get_farm_detail(farm_id)
        farm_detail_json = json.loads(farm_detail)
        customer_service_id = farm_detail_json['content']['customerServiceId']
        return customer_service_id

    def app_get_order_no(self, farm_id):
        """
        生成订单,并返回订单号
        :param farm_id: 农场ID
        :return: 订单No
        """
        data = self.data_trade['http://dev.trade.worldfarm.com'][
            '/mobile/order/submit-order']
        data['farmId'] = farm_id
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        order_no = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/order/submit-order",
            data=data)
        order_no_json = json.loads(order_no)
        return order_no_json['content']['orderNo']

    def app_get_customer_account(self, farm_id):
        """
        获取客服IM返回客服的登录账户
        :return:
        """
        data = self.data_sms['http://dev.sms.worldfarm.com'][
            '/mobile/im-auth/buyer/get/service-accid']
        data['userId'] = self.app_get_customer_id_by_farm(farm_id)
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        service_id = Request().post(url="http://dev.sms.worldfarm.com"
                                    "/mobile/im-auth/buyer/get/service-accid",
                                    data=data)
        service_id = str(json.loads(service_id)['content']).split('@')[0]
        account = self.tool.query_employee_user_no_by_user_id(service_id)
        return account

    def app_buyer_sale_bind(self, sale_id):
        """
        绑定销售ID
        :param sale_id:
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/user/sale-bind')
        data['saleId'] = sale_id
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        re = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer/user/sale-bind",
            data=data)
        query_sale_id = self.tool.query_sale_id_by_user_id(
            self.buyer.user_id)[0].get('salesman_id')
        assert sale_id == query_sale_id
        return re

    def app_buyer_query_sale(self, sale_id):
        """
        查询销售
        :param sale_id:
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/user/query-sale')
        data['saleId'] = sale_id
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        re = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer/user/query-sale",
            data=data)
        query_sale_id = self.tool.query_sale_id_by_user_id(
            self.buyer.user_id)[0].get('salesman_id')
        assert sale_id == query_sale_id
        return re

    def app_buyer_sale_bind_update(self, sale_id):
        """
        更新销售ID
        :param sale_id:
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/user/sale-bind-update')
        data['saleId'] = sale_id
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        re = Request().post(
            url=
            "http://dev.trade.worldfarm.com/mobile/buyer/user/sale-bind-update",
            data=data)
        query_sale_id = self.tool.query_sale_id_by_user_id(
            self.buyer.user_id)[0].get('salesman_id')
        assert sale_id == query_sale_id
        return re

    def app_buyer_user_detail(self):
        """
        查询用户的detail
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/user/detail')
        if data is None:
            data = {}
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        user_detail = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer/user/detail",
            data=data)
        user_detail_content = eval(user_detail).get('content')
        query_user_detail = self.tool.query_user_detail_by_user_id(
            self.buyer.user_id)[0]
        assert user_detail_content.get('realName') == query_user_detail.get(
            'real_name')
        return user_detail

    def app_buyer_resource_add(self, farm_id, order_no):
        """
        上传购买资质
        :param farm_id:
        :param order_no:
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer-resource/add')
        data['farmId'] = farm_id
        data['orderNo'] = order_no
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer-resource/add",
            data=data)
        return r

    def app_buyer_resource_detail(self, order_no):
        """
        订单的购买资质详情
        :param order_no:
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer-resource/detail')
        data['orderNo'] = order_no
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer-resource/detail",
            data=data)
        return r

    def app_buyer_resource_is_add(self, order_no):
        """
        判断订单是否可以上传购买资质
        :param order_no:
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer-resource/is-add')
        data['orderNo'] = order_no
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer-resource/is-add",
            data=data)
        return r

    def app_buyer_resource_list(self, order_no, status, buyer_name):
        """
        购买资质列表
        :param order_no:
        :param status:
        :param buyer_name:
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer-resource/resource-list')
        data['orderNo'] = order_no
        data['status'] = status
        data['buyerName'] = buyer_name
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(
            url=
            "http://dev.trade.worldfarm.com/mobile/buyer-resource/resource-list",
            data=data)
        return r

    def app_buyer_farm_recommend_list(self, farm_id):
        """
        农场相关推荐
        :param farm_id:
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/farm/recommend-list')
        data['farmId'] = farm_id
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(
            url=
            "http://dev.trade.worldfarm.com/mobile/buyer/farm/recommend-list",
            data=data)
        return r

    def app_buyer_subscribe_add(self,
                                city_ids=None,
                                farm_type=None,
                                min_price=None,
                                max_price=None,
                                min_area=None,
                                max_area=None):
        """
        添加订阅规则
        :param city_ids:
        :param farm_type:
        :param min_price:
        :param max_price:
        :param min_area:
        :param max_area:
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/subscribe/add')
        data['cityIds'] = city_ids
        data['farmType'] = farm_type
        data['minPrice'] = min_price
        data['maxPrice'] = max_price
        data['minArea'] = min_area
        data['maxArea'] = max_area
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        response = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer/subscribe/add",
            data=data)
        response = json.loads(response)
        query_subscribe_role = self.tool.query_subscribe_role_by_user_id(
            self.buyer.user_id)
        if response.get('status') == 'OK':
            if query_subscribe_role == ():
                raise Exception("Error: 添加订阅规则失败")
            else:
                assert query_subscribe_role[0].get('city_ids') == city_ids
                assert query_subscribe_role[0].get('farm_type') == farm_type
                assert query_subscribe_role[0].get('min_price') == min_price
                assert query_subscribe_role[0].get('max_price') == max_price
                assert query_subscribe_role[0].get('min_area') == min_area
                assert query_subscribe_role[0].get('max_area') == max_area
                return response
        elif response.get('status') != 'ERROR':
            assert response.get('errorMsg') == "该用户已经添加过订阅规则"
        else:
            raise Exception("Error: %s" % response["errorMsg"])

    def app_buyer_subscribe_detail(self):
        """
        查看订阅规则
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/subscribe/detail')
        if data is None:
            data = {}
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        response = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer/subscribe/detail",
            data=data)
        response_json = json.loads(response)
        if response_json.get('status') == 'OK':
            response_json_content = response_json.get('content')
            query_subscribe_role = self.tool.query_subscribe_role_by_user_id(
                self.buyer.user_id)
            assert query_subscribe_role[0].get(
                'city_ids') == response_json_content.get('city_ids')
            assert query_subscribe_role[0].get(
                'farm_type') == response_json_content.get('farm_type')
            assert query_subscribe_role[0].get(
                'min_price') == response_json_content.get('min_price')
            assert query_subscribe_role[0].get(
                'max_price') == response_json_content.get('max_price')
            assert query_subscribe_role[0].get(
                'min_area') == response_json_content.get('min_area')
            assert query_subscribe_role[0].get(
                'max_area') == response_json_content.get('max_area')
            return response_json_content
        else:
            raise Exception("Error: %s" % response_json.get("errorMsg"))

    def app_buyer_subscribe_update(self,
                                   city_ids=None,
                                   farm_type=None,
                                   min_price=None,
                                   max_price=None,
                                   min_area=None,
                                   max_area=None):
        """
        修改订阅规则
        :param city_ids: 城市的ID的集合,egg:1,2,3
        :param farm_type: 集合:1,2,3
        :param min_price: 最小的价格
        :param max_price: 最大的价格
        :param min_area: 最小的面积
        :param max_area: 最大的面积
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/subscribe/update')
        data['cityIds'] = city_ids
        data['farmType'] = farm_type
        data['minPrice'] = min_price
        data['maxPrice'] = max_price
        data['minArea'] = min_area
        data['maxArea'] = max_area
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        response = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/buyer/subscribe/update",
            data=data)
        response_json = json.loads(response)
        query_subscribe_role = self.tool.query_subscribe_role_by_user_id(
            self.buyer.user_id)
        if response_json.get('status') == 'OK':
            if query_subscribe_role == ():
                raise Exception("Error: 更新订阅规则失败")
            else:
                assert query_subscribe_role[0].get('city_ids') == city_ids
                assert query_subscribe_role[0].get('farm_type') == farm_type
                assert query_subscribe_role[0].get('min_price') == min_price
                assert query_subscribe_role[0].get('max_price') == max_price
                assert query_subscribe_role[0].get('min_area') == min_area
                assert query_subscribe_role[0].get('max_area') == max_area
                return response_json
        else:
            raise Exception("Error: %s" % response_json["errorMsg"])

    def app_buyer_subscribe_farm_list(self):
        """
        农场订阅列表
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/subscribe/farm-list')
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(
            url=
            "http://dev.trade.worldfarm.com/mobile/buyer/subscribe/farm-list",
            data=data)
        return r

    def app_buyer_order_del(self, order_no_list=None):
        """
        买家删除订单
        :param order_no_list: 使用,分割,eg:1,2,3
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/order/del')
        data['orderNoList'] = order_no_list
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/order/del", data=data)
        return r

    def app_buyer_order_list(self, type_no=0):
        """
        感兴趣列表
        :param type_no: 0,1;默认填0,1表示查询的list是可以删除的order
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/order/list')
        data['type'] = type_no
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(
            url="http://dev.trade.worldfarm.com/mobile/order/list", data=data)
        return r

    def app_buyer_update_show_auth(self):
        """
        查询是否显示提示认证信息
        :return:
        """
        data = self.data_trade.get('http://dev.trade.worldfarm.com').get(
            '/mobile/buyer/user/update-show-auth')
        if data is None:
            data = {}
        data['_tk_'] = self.buyer.token
        data['_deviceId_'] = self.buyer.device_id
        data['_language_'] = self.buyer.language
        r = Request().post(
            url=
            "http://dev.trade.worldfarm.com/mobile/buyer/user/update-show-auth",
            data=data)
        return r