• OrderDealService.java 15KB

      package ai.pai.lensman.service; import android.app.Service; import android.content.Intent; import android.os.AsyncTask; import android.os.Binder; import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.text.TextUtils; import com.android.common.executors.ThreadExecutor; import com.android.common.utils.LogHelper; import com.android.common.utils.NetworkUtil; import org.json.JSONArray; import org.json.JSONObject; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import ai.pai.lensman.BuildConfig; import ai.pai.lensman.bean.OrderBean; import ai.pai.lensman.bean.PhotoBean; import ai.pai.lensman.db.Preferences; import ai.pai.lensman.utils.BoxUrlContainer; import ai.pai.lensman.utils.Constants; import ai.pai.lensman.utils.HttpPostTask; import ai.pai.lensman.utils.UrlContainer; public class OrderDealService extends Service implements Handler.Callback{ private ArrayList<OrderBean> orderList; private Handler handler; private OrderServiceListener listener; private static final int MSG_QUERY_ORDER = 2001; @Override public void onCreate() { super.onCreate(); handler = new Handler(this); } @Override public IBinder onBind(Intent intent) { return new OrderServiceBinder(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { if (!isQueueEmpty()) { return START_STICKY; } startQuery(); return START_STICKY; } private void startQuery() { HashMap<String, String> params = new HashMap<>(); params.put("user_id", Preferences.getInstance().getLensManId()); new HttpPostTask(params) { @Override protected boolean parseResponse(String response) { LogHelper.d("OrderDealService", "startQuery order list = " + response); try { JSONObject json = new JSONObject(response); int status = json.getInt("status"); if (status == 200) { JSONObject data = json.getJSONObject("data"); JSONArray orders = data.getJSONArray("wanted"); if (orders != null && orders.length() > 0) { orderList = new ArrayList<OrderBean>(); for (int k = 0; k < orders.length(); k++) { JSONObject orderObj = orders.getJSONObject(k); OrderBean bean = new OrderBean(); bean.sessionId = orderObj.getString("session_id"); bean.photoId = orderObj.getString("photo_id"); bean.orderId = orderObj.getString("order_id"); JSONObject photoObj = orderObj.getJSONObject("group_photo_info"); bean.buyerId = photoObj.getString("user_id"); bean.buyerName = photoObj.getString("nickname"); bean.originExpireTime = photoObj.getLong("origin_expired_stamps"); orderList.add(bean); } } return true; } } catch (Exception e) { e.printStackTrace(); } return false; } @Override protected void onPostSuccess() { super.onPostSuccess(); if(listener!= null) { if (orderList != null && orderList.size() > 0) { listener.onOrderArrived(); }else{ listener.onOrderCompleted(); } } dealOrder(); } @Override protected void onPostFail() { super.onPostFail(); dealOrder(); } }.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.QUERY_ORIGIN_ORDER_URL); } private void dealOrder() { if (!isQueueEmpty()) { OrderBean orderBean = orderList.get(0); fetchOriginFromBox(orderBean); } else { handler.removeMessages(MSG_QUERY_ORDER); handler.sendEmptyMessageDelayed(MSG_QUERY_ORDER,10000); } } private void fetchOriginFromBox(final OrderBean orderBean) { LogHelper.d("OrderDealService", "fetchOriginFromBox "); HashMap<String, String> params = new HashMap<>(); params.put("lensman", Preferences.getInstance().getLensManId()); params.put("session", orderBean.sessionId); params.put("id", orderBean.photoId); //TODO for test if(BuildConfig.isTestMode){ PhotoBean bean = new PhotoBean(); bean.photoId = Long.parseLong(orderBean.photoId); bean.photoName = bean.photoId+".jpg"; bean.photoPath = "http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1402/12/c1/31189058_1392186616852.jpg"; bean.captureTime = bean.photoId; bean.isRawPhoto = false; bean.uploadStatus = PhotoBean.UploadStatus.STATUS_NO_BEGIN; bean.sessionId = orderBean.sessionId; bean.lensmanId = Preferences.getInstance().getLensManId(); orderBean.photoBean = bean; new SavePhotoTask(orderBean).executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), orderBean); return; } new HttpPostTask(params) { @Override protected boolean parseResponse(String response) { LogHelper.d("OrderDealService", "fetchOriginFromBox get response string = " + response); try { JSONObject json = new JSONObject(response); int status = json.getInt("status"); if (status == 200) { JSONObject data = json.getJSONObject("data"); PhotoBean bean = new PhotoBean(); bean.photoId = Long.parseLong(orderBean.photoId); bean.photoName = bean.photoId+".jpg"; bean.photoPath = data.getString("path"); bean.captureTime = bean.photoId; bean.isRawPhoto = false; bean.uploadStatus = PhotoBean.UploadStatus.STATUS_NO_BEGIN; bean.sessionId = orderBean.sessionId; bean.lensmanId = Preferences.getInstance().getLensManId(); orderBean.photoBean = bean; } return true; } catch (Exception e) { e.printStackTrace(); } return false; } @Override protected void onPostFail() { super.onPostFail(); orderList.remove(orderBean); dealOrder(); } @Override protected void onPostSuccess() { super.onPostSuccess(); if(TextUtils.isEmpty(orderBean.photoBean.photoPath)){ reportOriginPhotoDeleted(orderBean); }else{ new SavePhotoTask(orderBean).executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), orderBean); } } }.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), BoxUrlContainer.FETCH_ORIGIN_URL); } private void uploadOrigin(OrderBean bean) { new UploadTask(bean).executeOnExecutor(ThreadExecutor.getInstance().getExecutor()); } private boolean isQueueEmpty() { return (orderList == null || orderList.size() == 0); } @Override public boolean handleMessage(Message message) { if(message.what == MSG_QUERY_ORDER){ startQuery(); } return true; } public class OrderServiceBinder extends Binder { public OrderDealService getService() { return OrderDealService.this; } } class SavePhotoTask extends AsyncTask<OrderBean, Integer, Boolean> { private OrderBean orderBean; public SavePhotoTask(OrderBean bean) { this.orderBean = bean; } @Override protected Boolean doInBackground(OrderBean... params) { String path = BoxUrlContainer.PHOTO_PATH_PREFIX_URL + orderBean.photoBean.photoPath; if(BuildConfig.isTestMode){ path = "http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1402/12/c1/31189058_1392186616852.jpg"; } LogHelper.d("OrderDealService", "保存照片到本地,图片链接地址为" + path); FileOutputStream fOut = null; HttpURLConnection conn = null; InputStream inStream = null; try { URL url = new URL(path); conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod("GET"); inStream = conn.getInputStream(); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator + orderBean.photoBean.sessionId + File.separator + Constants.ORIGIN_DIR_NAME; File dir = new File(dirPath); dir.mkdirs(); File file = new File(dir, orderBean.photoBean.photoName); fOut = new FileOutputStream(file); byte[] buffer = new byte[2048]; int len; while ((len = inStream.read(buffer)) != -1) { fOut.write(buffer, 0, len); fOut.flush(); } fOut.flush(); LogHelper.d("OrderDealService", "保存照片到本地,图片保存至" + file.getAbsolutePath() + "图片大小为" + file.length() + "字节\n\n"); } return true; } catch (Exception e) { e.printStackTrace(); } finally { try { inStream.close(); conn.disconnect(); fOut.close(); } catch (Exception e) { e.printStackTrace(); } } return false; } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); if (result) { uploadOrigin(orderBean); } else { orderList.remove(orderBean); dealOrder(); } } } private void reportOriginPhotoDeleted(final OrderBean orderBean) { HashMap<String, String> params = new HashMap<>(); params.put("user_id", Preferences.getInstance().getLensManId()); params.put("session_id", orderBean.sessionId); params.put("photo_id", orderBean.photoId); params.put("deleted", String.valueOf(1)); new HttpPostTask(params) { @Override protected boolean parseResponse(String response) { LogHelper.d("OrderDealService", "reportOriginPhotoDeleted get response string = " + response); try { JSONObject json = new JSONObject(response); int status = json.getInt("status"); if (status == 200) { return true; } } catch (Exception e) { e.printStackTrace(); } return false; } @Override protected void onPostFail() { super.onPostFail(); orderList.remove(orderBean); dealOrder(); } @Override protected void onPostSuccess() { super.onPostSuccess(); orderList.remove(orderBean); dealOrder(); } }.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.ORIGIN_PHOTO_UPLOAD_URL); } public class UploadTask extends AsyncTask<Void, Integer, Boolean> { private OrderBean bean; public UploadTask(OrderBean bean) { this.bean = bean; } @Override protected Boolean doInBackground(Void... params) { for (int k = 0; k < 5; k++) { try { String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator + bean.sessionId + File.separator + Constants.ORIGIN_DIR_NAME; File dir = new File(dirPath); dir.mkdirs(); File photo = new File(dir, bean.photoBean.photoName); LogHelper.d("OrderDealService", "上传照片 第" + k + "次尝试" + bean); if (photo.exists() && photo.isFile()) { PhotoUploadUtils photoUploadUtils = new PhotoUploadUtils(UrlContainer.ORIGIN_PHOTO_UPLOAD_URL + "?timestamp=" + System.currentTimeMillis()); photoUploadUtils.addTextParameter("deleted", String.valueOf(0)); photoUploadUtils.addFileParameter("photo", photo); photoUploadUtils.addTextParameter("user_id", bean.photoBean.lensmanId); photoUploadUtils.addTextParameter("order_id", bean.orderId); photoUploadUtils.addTextParameter("session_id", bean.photoBean.sessionId); photoUploadUtils.addTextParameter("photo_id", String.valueOf(bean.photoBean.photoId)); String result = new String(photoUploadUtils.send(false), "UTF-8"); JSONObject resultObj = new JSONObject(result); if (resultObj.getInt("status") == 200) { LogHelper.d("OrderDealService", "上传 UploadTask upload result ok "); return true; } } else { return false; } } catch (Exception e) { LogHelper.d("OrderDealService", "上传发生异常 UploadTask :" + bean + " error:" + e); } } return false; } @Override protected void onPostExecute(Boolean result) { LogHelper.d("OrderDealService", "上传 UploadTask " + bean + " success "); orderList.remove(bean); dealOrder(); } } public void setOrderServiceListener(OrderServiceListener listener){ this.listener = listener; } public interface OrderServiceListener{ void onOrderArrived(); void onOrderCompleted(); } }
    Pai2/pai2 - Gogs: Go Git Service

    47 Commits (4fc817b0a2b010f8732f4dae5d2a539154c73a46)

    Author SHA1 Message Date
      Brightcells 3cad0a866a Update package django_xxx 8 years ago
      Brightcells 7cb0d608cb Change curtail_uuid to django_curtail_uuid 8 years ago
      Brightcells 208fc20a24 Change to use django-response 8 years ago
      Brightcells e38c2defaf Upload photo to qiniu 9 years ago
      Brightcells 57206d9cbd Fix Bug: change default ext from 'jpeg' to '.jpeg' 9 years ago
      Brightcells e8cd9652b7 Add gather_screenshot for api tg_group_gather_start_api 9 years ago
      Brightcells 1ecd4f276f Remove status code NO_XX_PERMISSION 9 years ago
      Brightcells 7bcf74b5da ACTIVE_GROUP_NOT_FOUND 9 years ago
      Brightcells 5ebf9b60ba have_active_group 9 years ago
      Brightcells b27a2f135c Fix Bug: check whether have tour goup or not error 9 years ago
      Brightcells e7f3abdf56 Add admin relative api 9 years ago
      Brightcells 22cbf27523 Recall tg_group_transfer_api 9 years ago
      Brightcells ae0ac478f3 set_tour_guide_own_group in tg_group_transfer_api 9 years ago
      Brightcells 3b745fc07a Change to get_tour_guide_own_group when group_id not exists 9 years ago
      Brightcells bcb6e8c9ca Filter status=True 9 years ago
      Brightcells ae70dce3ef file md5 9 years ago
      Brightcells 246a9ff4b8 Change to 'from utils.redis.connect import r' 9 years ago
      Brightcells d19a7d5efb Check tour guide group whether ended 9 years ago
      Brightcells a9527e0247 Remove geo submit flag for api tg_group_detail_api 9 years ago
      Brightcells cd287d6483 Add docstring for def set_geo_submit_flag 9 years ago
      Brightcells a6660a7ab6 Realize set geo submit flag for api tg_group_detail_api 9 years ago
      Brightcells 4d51c3e342 Basic realize set geo submit flag for api tg_group_detail_api 9 years ago
      Brightcells 9b8d6f0f09 Update comment 9 years ago
      Brightcells 2d33b37a4b DONE TODO: Sum(relative_persons) for api tg_group_detail_api 9 years ago
      Brightcells 19fb5e3b2d DONE TODO: Remove tourguide for api tg_group_detail_api 9 years ago
      Brightcells 8fb9461cba to 9 years ago
      Brightcells 90d377ee6e Add gather location 10 years ago
      Brightcells b62ab5aac1 Fix Bug: attentions and schedules update error 10 years ago
      Brightcells 612465eec2 Logit body and res for api tg_group_update_api 10 years ago
      Brightcells 4b68389146 Remove gather_info when gather_at expired for api pai2_tginfo_api 10 years ago
      Brightcells 214bbec976 Update requirements.txt & Change param ex_time to time 10 years ago
      Brightcells facd48308b Add some TODO 10 years ago
      Brightcells cdedcf94fd int 10 years ago
      Brightcells 867e9f6d70 Fix Bug: tc.utc_string_to_utc_datetime return None 10 years ago
      Brightcells 5c37fe6af6 Fix Bug: User Has Not Join Group 10 years ago
      Brightcells 3e0483e4b9 Fix Bug: invalid literal for int() with base 10: '' 10 years ago
      Brightcells 25b296f848 Add attentions/schedules for GroupInfo 10 years ago
      Brightcells 7d92e79eb9 Remove param group_id from tg_group_token_api/tg_group_transfer_api 10 years ago
      Brightcells f818f4127f Docstring simplify 10 years ago
      Brightcells 6611c5f373 Add pai2_tginfo_api 10 years ago
      Brightcells 70f5faad11 Add tg_group_token_api/tg_group_transfer_api 10 years ago
      Brightcells 034acddb68 Add total_persons for GroupInfo 10 years ago
      Brightcells 0df90d650b Add TOUR_GUIDE_GROUP_CUR_GATHER_INFO 10 years ago
      Brightcells 3baf694bff Should only update when started_at and ended_at is'nt null 10 years ago
      Brightcells af76a40fe7 Fix Bug: TypeError: replace() takes no keyword arguments 10 years ago
      Brightcells ad69866b26 Add tour guide's name and phone in GroupInfo 10 years ago
      Brightcells f724e0f9c0 Add tour guide apis 10 years ago
    kodo - Gogs: Go Git Service

    Nessuna descrizione

    huangqimin: 4ab2404bea MarketCode 6 anni fa
    ..
    algorithm f38d3bf980 Caesar Alg 8 anni fa
    error 4ab2404bea MarketCode 6 anni fa
    redis 9e580a4861 r1 7 anni fa
    shells cefc16fe75 cfg 7 anni fa
    sql f3cf68f957 Add PAI2_HOME_WX_API for request.weixin 9 anni fa
    __init__.py 52ce35cbfc add api uuid_init/uuid 11 anni fa
    admin_utils.py 9e4ac4fd3b Add admin_status for GroupUserInfo 9 anni fa
    disk_utils.py af2b3f483f change download.html to be generated from download.tmpl.html 10 anni fa
    group_photo_utils.py 0e7b5eb1af Update order_by of group session photos 9 anni fa
    message_utils.py 21b4a5403a add api lensman_brief_api 10 anni fa
    original_CGzC_10a50000c8811190.jpg 680f424408 Update water mark 9 anni fa
    original_CGzC_10a50000c8811190副本.jpg 4a8b4f8819 add watermark 11 anni fa
    paiai_96_96.png 4a8b4f8819 add watermark 11 anni fa
    paiai_water_mark.png 680f424408 Update water mark 9 anni fa
    price_utils.py 24e345a32f Add price func get_group_photo_price 9 anni fa
    qiniucdn.py ac03876ce1 qiniu_file_url 9 anni fa
    rdm_utils.py 4efb7f6f87 Statistic 8 anni fa
    storage_qiniu_utils.py f2fc73685d Update package django_xxx 8 anni fa
    storage_utils.py f2fc73685d Update package django_xxx 8 anni fa
    thumbnail_utils.py 5c9e21b29b add Only Once Function statistic_thumbnail_size to statistic thumbnail size 10 anni fa
    time_utils.py 511533855d Change oauth to use http 9 anni fa
    url_utils.py 135c21b40c from models_ext import BaseModelMixin, upload_file_url, upload_path 8 anni fa
    version_utils.py 13816e8774 Fix Bug: REQUEST 8 anni fa
    watermark_utils.py 5411626ebe Change watermark position 9 anni fa
    wx_utils.py 32a7d9ffa0 Update wx relative 9 anni fa