Sfoglia il codice sorgente
订单处理流程
chengzhenyu 10 anni fa
parent
commit
fc2a05ec29
4 ha cambiato i file con 251 aggiunte e 15 eliminazioni
  1. 1 0
      app/src/main/java/ai/pai/lensman/activities/FeedbackActivity.java
  2. 225 14
      app/src/main/java/ai/pai/lensman/service/OrderDealService.java
  3. 11 0
      app/src/main/java/ai/pai/lensman/utils/BoxUrlContainer.java
  4. 14 1
      app/src/main/java/ai/pai/lensman/utils/UrlContainer.java

+ 1 - 0
app/src/main/java/ai/pai/lensman/activities/FeedbackActivity.java

@@ -90,6 +90,7 @@ public class FeedbackActivity extends BaseActivity implements View.OnClickListen
90 90
         }
91 91
         params.put("user_id",userId);
92 92
         params.put("feedback",feedback);
93
+        params.put("src",String.valueOf(1));
93 94
         new HttpPostTask(params).executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.FEEDBACK_URL);
94 95
         Toast.makeText(this,R.string.thank_feedback,Toast.LENGTH_SHORT).show();
95 96
         finish();

+ 225 - 14
app/src/main/java/ai/pai/lensman/service/OrderDealService.java

@@ -2,19 +2,38 @@ package ai.pai.lensman.service;
2 2
 
3 3
 import android.app.Service;
4 4
 import android.content.Intent;
5
+import android.os.AsyncTask;
5 6
 import android.os.Binder;
6 7
 import android.os.IBinder;
7 8
 
8 9
 import com.android.common.executors.ThreadExecutor;
10
+import com.android.common.utils.LogHelper;
9 11
 
12
+import org.json.JSONArray;
13
+import org.json.JSONObject;
14
+
15
+import java.io.File;
16
+import java.io.FileOutputStream;
17
+import java.io.InputStream;
18
+import java.net.HttpURLConnection;
19
+import java.net.URL;
20
+import java.util.ArrayList;
10 21
 import java.util.HashMap;
11 22
 
12 23
 import ai.pai.lensman.bean.OrderBean;
13
-import ai.pai.lensman.db.DBService;
14 24
 import ai.pai.lensman.db.Preferences;
25
+import ai.pai.lensman.utils.BoxUrlContainer;
26
+import ai.pai.lensman.utils.Constants;
15 27
 import ai.pai.lensman.utils.HttpPostTask;
28
+import ai.pai.lensman.utils.UrlContainer;
29
+
30
+public class OrderDealService extends Service {
31
+
32
+    private ArrayList<OrderBean> orderList;
33
+
34
+    private ArrayList<OrderBean> failedOrderList;
16 35
 
17
-public class OrderDealService extends Service{
36
+    private static final String TAG = "czy";
18 37
 
19 38
     @Override
20 39
     public IBinder onBind(Intent intent) {
@@ -23,46 +42,238 @@ public class OrderDealService extends Service{
23 42
 
24 43
     @Override
25 44
     public int onStartCommand(Intent intent, int flags, int startId) {
45
+        if(!isQueueEmpty()){
46
+            return START_STICKY;
47
+        }
26 48
         startQuery();
27 49
         return START_STICKY;
28 50
     }
29 51
 
30
-    private void startQuery(){
31
-        HashMap<String,String> params = new HashMap<>();
52
+    private void startQuery() {
53
+        HashMap<String, String> params = new HashMap<>();
32 54
         params.put("user_id", Preferences.getInstance().getLensManId());
33
-        new HttpPostTask(params){
34
-            OrderBean orderBean;
55
+        new HttpPostTask(params) {
56
+
35 57
             @Override
36 58
             protected boolean parseResponse(String response) {
37
-                orderBean = new OrderBean();
38
-                //TODO
39
-                return super.parseResponse(response);
59
+                LogHelper.d(TAG, "startQuery order list = " + response);
60
+                try {
61
+                    JSONObject json = new JSONObject(response);
62
+                    int status = json.getInt("status");
63
+                    if (status == 200) {
64
+                        JSONObject data = json.getJSONObject("data");
65
+                        JSONArray orders = data.getJSONArray("files");
66
+                        if (orders != null && orders.length() > 0) {
67
+                            orderList = new ArrayList<OrderBean>();
68
+                            for (int k = 0; k < orders.length(); k++) {
69
+                                JSONObject orderObj = orders.getJSONObject(k);
70
+                                OrderBean bean = new OrderBean();
71
+                                //TODO
72
+                                orderList.add(bean);
73
+                            }
74
+                        }
75
+                        return true;
76
+                    }
77
+                } catch (Exception e) {
78
+                    e.printStackTrace();
79
+                }
80
+                return false;
40 81
             }
41 82
 
42 83
             @Override
43 84
             protected void onPostSuccess() {
44 85
                 super.onPostSuccess();
45
-                onNewOrderArrived(orderBean);
86
+                dealOrder();
46 87
             }
47 88
 
48 89
             @Override
49 90
             protected void onPostFail() {
50 91
                 super.onPostFail();
51 92
             }
52
-        }.executeOnExecutor(ThreadExecutor.getInstance().getExecutor());
93
+        }.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.QUERY_ORIGIN_ORDER_URL);
94
+
95
+    }
96
+
97
+    private void dealOrder() {
98
+        if (!isQueueEmpty()){
99
+            OrderBean orderBean = orderList.get(0);
100
+            fetchOriginFromBox(orderBean);
101
+        }else{
102
+            startQuery();
103
+        }
104
+    }
105
+
106
+    private void fetchOriginFromBox(OrderBean orderBean){
107
+        HashMap<String, String> params = new HashMap<>();
108
+        params.put("lensman", Preferences.getInstance().getLensManId());
109
+        params.put("session",orderBean.photoBean.sessionId);
110
+        params.put("name",orderBean.photoBean.photoName);
111
+        new HttpPostTask(params){
112
+            OrderBean bean = new OrderBean();
113
+            @Override
114
+            protected boolean parseResponse(String response) {
115
+                LogHelper.d(TAG,"fetchOriginFromBox get response string = "+response);
116
+                try{
117
+                    JSONObject json = new JSONObject(response);
118
+                    int status = json.getInt("status");
119
+                    if(status == 200){
120
+                        JSONObject data = json.getJSONObject("data");
121
+                        //TODO
122
+                        }
123
+                        return true;
124
+                }catch (Exception e){
125
+                    e.printStackTrace();
126
+                }
127
+                return false;
128
+            }
129
+
130
+            @Override
131
+            protected void onPostFail() {
132
+                super.onPostFail();
133
+            }
134
+
135
+            @Override
136
+            protected void onPostSuccess() {
137
+                super.onPostSuccess();
138
+                new SavePhotoTask(bean).executeOnExecutor(ThreadExecutor.getInstance().getExecutor(),bean);
139
+            }
140
+        }.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(),BoxUrlContainer.FETCH_ORIGIN_URL);
53 141
 
54 142
     }
55 143
 
56
-    private void onNewOrderArrived(OrderBean bean){
57
-        DBService.getInstance().addOrderBean(bean);
144
+    private void uploadOrigin(OrderBean bean){
145
+        new UploadTask(bean).executeOnExecutor(ThreadExecutor.getInstance().getExecutor());
146
+    }
147
+
148
+    private boolean isQueueEmpty(){
149
+        return (orderList==null || orderList.size()==0);
58 150
     }
59 151
 
60 152
     public class OrderServiceBinder extends Binder {
61 153
 
62
-        public OrderDealService getService(){
154
+        public OrderDealService getService() {
63 155
             return OrderDealService.this;
64 156
         }
65 157
 
66 158
     }
67 159
 
160
+    class SavePhotoTask extends AsyncTask<OrderBean, Integer, Boolean> {
161
+
162
+        private OrderBean orderBean;
163
+        public SavePhotoTask(OrderBean bean){
164
+            this.orderBean = bean;
165
+        }
166
+
167
+        @Override
168
+        protected Boolean doInBackground(OrderBean... params) {
169
+            OrderBean photoBean = params[0];
170
+            String  path = BoxUrlContainer.PHOTO_PATH_PREFIX_URL+orderBean.photoBean.photoPath;
171
+            LogHelper.d(TAG,"保存照片到本地,图片链接地址为"+path);
172
+            FileOutputStream fOut = null;
173
+            HttpURLConnection conn = null;
174
+            InputStream inStream = null;
175
+            try {
176
+                URL url = new URL(path);
177
+                conn = (HttpURLConnection) url.openConnection();
178
+                conn.setConnectTimeout(5 * 1000);
179
+                conn.setRequestMethod("GET");
180
+                inStream = conn.getInputStream();
181
+                if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
182
+                    String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator+orderBean.photoBean.sessionId+File.separator+ Constants.ORIGIN_DIR_NAME;
183
+                    File dir = new File(dirPath);
184
+                    dir.mkdirs();
185
+                    File file = new File(dir, orderBean.photoBean.photoName);
186
+                    fOut = new FileOutputStream(file);
187
+                    byte[] buffer = new byte[2048];
188
+                    int len ;
189
+                    while((len=inStream.read(buffer))!=-1){
190
+                        fOut.write(buffer,0,len);
191
+                        fOut.flush();
192
+                    }
193
+                    fOut.flush();
194
+                    LogHelper.d(TAG,"保存照片到本地,图片保存至"+file.getAbsolutePath()+"图片大小为"+file.length()+"字节\n\n");
195
+                }
196
+                return true;
197
+            } catch (Exception e) {
198
+                e.printStackTrace();
199
+            } finally {
200
+                try{
201
+                    inStream.close();
202
+                    conn.disconnect();
203
+                    fOut.close();
204
+                }catch (Exception e){
205
+                    e.printStackTrace();
206
+                }
207
+            }
208
+            return false;
209
+        }
210
+
211
+        @Override
212
+        protected void onPostExecute(Boolean result) {
213
+            super.onPostExecute(result);
214
+            if (result) {
215
+                uploadOrigin(orderBean);
216
+            }else{
217
+
218
+            }
219
+        }
220
+    }
221
+
222
+    public class UploadTask extends AsyncTask<Void, Integer, Boolean> {
223
+
224
+        private static final String TAG = "czy";
225
+        private OrderBean bean;
226
+
227
+        public UploadTask(OrderBean bean) {
228
+            this.bean = bean;
229
+        }
230
+
231
+        @Override
232
+        protected Boolean doInBackground(Void... params) {
233
+            for(int k = 0 ; k< 5;k++){
234
+                try {
235
+                    String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator + bean.photoBean.sessionId
236
+                            + File.separator + ai.pai.lensman.utils.Constants.THUMBNAIL_DIR_NAME;
237
+                    File dir = new File(dirPath);
238
+                    dir.mkdirs();
239
+                    File photo = new File(dir, bean.photoBean.photoName);
240
+                    LogHelper.d(TAG, "上传照片 第"+k+"次尝试"+ bean);
241
+                    if (photo.exists() && photo.isFile()) {
242
+                        PhotoUploadUtils photoUploadUtils = new PhotoUploadUtils(UrlContainer.ORIGIN_PHOTO_UPLOAD_URL + "?timestamp=" + System.currentTimeMillis());
243
+                        photoUploadUtils.addFileParameter("photo", photo);
244
+                        photoUploadUtils.addTextParameter("user_id", bean.photoBean.lensmanId);
245
+                        photoUploadUtils.addTextParameter("session_id", bean.photoBean.sessionId);
246
+                        photoUploadUtils.addTextParameter("photo_id", String.valueOf(bean.photoBean.photoId));
247
+                        photoUploadUtils.addTextParameter("nickname",Preferences.getInstance().getUserName());
248
+
249
+                        String result = new String(photoUploadUtils.send(), "UTF-8");
250
+                        JSONObject resultObj = new JSONObject(result);
251
+                        if (resultObj.getInt("status") == 200) {
252
+                            LogHelper.d(TAG, "上传 UploadTask upload result ok ");
253
+                            return true;
254
+                        }
255
+                    } else {
256
+                        return false;
257
+                    }
258
+
259
+                } catch (Exception e) {
260
+                    LogHelper.d(TAG, "上传发生异常 UploadTask :" + bean + " error:" + e);
261
+                }
262
+            }
263
+            return false;
264
+        }
265
+
266
+        @Override
267
+        protected void onPostExecute(Boolean result) {
268
+            if (result) {
269
+                LogHelper.d(TAG, "上传 UploadTask " + bean + "  success ");
270
+                orderList.remove(bean);
271
+                dealOrder();
272
+            } else {
273
+                LogHelper.d(TAG, "上传 UploadTask " + bean + "  fail ");
274
+            }
275
+        }
276
+
277
+    }
278
+
68 279
 }

+ 11 - 0
app/src/main/java/ai/pai/lensman/utils/BoxUrlContainer.java

@@ -16,6 +16,15 @@ public class BoxUrlContainer {
16 16
 
17 17
     public static String PHOTO_PATH_PREFIX_URL = BASE_URL + "static/";
18 18
 
19
+    /**
20
+     * lensman  # 摄影师唯一标识
21
+     * session  # Session
22
+     * name  # fetch_thumbnail 返回
23
+     */
24
+    public static String FETCH_ORIGIN_URL = BASE_URL +"fetch_origin";
25
+
26
+
27
+
19 28
     public static void resetIPHost(String ip) {
20 29
         BOX_IP = ip;
21 30
 
@@ -30,6 +39,8 @@ public class BoxUrlContainer {
30 39
         FETCH_THUMBNAIL_URL = BASE_URL + "fetch_thumbnail";
31 40
 
32 41
         PHOTO_PATH_PREFIX_URL = BASE_URL + "static/";
42
+
43
+        FETCH_ORIGIN_URL = BASE_URL +"fetch_origin";
33 44
     }
34 45
 
35 46
 

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

@@ -37,7 +37,20 @@ public class UrlContainer {
37 37
 
38 38
     public static final String BRIEFS_URL = HOST_URL+"l/brief";
39 39
 
40
-    public static final String QUERY_ORDER_URL = HOST_URL+"l/query";
40
+    /**
41
+     * user_id  # 用户唯一标识
42
+     */
43
+    public static final String QUERY_ORIGIN_ORDER_URL = HOST_URL+"l/origin_wanted";
44
+
45
+    /**
46
+     * user_id  # 用户唯一标识
47
+     nickname  # 用户昵称
48
+     session_id  # SESSION唯一标识
49
+     photo_id  # 照片唯一标识
50
+     photo  # @File 需要上传的照片
51
+     */
52
+    public static final String ORIGIN_PHOTO_UPLOAD_URL = HOST_URL+"l/origin_upload";
53
+
41 54
 
42 55
     public static final String FEEDBACK_URL = HOST_URL +"op/feedback";
43 56
 

kodo - Gogs: Go Git Service

暫無描述

Brightcells: 30daca135b add api message_list_api/message_type_list_api/message_read_api 10 年之前
..
migrations 4defb80fdc gogs first init 11 年之前
__init__.py 4defb80fdc gogs first init 11 年之前
admin.py 4defb80fdc gogs first init 11 年之前
models.py 4defb80fdc gogs first init 11 年之前
tests.py 4defb80fdc gogs first init 11 年之前
urls.py 30daca135b add api message_list_api/message_type_list_api/message_read_api 10 年之前
views.py 4defb80fdc gogs first init 11 年之前