No Description

MainPresenter.java 9.3KB

    package ai.pai.lensman.main; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.net.ConnectivityManager; import android.os.IBinder; import android.support.annotation.StringRes; import com.android.common.utils.NetworkUtil; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import ai.pai.lensman.App; import ai.pai.lensman.BuildConfig; import ai.pai.lensman.R; import ai.pai.lensman.base.BaseInteractor; import ai.pai.lensman.bean.PhotoBean; import ai.pai.lensman.bean.SessionBean; import ai.pai.lensman.db.DBService; import ai.pai.lensman.db.Preferences; import ai.pai.lensman.service.OrderDealService; import ai.pai.lensman.service.UploadService; class MainPresenter implements MainContract.Presenter,BaseInteractor.InteractorListener<ArrayList<String>>,SyncTimeInteractor.SyncTimeListener, UploadService.PhotoUploadListener, QueryBoxStatusInteractor.BoxStatusListener,OrderDealService.OrderServiceListener { private int sessionSeq; private String lensmanId; private ArrayList<String> sessionIds; private ArrayList<SessionBean> sessionList; private MainContract.View view; private FetchSessionIdsInteractor fetchSessionIdsInteractor; private QueryBoxStatusInteractor boxStatusInteractor; private SyncTimeInteractor syncTimeInteractor; private ServiceConnection uploadServiceConnection; private ServiceConnection orderServiceConnection; private boolean isBoxConnected = true; private boolean isTimeSync = false; private BroadcastReceiver wifiReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) { if(NetworkUtil.isWifiConnected(context)){ view.showBoxConnectedView(); }else{ isBoxConnected = false; view.showBoxDisconnectedView(); } } } }; MainPresenter(MainContract.View view){ this.view = view; this.lensmanId = Preferences.getInstance().getLensManId(); sessionIds = new ArrayList<>(); fetchSessionIdsInteractor = new FetchSessionIdsInteractor(lensmanId,100,this); boxStatusInteractor = new QueryBoxStatusInteractor(this); syncTimeInteractor = new SyncTimeInteractor(lensmanId,this); uploadServiceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { ((UploadService.MyBinder) iBinder).getService().setPhotoUploadListener(MainPresenter.this); } @Override public void onServiceDisconnected(ComponentName componentName) { } }; orderServiceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { ((OrderDealService.OrderServiceBinder) iBinder).getService().setOrderServiceListener(MainPresenter.this); } @Override public void onServiceDisconnected(ComponentName componentName) { } }; } @Override public void start() { if(NetworkUtil.isWifiConnected(App.getAppContext())){ view.showBoxConnectedView(); }else{ view.showBoxDisconnectedView(); } view.setNewSessionBtnEnabled(false); if(sessionIds==null|| sessionIds.size()<20){ fetchSessionIdsInteractor.startJob(); } if(!isTimeSync){ syncTimeInteractor.startJob(); } boxStatusInteractor.startJob(); if(BuildConfig.isTestMode){ if(sessionIds==null || sessionIds.size()==0){ sessionIds = new ArrayList<>(); sessionIds.add(String.valueOf(System.currentTimeMillis())); } } registerWifiChangeReceiver(); App.getAppContext().startService(new Intent(App.getAppContext(), OrderDealService.class)); App.getAppContext().bindService(new Intent(App.getAppContext(),OrderDealService.class), orderServiceConnection, Context.BIND_AUTO_CREATE); App.getAppContext().startService(new Intent(App.getAppContext(), UploadService.class)); App.getAppContext().bindService(new Intent(App.getAppContext(),UploadService.class), uploadServiceConnection, Context.BIND_AUTO_CREATE); sessionList = DBService.getInstance().getSessionBeanListByDay(getSessionDateInLongFormat()); onDataReady(); } private void onDataReady(){ if(!isTimeSync){ return; } if(sessionIds==null|sessionIds.size()<20){ return; } view.setNewSessionBtnEnabled(true); if(sessionList.size()==0){ view.showEmptyView(); }else{ view.showSessionViews(); view.refreshSessionViews(sessionList); } sessionSeq = sessionList.size(); } @Override public void stop() { boxStatusInteractor.cancelJob(); syncTimeInteractor.cancelJob(); fetchSessionIdsInteractor.cancelJob(); App.getAppContext().unbindService(uploadServiceConnection); App.getAppContext().unbindService(orderServiceConnection); App.getAppContext().unregisterReceiver(wifiReceiver); } @Override public SessionBean createNewSession() { SessionBean sessionBean = new SessionBean(); sessionBean.lensmanId = lensmanId; sessionBean.sessionDate=getSessionDateInLongFormat(); sessionBean.sessionSeq = sessionSeq+1; sessionBean.sessionId =sessionIds.get(0); sessionList.add(sessionBean); sessionIds.remove(0); return sessionBean; } private long getSessionDateInLongFormat(){ SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String dateStr = format.format(new Date()); return Long.parseLong(dateStr); } @Override public void onInteractSuccess(ArrayList<String> sessionIds) { this.sessionIds.addAll(sessionIds); onDataReady(); } @Override public void onInteractFail(String errorMsg) { if(NetworkUtil.isWifiConnected(App.getAppContext())){ fetchSessionIdsInteractor.startJob(); }else{ view.showBoxDisconnectedView(); } } @Override public synchronized void onPhotoUploaded(PhotoBean bean) { int position = sessionList.size()-bean.sessionSeq; if(position < 0 || position>=sessionList.size()){ return; } SessionBean sessionBean = sessionList.get(position); ArrayList<PhotoBean> photoList = sessionBean.sessionPhotos; if(photoList==null || photoList.size()==0){ photoList = new ArrayList<>(); photoList.add(bean); }else{ for(PhotoBean photoBean : photoList){ if(photoBean.photoId == bean.photoId){ photoBean.uploadStatus = PhotoBean.UploadStatus.STATUS_SUCCESS; break; } } } sessionBean.sessionPhotos = photoList; view.updateSessionUploadViewAt(position); } @Override public synchronized void onPhotoUploadError(PhotoBean bean) { int position = sessionList.size()-bean.sessionSeq; if(position < 0 || position>=sessionList.size()){ return; } SessionBean sessionBean = sessionList.get(position); ArrayList<PhotoBean> photoList = sessionBean.sessionPhotos; if(photoList==null || photoList.size()==0){ photoList = new ArrayList<>(); photoList.add(bean); }else{ for(PhotoBean photoBean : photoList){ if(photoBean.photoId == bean.photoId){ photoBean.uploadStatus = PhotoBean.UploadStatus.STATUS_ERROR; break; } } } sessionBean.sessionPhotos = photoList; view.updateSessionUploadViewAt(position); } private void registerWifiChangeReceiver() { IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); App.getAppContext().registerReceiver(wifiReceiver,filter); } @Override public void onBoxStatusFetched(String boxNo, String boxStatus, int boxStatusCode) { if(200 == boxStatusCode){ isBoxConnected = true; view.showBoxConnectedView(); }else{ isBoxConnected = false; view.showBoxDisconnectedView(); } } @Override public void onOrderArrived() { if(!isBoxConnected){ view.showSnackBar(R.string.new_order_and_check_box); } } @Override public void onOrderCompleted() { } @Override public void onTimeSync(boolean result, @StringRes int strId) { isTimeSync = result; if(result){ onDataReady(); }else{ if(strId!=0){ view.showSnackBar(strId); } } } }
kodo - Gogs: Go Git Service

Nenhuma Descrição

0002_auto_20191119_1428.py 1.0KB

    # -*- coding: utf-8 -*- # Generated by Django 1.11.26 on 2019-11-19 06:28 from __future__ import unicode_literals from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('member', '0001_initial'), ] operations = [ migrations.AlterModelOptions( name='goodsinfo', options={'verbose_name': '\u4f1a\u5458\u5546\u54c1\u4fe1\u606f', 'verbose_name_plural': '\u4f1a\u5458\u5546\u54c1\u4fe1\u606f'}, ), migrations.AlterModelOptions( name='rightinfo', options={'verbose_name': '\u4f1a\u5458\u6743\u76ca\u4fe1\u606f', 'verbose_name_plural': '\u4f1a\u5458\u6743\u76ca\u4fe1\u606f'}, ), migrations.AddField( model_name='rightinfo', name='right_type', field=models.IntegerField(choices=[(0, '\u5b9e\u7269'), (1, '\u865a\u62df'), (2, '\u4f18\u60e0\u5238')], db_index=True, default=1, help_text='\u6743\u76ca\u7c7b\u578b', verbose_name='right_type'), ), ]