Няма описание

qy_views.py 5.1KB

    # -*- coding: utf-8 -*- import logging import requests import json 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 pyqywe_token import access_token from pywe_storage import RedisStorage from TimeConvert import TimeConvert as tc from account.models import UserInfo from mch.models import SaleclerkInfo, DistributorInfo, MaintenancemanInfo from statistic.models import RegisterStatisticInfo from member.models import RightInfo from coupon.models import UserCouponInfo from utils.error.errno_utils import ProductBrandStatusCode, ProductDistributorStatusCode, UserStatusCode 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)) token = access_token(appid=appid, secret=secret, storage=RedisStorage(r)) userinfo = requests.post(url='https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token='+token+'&userid='+userid).text userinfo = json.loads(userinfo) mobile = userinfo.get('mobile', '') # 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.phone = mobile user.save() # Store Userinfo set_profile_info(user) # 维修员登录 (122 维修部部门ID) if 122 in userinfo.get('department', []): maintenance, created = MaintenancemanInfo.objects.get_or_create(brand_id=brand_id, maintenance_phone=mobile, status=True) user.is_maintenance = True if created: maintenance.maintenance_name = userinfo.get('name', '') maintenance.maintenance_sex = userinfo.get('gender', 0) maintenance.maintenance_phone = mobile maintenance.user_id = user.user_id maintenance.wx_userid = user.wx_userid maintenance.save() else: user.is_maintenance = False # 销售员登录 saleclerk, created = SaleclerkInfo.objects.get_or_create(brand_id=brand_id, clerk_phone=mobile, status=True) if created: try: distributor = DistributorInfo.objects.get(department_id__in=userinfo.get('department', [])) except: return response(ProductDistributorStatusCode.DISTRIBUTOR_NOT_FOUND) saleclerk.brand_id = brand_id saleclerk.distributor_id = distributor.distributor_id saleclerk.distributor_name = distributor.distributor_name saleclerk.clerk_name = userinfo.get('name', '') saleclerk.sex = userinfo.get('gender', 0) saleclerk.clerk_phone = userinfo.get('mobile', '') saleclerk.user_id = user.user_id saleclerk.wx_userid = userid saleclerk.user_status = SaleclerkInfo.ACTIVATED saleclerk.is_auth = True saleclerk.save() user.save() return response(200, 'Mini App Login Success', u'微信小程序登录成功', user.brand_qydata(brand_id=brand_id)) @logit(res=True) @transaction.atomic def query_userinfo(request): brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) maintenance_id = request.POST.get('maintenance_id', '') memebercardcode = request.POST.get('membercardcode', '') try: user = UserInfo.objects.get(memberusercardcode=memebercardcode, status=True) except: return response(UserStatusCode.USER_NOT_FOUND) # 维修人工费 right = RightInfo.objects.get(right_id='X457xEV8KVxHQiTvhA7Dtf') coupons = UserCouponInfo.objects.filter(user_id=user.user_id, has_used=False, status=True) coupons = [coupon.data for coupon in coupons] right_detail = right.maintaindata(level=user.level) return response(200, 'UserInfo Success', u'获取用户信息成功', data={ 'coupons': coupons, 'right': right_detail })