20
+
21
+
22
+WECHAT = settings.WECHAT
23
+logger = logging.getLogger('logit')
24
+
25
+
26
+@logit(res=True)
27
+@transaction.atomic
28
+def qy_login_api(request):
29
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
30
+    appId = request.POST.get('appId', 'QYMINIAPP')
31
+
32
+    if brand_id != settings.KODO_DEFAULT_BRAND_ID:
33
+        return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
34
+
35
+    wxcfg = WECHAT.get(appId, {})
36
+
37
+    appid = wxcfg.get('appID')
38
+    secret = wxcfg.get('appsecret')
39
+
40
+    code = request.POST.get('code', '')
41
+
42
+    userid = get_userid(appid=appid, secret=secret, code=code, storage=RedisStorage(r))
43
+
44
+    # Get or Create User
45
+    user, created = UserInfo.objects.select_for_update().get_or_create(appid=appid, userid=userid)
46
+
47
+    # Set User_id
48
+    if created:
49
+        user.user_id = CurtailUUID.uuid(UserInfo, 'user_id')
50
+        # 注册用户统计
51
+        rsi, _ = RegisterStatisticInfo.objects.select_for_update().get_or_create(
52
+            brand_id=brand_id,
53
+            ymd=int(tc.local_string(format='%Y%m%d')),
54
+        )
55
+        rsi.num += 1
56
+        rsi.save()
57
+
58
+    # Set User Key's Value
59
+    user.user_from = UserInfo.QYMINIAPP_USER
60
+    user.appid = appid
61
+    user.user_status = UserInfo.ACTIVATED
62
+    user.signup_ip = client_ip(request)
63
+    user.signup_at = tc.utc_datetime()
64
+    user.is_maintenance = userid in settings.QY_MAINTENANCE_USERID
65
+    user.save()
66
+
67
+    # Store Userinfo
68
+    set_profile_info(user)
69
+
70
+    return response(200, 'Mini App Login Success', u'微信小程序登录成功', user.brandata(brand_id=brand_id))

kodo - Gogs: Go Git Service

暂无描述

basic_pc.html 6.2KB

    {% load staticfiles %} <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="format-detection" content="telephone=no,email=no,address=no"> <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="0" /> <title>{% block title %}{% endblock %}</title> <link href="//cdnjs.cloudflare.com/ajax/libs/pure/0.6.2/pure-min.css" rel="stylesheet"> <link href="//cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/flexslider.min.css" rel="stylesheet"> <link href="{% static 'page/css/flexslider.ext.css' %}" rel="stylesheet" type="text/css" /> {% block link %}{% endblock %} <style> img { pointer-events: none; } body { font-family: Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif !important; } .container { padding-bottom: 45px; } .text-center { text-align: center; } .empty { color: #999; padding: .9375rem 0; font-size: .625rem; } .text_ellipsis { overflow:hidden; white-space:nowrap; text-overflow: ellipsis; } </style> {% block tohomecss %} <style> .tohome { width: 40px; height: 40px; background-color: rgba(139, 139, 139, 0.7); position: fixed; right: 10px; bottom: 20px; border-radius: 9999px; border-top-left-radius: 9999px; border-top-right-radius: 9999px; border-bottom-left-radius: 9999px; border-bottom-right-radius: 9999px; z-index: 99999999; } .tohome img { display: block; width: 18px; height: 13px; margin: 6px auto 2px; } .tohome p { color: #ffffff; } </style> {% endblock %} {% block css %}{% endblock %} <script> {% block rem %} //这段js的最后面有两个参数记得要设置,一个为设计稿实际宽度,一个为制作稿最大宽度,例如设计稿为750,最大宽度为750,则为(750,750) !function(e,t){function n(){var n=l.getBoundingClientRect().width;t=t||540,n>t&&(n=t);var i=100*n/e;r.innerHTML="html{font-size:"+i+"px;}"}var i,d=document,o=window,l=d.documentElement,r=document.createElement("style");if(l.firstElementChild)l.firstElementChild.appendChild(r);else{var a=d.createElement("div");a.appendChild(r),d.write(a.innerHTML),a=null}n(),o.addEventListener("resize",function(){clearTimeout(i),i=setTimeout(n,300)},!1),o.addEventListener("pageshow",function(e){e.persisted&&(clearTimeout(i),i=setTimeout(n,300))},!1),"complete"===d.readyState?d.body.style.fontSize="16px":d.addEventListener("DOMContentLoaded",function(e){d.body.style.fontSize="16px"},!1)}(1920,1920); {% endblock %} </script> </head> <body> {% block somehtml %}{% endblock %} <div class="container"> {% block container %}{% endblock %} {% block tohomehtml %} <div class="tohome"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAMAAABzP0xhAAAAS1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////+DmQsHAAAAGHRSTlMAoHDw+q0VCufg187DuI+OgGJUSDwyKCBlxSbJAAAAi0lEQVQ4y+3SuRKEIBBFUaQbcd+X9/9fOpRDjaXQGJnNiW/SiwpkmXpiW6C16Sav4dR5qtlKHMpNbhaCR4vUTIwfnuKNxoWONR1uunB0g4Cxt9EbRDSXVewVoqr9bNYCgmJV3kwQ0fxtRkYCj8oZ8GBQqieHIWByev9DEPjfeisy+mDk6Dy9/kevRR9/MjHbEpIcQAAAAABJRU5ErkJggg=="> <p style="text-align:center;font-size:8px">回首页</p> </div> {% endblock %} </div> {% block somehtml2 %}{% endblock %} <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/jquery.flexslider-min.js"></script> {% block script %}{% endblock %} <script> {% block glbjs %}{% endblock %} $(function() { /** 格式化输入字符串**/ //用法: "hello{0}".format('world');返回'hello world' String.prototype.format= function(){ var args = arguments; return this.replace(/\{(\d+)\}/g,function(s,i){ return args[i]; }); } {% block flexsliderjs %} // 轮播图 $('.flexslider').flexslider({ slideshowSpeed: 2000, pauseOnHover: true, controlNav: false, directionNav: false, }); {% endblock %} {% block tohomejs %} // 返回首页 $('.tohome').click(function () { window.location.href = '{{ domain }}/page/nav?{{ params|safe }}' }) {% endblock %} {% block js %}{% endblock %} }); </script> <script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script type="text/javascript" src="{% static 'machine/js/jswe-1.0.0.js' %}"></script> <script> {# V.initWxData({#} {# imgUrl: '{{ domain }}{% static 'page/img/logo.jpg' %}',#} {# link: 'http://hpsgift.hphcclub.com/we/ws',#} {# desc: '惠普销售红包系统',#} {# title: '惠普销售红包系统',#} {# timeLine: ''#} {# }, true);#} V.hideOptionMenu(); {% block jswe %}{% endblock %} </script> </body> </html>