async def userinvitecode(ns): """ 客户加入邀请码活动 """ db = DBPools() async with db.sqlorContext('kboss') as sor: code = ns.get('invitecode') if '=' not in code: return {'status': False, 'msg': '邀请码不正确'} index = code.index('=') + 1 try: invitecode = await sor.R('invitecode', {'invitecode': code[index:]}) if len(invitecode) >= 1: orgid = await sor.R('users', {'id': ns.get('userid')}) promoted_cutomer = await sor.R('promoted_cutomer', {'inviteid': invitecode[0]['id'], 'customer': orgid[0]['orgid']}) if len(promoted_cutomer) >= 1: return {'status': True, 'msg': '已参过该活动'} promote_discount = await sor.R('promote_discount', {'dle_flg':'0','promotingid': invitecode[0]['promotingid']}) saleprotocol = await sor.R('saleprotocol', {'bid_orgid': orgid[0]['orgid']}) if len(saleprotocol) < 1: date = await get_business_date(sor=None) dict2 = {} dict2['id'] = uuid() # dict2['id'] = UUID() useroffer_orgid = await sor.R('users', {'id': invitecode[0]['iusserid']}) dict2['offer_orgid'] = useroffer_orgid[0]['orgid'] dict2['bid_orgid'] = orgid[0]['orgid'] dict2['salemode'] = '0' dict2['start_date'] = date dict2['end_date'] = '9999-12-31' await sor.C('saleprotocol', dict2) sid = dict2['id'] else: sid = saleprotocol[0]['id'] saleprotocolid = await sor.R('saleprotocol', {'bid_orgid': orgid[0]['orgid']}) for i in promote_discount: product_salemodeid = await sor.R('product_salemode', {'protocolid': saleprotocolid[0]['id'], 'productid': i['productid']}) if len(product_salemodeid) >= 1: await sor.U('product_salemode', {'id': product_salemodeid[0]['id'], 'discount': i['discount']}) else: dict1 = {} dict1['id'] = uuid() # dict1['id'] = UUID() dict1['protocolid'] = sid product = await sor.R('product', {'id': i['productid']}) dict1['providerid'] = product[0]['providerid'] dict1['productid'] = i['productid'] dict1['discount'] = i['discount'] await sor.C('product_salemode', dict1) await sor.C('promoted_cutomer', {'id': uuid(), 'inviteid': invitecode[0]['id'], 'customer': orgid[0]['orgid'], 'join_date': datetime.datetime.now()}) return {'status': True, 'msg': '参加成功'} return {'status': False, 'msg': '验证码不正确'} except: return {'status': False, 'msg': '参加失败'} ret = await userinvitecode(params_kw) return ret