瀏覽代碼

1.优化打卡功能

wsad5123 5 年之前
父節點
當前提交
ceebe5a95f

+ 2 - 2
app/src/main/java/com/tongyu/luck/happywork/ui/mvp/cclient/contacts/ClockFragmentContacts.java

@@ -34,12 +34,12 @@ public class ClockFragmentContacts {
 
         void httpGetClockInfo(MvpDataCallBack<ClockInfoBean> callBack);
 
-        void locationAddress(MvpDataCallBack<AMapLocation> callBack);
+        void locationAddress(MvpDataCallBack<Boolean> callBack);
 
         void getHttpApproveStatus(MvpDataCallBack<Boolean> callBack);
 
         void requestClock(MvpDataCallBack<ClockResultBean> callBack);
 
-
+        ClockInfoBean getClockInfo();
     }
 }

+ 23 - 16
app/src/main/java/com/tongyu/luck/happywork/ui/mvp/cclient/model/ClockFragmentModel.java

@@ -14,6 +14,7 @@ import com.tongyu.luck.happywork.baselibrary.EventConstant;
 import com.tongyu.luck.happywork.bean.ClockInfoBean;
 import com.tongyu.luck.happywork.bean.ClockResultBean;
 import com.tongyu.luck.happywork.bean.api.ApiApproveBean;
+import com.tongyu.luck.happywork.bean.api.ApiHotListBean;
 import com.tongyu.luck.happywork.bean.api.ApiNormalBean;
 import com.tongyu.luck.happywork.callback.MvpDataCallBack;
 import com.tongyu.luck.happywork.event.StringEvent;
@@ -34,8 +35,8 @@ public class ClockFragmentModel extends BaseModel implements ClockFragmentContac
     private AMapLocation mLocation;//当前定位城市
     private ClockInfoBean infoBean;//打卡信息
 
-    private boolean isInit;//是否已经初始化
     private boolean isLoading;//是否正在打卡在
+    private ApiException mException;//异常
 
     public ClockFragmentModel(Context mContext) {
         super(mContext);
@@ -56,19 +57,24 @@ public class ClockFragmentModel extends BaseModel implements ClockFragmentContac
             @Override
             public void onSuccess(ClockInfoBean data) {
                 infoBean = data;
-                callBack.onData(data);
             }
 
             @Override
             public void onError(ClockInfoBean data, ApiException exception) {
                 super.onError(data, exception);
                 if (infoBean == null)//如果已经获取过打卡信息则不抛出异常
-                    callBack.onError(exception);
+                    mException = exception;
             }
 
             @Override
             public void onFinish() {
+                callBack.onData(infoBean);
+                if (mException != null) {
+                    callBack.onError(mException);
+                    mException = null;
+                }
             }
+
         });
     }
 
@@ -76,7 +82,7 @@ public class ClockFragmentModel extends BaseModel implements ClockFragmentContac
      * 定位
      */
     @Override
-    public void locationAddress(final MvpDataCallBack<AMapLocation> callBack) {
+    public void locationAddress(final MvpDataCallBack<Boolean> callBack) {
         mLocation = null;
         if (mLocationClient != null) {//销毁原定位
             mLocationClient.stopLocation();
@@ -88,13 +94,13 @@ public class ClockFragmentModel extends BaseModel implements ClockFragmentContac
         mLocationClient.setLocationListener(new AMapLocationListener() {
             @Override
             public void onLocationChanged(AMapLocation aMapLocation) {
-                if (aMapLocation != null) {
-                    if (aMapLocation.getErrorCode() == 0 && !TextUtils.isEmpty(aMapLocation.getAdCode())) {
-                        mLocation = aMapLocation;
-                        mLocationClient.stopLocation();
-                        callBack.onData(mLocation);
-                    }
+                if (aMapLocation != null && aMapLocation.getErrorCode() == 0 && !TextUtils.isEmpty(aMapLocation.getAdCode())) {
+                    mLocation = aMapLocation;
+                    callBack.onData(true);
+                } else {
+                    callBack.onData(false);
                 }
+                mLocationClient.stopLocation();
             }
         });
         mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
@@ -159,11 +165,12 @@ public class ClockFragmentModel extends BaseModel implements ClockFragmentContac
         });
     }
 
-    public boolean isInit() {
-        return isInit;
-    }
-
-    public void setInit(boolean init) {
-        isInit = init;
+    /**
+     * 获取打卡信息
+     * @return
+     */
+    @Override
+    public ClockInfoBean getClockInfo() {
+        return infoBean;
     }
 }

+ 17 - 9
app/src/main/java/com/tongyu/luck/happywork/ui/mvp/cclient/presenter/ClockFragmentPresenter.java

@@ -58,8 +58,7 @@ public class ClockFragmentPresenter extends BasePresenter<ClockFragment> impleme
             mModel.httpGetClockInfo(new MvpDataCallBack<ClockInfoBean>() {
                 @Override
                 public void onData(ClockInfoBean data) {
-                    if (isViewAttach()) {
-                        mModel.setInit(true);
+                    if (isViewAttach() && data != null) {
                         mvpReference.get().initView(data);
                     }
                 }
@@ -67,7 +66,7 @@ public class ClockFragmentPresenter extends BasePresenter<ClockFragment> impleme
                 @Override
                 public void onError(ApiException exception) {
                     super.onError(exception);
-                    if (!mModel.isInit())
+                    if (isViewAttach())
                         mvpReference.get().onError();
                 }
             });
@@ -84,15 +83,24 @@ public class ClockFragmentPresenter extends BasePresenter<ClockFragment> impleme
                 if (isShowDialog) {
                     mProgressDialog.show();
                 }
-                mModel.locationAddress(new MvpDataCallBack<AMapLocation>() {
+                mModel.locationAddress(new MvpDataCallBack<Boolean>() {
                     @Override
-                    public void onData(AMapLocation data) {
+                    public void onData(Boolean data) {
                         if (isViewAttach()) {
                             mProgressDialog.dismiss();
-                            if (isClock) {
-                                requestClock();
-                            } else {
-                                getClockInfo();
+                            if (data) {//定位成功
+                                if (isClock) {
+                                    requestClock();
+                                } else {
+                                    getClockInfo();
+                                }
+                            } else {//定位失败
+                                if (isClock) {//如果是点击打卡
+                                    ToastUtils.show(mvpReference.get().getActivity(), R.string.clock_location_fail);
+                                } else {//如果是一般情況下
+                                    if (mModel.getClockInfo() == null)//尚未初始化的情況下进入错误页面
+                                        mvpReference.get().onError();
+                                }
                             }
                         }
                     }

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -102,6 +102,7 @@
     <string name="clock_call_service">开心工作客服电话</string>
     <string name="clock_service_time">在线时间:每天8:00-21:00</string>
     <string name="clock_no_permissions_title">请前往设置打开用户定位权限</string>
+    <string name="clock_location_fail">定位失败,请检查网络后重新尝试</string>
 
     <string name="go_use">开启开心打卡之旅</string>
     <string name="no_finish">未完成</string>