@@ -10,16 +10,21 @@ from group.models import GroupPhotoInfo  | 
            ||
| 10 | 10 | 
                 | 
            
| 11 | 11 | 
                 | 
            
| 12 | 12 | 
                @logit  | 
            
| 13 | 
                +def group_detail(request, group_id):  | 
            |
| 14 | 
                +    return render(request, 'page/pai2_user_{}_download.html'.format('ios' if request.iOS else 'adr'), {})
               | 
            |
| 15 | 
                +  | 
            |
| 16 | 
                +  | 
            |
| 17 | 
                +@logit  | 
            |
| 13 | 18 | 
                def group_photo_detail(request, photo_id):  | 
            
| 14 | 19 | 
                photo = GroupPhotoInfo.objects.get(pk=photo_id)  | 
            
| 15 | 20 | 
                     return render(request, 'photo/photo_detail.html', {'photo_url': photo.photo_url, 'api_domain': settings.API_DOMAIN})
               | 
            
| 16 | 21 | 
                 | 
            
| 17 | 22 | 
                 | 
            
| 18 | 23 | 
                @logit  | 
            
| 19 | 
                -def group_detail(request, group_id):  | 
            |
| 20 | 
                -    return render(request, 'page/{}_download.html'.format('ios' if request.iOS else 'adr'), {})
               | 
            |
| 24 | 
                +def tgu_group_detail(request, admin_id):  | 
            |
| 25 | 
                +    return render(request, 'page/pai2_tourguide_{}_download.html'.format('ios' if request.iOS else 'adr'), {})
               | 
            |
| 21 | 26 | 
                 | 
            
| 22 | 27 | 
                 | 
            
| 23 | 28 | 
                @logit  | 
            
| 24 | 29 | 
                def tgu_group_user_detail(request, admin_id):  | 
            
| 25 | 
                -    return render(request, 'page/{}_download.html'.format('ios' if request.iOS else 'adr'), {})
               | 
            |
| 30 | 
                +    return render(request, 'page/pai2_user_{}_download.html'.format('ios' if request.iOS else 'adr'), {})
               | 
            
                @@ -28,13 +28,41 @@ class LatestAppInfoAdmin(admin.ModelAdmin):  | 
            ||
| 28 | 28 | 
                if obj.src == LatestAppInfo.PAIAI_USER:  | 
            
| 29 | 29 | 
                # 更新安卓下载页面  | 
            
| 30 | 30 | 
                             write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            
| 31 | 
                + 'src': obj.src,  | 
            |
| 31 | 32 | 
                'version': obj.latest_adr_version_name,  | 
            
| 32 | 
                - }), settings.DOWNLOAD_ADR_PAGE_PATH)  | 
            |
| 33 | 
                + }), settings.PAI2_USER_DOWNLOAD_ADR_PAGE_PATH)  | 
            |
| 33 | 34 | 
                 | 
            
| 34 | 35 | 
                # 更新 iOS 下载页面  | 
            
| 35 | 36 | 
                             write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            
| 37 | 
                + 'src': obj.src,  | 
            |
| 36 | 38 | 
                'version': obj.latest_ios_version_name,  | 
            
| 37 | 
                - }), settings.DOWNLOAD_IOS_PAGE_PATH)  | 
            |
| 39 | 
                + }), settings.PAI2_USER_DOWNLOAD_IOS_PAGE_PATH)  | 
            |
| 40 | 
                +  | 
            |
| 41 | 
                + elif obj.src == LatestAppInfo.PAIAI_LENSMAN:  | 
            |
| 42 | 
                + # 更新安卓下载页面  | 
            |
| 43 | 
                +            write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            |
| 44 | 
                + 'src': obj.src,  | 
            |
| 45 | 
                + 'version': obj.latest_adr_version_name,  | 
            |
| 46 | 
                + }), settings.PAI2_LENSMAN_DOWNLOAD_ADR_PAGE_PATH)  | 
            |
| 47 | 
                +  | 
            |
| 48 | 
                + # 更新 iOS 下载页面  | 
            |
| 49 | 
                +            write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            |
| 50 | 
                + 'src': obj.src,  | 
            |
| 51 | 
                + 'version': obj.latest_ios_version_name,  | 
            |
| 52 | 
                + }), settings.PAI2_LENSMAN_DOWNLOAD_IOS_PAGE_PATH)  | 
            |
| 53 | 
                +  | 
            |
| 54 | 
                + elif obj.src == LatestAppInfo.PAIAI_TOURGUIDE:  | 
            |
| 55 | 
                + # 更新安卓下载页面  | 
            |
| 56 | 
                +            write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            |
| 57 | 
                + 'src': obj.src,  | 
            |
| 58 | 
                + 'version': obj.latest_adr_version_name,  | 
            |
| 59 | 
                + }), settings.PAI2_TOURGUIDE_DOWNLOAD_ADR_PAGE_PATH)  | 
            |
| 60 | 
                +  | 
            |
| 61 | 
                + # 更新 iOS 下载页面  | 
            |
| 62 | 
                +            write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            |
| 63 | 
                + 'src': obj.src,  | 
            |
| 64 | 
                + 'version': obj.latest_ios_version_name,  | 
            |
| 65 | 
                + }), settings.PAI2_TOURGUIDE_DOWNLOAD_IOS_PAGE_PATH)  | 
            |
| 38 | 66 | 
                 | 
            
| 39 | 67 | 
                # 设置最新 APP 信息  | 
            
| 40 | 68 | 
                set_latest_app(obj.src)  | 
            
                @@ -5,7 +5,7 @@ from django.shortcuts import redirect  | 
            ||
| 5 | 5 | 
                from logit import logit  | 
            
| 6 | 6 | 
                 | 
            
| 7 | 7 | 
                from account.models import UserInfo  | 
            
| 8 | 
                -from operation.models import FeedbackInfo, SplashInfo  | 
            |
| 8 | 
                +from operation.models import FeedbackInfo, LatestAppInfo, SplashInfo  | 
            |
| 9 | 9 | 
                from utils.error.errno_utils import UserStatusCode  | 
            
| 10 | 10 | 
                from utils.error.response_utils import response  | 
            
| 11 | 11 | 
                from utils.redis.rapp import get_latest_app  | 
            
                @@ -84,8 +84,22 @@ def feedback_api(request):  | 
            ||
| 84 | 84 | 
                 | 
            
| 85 | 85 | 
                def download_api(request):  | 
            
| 86 | 86 | 
                """ 下载接口 """  | 
            
| 87 | 
                +    src = int(request.GET.get('src', 0))
               | 
            |
| 88 | 
                +  | 
            |
| 87 | 89 | 
                if request.weixin:  | 
            
| 88 | 
                - return redirect(settings.DOWNLOAD_WX_URL)  | 
            |
| 90 | 
                + if src == LatestAppInfo.PAIAI_USER:  | 
            |
| 91 | 
                + wx_url = settings.PAI2_USER_DOWNLOAD_WX_URL  | 
            |
| 92 | 
                + elif src == LatestAppInfo.PAIAI_LENSMAN:  | 
            |
| 93 | 
                + wx_url = settings.PAI2_LENSMAN_DOWNLOAD_WX_URL  | 
            |
| 94 | 
                + elif src == LatestAppInfo.PAIAI_TOURGUIDE:  | 
            |
| 95 | 
                + wx_url = settings.PAI2_TOURGUIDE_DOWNLOAD_WX_URL  | 
            |
| 96 | 
                + return redirect(wx_url)  | 
            |
| 89 | 97 | 
                if request.iOS:  | 
            
| 90 | 
                - return redirect(settings.DOWNLOAD_IOS_URL)  | 
            |
| 91 | 
                -    return redirect(get_latest_app().get('latest_adr_url', ''))
               | 
            |
| 98 | 
                + if src == LatestAppInfo.PAIAI_USER:  | 
            |
| 99 | 
                + ios_url = settings.PAI2_USER_DOWNLOAD_IOS_URL  | 
            |
| 100 | 
                + elif src == LatestAppInfo.PAIAI_LENSMAN:  | 
            |
| 101 | 
                + ios_url = settings.PAI2_LENSMAN_DOWNLOAD_IOS_URL  | 
            |
| 102 | 
                + elif src == LatestAppInfo.PAIAI_TOURGUIDE:  | 
            |
| 103 | 
                + ios_url = settings.PAI2_TOURGUIDE_DOWNLOAD_IOS_URL  | 
            |
| 104 | 
                + return redirect(ios_url)  | 
            |
| 105 | 
                +    return redirect(get_latest_app(src).get('latest_adr_url', ''))
               | 
            
                @@ -156,7 +156,7 @@  | 
            ||
| 156 | 156 | 
                </div>  | 
            
| 157 | 157 | 
                <div class="description text-muted">即拍即分享</div>  | 
            
| 158 | 158 | 
                <div class="download">  | 
            
| 159 | 
                - <a href="https://api.pai.ai/op/download">  | 
            |
| 159 | 
                +                    <a href="https://api.pai.ai/op/download?scr={{ src }}">
               | 
            |
| 160 | 160 | 
                                         <button class="hero-button">下载<strong>v{{ version }}</strong></button>
               | 
            
| 161 | 161 | 
                </a>  | 
            
| 162 | 162 | 
                </div>  | 
            
                @@ -266,7 +266,7 @@ CURTAIL_UUID_LENGTH = 7  | 
            ||
| 266 | 266 | 
                 WATERMARK_LOGO = os.path.join(PROJ_DIR, 'static/pai2/img/paiai_96_96.png').replace('\\', '/')
               | 
            
| 267 | 267 | 
                 | 
            
| 268 | 268 | 
                # 原图设置  | 
            
| 269 | 
                -ORIGIN_EXPIRED_MSEL = 604800000 # 7d = 7 * 24 * 3600 * 1000msel  | 
            |
| 269 | 
                +LENSMAN_PHOTO_ORIGIN_EXPIRED_MSEL = 604800000 # 摄影师原图过期毫秒数,7d = 7 * 24 * 3600 * 1000msel  | 
            |
| 270 | 270 | 
                 | 
            
| 271 | 271 | 
                # 缩略图设置  | 
            
| 272 | 272 | 
                THUMBNAIL_MAX_WIDTH = 540  | 
            
                @@ -275,16 +275,29 @@ THUMBNAIL_MAX_WIDTH2 = 1080  | 
            ||
| 275 | 275 | 
                # 首页设置  | 
            
| 276 | 276 | 
                PAI2_HOME_PER_PAGE = 20 # 首页照片每页数量  | 
            
| 277 | 277 | 
                PAI2_HOME_MAX_PAGE = 20 # 首页照片最大页数  | 
            
| 278 | 
                -PAI2_HOME_MAX_ROWS = 400 # 首页照片最大数量, PAI2_HOME_PER_PAGE * PAI2_HOME_MAX_PAGE = 20 * 20 = 400  | 
            |
| 278 | 
                +PAI2_HOME_MAX_ROWS = 400 # 首页照片最大数量,PAI2_HOME_PER_PAGE * PAI2_HOME_MAX_PAGE = 20 * 20 = 400  | 
            |
| 279 | 279 | 
                 | 
            
| 280 | 280 | 
                # 下载页设置  | 
            
| 281 | 
                -DOWNLOAD_TMPL_PATH = os.path.join(BASE_DIR, 'page/templates/page/download.tmpl.html').replace('\\', '/')
               | 
            |
| 282 | 
                -DOWNLOAD_ADR_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/adr_download.html').replace('\\', '/')
               | 
            |
| 283 | 
                -DOWNLOAD_IOS_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/ios_download.html').replace('\\', '/')
               | 
            |
| 281 | 
                +TMPL_DOWNLOAD_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/download.tmpl.html').replace('\\', '/')
               | 
            |
| 282 | 
                +  | 
            |
| 283 | 
                +PAI2_USER_DOWNLOAD_ADR_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/pai2_user_adr_download.html').replace('\\', '/')
               | 
            |
| 284 | 
                +PAI2_USER_DOWNLOAD_IOS_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/pai2_user_ios_download.html').replace('\\', '/')
               | 
            |
| 285 | 
                +  | 
            |
| 286 | 
                +PAI2_LENSMAN_DOWNLOAD_ADR_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/pai2_lensman_adr_download.html').replace('\\', '/')
               | 
            |
| 287 | 
                +PAI2_LENSMAN_DOWNLOAD_IOS_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/pai2_lensman_ios_download.html').replace('\\', '/')
               | 
            |
| 288 | 
                +  | 
            |
| 289 | 
                +PAI2_TOURGUIDE_DOWNLOAD_ADR_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/pai2_tourguide_adr_download.html').replace('\\', '/')
               | 
            |
| 290 | 
                +PAI2_TOURGUIDE_DOWNLOAD_IOS_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/pai2_tourguide_ios_download.html').replace('\\', '/')
               | 
            |
| 284 | 291 | 
                 | 
            
| 285 | 292 | 
                # 下载设置  | 
            
| 286 | 
                -DOWNLOAD_WX_URL = 'https://pai.ai'  | 
            |
| 287 | 
                -DOWNLOAD_IOS_URL = 'https://pai.ai'  | 
            |
| 293 | 
                +PAI2_USER_DOWNLOAD_WX_URL = 'https://pai.ai'  | 
            |
| 294 | 
                +PAI2_USER_DOWNLOAD_IOS_URL = 'https://pai.ai'  | 
            |
| 295 | 
                +  | 
            |
| 296 | 
                +PAI2_LENSMAN_DOWNLOAD_WX_URL = 'https://pai.ai'  | 
            |
| 297 | 
                +PAI2_LENSMAN_DOWNLOAD_IOS_URL = 'https://pai.ai'  | 
            |
| 298 | 
                +  | 
            |
| 299 | 
                +PAI2_TOURGUIDE_DOWNLOAD_WX_URL = 'https://pai.ai'  | 
            |
| 300 | 
                +PAI2_TOURGUIDE_DOWNLOAD_IOS_URL = 'https://pai.ai'  | 
            |
| 288 | 301 | 
                 | 
            
| 289 | 302 | 
                # 群组设置  | 
            
| 290 | 303 | 
                GROUP_PER_PAGE = 20 # 群组每页数量  | 
            
                @@ -57,15 +57,19 @@ urlpatterns += [  | 
            ||
| 57 | 57 | 
                ]  | 
            
| 58 | 58 | 
                 | 
            
| 59 | 59 | 
                urlpatterns += [  | 
            
| 60 | 
                + url(r'^g/(?P<group_id>\w+)$', grouppage_views.group_detail, name='group_detail'), # 群组详情(拍爱用户端下载页)  | 
            |
| 61 | 
                +]  | 
            |
| 62 | 
                +  | 
            |
| 63 | 
                +urlpatterns += [  | 
            |
| 60 | 64 | 
                url(r'^gp/(?P<photo_id>\w+)$', grouppage_views.group_photo_detail, name='group_photo_detail'), # 群组照片详情  | 
            
| 61 | 65 | 
                ]  | 
            
| 62 | 66 | 
                 | 
            
| 63 | 67 | 
                urlpatterns += [  | 
            
| 64 | 
                - url(r'^g/(?P<group_id>\w+)$', grouppage_views.group_detail, name='group_detail'), # 群组详情(APP下载页)  | 
            |
| 68 | 
                + url(r'^tg/(?P<admin_id>\w+)$', grouppage_views.tgu_group_detail, name='tgu_group_detail'), # 旅行团详情(拍爱导游端下载页)  | 
            |
| 65 | 69 | 
                ]  | 
            
| 66 | 70 | 
                 | 
            
| 67 | 71 | 
                urlpatterns += [  | 
            
| 68 | 
                - url(r'^tgu/(?P<admin_id>\w+)$', grouppage_views.tgu_group_user_detail, name='tgu_group_user_detail'), # 旅行团详情(APP下载页)  | 
            |
| 72 | 
                + url(r'^tgu/(?P<admin_id>\w+)$', grouppage_views.tgu_group_user_detail, name='tgu_group_user_detail'), # 旅行团成员详情(拍爱用户端下载页)  | 
            |
| 69 | 73 | 
                ]  | 
            
| 70 | 74 | 
                 | 
            
| 71 | 75 | 
                urlpatterns += [  | 
            
                @@ -5,6 +5,6 @@ from django.conf import settings  | 
            ||
| 5 | 5 | 
                 | 
            
| 6 | 6 | 
                def origin_expired_stamps(origin_stamps, user_id):  | 
            
| 7 | 7 | 
                try:  | 
            
| 8 | 
                - return int(origin_stamps) + settings.ORIGIN_EXPIRED_MSEL  | 
            |
| 8 | 
                + return int(origin_stamps) + settings.LENSMAN_PHOTO_ORIGIN_EXPIRED_MSEL  | 
            |
| 9 | 9 | 
                except:  | 
            
| 10 | 10 | 
                return 0  |