api_service.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. from agent.agent import Agent
  2. from db import MongoDao
  3. import json
  4. license_dao = MongoDao("ProductStandard")
  5. class ApiService:
  6. agent = Agent()
  7. @staticmethod
  8. def keyword_judgement(url_data, basic_data):
  9. """关键词引流判断"""
  10. if url_data['title'] == None or url_data['brand_name'] == None or basic_data['brand_name'] == None:
  11. return '信息不全,无法判定'
  12. # 标题判定
  13. if basic_data['brand_name'] in url_data['title'] and url_data['brand_name'] != basic_data['brand_name']:
  14. # 当产品名称中包含与判定商标一致的品牌名称,且详情页中的品牌名称与判定的品牌名称不一致时判定为关键词引流
  15. return True
  16. elif url_data['brand_name'] == basic_data['brand_name'] or basic_data['brand_name'] not in url_data['title']:
  17. return False
  18. else:
  19. # 图像判定
  20. pass
  21. # 图像判定
  22. return "无法判定"
  23. @staticmethod
  24. def similarity_logo_judgement(url_data, basic_data):
  25. """近似商标侵权判定"""
  26. for similarity_logo in basic_data['similarity_logos']:
  27. if similarity_logo in url_data['title'] or similarity_logo in url_data['brand_name']:
  28. return True
  29. # 判断基础数据中的名称是否包含在标题或者详情品牌名称中
  30. if basic_data['brand_name'] in url_data['title'] or basic_data['brand_name'] in url_data['brand_name']:
  31. return False
  32. else:
  33. return '无法判定'
  34. @staticmethod
  35. def logo_1to1_judgement(url_data, basic_data):
  36. """商标一比一侵权"""
  37. # 首先计算基础价格百分比
  38. base_price = basic_data['base_price'] * basic_data['price_percent']
  39. if url_data['title'].strip() == basic_data['product_name'].strip():
  40. # 当商品名称与提供的产品名称完全一致时,进行判定
  41. if url_data['price'] < base_price:
  42. return True
  43. else:
  44. return False
  45. else:
  46. for image_url1 in url_data['product_images']:
  47. for image_url2 in basic_data['product_images']:
  48. similarity_product_judgement = json.loads(ApiService.agent.product_image_similarity_judgement(image_url1, image_url2))
  49. if similarity_product_judgement['is_similarity_product']:
  50. if url_data['price'] < base_price:
  51. return True
  52. else:
  53. return False
  54. return False
  55. @staticmethod
  56. def low_price_judgement(url_data, basic_data):
  57. """低价判断"""
  58. if url_data['title'] == basic_data['product_name']:
  59. if url_data['price'] < basic_data['base_price']:
  60. return True
  61. else:
  62. return False
  63. else:
  64. # 进行图像判定
  65. for image_url1 in url_data['product_images']:
  66. for image_url2 in basic_data['product_images']:
  67. similarity_product_judgement = json.loads(ApiService.agent.product_image_similarity_judgement(image_url1, image_url2))
  68. if similarity_product_judgement['is_similarity_product']:
  69. if url_data['price'] < basic_data['base_price']:
  70. return True
  71. else:
  72. return False
  73. @staticmethod
  74. def get_license_list(brand_name):
  75. """获取品牌方授权生成的商品列表"""
  76. license_list = []
  77. records = license_dao.get_records_by_query({"BrandName": brand_name})
  78. for record in records:
  79. license_list.append(record['ProductTitle'].strip())
  80. return license_list
  81. @staticmethod
  82. def license_judgement(url_data, basic_data):
  83. """未生产产品判断"""
  84. license_list = ApiService.get_license_list(basic_data['brand_name'])
  85. result = ApiService.agent.license_product_judgement(url_data['title'], license_list)
  86. return result
  87. if __name__ == '__main__':
  88. url_data = {
  89. 'title': '休闲短裤女士运动潮流系列夏季女装裤子梭织运动裤',
  90. 'brand_name': '李宁',
  91. 'product_images': [
  92. 'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/0902/118/27466cf6-fb28-4580-9009-95a3763e06bf.jpg',
  93. 'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg'
  94. ],
  95. 'price': 199
  96. }
  97. basic_data = {
  98. 'product_name': '休闲短裤女士运动潮流系列夏季女装裤子梭织运动裤',
  99. 'brand_name': '李宁',
  100. 'similarity_logos': ['李宇', '李柠'],
  101. 'product_images': [
  102. 'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg',
  103. 'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg'
  104. ],
  105. 'base_price': 200,
  106. 'price_percent': 0.9
  107. }
  108. result = ApiService.low_price_judgement(url_data, basic_data)
  109. print(result)