def selling(request): data = { 'index': 'member', 'sub_index': 'home', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'data': { 'uconnect': [] } } uconnections = UserConnection.objects \ .filter(parent=request.user).filter(is_selling=0) for uconnect in uconnections: ubalance = services.get_balance(uconnect.user) data['data']['uconnect'].append({ 'user_id': uconnect.user.id, 'username': uconnect.user.username, 'total_investment': ubalance['total_investment'] }) if request.method == 'POST': user_id = request.POST.get('user_id', '') if user_id: mall = UserSellingMall( user_id=user_id, parent_user=request.user ) mall.save() UserConnection.objects \ .filter(user_id=user_id).update(is_selling=1) return HttpResponseRedirect('/member/selling/') return utils.crender(request, 'frontend/member/selling.html', data)
def trading_hall(request, ctype): data = { 'index': 'member', 'sub_index': 'hall', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'errmsg': '', 'ctype': ctype, 'data': {} } result = UserOrderSell.objects.filter(status=0) \ .aggregate(total=Sum('num_unsell')) try: data['data']['total'] = int(result.get('total', 0)) except: data['data']['total'] = 0 data['data']['price_init'] = services.get_init_price() current_order = services.get_current_order() data['data']['price_current'] = current_order['price'] if ctype == 'sell': ubalance = services.get_balance(request.user) data['data']['point'] = ubalance['point'] else: data['data']['point'] = current_order['num'] data['data']['price_open'] = services.get_opening_price() data['data']['price_up'] = data['data']['price_current'] - data['data']['price_open'] data['data']['ratio'] = (data['data']['price_current'] - data['data']['price_init'])*100 / data['data']['price_init'] return utils.crender(request, 'frontend/member/trading_hall.html', data)
def dashboard(request): weekday2name = { 'cn': ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天'], 'en': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] } data = { 'index': 'member', 'sub_index': 'balance', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'data': { 'curr_weekday': { 'cn': '', 'en': '' } }, } curr_weekday = timezone.now().weekday() data['data']['curr_weekday']['cn'] = weekday2name['cn'][curr_weekday] data['data']['curr_weekday']['en'] = weekday2name['en'][curr_weekday] data['data']['invite_users'] = UserConnection.objects \ .filter(parent=request.user).count() data['data']['buy_users'] = UserConnectionBuying.objects \ .filter(parent=request.user).count() data['data']['total_users'] = data['data']['invite_users'] + data['data']['buy_users'] data['data']['balance'] = services.get_balance(request.user) return utils.crender(request, 'frontend/member/dashboard.html', data)
def trading_hall_home(request): data = { 'index': 'member', 'sub_index': 'hall', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'errmsg': '', 'data': {} } current_order = services.get_current_order() data['data']['price_buy'] = current_order['price'] data['data']['price_sell'] = current_order['price'] # 7天价格走势 data['data']['pricelog'] = { 'date': [], 'price': [] } pricelogs = CBCDPriceLog.objects.all().order_by('id')[0:7] for log in pricelogs: data['data']['pricelog']['date'].append( utils.dt_field_to_local(log.closing_date).strftime('%m-%d') ) data['data']['pricelog']['price'].append( float(log.price) ) # 交易状态 data['data']['ordersell'] = UserOrderSell.objects \ .filter(status=0) \ .all().order_by('id')[0:5] data['data']['orderbuy'] = UserOrderBuy.objects \ .all().order_by('-id')[0:5] return utils.crender(request, 'frontend/member/trading_hall_home.html', data)
def cbcd_current(request): data = { 'index': 'member', 'sub_index': 'my-cbcd', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'errmsg': '', 'data': {} } try: result = UserOrderSell.objects \ .filter(status=0).filter(seller_user=request.user) \ .aggregate(num=Sum('num_unsell'))[0] sell_num = int(result.get('num')) except: sell_num = 0 ubalance = services.get_balance(request.user) data['data']['num'] = sell_num + int(ubalance['point']) current_order = services.get_current_order() data['data']['price_buy'] = current_order['price'] data['data']['price_sell'] = current_order['price'] return utils.crender(request, 'frontend/member/cbcd_current.html', data)
def promotion(request): data = { 'index': 'member', 'sub_index': 'home', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'data': { 'uconnect': [], 'ucount': 0 } } invite_code = UserInfo.objects.get(user=request.user).invite_code uconnections = UserConnection.objects.filter(parent=request.user) data['data']['invite_url'] = '%sregister?invite_code=%s' % \ (settings.SITE_URL, invite_code) data['data']['ubalance'] = services.get_balance(request.user) for uconnect in uconnections: recommends = services.get_recommends(uconnect.user) invite_benifit = services.get_invite_benifit(uconnect.user) try: last_login = utils.dt_field_to_local(uconnect.user.last_login) except: last_login = '' data['data']['uconnect'].append({ 'username': uconnect.user.username, 'reg_time': utils.dt_field_to_local(uconnect.user.date_joined), 'recommends': recommends, 'last_login': last_login, 'invite_benifit': invite_benifit }) data['data']['ucount'] = len(data['data']['uconnect']) return utils.crender(request, 'frontend/member/promotion.html', data)
def payment(request): if not request.GET.get('point', 0): return utils.ErrResp(errors.ArgMiss) if not request.GET.get('amount', 0): return utils.ErrResp(errors.MonenyNotZero) bonus_id = request.GET.get('bonus_id', 0) # 生成订单写入数据库 upayment = UserPayment( user=request.user, amount=float(request.GET.get('amount', 0)) * settings.CURRENCY_RATIO, point=int(request.GET.get('point', 0)), currency=1, pay_type='CSPAY', ip=get_ip(request), request_url=settings.PAYMENT_API, callback=settings.SITE_URL+'member/bonus/update/?id='+bonus_id ) upayment.save() # 组织参数及签名 data = { 'Amount': int(upayment.amount), 'BillNo': upayment.order_id, 'MerNo': settings.PAYMENT_MERNO, 'ReturnURL': settings.PAYMENT_RETURNURL } sign = services.get_sign(data, settings.PAYMENT_KEY) data['MD5info'] = sign data['PayType'] = upayment.pay_type data['NotifyURL'] = settings.PAYMENT_NOTIFYURL data['api'] = settings.PAYMENT_API return utils.crender(request, 'frontend/member/payment.html', data)
def home(request): data = { 'index': 'home', 'statics_info': Statics.objects.order_by('-id').first(), 'chatlist': UserFeedback.objects.order_by('-id')[0:10], } return utils.crender(request, 'frontend/index.html', data)
def home(request): data = { 'index': 'member', 'sub_index': 'home' } data['statics'] = services.get_statics(request.user.id) return utils.crender(request, 'frontend/member/index.html', data)
def faq(request): data = { 'index': 'faq', 'chatlist': UserFeedback.objects.order_by('-id')[0:10], } statics_info = Statics.objects.order_by('-id').first() data['statics_info'] = statics_info return utils.crender(request, 'frontend/faq.html', data)
def setting(request): data = { 'index': 'member', 'sub_index': 'home', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'changePwdForm': ChangePwdForm(), 'changeInfoForm': ChangeUserInfoForm(), 'userinfo': {}, 'errmsg': '' } if request.session['lang'] == 'cn': data['changePwdForm'] = ChangePwdForm() else: data['changePwdForm'] = EnChangePwdForm() uinfo = UserInfo.objects.get(user=request.user) data['userinfo'] = uinfo if request.method == 'POST': if request.POST.get('ctype') == 'changepwd': if request.session['lang'] == 'cn': data['changePwdForm'] = ChangePwdForm(request.POST) else: data['changePwdForm'] = EnChangePwdForm(request.POST) if data['changePwdForm'].is_valid(): user = authenticate(username=request.user.username, password=request.POST['password']) if not user: if request.session['lang'] == 'cn': data['errmsg'] = '原密码输入有误' else: data['errmsg'] = 'old password invalid' else: u = Auth_user.objects.get(username=request.user.username) u.set_password(request.POST['new_password']) u.save() uinfo = UserInfo.objects.get(user=request.user) uinfo.pwd = request.POST['new_password'] uinfo.save() auth_logout(request) return HttpResponseRedirect('/login/') elif request.POST.get('ctype', '') == 'changeinfo': try: uinfo = UserInfo.objects.get(user=request.user) uinfo.city = request.POST.get('city', uinfo.city) uinfo.provincy = request.POST.get('provincy', uinfo.provincy) uinfo.country = request.POST.get('country', uinfo.country) uinfo.phone_number = request.POST.get('phone', uinfo.phone_number) uinfo.bank_code = request.POST.get('bank_code', uinfo.bank_code) uinfo.bank_card = request.POST.get('bank_card', uinfo.bank_card) uinfo.save() return utils.NormalResp() except: traceback.print_exc() return utils.ErrResp(errors.FuncFailed) return utils.crender(request, 'frontend/member/settings.html', data)
def us_bank_account(request): data = { 'index': 'member', 'sub_index': 'deposite', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'data': {} } return utils.crender(request, 'frontend/member/us_bank_account.html', data)
def seller(request): data = { 'index': 'member_seller', 'sub_index': 'home', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10] } return utils.crender(request, 'frontend/member/seller.html', data)
def find_password(request): hashkey = CaptchaStore.generate_key() captcha_url = captcha_image_url(hashkey) data = { 'index': 'member', 'sub_index': 'visa', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'hashkey': hashkey, 'captcha_url': captcha_url, 'ages': range(18, 61), 'data': {}, 'errmsg': '' } if request.method == 'POST': try: captcha_code = request.POST.get('captcha_code', '') captcha_code_key = request.POST.get('captcha_code_key', '') email = request.POST.get('email', '') if not utils.verify_captcha(captcha_code, captcha_code_key): return utils.ErrResp(errors.CaptchCodeInvalid) try: u = Auth_user.objects.get(email=email) except: return utils.ErrResp(errors.EmailNotExists) uresetpwd = UserResetPwd( username=u.username, email=email ) uresetpwd.save() # 发邮件 resetpwd_dt = dict({ 'title': '重置密码', 'email': email, 'username': u.username, 'reset_url': '/member/reset-pwd?hashkey=%s' % uresetpwd.hashkey }) import email_template subject = email_template.resetpwd_template['subject'] subject = subject.format(**resetpwd_dt) html = email_template.resetpwd_template['password'] html = html.format(**resetpwd_dt) utils.mailgun_send_email([email], subject, html) return utils.NormalResp() except: traceback.print_exc() return utils.ErrResp(errors.FuncFailed) else: return utils.crender(request, 'frontend/member/find_password.html', data)
def register(request): hashkey = CaptchaStore.generate_key() captcha_url = captcha_image_url(hashkey) invite_code = request.GET.get('invite_code', '') recommend_user = '' if invite_code: try: uinfo = UserInfo.objects.filter(invite_code=invite_code).first() recommend_user = uinfo.user.username except: pass data = { 'index': 'register', 'statics_info': Statics.objects.order_by('-id').first(), 'chatlist': UserFeedback.objects.order_by('-id')[0:10], 'recommend_user': recommend_user, 'form': RegForm(initial={'recommend_user': recommend_user}), 'ages': range(18, 61), 'hashkey': hashkey, 'captcha_url': captcha_url, 'errmsg': '' } if request.method == 'POST': username = request.POST.get('username', '') email = request.POST.get('email', '') username_exists = Auth_user.objects.filter(username=username).exists() if username_exists: return utils.ErrResp(errors.UserExists) if len(username) < 6: return utils.ErrResp(errors.UsernameInvalid) email_exists = Auth_user.objects.filter(email=email).exists() if email_exists: return utils.ErrResp(errors.EmailExists) if len(request.POST.get('password', '')) < 8 or len( request.POST.get('password', '')) > 16: return utils.ErrResp(errors.PasswordInvalid) captcha_code = request.POST.get('captcha_code', '') captcha_code_key = request.POST.get('captcha_code_key', '') cs = CaptchaStore.objects.filter(hashkey=captcha_code_key) true_key = cs[0].response if captcha_code.lower() != true_key: return utils.ErrResp(errors.CaptchCodeInvalid) CaptchaStore.objects.filter(hashkey=captcha_code_key).delete() services.reg(request) return utils.NormalResp() else: return utils.crender(request, 'frontend/register.html', data)
def withdraw(request): data = { 'index': 'member', 'sub_index': 'deposite', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'errmsg': '', 'data': {'withdraws': []} } ubalance = services.get_balance(request.user) uinfo = UserInfo.objects.get(user=request.user) initial = { 'cash': ubalance['cash'], 'pay_type': uinfo.bank_code, 'pay_account': uinfo.bank_card, } data['form'] = WithDrawForm(initial=initial) withdraws = UserWithDraw.objects.filter(user=request.user).order_by('-id') for w in withdraws: data['data']['withdraws'].append({ 'order_id': w.order_id, 'create_time': w.create_time, 'amount': float(w.amount), 'status': UserWithDraw.STATUS[w.status] }) if request.method == 'POST': data['form'] = WithDrawForm(request.POST) if data['form'].is_valid(): uauth = authenticate(username=request.user.username, password=request.POST['password']) if uauth: pay_amount = float(request.POST.get('amount')) if services.pay_cash(request.user, pay_amount): udraw = UserWithDraw( user=request.user, pay_type=request.POST.get('pay_type'), pay_account=request.POST.get('pay_account'), bank_code=request.POST.get('bank_code', ''), amount=float(request.POST.get('amount')) ) udraw.save() return HttpResponseRedirect('/member/withdraw/') else: data['errmsg'] = '余额不足' else: data['errmsg'] = '密码不正确' return utils.crender(request, 'frontend/member/withdraw.html', data)
def visa_apply(request): hashkey = CaptchaStore.generate_key() captcha_url = captcha_image_url(hashkey) data = { 'index': 'member', 'sub_index': 'visa', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'hashkey': hashkey, 'captcha_url': captcha_url, 'ages': range(18, 61), 'data': {}, 'errmsg': '' } if request.method == 'POST': try: exists = UserVisaApply.objects.filter(user=request.user).exists() if exists: return utils.ErrResp(errors.VisaApplyExists) captcha_code = request.POST.get('captcha_code', '') captcha_code_key = request.POST.get('captcha_code_key', '') cs = CaptchaStore.objects.filter(hashkey=captcha_code_key) true_key = cs[0].response print true_key, captcha_code.lower() if captcha_code.lower() != true_key: return utils.ErrResp(errors.CaptchCodeInvalid) CaptchaStore.objects.filter(hashkey=captcha_code_key).delete() uapply = UserVisaApply( user=request.user, first_name=request.POST.get('first_name', ''), last_name= request.POST.get('last_name', ''), age=request.POST.get('age', 0), email=request.POST.get('email', ''), phone=request.POST.get('phone', ''), id_card=request.POST.get('id_card', ''), address=request.POST.get('address', ''), city=request.POST.get('city', ''), provincy=request.POST.get('provincy', ''), country=request.POST.get('country', ''), zip_code=request.POST.get('zip_code', '') ) uapply.save() return utils.NormalResp() except: traceback.print_exc() return utils.ErrResp(errors.FuncFailed) else: return utils.crender(request, 'frontend/member/visa_apply.html', data)
def cbcd_order(request): data = { 'index': 'member', 'sub_index': 'hall', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'data': {} } data['data']['ordersell'] = UserOrderSell.objects \ .filter(status=0) \ .all().order_by('id')[0:15] data['data']['orderbuy'] = UserOrderBuy.objects \ .all().order_by('-id')[0:15] return utils.crender(request, 'frontend/member/CBCD_order.html', data)
def chat(request): data = { 'index': 'member_chat', 'sub_index': 'log', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'form': ChatForm() } if request.session['lang'] == 'cn': data['form'] = ChatForm() else: data['form'] = EnChatForm() if request.method == 'POST': if request.session['lang'] == 'cn': data['form'] = ChatForm(request.POST) else: data['form'] = EnChatForm(request.POST) if data['form'].is_valid(): username = request.POST.get('username') if username == 'company': m = UserMessage( to_user_id=1, from_user_id=request.user.id, title=request.POST.get('title'), content=request.POST.get('message'), ctype='company', create_time=timezone.now(), status=0 ) else: to_user = Auth_user.objects \ .get(username=username) m = UserMessage( to_user_id=to_user.id, from_user_id=request.user.id, title=request.POST.get('title'), content=request.POST.get('message'), ctype='member', create_time=timezone.now(), status=0 ) m.save() return HttpResponseRedirect('/member/chat/') return utils.crender(request, 'frontend/member/chat.html', data)
def rank(request): data = { 'index': 'member', 'sub_index': 'home', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10] } n = 20 p = request.GET.get('p', 1) q = UserPromoteRank.objects data['ranklist'] = { 'tot': q.count(), 'paging': Pagination(request, q.count()), 'data': q.all().order_by('-id')[(p - 1) * n:p * n] } return utils.crender(request, 'frontend/member/rank.html', data)
def log_withdraw(request): data = { 'index': 'member', 'sub_index': 'log', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10] } n = 20 p = request.GET.get('p', 1) q = UserWithDraw.objects \ .filter(user_id=request.user.id) data['loglist'] = { 'paging': Pagination(request, q.count()), 'data': q.all().order_by('-id')[(p - 1) * n:p * n] } return utils.crender(request, 'frontend/member/log_withdraw.html', data)
def buying(request): data = { 'index': 'member', 'sub_index': 'home', 'errmsg': '', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'data': { 'members': [] } } sellings = UserSellingMall.objects \ .exclude(parent_user=request.user) \ .exclude(user=request.user) \ .order_by('-id') for s in sellings: data['data']['members'].append({ 'user_id': s.user.id, 'username': s.user.username, 'reg_time': utils.dt_field_to_local(s.user.date_joined) }) if request.method == 'POST': user_id = request.POST.get('user_id') # todo: 扣钱 ssetings = SiteSetting.objects.first() if services.pay_cash(request.user, int(ssetings.user_buy_price)*settings.CURRENCY_RATIO): ucb = UserConnectionBuying( user_id=user_id, parent=request.user, ratio=100 ) ucb.save() UserSellingMall.objects \ .filter(user_id=user_id).delete() return HttpResponseRedirect('/member/buying/') else: should_pay = int(ssetings.user_buy_price)*settings.CURRENCY_RATIO ubalance = services.get_balance(request.user) need_pay = should_pay - float(ubalance['cash']) data['errmsg'] = '余额不足,请充值: %s元' % need_pay return utils.crender(request, 'frontend/member/buying.html', data)
def news(request): data = { 'index': 'member', 'sub_index': 'log', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10] } n = 20 p = request.GET.get('p', 1) q = News.objects if request.session['lang'] == 'en': q = q.filter(category=2) data['news'] = { 'paging': Pagination(request, q.count()), 'data': q.all().order_by('-id')[(p - 1) * n:p * n] } return utils.crender(request, 'frontend/member/news.html', data)
def log(request, logtype): data = { 'index': 'member', 'sub_index': 'log', 'statics': services.get_statics(request.user.id), 'news': services.get_news(request) } n = 20 p = request.GET.get('p', 1) q = UserOplog.objects \ .filter(optype=UserOplog.OPTYPE_CODES[logtype]) \ .filter(user_id=request.user.id) data['loglist'] = { 'paging': Pagination(request, q.count()), 'data': q.all().order_by('-id')[(p - 1) * n:p * n] } return utils.crender(request, 'frontend/member/log_%s.html' % logtype, data)
def support(request): data = { 'index': 'support', 'statics_info': Statics.objects.order_by('-id').first(), 'chatlist': UserFeedback.objects.order_by('-id')[0:10], 'form': FeedbackForm(), 'data': [], 'errmsg': '' } result = UserFeedback.objects \ .filter(user_id=request.user.id) \ .order_by('-id')[0:5] for r in result: data['data'].append({ 'id': r.id, 'username': r.user.username, 'title': r.title, 'create_time': r.create_time.strftime('Y-m-d'), 'status': UserFeedback.STATUS[r.status] }) if request.method == 'POST': if not request.user.is_authenticated(): if request.session['lang'] == 'cn': data['errmsg'] = '请先登陆' else: data['errmsg'] = 'Log in First' else: data['form'] = FeedbackForm(request.POST) if data['form'].is_valid(): fb = UserFeedback(user=request.user, ctype=request.POST.get('ctype'), title=request.POST.get('title'), content=request.POST.get('content')) fb.save() return HttpResponseRedirect('/support/') return utils.crender(request, 'frontend/support.html', data)
def login(request): if request.user.is_authenticated(): return HttpResponseRedirect('/member/') hashkey = CaptchaStore.generate_key() captcha_url = captcha_image_url(hashkey) data = { 'index': 'login', 'statics_info': Statics.objects.order_by('-id').first(), 'chatlist': UserFeedback.objects.order_by('-id')[0:10], 'form': LoginForm(), 'hashkey': hashkey, 'captcha_url': captcha_url, 'errmsg': '' } if request.method == 'POST': captcha_code = request.POST.get('captcha_code', '') captcha_code_key = request.POST.get('captcha_code_key', '') if not utils.verify_captcha(captcha_code, captcha_code_key): return utils.ErrResp(errors.CaptchCodeInvalid) user = authenticate(username=request.POST.get('username', ''), password=request.POST.get('password', '')) if user is not None and user.is_active: auth_login(request, user) log = UserOplog( user_id=user.id, optype=1, content=request.META['HTTP_USER_AGENT'], ip=get_ip(request), ) log.save() return utils.NormalResp() else: return utils.ErrResp(errors.LoginFailed) return utils.crender(request, 'frontend/login.html', data)
def mailbox(request, ctype): data = { 'index': 'member_mailbox', 'sub_index': 'log', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'ctype': ctype } n = 20 p = request.GET.get('p', 1) q = UserMessage.objects.filter(ctype='member') if ctype == 'sended': q = q.filter(from_user_id=request.user.id) elif ctype == 'received': q = q.filter(to_user_id=request.user.id) data['maillist'] = { 'tot': q.count(), 'paging': Pagination(request, q.count()), 'data': q.all().order_by('-id')[(p - 1) * n:p * n] } return utils.crender(request, 'frontend/member/mailbox.html', data)
return utils.ErrResp(errors.FuncFailed) u = Auth_user.objects.get(username=uhashkey.username) u.set_password(password) u.save() uhashkey.update_at = timezone.now() uhashkey.status = 1 uhashkey.save() except Exception, e: raise e return utils.NormalResp() except: traceback.print_exc() return utils.ErrResp(errors.FuncFailed) else: return utils.crender(request, 'frontend/member/reset_password.html', data) @csrf_exempt def find_username(request): hashkey = CaptchaStore.generate_key() captcha_url = captcha_image_url(hashkey) data = { 'index': 'member', 'sub_index': 'visa', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'hashkey': hashkey, 'captcha_url': captcha_url, 'ages': range(18, 61),
def bonus(request): data = { 'index': 'member', 'sub_index': 'bonus', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10] } if request.method == 'POST': b2c = { 'bonus_50': 0, 'bonus_100': 7, 'bonus_200': 6, 'bonus_400': 5, 'bonus_600': 4, 'bonus_800': 3, 'bonus_1000': 2, 'bonus_2000': 1 } result = SiteSetting.objects.all().order_by('-id').first() if not result.bonus_switch: return utils.ErrResp(errors.BonusSwitchOff) else: # 写日志 firstday, lastday = utils.getMonthFirstDayAndLastDay() ubonus = UserBonus.objects \ .filter(create_time__gte=firstday) \ .filter(create_time__lte=lastday) \ .filter(user=request.user) if ubonus: return utils.ErrResp(errors.BonusExists) else: bonuss = [] for b in b2c: bonuss.append((b, getattr(result, b))) wr = services.weighted_random(bonuss) point = int(wr.split('bonus_')[1]) level = b2c[wr] # 扣除资本兑总量 if not services.cbcd_reduce(point): return utils.ErrResp(errors.BonusSwitchOff) ubonus = UserBonus( user=request.user, point=point, status=0 ) ubonus.save() log = UserOplog( user_id=request.user.id, optype=9, content='会员认购中抽中资本兑: %s' % point, ip=get_ip(request), ) log.save() resp = { 'level': level, 'point': point, 'money': int(point*services.get_price()), 'bonus_id': ubonus.id } return utils.NormalResp(resp) return utils.crender(request, 'frontend/member/bonus.html', data)
def change_recommend_user(request): data = { 'index': 'member', 'sub_index': 'home', 'statics': services.get_statics(request.user.id), 'news': News.objects.all().order_by('-id')[0:10], 'form': ChangeRecommendForm(), 'data': { 'changelist': [] }, 'errmsg': '' } changelist = UserChangeRecommend.objects \ .filter(user_id=request.user.id) \ .values('user_id') \ .annotate(times=Count('id')) \ .order_by('-times') for c in changelist: uinfo = UserInfo.objects.get(user_id=c.get('user_id')) ubalance = services.get_balance(uinfo.user) data['data']['changelist'].append({ 'username': uinfo.user.username, 'recommend_user': uinfo.recommend_user, 'investment': ubalance['total_investment'], 'reg_time': utils.dt_field_to_local(uinfo.user.date_joined), 'times': c.get('times', 1) }) if request.method == 'POST': data['form'] = ChangeRecommendForm(request.POST) if data['form'].is_valid(): change_times = UserChangeRecommend.objects \ .filter(user=request.user).count() recommend_username = request.POST.get('username', '') unifo = UserInfo.objects.get(user=request.user) if recommend_username == request.user.username: data['errmsg'] = '不能把自己设置为转介人' elif recommend_username == unifo.recommend_user: data['errmsg'] = '%s已经是你的当前推荐人' % recommend_username.encode('UTF-8') else: if change_times < 3: ruinfo = UserInfo.objects \ .get(user__username=recommend_username) ucr = UserChangeRecommend( user_id=request.user.id, recommend_user_id=ruinfo.user_id ) ucr.save() UserInfo.objects \ .filter(user=request.user) \ .update(recommend_user=request.POST.get('username')) UserConnection.objects \ .filter(user_id=request.user.id) \ .update(parent_id=ruinfo.user_id) return HttpResponseRedirect('/member/change-recommend-user/') else: data['errmsg'] = '你的转介次数已满3次,不能再次转介' return utils.crender(request, 'frontend/member/change_recommend_user.html', data)