#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved. @AUTHOR: ASJRD018 @NAME: AnsjerFormal @software: PyCharm @DATE: 2020/2/27 9:38 @Version: python3.6 @MODIFY DECORD:ansjer dev @file: AppSetController.py @Contact: chanjunkai@163.com """ from Ansjer.config import SERVER_TYPE from Model.models import AppSetModel, PromotionRuleModel, PopupsConfig, RedDotsConfig from django.views.generic.base import View from Object.RedisObject import RedisObject from Object.TokenObject import TokenObject from Service.ModelService import ModelService import time, json from Object.ResponseObject import ResponseObject class AppSetView(View): def get(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation', None) return self.validation(request.GET, operation) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation', None) return self.validation(request.POST, operation) def validation(self, request_dict, operation): response = ResponseObject() if operation == 'query': return self.do_query(request_dict, response) if operation == 'admin_query': token = request_dict.get('token', None) tko = TokenObject(token) if tko.code == 0: userID = tko.userID return self.do_admin_query(userID, request_dict, response) else: return response.json(tko.code) elif operation == 'admin_update': token = request_dict.get('token', None) tko = TokenObject(token) if tko.code == 0: userID = tko.userID return self.do_admin_update(userID, request_dict, response) else: return response.json(tko.code) else: token = request_dict.get('token', None) tko = TokenObject(token) if tko.code == 0: userID = tko.userID if operation == 'page_set': # app弹窗标记红点设置 return self.do_page_set(userID, request_dict, response) else: return response.json(tko.code) # 查询 def do_query(self, request_dict, response): lang = request_dict.get('lang', None) appBundleId = request_dict.get('appBundleId', None) if not appBundleId: return response.json(444, 'appBundleId') app_set_qs = AppSetModel.objects.filter(appBundleId=appBundleId).values('content') if not app_set_qs.exists(): return response.json(173) try: if not app_set_qs[0]['content']: return response.json(0) dict_json = json.loads(app_set_qs[0]['content']) # 加入促销弹窗 promotion = PromotionRuleModel.objects.filter(status=1).values('startTime', 'endTime', 'popups') if promotion.exists(): dict_json['popupsStartTime'] = promotion[0]['startTime'] dict_json['popupsEndTime'] = promotion[0]['endTime'] dict_json['popupsContent'] = json.loads(promotion[0]['popups']).get(lang, '') dict_json['nowTime'] = int(time.time()) if 'editionUpgrading' in dict_json: if dict_json['editionUpgrading'] == 1: if lang == 'cn': dict_json['editionUpgrading'] = '正在升级,请稍后登录' else: dict_json['editionUpgrading'] = 'Upgrading, please sign in later' else: dict_json['editionUpgrading'] = '' return response.json(0, dict_json) except Exception as e: return response.json(500, "错误行数:{errLine}, 错误信息: {errmsg}".format(errLine=e.__traceback__.tb_lineno, errmsg=repr(e))) # res = {} # res['grade'] = 1 # # # 用户帮助 # res['usingHelp'] = 0 # # # AP添加方式 # res['apAdd'] = 1 # # # AP工具 # res['apTool'] = 1 # # # 广告模块 # res['ad_module'] = { # "time": 0, # "ad_path": [ # "https://test.dvema.com/web/static/image/default_ad1", # "https://test.dvema.com/web/static/image/default_ad2", # "https://test.dvema.com/web/static/image/default_ad3", # ] # } # res['init_img'] = 'https://test.dvema.com/web/static/image/default_start' # return response.json(0, res) def do_admin_query(self, userID, request_dict, response): # 查询和添加权限 own_perm = ModelService.check_perm(userID, 40) if not own_perm: return response.json(404) appBundleId = request_dict.get('appBundleId', None) sm_qs = AppSetModel.objects.filter(appBundleId=appBundleId) count = sm_qs.count() nowTime = int(time.time()) if count > 0: sm_qs = sm_qs.values('id', 'appBundleId', 'content', 'addTime', 'updTime') return response.json(0, {'data': list(sm_qs), 'count': count}) else: AppSetModel.objects.create( appBundleId=appBundleId, addTime=nowTime, updTime=nowTime ) return response.json(0) def do_admin_update(self, userID, request_dict, response): # 修改的权限 own_perm = ModelService.check_perm(userID, 50) if not own_perm: return response.json(404) appBundleId = request_dict.get('appBundleId', None) content = request_dict.get('content', None) nowTime = int(time.time()) sm_qs = AppSetModel.objects.filter(appBundleId=appBundleId) redis = RedisObject() if SERVER_TYPE != "Ansjer.formal_settings": key_id = "www" + appBundleId else: key_id = "test" + appBundleId redis.del_data(key=key_id) if sm_qs.exists(): sm_qs.update(content=content, updTime=nowTime) return response.json(0) else: return response.json(173) def do_page_set(self, userID, request_dict, response): lang = request_dict.get('lang', 'en') dict_json = {} now_time = int(time.time()) dict_json['popups'] = { 'title': '', 'content': '', 'status': 0, 'tag': 1, } #弹窗 popups_obj = PopupsConfig.objects.filter(lang=lang).values('title','content','start_time','end_time','tag') if popups_obj.exists(): popups_status = 0 if now_time >= popups_obj[0]['start_time'] and now_time <= popups_obj[0]['end_time']: popups_status = 1 dict_json['popups'] = { 'title': popups_obj[0]['title'], 'content': popups_obj[0]['content'], 'status': popups_status, 'tag': popups_obj[0]['tag'], } #红点标记 dict_json['red_dots'] = [] red_dots_obj = RedDotsConfig.objects.values('module','start_time','end_time') for red_dots in red_dots_obj: red_dots_status = 0 if now_time >= red_dots['start_time'] and now_time <= red_dots['end_time']: red_dots_status = 1 dict_json['red_dots'].append({ 'module': red_dots['module'], 'status': red_dots_status, }) dict_json['red_dots'] = list(dict_json['red_dots']) return response.json(0, dict_json)