116
+            }
117
+
118
+            @Override
119
+            protected void onPostSuccess() {
120
+                super.onPostSuccess();
121
+                wxLogin(params);
122
+            }
123
+
124
+            @Override
125
+            protected void onPostFail() {
126
+                super.onPostFail();
127
+            }
128
+        };
129
+        fetchUserInfoTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), userInfoUrl);
130
+    }
131
+
132
+    private void login() {
133
+        HashMap<String, String> params = new HashMap<>();
134
+        params.put("username", "chengzhenyu");
135
+        params.put("password", "paiai");
136
+
137
+        loginTask = new HttpPostTask(params) {
35 138
 
36 139
             String lensmanId;
37 140
             String message;
141
+
38 142
             @Override
39 143
             protected boolean parseResponse(String response) {
40
-                try{
144
+                try {
41 145
                     JSONObject json = new JSONObject(response);
42 146
                     int status = json.getInt("status");
43
-                    if(status == 200){
147
+                    if (status == 200) {
44 148
                         JSONObject info = json.getJSONObject("data");
45 149
                         lensmanId = info.getString("user_id");
46 150
                         return true;
47
-                    }else{
151
+                    } else {
48 152
                         message = json.getString("message");
49 153
                     }
50
-                }catch (Exception e){
154
+                } catch (Exception e) {
51 155
                     e.printStackTrace();
52 156
                 }
53 157
                 return false;
@@ -68,15 +172,44 @@ public class LoginInteractor implements BaseInteractor{
68 172
         loginTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.LOGIN_URL);
69 173
     }
70 174
 
71
-    @Override
72
-    public void cancelJob() {
73
-        if(loginTask == null){
74
-            return;
75
-        }
76
-        if(loginTask.getStatus()== AsyncTask.Status.RUNNING){
77
-            loginTask.cancel(true);
78
-        }
79
-        loginTask = null;
175
+    private void wxLogin(HashMap<String, String> params) {
176
+
177
+        loginTask = new HttpPostTask(params) {
178
+
179
+            String lensmanId;
180
+            String message;
181
+
182
+            @Override
183
+            protected boolean parseResponse(String response) {
184
+                try {
185
+                    JSONObject json = new JSONObject(response);
186
+                    int status = json.getInt("status");
187
+                    if (status == 200) {
188
+                        JSONObject info = json.getJSONObject("data");
189
+                        lensmanId = info.getString("user_id");
190
+                        return true;
191
+                    } else {
192
+                        message = json.getString("message");
193
+                    }
194
+                } catch (Exception e) {
195
+                    e.printStackTrace();
196
+                }
197
+                return false;
198
+            }
199
+
200
+            @Override
201
+            protected void onPostFail() {
202
+                super.onPostFail();
203
+                listener.onInteractFail(message);
204
+            }
205
+
206
+            @Override
207
+            protected void onPostSuccess() {
208
+                super.onPostSuccess();
209
+                listener.onInteractSuccess(lensmanId);
210
+            }
211
+        };
212
+        loginTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.WX_LOGIN_URL);
80 213
     }
81 214
 
82 215
 }

+ 11 - 7
app/src/main/java/ai/pai/lensman/login/LoginPresenter.java

@@ -1,6 +1,7 @@
1 1
 package ai.pai.lensman.login;
2 2
 
3 3
 import android.content.Context;
4
+import android.text.TextUtils;
4 5
 
5 6
 import com.tencent.mm.sdk.modelmsg.SendAuth;
6 7
 import com.tencent.mm.sdk.openapi.IWXAPI;
@@ -26,13 +27,6 @@ public class LoginPresenter implements LoginContract.Presenter,BaseInteractor.In
26 27
 
27 28
     @Override
28 29
     public void login() {
29
-        view.showProgressView();
30
-        interactor = new LoginInteractor(this);
31
-        interactor.startJob();
32
-    }
33
-
34
-    @Override
35
-    public void start() {
36 30
         IWXAPI api = WXAPIFactory.createWXAPI(context, APP_ID, true);
37 31
         api.registerApp(APP_ID);
38 32
         SendAuth.Req req = new SendAuth.Req();
@@ -42,6 +36,16 @@ public class LoginPresenter implements LoginContract.Presenter,BaseInteractor.In
42 36
     }
43 37
 
44 38
     @Override
39
+    public void start() {
40
+        String wxCode = Preferences.getInstance(context).getWXCode();
41
+        if(!TextUtils.isEmpty(wxCode)){
42
+            view.showProgressView();
43
+            interactor = new LoginInteractor(wxCode,this);
44
+            interactor.startJob();
45
+        }
46
+    }
47
+
48
+    @Override
45 49
     public void stop() {
46 50
         if(interactor!=null){
47 51
             interactor.cancelJob();

+ 21 - 1
app/src/main/java/ai/pai/lensman/utils/UrlContainer.java

@@ -13,7 +13,27 @@ public class UrlContainer {
13 13
 
14 14
     public static final String SESSION_IDS_CREATE = HOST_URL+"uuid";
15 15
 
16
-    public static final String PHOTO_UPLOAD_URL = HOST_URL+"photos/upload";
16
+    /**
17
+     * user_id  # 用户唯一标识
18
+     * nickname  # 用户昵称
19
+     * session_id  # SESSION唯一标识
20
+     * photo_id  # 照片唯一标识
21
+     * photo  # @File 需要上传的照片
22
+     * current_id  # 当前以获取照片最大id,不传默认为-1
23
+     */
24
+    public static final String PHOTO_UPLOAD_URL = HOST_URL+"l/upload";
25
+
26
+    /**
27
+     * unionid  # 摄影师微信授权 Unionid
28
+     * openid  # 摄影师微信授权 Openid
29
+     * sex  # 性别
30
+     * nickname or screen_name  # 昵称,Android 和 iOS 貌似不同
31
+     * headimgurl or profile_image_url  # 头像,Android 和 iOS 貌似不同
32
+     * country  # 国家
33
+     * province  # 省份
34
+     * city  # 城市
35
+     */
36
+    public static final String WX_LOGIN_URL = HOST_URL+"l/wx/authorize";
17 37
 
18 38
 
19 39
 

+ 3 - 0
app/src/main/java/ai/pai/lensman/wxapi/WXEntryActivity.java

@@ -11,6 +11,8 @@ import com.tencent.mm.sdk.openapi.IWXAPI;
11 11
 import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
12 12
 import com.tencent.mm.sdk.openapi.WXAPIFactory;
13 13
 
14
+import ai.pai.lensman.db.Preferences;
15
+
14 16
 public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
15 17
 
16 18
     private IWXAPI api;
@@ -42,6 +44,7 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
42 44
         if(resp instanceof SendAuth.Resp){
43 45
             SendAuth.Resp newResp = (SendAuth.Resp) resp;
44 46
             String code = newResp.code;
47
+            Preferences.getInstance(this).setWXCode(code);
45 48
         }
46 49
     }
47 50
 

kodosale - Gogs: Go Git Service

暂无描述

models.py 2.8KB

    # -*- coding: utf-8 -*- from django.db import models from django.utils.translation import ugettext_lazy as _ from django_models_ext import BaseModelMixin, upload_file_path, upload_file_url, upload_path from shortuuidfield import ShortUUIDField class KOLInfo(BaseModelMixin): kol_id = ShortUUIDField(_('kol_id'), max_length=32, blank=True, null=True, help_text='KOL 唯一标识', db_index=True, unique=True) # 微信相关 unionid = models.CharField(_('unionid'), max_length=32, blank=True, null=True, help_text='微信 Unionid', db_index=True, unique=True) openid = models.CharField(_('openid'), max_length=32, blank=True, null=True, help_text='微信 Openid', db_index=True, unique=True) # 真实相关 name = models.CharField(_('name'), max_length=32, blank=True, null=True, help_text='KOL 姓名') phone = models.CharField(_('phone'), max_length=11, blank=True, null=True, help_text='KOL 电话', db_index=True) # 昵称相关 nickname = models.CharField(_('nickname'), max_length=32, blank=True, null=True, help_text='KOL 昵称') avatar = models.ImageField(_('avatar'), upload_to=upload_path, blank=True, null=True, help_text='KOL 头像') banner = models.ImageField(_('banner'), upload_to=upload_path, blank=True, null=True, help_text='KOL Banner图') intro = models.TextField(_('intro'), blank=True, null=True, help_text='KOL 简介') image = models.ImageField(_('image'), upload_to=upload_path, blank=True, null=True, help_text='KOL 简介图') fans = models.IntegerField(_('fans'), default=0, help_text='KOL 粉丝数') # 余额相关 fee = models.IntegerField(_('fee'), default=0, help_text='KOL 余额(分)') total_fee = models.IntegerField(_('total_fee'), default=0, help_text='KOL 总收入(分)') class Meta: verbose_name = _('KOL 信息') verbose_name_plural = _('KOL 信息') def __unicode__(self): return self.pk @property def final_nickname(self): return self.nickname or self.name @property def avatar_path(self): return upload_file_path(self.avatar) @property def avatar_url(self): return upload_file_url(self.avatar) @property def banner_path(self): return upload_file_path(self.banner) @property def banner_url(self): return upload_file_url(self.banner) @property def image_path(self): return upload_file_path(self.image) @property def image_url(self): return upload_file_url(self.image) @property def data(self): return { 'kol_id': self.kol_id, 'nickname': self.final_nickname, 'avatar_url': self.avatar_url, 'banner_url': self.banner_url, 'intro': self.intro, 'image_url': self.image_url, 'fans': self.fans, }