예제 #1
0
def get_product2group(pids, woid='3'):
    #例子
    #pids为list,里面的每一项都是商品id的str

    # pids_url = "http://{}/mall2/api/test/".format(settings.MARKETTOOLS_HOST)
    if not pids:
        return {}
    params = {
        'woid': woid,
        'pids': "_".join(pids)
    }

    resp = Resource.use('marketapp_apiserver').get({
        'resource':'group.group_buy_products',
        'data':params
    })

    if resp and resp['code']:
        data = resp['data']
        product_groups = data['pid2is_in_group_buy']
        product2group = {}
        for product_group in product_groups:
            product2group[product_group["pid"]] = product_group["is_in_group_buy"]
    else:
        product2group = {}

    return product2group
예제 #2
0
def process(data, recv_msg=None):
    corp_id = data['corp_id']
    delivery_item_id = data['delivery_item_id']
    data = {'corp_id': corp_id, 'delivery_item_id': delivery_item_id}
    result = Resource.use('gaia').put({
        'resource': 'delivery_item.notify_kuaidi',
        'data': data
    })
예제 #3
0
def __sync_zeus_get(params, resource):
	resp = Resource.use(ZEUS_SERVICE_NAME, EAGLET_CLIENT_ZEUS_HOST).get({
		'resource': resource,
		'data': params
	})
	if resp and resp.get('code') == 200:
		return True, resp.get('data')
	else:
		return False, None
예제 #4
0
 def api_delete(request):
     model_id = request.POST.get('model_id', 0)
     response = create_response(500)
     try:
         if model_id != 0:
             models.ProductModelProperty.objects.filter(id=model_id).update(
                 is_deleted=True)
             models.ProductModelPropertyValue.objects.filter(
                 property_id=model_id).update(is_deleted=True)
             has_properrty_values = models.ProductModelHasPropertyValue.objects.filter(
                 property_id=model_id, is_deleted=False)
             model_ids = [
                 has_properrty_value.model_id
                 for has_properrty_value in has_properrty_values
             ]
             product_models = models.ProductModel.objects.filter(
                 id__in=model_ids, is_deleted=False)
             product_ids = [
                 product_model.product_id
                 for product_model in product_models
             ]
             product_models.update(stocks=0,
                                   price=0,
                                   market_price=0,
                                   weight=0,
                                   limit_clear_price=0,
                                   is_deleted=True)
             models.Product.objects.filter(id__in=product_ids).update(
                 product_price=0,
                 clear_price=0,
                 product_store=0,
                 product_weight=0)
             has_properrty_values.delete()
             response = create_response(200)
             # 调用zeus接口
             db_model = models.ProductModelPropertyRelation.objects.filter(
                 model_property_id=model_id).first()
             if db_model:
                 params = {
                     "id": db_model.weapp_property_id,
                 }
                 resp = Resource.use(ZEUS_SERVICE_NAME,
                                     EAGLET_CLIENT_ZEUS_HOST).delete({
                                         'resource':
                                         'mall.product_model_property',
                                         'data':
                                         params
                                     })
                 if not resp or resp.get('code') != 200:
                     response = create_response(500)
     except:
         msg = unicode_full_stack()
         watchdog.error(msg)
         response.innerErrMsg = msg
     return response.get_response()
예제 #5
0
def sync_add_product(params, product, weapp_catalog_id=None, user_id=None):
    """
	同步新增加商品
	"""
    if product.catalog_id:
        weapp_catalog_id = catalog_models.ProductCatalogRelation.objects\
         .filter(catalog_id=product.catalog_id).first().weapp_catalog_id
    resp = Resource.use(ZEUS_SERVICE_NAME, EAGLET_CLIENT_ZEUS_HOST).put({
        'resource':
        'mall.sync_product',
        'data':
        params
    })
    # 同步到商品中间关系表
    if resp:
        if resp.get('code') == 200 and resp.get('data').get('product'):
            weapp_product_id = resp.get('data').get('product').get('id')
            models.ProductHasRelationWeapp.objects.create(
                product_id=product.id,
                weapp_product_id=weapp_product_id,
                self_user_name=user_id)
            # 同步类目
            if weapp_catalog_id:
                catalog_params = {
                    'classification_id': weapp_catalog_id,
                    'product_id': weapp_product_id
                }
                resp = Resource.use(ZEUS_SERVICE_NAME,
                                    EAGLET_CLIENT_ZEUS_HOST).put({
                                        'resource':
                                        'mall.classification_product',
                                        'data':
                                        catalog_params
                                    })
                if not resp or resp.get('code') != 200:
                    watchdog.error({
                        'errorMsg':
                        'Panda product: %s sync catalog failed!' % product.id
                    })
            # 同步标签
            sync_product_label(weapp_product_id=weapp_product_id,
                               product=product)
예제 #6
0
    def _handle_keyword(self, context, from_weixin_user, is_from_simulator):
        user_id = context.user_profile.user_id
        username = User.objects.get(id=user_id).username
        if username != 'weshop':
            # request = context.request
            message = context.message
            response = None
            response_rule = None
            response_content = None
            try:
                webapp_owner_id = context.user_profile.user_id
                keyword = message.content
                openid = message.fromUserName
                webapp_id = context.user_profile.webapp_id
                response_content = Resource.use('marketapp_apiserver').post({
                    'resource':
                    'sign.do_auto_signment',
                    'data': {
                        'webapp_owner_id': webapp_owner_id,
                        'keyword': keyword,
                        'openid': openid,
                        'webapp_id': webapp_id
                    }
                })
                response_content = response_content['data']
                if response_content:
                    response = generator.get_text_response(
                        message.fromUserName, message.toUserName,
                        response_content, message.fromUserName,
                        context.user_profile)

                    try:
                        self._process_recorde_message(context, response_rule,
                                                      from_weixin_user,
                                                      is_from_simulator)
                    except:
                        notify_message = u"_process_recorde_message, cause:\n{}".format(
                            unicode_full_stack())
                        message_tail = '\nanswer:%s,patterns:%s,owner_id:%d,id:%d' % (
                            response_rule.answer, response_rule.patterns,
                            response_rule.owner_id, response_rule.id)
                        notify_message += message_tail
                        watchdog_error(notify_message)

                return response
            except:
                return None
        else:
            return None