e> 29
+import com.umeng.analytics.MobclickAgent;
29 30
 import com.umeng.socialize.ShareAction;
30 31
 import com.umeng.socialize.UMShareAPI;
31 32
 import com.umeng.socialize.UMShareListener;
@@ -50,6 +51,7 @@ import ai.pai.client.utils.GroupCreateUtils;
50 51
 import ai.pai.client.utils.HttpPostTask;
51 52
 import ai.pai.client.utils.PhotoLoader;
52 53
 import ai.pai.client.utils.SystemUtils;
54
+import ai.pai.client.utils.UmengEvent;
53 55
 import ai.pai.client.utils.UrlContainer;
54 56
 import ai.pai.client.views.CountView;
55 57
 import ai.pai.client.views.InputPopup;
@@ -317,10 +319,12 @@ public class PhotoDetailsActivity extends BaseActivity implements View.OnClickLi
317 319
                 finish();
318 320
                 break;
319 321
             case R.id.floating_btn_comment:
322
+                MobclickAgent.onEvent(this, UmengEvent.detail_comment_btn_click);
320 323
                 inputPopup = new InputPopup(this,this);
321 324
                 inputPopup.showPopupWindow();
322 325
                 break;
323 326
             case R.id.btn_comment_send:
327
+                MobclickAgent.onEvent(this, UmengEvent.detail_comment_send_btn_click);
324 328
                 if(inputPopup!=null){
325 329
                     InputMethodUtils.hideInputMethod(inputPopup.getInputView());
326 330
                     inputPopup.dismiss();
@@ -329,12 +333,15 @@ public class PhotoDetailsActivity extends BaseActivity implements View.OnClickLi
329 333
                 break;
330 334
             case R.id.iv_share_paid_photo:
331 335
             case R.id.floating_btn_share:
336
+                MobclickAgent.onEvent(this, UmengEvent.detail_share_btn_click);
332 337
                 sharePhoto();
333 338
                 break;
334 339
             case R.id.floating_btn_thumbup:
340
+                MobclickAgent.onEvent(this, UmengEvent.detail_thumb_btn_click);
335 341
                 doPhotoThumbUpTask();
336 342
                 break;
337 343
             case R.id.tv_enter_group:
344
+                MobclickAgent.onEvent(this, UmengEvent.detail_enter_group_btn_click);
338 345
                 if(fromGroupPage){
339 346
                     finish();
340 347
                 }else{
@@ -380,12 +387,14 @@ public class PhotoDetailsActivity extends BaseActivity implements View.OnClickLi
380 387
                 clickGetPhoto(PAY_TYPE_ORIGIN);
381 388
                 break;
382 389
             case R.id.tv_buy_hd_photo:
390
+                MobclickAgent.onEvent(this, UmengEvent.detail_buy_origin_btn_click);
383 391
                 clickPay(buyHDPhotoTextView.getNumber(),PAY_TYPE_ORIGIN);
384 392
                 break;
385 393
             case R.id.layout_wipe_water_print:
386 394
                 clickGetPhoto(PAY_TYPE_NO_MARK);
387 395
                 break;
388 396
             case R.id.tv_buy_wipe_water_print:
397
+                MobclickAgent.onEvent(this, UmengEvent.detail_waterprint_btn_click);
389 398
                 clickPay(buyWipeWaterPrintTextView.getNumber(),PAY_TYPE_NO_MARK);
390 399
                 break;
391 400
             default:

+ 3 - 0
app/src/main/java/ai/pai/client/activity/PhotoFullScreenActivity.java

@@ -13,6 +13,7 @@ import android.widget.Toast;
13 13
 import com.android.common.executors.ThreadExecutor;
14 14
 import com.android.common.utils.LogHelper;
15 15
 import com.android.views.progressbar.ProgressWheel;
16
+import com.umeng.analytics.MobclickAgent;
16 17
 
17 18
 import java.io.File;
18 19
 import java.io.FileOutputStream;
@@ -25,6 +26,7 @@ import ai.pai.client.BuildConfig;
25 26
 import ai.pai.client.R;
26 27
 import ai.pai.client.adapter.FullScreenPhotoPageAdapter;
27 28
 import ai.pai.client.beans.GroupPhotoItem;
29
+import ai.pai.client.utils.UmengEvent;
28 30
 import ai.pai.client.views.HackyViewPager;
29 31
 
30 32
 public class PhotoFullScreenActivity extends BaseActivity implements View.OnClickListener, ViewPager.OnPageChangeListener {
@@ -59,6 +61,7 @@ public class PhotoFullScreenActivity extends BaseActivity implements View.OnClic
59 61
                 finish();
60 62
                 break;
61 63
             case R.id.btn_download_full_screen:
64
+                MobclickAgent.onEvent(this, UmengEvent.fullscreen_download_btn_click);
62 65
                 if(currentPhotoItem.photoFrom==1 && TextUtils.isEmpty(currentPhotoItem.mediumPhotoUrl) && TextUtils.isEmpty(currentPhotoItem.rawPhotoUrl)){
63 66
                     Toast.makeText(this,R.string.photo_need_buy,Toast.LENGTH_SHORT).show();
64 67
                     return;

+ 4 - 0
app/src/main/java/ai/pai/client/adapter/RecentPhotoStaggeredAdapter.java

@@ -13,6 +13,7 @@ import com.android.common.utils.DeviceUtils;
13 13
 import com.android.common.utils.TimeUtils;
14 14
 import com.android.views.circleimageview.CircleImageView;
15 15
 import com.nostra13.universalimageloader.core.DisplayImageOptions;
16
+import com.umeng.analytics.MobclickAgent;
16 17
 
17 18
 import java.util.ArrayList;
18 19
 
@@ -23,6 +24,7 @@ import ai.pai.client.beans.GroupInfo;
23 24
 import ai.pai.client.beans.GroupPhotoItem;
24 25
 import ai.pai.client.utils.GroupCreateUtils;
25 26
 import ai.pai.client.utils.PhotoLoader;
27
+import ai.pai.client.utils.UmengEvent;
26 28
 
27 29
 public class RecentPhotoStaggeredAdapter extends RecyclerView.Adapter<RecentPhotoStaggeredAdapter.MyViewHolder> {
28 30
 
@@ -88,6 +90,7 @@ public class RecentPhotoStaggeredAdapter extends RecyclerView.Adapter<RecentPhot
88 90
                 intent.putExtra("list",photoList);
89 91
                 intent.putExtra("photo_item",item);
90 92
                 context.startActivity(intent);
93
+                MobclickAgent.onEvent(context, UmengEvent.home_item_photo_click);
91 94
             }
92 95
         });
93 96
         holder.headLayout.setOnClickListener(new View.OnClickListener(){
@@ -100,6 +103,7 @@ public class RecentPhotoStaggeredAdapter extends RecyclerView.Adapter<RecentPhot
100 103
                 info.groupAvatarId = item.groupDefaultAvatar;
101 104
                 intent.putExtra("group",info);
102 105
                 context.startActivity(intent);
106
+                MobclickAgent.onEvent(context, UmengEvent.home_item_group_header_click);
103 107
             }
104 108
         });
105 109
         PhotoLoader.getInstance(context).displayImage(item.thumbnailUrl,holder.photo,options);

+ 34 - 0
app/src/main/java/ai/pai/client/utils/UmengEvent.java

@@ -0,0 +1,34 @@
1
+package ai.pai.client.utils;
2
+
3
+/**
4
+ * Created by chengzhenyu on 2017/3/5.
5
+ */
6
+
7
+public class UmengEvent {
8
+
9
+    public static final String home_scan_btn_click = "home_scan_btn_click";
10
+    public static final String group_camera_btn_click = "group_camera_btn_click";
11
+    public static final String group_setting_btn_click = "group_setting_btn_click";
12
+    public static final String groupconfig_qrcode_layout_click = "groupconfig_qrcode_layout_click";
13
+    public static final String slide_my_group_click = "slide_my_group_click";
14
+    public static final String slide_order_history_click = "slide_order_history_click";
15
+    public static final String slide_feedback_click = "slide_feedback_click";
16
+    public static final String slide_about_click = "slide_about_click";
17
+    public static final String home_item_group_header_click = "home_item_group_header_click";
18
+    public static final String home_new_group_btn_click = "home_new_group_btn_click";
19
+    public static final String detail_comment_btn_click = "detail_comment_btn_click";
20
+    public static final String detail_thumb_btn_click = "detail_thumb_btn_click";
21
+    public static final String detail_share_btn_click = "detail_share_btn_click";
22
+    public static final String detail_enter_group_btn_click = "detail_enter_group_btn_click";
23
+    public static final String detail_waterprint_btn_click = "detail_waterprint_btn_click";
24
+    public static final String detail_buy_origin_btn_click = "detail_buy_origin_btn_click";
25
+    public static final String fullscreen_download_btn_click = "fullscreen_download_btn_click";
26
+    public static final String home_call_guide_btn_click = "home_call_guide_btn_click";
27
+    public static final String home_gather_info_btn_click = "home_gather_info_btn_click";
28
+    public static final String home_item_photo_click = "home_item_photo_click";
29
+    public static final String detail_comment_send_btn_click = "detail_comment_send_btn_click";
30
+    public static final String home_scan_tour_back = "home_scan_tour_back";
31
+    public static final String home_scan_group_back = "home_scan_group_back";
32
+    public static final String home_scan_session_back = "home_scan_session_back";
33
+
34
+}

pai2 - Gogs: Go Git Service

拍爱

rgroup.py 3.3KB

    # -*- coding: utf-8 -*- import json from django.conf import settings from django.core.serializers.json import DjangoJSONEncoder from utils.redis.rkeys import GROUP_INFO, GROUP_PHOTO_DATA, GROUP_PHOTO_THUMB_UP, GROUP_USERS_INFO r = settings.REDIS_CACHE # 群组信息相关 def set_group_info(group): """ 设置群组信息 """ group_data = group.data r.setex(GROUP_INFO % group.group_id, settings.REDIS_EXPIRED_MONTH, json.dumps(group_data, cls=DjangoJSONEncoder)) return group_data def set_group_info_by_id(group_id): """ 设置群组信息 """ from group.models import GroupInfo try: group = GroupInfo.objects.get(group_id=group_id) except GroupInfo.DoesNotExist: return {} return set_group_info(group) def get_group_info(group_id): """ 获取群组信息 """ return json.loads(r.get(GROUP_INFO % group_id) or '{}') or set_group_info_by_id(group_id) # 群组用户信息相关 def set_group_users_info(group): """ 设置群组用户信息 """ group_users = group.users(admin=False) r.setex(GROUP_USERS_INFO % group.group_id, settings.REDIS_EXPIRED_MONTH, json.dumps({ 'group_users': group_users, 'admin_id': group.admin_id, }, cls=DjangoJSONEncoder)) return group_users def set_group_users_info_by_id(group_id): """ 设置群组用户信息 """ from group.models import GroupInfo try: group = GroupInfo.objects.get(group_id=group_id) except GroupInfo.DoesNotExist: return {} return set_group_users_info(group) def get_group_users_info(group_id, user_id): """ 获取群组用户信息 """ group_users_data = json.loads(r.get(GROUP_USERS_INFO % group_id) or '{}') or set_group_users_info_by_id(group_id) group_users, admin_id = group_users_data.get('group_users', {}), group_users_data.get('admin_id', '') if group_users and user_id != admin_id: [group_users.pop(k) for k in ['applying_count', 'applying']] return group_users # 群组照片相关 def set_group_photo_data(group_id): """ 设置群组照片数据信息 """ from group.models import GroupPhotoInfo group_photos = GroupPhotoInfo.objects.filter(group_id=group_id, status=True) group_photos = [photo.photo_data for photo in group_photos] r.set(GROUP_PHOTO_DATA % group_id, json.dumps(group_photos)) return group_photos def get_group_photo_data(group_id): """ 获取群组照片数据信息 """ return json.loads(r.get(GROUP_PHOTO_DATA % group_id) or '[]') or set_group_photo_data(group_id) def set_group_photo_thumbup_flag(photo_id, user_id): """ 设置群组照片用户点赞标识信息 """ r.setex(GROUP_PHOTO_THUMB_UP % (photo_id, user_id), settings.REDIS_EXPIRED_MONTH, True) def del_group_photo_thumbup_flag(photo_id, user_id): """ 删除群组照片用户点赞标识信息 """ r.delete(GROUP_PHOTO_THUMB_UP % (photo_id, user_id)) def get_group_photo_thumbup_flag(photo_id, user_id): """ 获取群组照片用户点赞标识信息 """ if r.exists(GROUP_PHOTO_THUMB_UP % (photo_id, user_id)): return True else: from group.models import PhotoThumbUpInfo if PhotoThumbUpInfo.objects.filter(photo_id=photo_id, user_id=user_id, thumbup=True).exists(): set_group_photo_thumbup_flag(photo_id, user_id) return True else: return False