import time import json 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 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() token = request_dict.get('token', None) tko = TokenObject(token) if tko.code != 0: return response.json(tko.code) user_id = tko.userID if operation == 'query': return self.do_query(request_dict, response) elif operation == 'page_set': # app弹窗标记红点设置 return self.do_page_set(user_id, request_dict, response) elif operation == 'admin_query': return self.do_admin_query(user_id, request_dict, response) elif operation == 'admin_update': return self.do_admin_update(user_id, request_dict, response) else: return response.json(414) @staticmethod def do_query(request_dict, response): """ 查询app配置 @param request_dict: 请求数据 @request_dict lang: 语言 @request_dict appBundleId: app包id @param response: 响应 @return: 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: dict_json['editionUpgrading'] = '' if dict_json['editionUpgrading'] == 1: if lang == 'cn': dict_json['editionUpgrading'] = '正在升级,请稍后登录' else: dict_json['editionUpgrading'] = 'Upgrading, please sign in later' 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))) 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)