暂无描述

qy_views.py 2.1KB

    # -*- coding: utf-8 -*- import logging from django.conf import settings from django.db import transaction from django_curtail_uuid import CurtailUUID from django_logit import logit from django_response import response from ipaddr import client_ip from pyqywe_miniapp import get_userid from pywe_storage import RedisStorage from TimeConvert import TimeConvert as tc from account.models import UserInfo from statistic.models import RegisterStatisticInfo from utils.error.errno_utils import ProductBrandStatusCode from utils.redis.connect import r from utils.redis.rprofile import set_profile_info WECHAT = settings.WECHAT logger = logging.getLogger('logit') @logit(res=True) @transaction.atomic def qy_login_api(request): brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) appId = request.POST.get('appId', 'QYMINIAPP') if brand_id != settings.KODO_DEFAULT_BRAND_ID: return response(ProductBrandStatusCode.BRAND_NOT_MATCH) wxcfg = WECHAT.get(appId, {}) appid = wxcfg.get('appID') secret = wxcfg.get('appsecret') code = request.POST.get('code', '') userid = get_userid(appid=appid, secret=secret, code=code, storage=RedisStorage(r)) # Get or Create User user, created = UserInfo.objects.select_for_update().get_or_create(appid=appid, userid=userid) # Set User_id if created: user.user_id = CurtailUUID.uuid(UserInfo, 'user_id') # 注册用户统计 rsi, _ = RegisterStatisticInfo.objects.select_for_update().get_or_create( brand_id=brand_id, ymd=int(tc.local_string(format='%Y%m%d')), ) rsi.num += 1 rsi.save() # Set User Key's Value user.user_from = UserInfo.QYMINIAPP_USER user.appid = appid user.user_status = UserInfo.ACTIVATED user.signup_ip = client_ip(request) user.signup_at = tc.utc_datetime() user.is_maintenance = userid in settings.QY_MAINTENANCE_USERID user.save() # Store Userinfo set_profile_info(user) return response(200, 'Mini App Login Success', u'微信小程序登录成功', user.brandata(brand_id=brand_id))