def gen_recharge_record(cls, customer, order_oid, price, num): from flashsale.coupon.models import CouponTemplate coupon_from_mama_id = 0 from_mama_thumbnail = 'http://7xogkj.com2.z0.glb.qiniucdn.com/222-ohmydeer.png?imageMogr2/thumbnail/60/format/png' from_mama_nick = 'SYSTEM' coupon_to_mama_id = customer.mama_id to_mama_thumbnail = customer.thumbnail to_mama_nick = customer.nick init_from_mama_id = coupon_to_mama_id order_no = order_oid transfer_type = CouponTransferRecord.IN_RECHARGE date_field = datetime.date.today() transfer_status = CouponTransferRecord.DELIVERED uni_key = "%s-%s-%s" % (coupon_to_mama_id, transfer_type, order_oid ) # every trade, only return once. template_id = 374 template = CouponTemplate.objects.get(id=template_id) coupon_value = template.value product_img = template.extras.get("product_img") or '' from flashsale.coupon.apis.v1.transfer import get_elite_score_by_templateid mama = customer.get_charged_mama() product_id, elite_score, agent_price = get_elite_score_by_templateid( template_id, mama) from flashsale.xiaolumm.apis.v1.xiaolumama import xlmm_recharge_cacl_score elite_score = num * xlmm_recharge_cacl_score(price) transfer = CouponTransferRecord( coupon_from_mama_id=coupon_from_mama_id, from_mama_thumbnail=from_mama_thumbnail, from_mama_nick=from_mama_nick, coupon_to_mama_id=coupon_to_mama_id, to_mama_thumbnail=to_mama_thumbnail, to_mama_nick=to_mama_nick, coupon_value=coupon_value, init_from_mama_id=init_from_mama_id, order_no=order_no, template_id=template_id, product_img=product_img, coupon_num=0, transfer_type=transfer_type, product_id=product_id, elite_score=elite_score, uni_key=uni_key, date_field=date_field, transfer_status=transfer_status, elite_level=mama.elite_level, to_mama_price=agent_price, ) transfer.save() return transfer
def gen_cancel_exchg_record(cls, customer, coupon_num, template_id, order_oid): from flashsale.coupon.models import CouponTemplate coupon_from_mama_id = 0 from_mama_thumbnail = 'http://7xogkj.com2.z0.glb.qiniucdn.com/222-ohmydeer.png?imageMogr2/thumbnail/60/format/png' from_mama_nick = 'SYSTEM' coupon_to_mama_id = customer.mama_id to_mama_thumbnail = customer.thumbnail to_mama_nick = customer.nick init_from_mama_id = coupon_to_mama_id order_no = order_oid transfer_type = CouponTransferRecord.IN_CANCEL_EXCHG date_field = datetime.date.today() transfer_status = CouponTransferRecord.DELIVERED idx = cls.objects.filter(coupon_from_mama_id=0, coupon_to_mama_id=coupon_to_mama_id, transfer_type=transfer_type, template_id=template_id, order_no=order_no, transfer_status__gte=cls.PROCESSED).count() uni_key = "%s-%s-%s-%s" % (coupon_to_mama_id, transfer_type, order_oid, idx + 1) # every trade, only return once. template = CouponTemplate.objects.get(id=template_id) coupon_value = template.value product_img = template.extras.get("product_img") or '' from flashsale.coupon.apis.v1.transfer import get_elite_score_by_templateid mama = customer.get_charged_mama() product_id, elite_score, agent_price = get_elite_score_by_templateid( template_id, mama) elite_score *= int(coupon_num) transfer = CouponTransferRecord( coupon_from_mama_id=coupon_from_mama_id, from_mama_thumbnail=from_mama_thumbnail, from_mama_nick=from_mama_nick, coupon_to_mama_id=coupon_to_mama_id, to_mama_thumbnail=to_mama_thumbnail, to_mama_nick=to_mama_nick, coupon_value=coupon_value, init_from_mama_id=init_from_mama_id, order_no=order_no, template_id=template_id, product_img=product_img, coupon_num=coupon_num, transfer_type=transfer_type, product_id=product_id, elite_score=elite_score, uni_key=uni_key, date_field=date_field, transfer_status=transfer_status, elite_level=mama.elite_level, to_mama_price=agent_price, ) transfer.save() return transfer
def create_exchg_order_record(cls, customer, coupon_num, sale_order, template_id): from flashsale.coupon.models import CouponTemplate from flashsale.coupon.apis.v1.transfer import get_elite_score_by_templateid from_customer = customer from_mama = from_customer.get_charged_mama() coupon_from_mama_id = from_mama.id from_mama_nick = from_customer.nick from_mama_thumbnail = from_customer.thumbnail init_from_mama_id = from_mama.id coupon_to_mama_id = 0 to_mama_nick = 'SYSTEM' to_mama_thumbnail = 'http://7xogkj.com2.z0.glb.qiniucdn.com/222-ohmydeer.png?imageMogr2/thumbnail/60/format/png' transfer_type = cls.OUT_EXCHG_SALEORDER date_field = datetime.date.today() uni_key = sale_order.oid order_no = sale_order.oid # coupon = cls.objects.filter(uni_key=uni_key).first() # if coupon: # logger.warn({ # 'message': u'create exchange order record:record already exist, order_id=%s ' % ( # sale_order.oid), # 'code': 3 # }) # raise exceptions.ValidationError(u'兑换记录已存在') ct = CouponTemplate.objects.filter(id=template_id).first() coupon_value = ct.value product_img = ct.extras.get("product_img") or '' product_id, elite_score, agent_price = get_elite_score_by_templateid( template_id, from_mama) elite_score *= int(coupon_num) transfer_status = cls.DELIVERED transfer = cls(coupon_from_mama_id=coupon_from_mama_id, from_mama_thumbnail=from_mama_thumbnail, from_mama_nick=from_mama_nick, coupon_to_mama_id=coupon_to_mama_id, to_mama_thumbnail=to_mama_thumbnail, to_mama_nick=to_mama_nick, coupon_value=coupon_value, init_from_mama_id=init_from_mama_id, order_no=order_no, template_id=template_id, product_img=product_img, coupon_num=coupon_num, transfer_type=transfer_type, product_id=product_id, elite_score=elite_score, uni_key=uni_key, date_field=date_field, transfer_status=transfer_status, from_mama_elite_level=from_mama.elite_level, from_mama_price=agent_price) transfer.save() return transfer
def gen_transfer_record(cls, request_user, reference_record): from flashsale.xiaolumm.models import XiaoluMama from flashsale.pay.models import Customer to_customer = Customer.objects.normal_customer.filter( user=request_user).first() to_mama = to_customer.get_charged_mama() if to_mama.can_buy_transfer_coupon(): res = {"code": 2, "info": u"无需申请,请直接支付购券!"} return res elite_level = to_mama.elite_level to_mama_nick = to_customer.nick to_mama_thumbnail = to_customer.thumbnail coupon_to_mama_id = to_mama.id init_from_mama_id = reference_record.init_from_mama_id coupon_from_mama_id = get_referal_from_mama_id(coupon_to_mama_id) from_mama = XiaoluMama.objects.filter(id=coupon_from_mama_id).first() from_customer = Customer.objects.filter( unionid=from_mama.unionid).first() from_mama_thumbnail = from_customer.thumbnail from_mama_nick = from_customer.nick transfer_type = CouponTransferRecord.OUT_TRANSFER date_field = datetime.date.today() coupon_num = reference_record.coupon_num order_no = reference_record.order_no uni_key = CouponTransferRecord.gen_unikey_with_order_no( coupon_from_mama_id, coupon_to_mama_id, order_no) template_id = reference_record.template_id product_img = reference_record.product_img coupon_value = reference_record.coupon_value product_id = reference_record.product_id elite_score = reference_record.elite_score if not uni_key: res = {"code": 2, "info": u"记录已生成或申请已达当日上限!"} return res coupon = CouponTransferRecord.objects.filter(uni_key=uni_key).first() if coupon: res = {"code": 3, "info": u"同样的精品券申请记录已存在!"} return res from flashsale.coupon.apis.v1.transfer import get_elite_score_by_templateid _, _, agent_price = get_elite_score_by_templateid(template_id, to_mama) _, _, from_agent_price = get_elite_score_by_templateid( template_id, from_mama) coupon = CouponTransferRecord( coupon_from_mama_id=coupon_from_mama_id, from_mama_thumbnail=from_mama_thumbnail, from_mama_nick=from_mama_nick, coupon_to_mama_id=coupon_to_mama_id, to_mama_thumbnail=to_mama_thumbnail, to_mama_nick=to_mama_nick, coupon_value=coupon_value, init_from_mama_id=init_from_mama_id, order_no=order_no, template_id=template_id, product_img=product_img, coupon_num=coupon_num, elite_level=elite_level, product_id=product_id, elite_score=elite_score, transfer_type=transfer_type, uni_key=uni_key, date_field=date_field, to_mama_price=agent_price, from_mama_elite_level=from_mama.elite_level, from_mama_price=from_agent_price, ) coupon.save() from flashsale.xiaolumm.tasks.tasks_mama_dailystats import task_calc_xlmm_elite_score task_calc_xlmm_elite_score(coupon_to_mama_id) # 计算妈妈积分 res = {"code": 0, "info": u"您手头精品券不足,向上级申请精品券成功!"} return res
def create_consume_record(cls, coupon_num, buyer_id, tid, template_id): from flashsale.xiaolumm.models import XiaoluMama from flashsale.pay.models import Customer from flashsale.coupon.models import CouponTemplate from_customer_id = buyer_id from_customer = Customer.objects.filter(id=from_customer_id).first() from_mama = XiaoluMama.objects.filter( openid=from_customer.unionid).first() coupon_from_mama_id = from_mama.id from_mama_nick = from_customer.nick from_mama_thumbnail = from_customer.thumbnail init_from_mama_id = from_mama.id coupon_to_mama_id = 0 to_mama_nick = 'SYSTEM' to_mama_thumbnail = 'http://7xogkj.com2.z0.glb.qiniucdn.com/222-ohmydeer.png?imageMogr2/thumbnail/60/format/png' transfer_type = cls.OUT_CONSUMED date_field = datetime.date.today() uni_key = tid order_no = tid coupon = cls.objects.filter(uni_key=uni_key).first() if coupon: res = {"code": 3, "info": u"记录已存在!"} return res ct = CouponTemplate.objects.filter(id=template_id).first() coupon_value = ct.value product_img = ct.extras.get("product_img") or '' from flashsale.coupon.apis.v1.transfer import get_elite_score_by_templateid product_id, elite_score, agent_price = get_elite_score_by_templateid( template_id, from_mama) elite_score *= int(coupon_num) transfer_status = cls.DELIVERED coupon = cls( coupon_from_mama_id=coupon_from_mama_id, from_mama_thumbnail=from_mama_thumbnail, from_mama_nick=from_mama_nick, coupon_to_mama_id=coupon_to_mama_id, to_mama_thumbnail=to_mama_thumbnail, to_mama_nick=to_mama_nick, coupon_value=coupon_value, init_from_mama_id=init_from_mama_id, order_no=order_no, template_id=template_id, product_img=product_img, coupon_num=coupon_num, transfer_type=transfer_type, product_id=product_id, elite_score=elite_score, uni_key=uni_key, date_field=date_field, transfer_status=transfer_status, from_mama_elite_level=from_mama.elite_level, from_mama_price=agent_price, ) coupon.save() return coupon
def task_auto_exchg_xlmm_order(): import datetime tt = datetime.datetime.now() tf = tt - datetime.timedelta(days=2) from flashsale.pay.models.trade import SaleOrder, SaleTrade, Customer from flashsale.xiaolumm.models import OrderCarry, XiaoluMama, ExchangeSaleOrder from flashsale.pay.models import ModelProduct exchg_orders = OrderCarry.objects.filter( carry_type=OrderCarry.REFERAL_ORDER, status__in=[OrderCarry.CONFIRM], created__range=(datetime.date(2017, 2, 1), tf)) unexchg_coupon_num = 0 autoexchg_coupon_num = 0 if exchg_orders.exists(): for entry in exchg_orders.iterator(): sale_order = SaleOrder.objects.filter(oid=entry.order_id).first() exchg_sale_order = ExchangeSaleOrder.objects.filter( order_oid=entry.order_id).first() if not sale_order: continue if sale_order.extras.has_key('exchange') or ( exchg_sale_order and exchg_sale_order.has_exchanged): continue model_product = ModelProduct.objects.filter( id=sale_order.item_product.model_id, is_boutique=True, product_type=ModelProduct.VIRTUAL_TYPE).first() if model_product: from flashsale.pay.apis.v1.order import get_pay_type_from_trade if round(sale_order.payment / sale_order.price ) > 0 and model_product.extras.has_key('template_id'): unexchg_coupon_num += round(sale_order.payment / sale_order.price) from flashsale.xiaolumm.apis.v1.xiaolumama import get_mama_by_id level1_mama = get_mama_by_id(entry.contributor_id) level2_mama = get_mama_by_id(entry.mama_id) if level2_mama: level3_mama = level2_mama.get_referal_from_mama() if level1_mama and level2_mama \ and level1_mama.get_level_lowest_elite() >= level2_mama.get_level_lowest_elite(): from flashsale.coupon.apis.v1.transfer import create_present_elite_score, get_elite_score_by_templateid from flashsale.coupon.apis.v1.coupontemplate import get_coupon_template_by_id autoexchg_coupon_num += round(sale_order.payment / sale_order.price) customer = level2_mama.get_customer() template = get_coupon_template_by_id( model_product.extras['template_id']) product_id, elite_score, agent_price = get_elite_score_by_templateid( template.id, level2_mama) elite_score *= round(sale_order.payment / sale_order.price) uni_key_prefix = "autoexchg-%s" % (sale_order.id) try: create_present_elite_score(customer, elite_score, template, '', uni_key_prefix) except IntegrityError: logger.info({ 'message': u'task_auto_exchg_xlmm_order integrity err | oid=%s' % (sale_order.oid), }) if level2_mama.referal_from == XiaoluMama.INDIRECT and level3_mama and level3_mama.is_elite_mama: entry.mama_id = level3_mama.id entry.save(update_fields=['mama_id']) from core.options import log_action, CHANGE, ADDITION, get_systemoa_user sys_oa = get_systemoa_user() log_action( sys_oa, entry, CHANGE, u'auto exchange ordercarry=%s,so=%s,level1 %s >= level2 %s,level2 %s to level3 %s' % (entry.id, sale_order.oid, level1_mama.get_level_lowest_elite(), level2_mama.get_level_lowest_elite(), level2_mama.id, level3_mama.id)) # print 'add level3', sale_order.oid, level1_mama.id, level2_mama.id, level3_mama.id else: exchg_sale_order = ExchangeSaleOrder.objects.filter( order_oid=entry.order_id).first() if not exchg_sale_order: exchg_record = ExchangeSaleOrder( order_oid=entry.order_id, has_exchanged=True, exchg_type=1, uni_key=entry.order_id) exchg_record.save() else: exchg_sale_order.has_exchanged = True exchg_sale_order.exchg_type = 1 exchg_sale_order.save() from core.options import log_action, CHANGE, ADDITION, get_systemoa_user sys_oa = get_systemoa_user() log_action( sys_oa, exchg_sale_order, CHANGE, u'auto exchange ordercarry=%s,level1 %s >= level2 %s,level2 %s, level3 none or not elite, so %s exchg finish' % (entry.id, level1_mama.get_level_lowest_elite(), level2_mama.get_level_lowest_elite(), level2_mama.id, sale_order.oid)) # print 'chg so', sale_order.oid, level1_mama.id, level2_mama.id logger.info({ 'message': u'task_auto_exchg_xlmm_order | mama unexchg_coupon_num=%s autoexchg_coupon_num=%s' % (unexchg_coupon_num, autoexchg_coupon_num), })