Parcourir la source

修改自动打卡逻辑前备份

Bitliker il y a 8 ans
Parent
commit
eaa441a0c7
46 fichiers modifiés avec 1584 ajouts et 749 suppressions
  1. 0 268
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/WorkModelDao.java
  2. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingAddActivity.java
  3. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingListActivity.java
  4. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  5. 0 452
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/baidu/BaiduMapUtil.java
  6. 14 13
      WeiChat/src/main/res/layout/activity_book_add.xml
  7. 9 5
      WeiChat/src/main/res/layout/fragment_me.xml
  8. 1 0
      app_core/common/src/main/java/com/core/widget/CircleImageView.java
  9. 1 1
      app_core/common/src/main/java/com/core/widget/view/selectcalendar/SelectCalendarActivity.java
  10. 2 2
      app_core/common/src/main/res/values/styles.xml
  11. 5 3
      app_modular/appbooking/src/main/AndroidManifest.xml
  12. 6 2
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingAddActivity.java
  13. 12 1
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingDetailActivity.java
  14. 15 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceAddActivity.java
  15. 115 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceListActivity.java
  16. 188 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServicesActivity.java
  17. 81 0
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemBserviceHeaderAdapter.java
  18. 94 0
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemBserviceListAdapter.java
  19. 76 0
      app_modular/appbooking/src/main/java/com/modular/booking/model/SBListModel.java
  20. 107 0
      app_modular/appbooking/src/main/java/com/modular/booking/model/SBMenuModel.java
  21. BIN
      app_modular/appbooking/src/main/res/drawable-hdpi/icon_club.png
  22. BIN
      app_modular/appbooking/src/main/res/drawable-hdpi/icon_food.png
  23. BIN
      app_modular/appbooking/src/main/res/drawable-hdpi/icon_hair.png
  24. BIN
      app_modular/appbooking/src/main/res/drawable-hdpi/icon_hospital.png
  25. BIN
      app_modular/appbooking/src/main/res/drawable-hdpi/icon_ktv.png
  26. BIN
      app_modular/appbooking/src/main/res/drawable-hdpi/icon_sport.png
  27. BIN
      app_modular/appbooking/src/main/res/drawable-xhdpi/icon_club.png
  28. BIN
      app_modular/appbooking/src/main/res/drawable-xhdpi/icon_food.png
  29. BIN
      app_modular/appbooking/src/main/res/drawable-xhdpi/icon_hair.png
  30. BIN
      app_modular/appbooking/src/main/res/drawable-xhdpi/icon_hospital.png
  31. BIN
      app_modular/appbooking/src/main/res/drawable-xhdpi/icon_ktv.png
  32. BIN
      app_modular/appbooking/src/main/res/drawable-xhdpi/icon_sport.png
  33. BIN
      app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_club.png
  34. BIN
      app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_food.png
  35. BIN
      app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_hair.png
  36. BIN
      app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_hospital.png
  37. BIN
      app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_ktv.png
  38. BIN
      app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_sport.png
  39. 635 0
      app_modular/appbooking/src/main/res/layout/activity_bservice_add.xml
  40. 9 0
      app_modular/appbooking/src/main/res/layout/activity_bservice_list.xml
  41. 19 0
      app_modular/appbooking/src/main/res/layout/activity_bservices.xml
  42. 38 0
      app_modular/appbooking/src/main/res/layout/header_bservices_grid.xml
  43. 29 0
      app_modular/appbooking/src/main/res/layout/item_bservice_header.xml
  44. 92 0
      app_modular/appbooking/src/main/res/layout/item_bservice_list.xml
  45. 28 0
      app_modular/appbooking/src/main/res/values/strings.xml
  46. 4 0
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/ContactsActivity.java

+ 0 - 268
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/WorkModelDao.java

@@ -1,268 +0,0 @@
-package com.xzjmyk.pm.activity.db.dao;
-
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-
-import com.common.LogUtil;
-import com.common.data.DateFormatUtil;
-import com.common.data.StringUtil;
-import com.core.db.DatabaseManager;
-import com.core.model.WorkModel;
-import com.core.utils.TimeUtils;
-import com.xzjmyk.pm.activity.util.oa.CommonUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by Bitliker on 2016/12/12.
- */
-
-public class WorkModelDao {
-
-    private static WorkModelDao instance;
-    private final String TIBLE_NAME = "workdata";
-
-
-    public static WorkModelDao getInstance() {
-        if (instance == null) {
-            synchronized (WorkModelDao.class) {
-                instance = new WorkModelDao();
-            }
-        }
-        return instance;
-    }
-
-    private WorkModelDao() {
-
-    }
-
-
-    //TODO 修改待完成
-    public boolean createOrUpdata(List<WorkModel> models, long time) {
-        SQLiteDatabase db = null;
-        try {
-            db = DatabaseManager.getInstance().openDatabase();
-            String emCode = CommonUtil.getEmcode();
-            String master = CommonUtil.getMaster();
-            db.beginTransaction();
-            //插入或是更新
-            for (int i = 0; i < models.size(); i++) {
-                WorkModel e = models.get(i);
-                ContentValues values = getValues(time, i, e);
-                if (values == null) continue;
-                long item = db.insert(TIBLE_NAME, null, values);
-                if (item < 0) {
-                    String where = "id=?";
-                    String[] whereArgs = {String.valueOf(i)};
-                    db.update(TIBLE_NAME, values, where, whereArgs);
-                }
-            }
-            //删除多余班次
-            String where = "emCode=? and master=?  and id >=?";
-            String[] whereArgs = {emCode, master, String.valueOf(models.size())};
-            db.delete(TIBLE_NAME, where, whereArgs);
-            db.setTransactionSuccessful();
-            db.endTransaction();
-            DatabaseManager.getInstance().closeDatabase();
-            return true;
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-
-    public List<WorkModel> query(boolean allSignin, long time) {
-        List<WorkModel> models = new ArrayList<>();
-        SQLiteDatabase db = null;
-        Cursor c = null;
-        try {
-            String date = TimeUtils.s_long_2_str(time);
-            String emCode = CommonUtil.getEmcode();
-            String master = CommonUtil.getMaster();
-            if (StringUtil.isEmpty(emCode) || StringUtil.isEmpty(master)) return null;
-            db = DatabaseManager.getInstance().openDatabase();
-            String[] columns = getColumns();
-            String selection = "emCode=? and master=? and date=?";
-            String[] selectionArg = {emCode, master, date};
-            c = db.query(TIBLE_NAME, columns, selection, selectionArg, null, null, null);
-            WorkModel model = null;
-            while (c.moveToNext()) {
-                model = getWorkModel(c, allSignin);
-                if (model != null)
-                    models.add(model);
-            }
-        } catch (Exception e) {
-            if (e!=null) LogUtil.i("query Exception"+e.getMessage());
-        } finally {
-            if (c != null)
-                c.close();
-            DatabaseManager.getInstance().closeDatabase();
-            return models;
-        }
-    }
-
-    /**
-     * 获取数据库中全部数据
-     *
-     * @param allSignin 是否包含迟到和早退情况
-     * @return
-     */
-    public List<WorkModel> query(boolean allSignin) {
-        return query(allSignin, System.currentTimeMillis());
-    }
-
-
-    /**
-     * 清除当天以前的数据
-     *
-     * @param date
-     * @return
-     */
-    public long clearByDate(long date) {
-        if (date <= 0) return -1;
-        SQLiteDatabase db = null;
-        long i = 0;
-        try {
-            String emCode = CommonUtil.getEmcode();
-            String master = CommonUtil.getMaster();
-            if (StringUtil.isEmpty(emCode) || StringUtil.isEmpty(master)) return 0;
-            db = DatabaseManager.getInstance().openDatabase();
-            String where = "emCode=? and master=?  and date=?";
-            String[] whereArg = {emCode, master, TimeUtils.s_long_2_str(date)};
-            i = db.delete(TIBLE_NAME, where, whereArg);
-        } catch (Exception e) {
-
-        } finally {
-            DatabaseManager.getInstance().closeDatabase();
-            return i;
-        }
-    }
-
-    /**
-     * 更新一行数据   签到后使用
-     *
-     * @param models
-     * @return
-     */
-    public long update(WorkModel models) {
-        if (models == null) return 0;
-        SQLiteDatabase db = null;
-        long i = 0;
-        try {
-            String emCode = CommonUtil.getEmcode();
-            String master = CommonUtil.getMaster();
-            if (StringUtil.isEmpty(emCode) || StringUtil.isEmpty(master)) return 0;
-            ContentValues values = getValues(System.currentTimeMillis(), -1, models);
-            if (values == null) return -1;
-            db = DatabaseManager.getInstance().openDatabase();
-            String where = "emCode=? and master=?  and workStart=? and workTime=?" +
-                    " and workend=? and offStart=? and offTime=? and offend=? and date=?";
-            String[] whereArg = {emCode, master, models.getWorkStart(),
-                    models.getWorkTime(), models.getWorkend()
-                    , models.getOffStart(), models.getOffTime(),
-                    models.getOffend(), DateFormatUtil.long2Str(DateFormatUtil.YMD)};
-            i = db.update(TIBLE_NAME, values, where, whereArg);
-        } catch (Exception e) {
-        } finally {
-            DatabaseManager.getInstance().closeDatabase();
-            return i;
-        }
-    }
-
-
-    private ContentValues getValues(long time, int id, WorkModel e) {
-        String emCode = CommonUtil.getEmcode();
-        String master = CommonUtil.getMaster();
-        if (StringUtil.isEmpty(emCode) || StringUtil.isEmpty(master)) return null;
-        if (isEmptyByOne(e.getWorkStart(), e.getWorkTime(), e.getWorkend(), e.getOffStart(), e.getOffTime(), e.getOffend()))
-            return null;
-        ContentValues values = new ContentValues();
-        if (id != -1)
-            values.put("id", id);
-        values.put("emCode", emCode);
-        values.put("master", master);
-        values.put("date", TimeUtils.s_long_2_str(time));
-
-        values.put("workStart", e.getWorkStart());
-        values.put("workTime", e.getWorkTime());
-        values.put("workend", e.getWorkend());
-        values.put("workAllegedly", e.getWorkAllegedly());
-
-        values.put("offStart", e.getOffStart());
-        values.put("offTime", e.getOffTime());
-        values.put("offend", e.getOffend());
-        values.put("offAllegedly", e.getOffAllegedly());
-
-        values.put("leaveAlarm", e.isLeaveAlarm() ? 1 : 0);
-        values.put("workAlarm", e.isWorkAlarm() ? 1 : 0);
-        values.put("offAlarm", e.isLeaveAlarm() ? 1 : 0);
-        values.put("isNextDay", e.isNextDay() ? 1 : 0);
-
-        if (!StringUtil.isEmpty(e.getWorkSignin())
-                && (e.getWorkSignin().compareTo(e.getWorkStart()) < 0 ||
-                e.getWorkSignin().compareTo(e.getWorkend()) > 0))
-            values.put("workSignin", "");
-        else values.put("workSignin", e.getWorkSignin());
-        if (!StringUtil.isEmpty(e.getOffSignin()) && (e.getOffSignin().compareTo(e.getOffStart()) < 0 ||
-                e.getOffSignin().compareTo(e.getOffend()) > 0))
-            values.put("offSignin", "");
-        else values.put("offSignin", e.getOffSignin());
-        return values;
-    }
-
-    private WorkModel getWorkModel(Cursor c, boolean showAllSignin) {
-        if (c == null)
-            return null;
-        int id = c.getInt(c.getColumnIndex("id"));//编号
-        String workStart = c.getString(c.getColumnIndex("workStart"));//上班开始时间
-        String workTime = c.getString(c.getColumnIndex("workTime"));//上班时间
-        String workend = c.getString(c.getColumnIndex("workend")); //上班计算结束时间
-        String workSignin = c.getString(c.getColumnIndex("workSignin")); //上班签到时间
-        String workAllegedly = c.getString(c.getColumnIndex("workAllegedly"));//下班计算开始时间
-        boolean workAlarm = c.getInt(c.getColumnIndex("workAlarm")) > 0;//下班时间
-        String offStart = c.getString(c.getColumnIndex("offStart"));//下班结束时间
-        String offTime = c.getString(c.getColumnIndex("offTime"));//下班签到时间
-        String offend = c.getString(c.getColumnIndex("offend"));//下班签到时间
-        String offSignin = c.getString(c.getColumnIndex("offSignin"));//下班签到时间
-        String offAllegedly = c.getString(c.getColumnIndex("offAllegedly"));//下班签到时间
-        boolean isNextDay = c.getInt(c.getColumnIndex("isNextDay")) > 0;//是否是跨天
-        boolean offAlarm = c.getInt(c.getColumnIndex("offAlarm")) > 0;//下班提醒
-        boolean leaveAlarm = c.getInt(c.getColumnIndex("leaveAlarm")) > 0;//离开提醒
-        if (StringUtil.isEmpty(workStart) || StringUtil.isEmpty(workTime) || StringUtil.isEmpty(workend) ||
-                StringUtil.isEmpty(offStart) || StringUtil.isEmpty(offTime) || StringUtil.isEmpty(offend))
-            return null;
-
-        if (!showAllSignin) {
-            if (!StringUtil.isEmpty(workSignin) && workSignin.compareTo(workTime) > 0)//迟到  打卡时间>上班时间
-                workSignin = "";
-            if (!StringUtil.isEmpty(offSignin) && offSignin.compareTo(offTime) < 0)//早退  打卡时间<下班时间
-                offSignin = "";
-        }
-        return new WorkModel(id, workStart, workTime,
-                workend, workSignin,
-                workAllegedly,
-                workAlarm,
-                offStart,
-                offTime,
-                offend,
-                offSignin,
-                offAllegedly,
-                offAlarm,
-                leaveAlarm,
-                isNextDay
-        );
-    }
-
-    private String[] getColumns() {
-        return new String[]{"id", "workStart", "workTime", "workend", "workSignin", "workAllegedly", "workAlarm", "offStart"
-                , "offTime", "offend", "offSignin", "offAllegedly", "offAlarm", "leaveAlarm","isNextDay"};
-    }
-
-    private boolean isEmptyByOne(String... args) {
-        for (String e : args)
-            if (StringUtil.isEmpty(e)) return true;
-        return false;
-    }
-}

+ 1 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingAddActivity.java

@@ -169,6 +169,7 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
                 break;
             case R.id.company_add_rl://时段
                 if (!StringUtil.isEmpty(tvBookObject.getText().toString())) {
+                  LogUtil.d("HttpLogs","imid:"+imId);
                     startActivityForResult(new Intent(mContext, SelectCalendarActivity.class)
                                     .putExtra("startDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
                                     .putExtra("endDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingListActivity.java

@@ -35,6 +35,7 @@ import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.modular.booking.activity.business.BBookingAddActivity;
 import com.modular.booking.activity.business.BBookingDetailActivity;
+import com.modular.booking.activity.services.BServicesActivity;
 import com.modular.booking.activity.shares.BBSharesListActivity;
 import com.modular.booking.activity.shares.MuiltSelectShareActivity;
 import com.modular.booking.adapter.BookAdapter;
@@ -246,7 +247,7 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                 startActivity(new Intent(mContext, BBookingAddActivity.class));
                 break;
             case R.id.mBookService:
-                ToastMessage("暂未开放!");
+                startActivity(new Intent(mContext,  BServicesActivity.class));
                 break;
             case R.id.mBookShares:
                 Intent intent = new Intent(mContext, BBSharesListActivity.class);

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java

@@ -334,7 +334,7 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
         CommonUtil.clearSharedPreferences(ct, "seting_1");
         doHITask(); // TODO 测试按钮
 
-        UserRoleUtils.checkUserRole(this,getmRootView());
+        UserRoleUtils.checkUserRole(this, getmRootView());
     }
 
     private void doHITask() {

+ 0 - 452
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/baidu/BaiduMapUtil.java

@@ -1,452 +0,0 @@
-package com.xzjmyk.pm.activity.util.baidu;
-
-import android.util.Log;
-
-import com.baidu.mapapi.map.BitmapDescriptor;
-import com.baidu.mapapi.map.BitmapDescriptorFactory;
-import com.baidu.mapapi.map.MapStatus;
-import com.baidu.mapapi.map.MapStatusUpdate;
-import com.baidu.mapapi.map.MapStatusUpdateFactory;
-import com.baidu.mapapi.map.MapView;
-import com.baidu.mapapi.map.MarkerOptions;
-import com.baidu.mapapi.map.OverlayOptions;
-import com.baidu.mapapi.model.LatLng;
-import com.baidu.mapapi.search.core.SearchResult;
-import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
-import com.baidu.mapapi.search.poi.PoiCitySearchOption;
-import com.baidu.mapapi.search.poi.PoiDetailResult;
-import com.baidu.mapapi.search.poi.PoiIndoorResult;
-import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
-import com.baidu.mapapi.search.poi.PoiResult;
-import com.baidu.mapapi.search.poi.PoiSearch;
-import com.baidu.mapapi.search.poi.PoiSortType;
-import com.baidu.mapapi.search.route.BikingRouteResult;
-import com.baidu.mapapi.search.route.DrivingRouteLine;
-import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
-import com.baidu.mapapi.search.route.DrivingRouteResult;
-import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;
-import com.baidu.mapapi.search.route.PlanNode;
-import com.baidu.mapapi.search.route.RoutePlanSearch;
-import com.baidu.mapapi.search.route.TransitRouteResult;
-import com.baidu.mapapi.search.route.WalkingRouteResult;
-import com.baidu.mapapi.utils.DistanceUtil;
-import com.common.data.StringUtil;
-import com.core.app.AppConfig;
-import com.core.net.location.BdLocationHelper;
-import com.core.app.MyApplication;
-import com.xzjmyk.pm.activity.R;
-import com.core.dao.WorkLocationDao;
-import com.core.model.WorkLocationModel;
-import com.common.data.ListUtils;
-
-import java.text.DecimalFormat;
-import java.util.List;
-
-/**
- * 百度地图工具类(重复代码过多,放在工具类中)
- * Created by Bitliker on 2016/7/15.
- */
-public class BaiduMapUtil {
-    private static BaiduMapUtil instence = null;
-    private PoiNearbySearchOption option;//设置搜索的条件
-    private RoutePlanSearch drivingSearch;//设置查询路线的条件
-    private OnDrivingRouteListener onDrivingRouteListener;//获取路线监听器(获取耗时)
-    private OnSearchPoiListener onSearchPoiListener;//获取周围信息接口
-    private PoiSearch mPoiSearch; //输入位置检索
-
-    private BaiduMapUtil() {
-    }
-
-    public static BaiduMapUtil getInstence() {
-        if (instence == null) {
-            synchronized (BaiduMapUtil.class) {
-                instence = new BaiduMapUtil();
-            }
-        }
-        return instence;
-    }
-
-    //在使用时候在生命周期结束应该调用该方法
-    public void onDestroy() {
-        try {
-            if (drivingSearch != null) drivingSearch.destroy();
-            if (option != null) option = null;
-            if (onDrivingRouteListener != null) onDrivingRouteListener = null;
-            if (onSearchPoiListener != null) onSearchPoiListener = null;
-            if (mPoiSearch != null) mPoiSearch.destroy();
-        } catch (Exception e) {
-
-        }
-    }
-
-
-    public double distance(LatLng a, LatLng b) {
-        try {
-            DecimalFormat df = new DecimalFormat(".##");
-            double dis = Math.abs(DistanceUtil.getDistance(a, b));
-            return Double.valueOf(df.format(dis));
-        } catch (Exception e) {
-            return 0;
-        }
-    }
-
-    public float autoDistance(LatLng a) {
-        if (a == null) return -1f;
-        BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
-        if (helper.getLatitude() == 0 || helper.getLongitude() == 0) return -1f;
-        double distance = Math.abs(DistanceUtil.getDistance(a,
-                new LatLng(helper.getLatitude(), helper.getLongitude())));
-        DecimalFormat df = new DecimalFormat(".##");
-        try {
-            return Float.valueOf(df.format(distance));
-        } catch (ClassCastException e) {
-            return -1f;
-        } catch (Exception e) {
-            return -1f;
-        }
-    }
-
-    //与当前位置的距离
-    public String getDistance(LatLng a) {
-        if (a == null) return "0";
-        BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
-        double distance = Math.abs(DistanceUtil.getDistance(a,
-                new LatLng(helper.getLatitude(), helper.getLongitude())));
-        DecimalFormat df = new DecimalFormat(".##");
-        return df.format(distance);
-    }
-
-    /**
-     * 判断是否在打卡范围之内
-     *
-     * @return
-     */
-    public boolean isInWorkPlce() {
-        float dis = 0;
-        try {
-            List<WorkLocationModel> beanList = WorkLocationDao.getInstance().queryByEnCode();
-            if (ListUtils.isEmpty(beanList)) return false;
-            BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
-            for (WorkLocationModel bean : beanList) {
-                String chche = BaiduMapUtil.getInstence().getDistance(bean.getLongitude(),
-                        bean.getLatitude(), helper.getLatitude(), helper.getLongitude());
-                dis = Float.valueOf(chche);
-                if (dis < bean.getValidrange()) return true;
-            }
-            return false;
-        } catch (NumberFormatException e) {
-            return false;
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-    public float getDistance() {
-        float dis = 0;
-        try {
-            List<WorkLocationModel> beanList = WorkLocationDao.getInstance().queryByEnCode();
-            if (ListUtils.isEmpty(beanList)) return 0;
-            BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
-            for (WorkLocationModel bean : beanList) {
-                String chche = BaiduMapUtil.getInstence().getDistance(bean.getLongitude(),
-                        bean.getLatitude(), helper.getLatitude(), helper.getLongitude());
-                dis = Float.valueOf(chche);
-                if (dis < bean.getValidrange()) return dis;
-            }
-            return 0;
-        } catch (NumberFormatException e) {
-            return 0;
-        } catch (Exception e) {
-            return 0;
-        }
-    }
-
-    public boolean isInnerdistance() {
-        float dis = 0;
-        try {
-            List<WorkLocationModel> beanList = WorkLocationDao.getInstance().queryByEnCode();
-            if (ListUtils.isEmpty(beanList)) return false;
-            BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
-            for (WorkLocationModel bean : beanList) {
-                String chche = BaiduMapUtil.getInstence().getDistance(bean.getLongitude(),
-                        bean.getLatitude(), helper.getLatitude(), helper.getLongitude());
-                dis = Float.valueOf(chche);
-                if (dis < bean.getInnerdistance()) return true;
-            }
-            return false;
-        } catch (NumberFormatException e) {
-            return false;
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-
-    //计算距离saaa
-    public String getDistance(double a1, double a2, double b1, double b2) {
-        LatLng a = new LatLng(a1, a2);
-        LatLng b = new LatLng(b1, b2);
-        return getDistance(a, b);
-    }
-
-    /******************
-     * 计算距离
-     ******************/
-    public String getDistance(LatLng a, LatLng b) {
-        double distance = Math.abs(DistanceUtil.getDistance(a, b));
-        DecimalFormat df = new DecimalFormat(".##");
-        return df.format(distance);
-    }
-
-
-    /******************end计算距离******************/
-
-    /****************** 设置在地图上显示 ******************/
-    /**
-     * 设置当前地图显示位置
-     *
-     * @param mapView mapView视图控件
-     * @param point   显示位置
-     */
-    public void setMapViewPoint(MapView mapView, LatLng point) {
-        setMapViewPoint(mapView, point, false);
-    }
-
-    public void setMapViewPoint(MapView mapView, boolean isClear) {
-        try {
-            LatLng point = new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
-                    MyApplication.getInstance().getBdLocationHelper().getLongitude());
-            setMapViewPoint(mapView, point, isClear);
-        } catch (NullPointerException e) {
-
-        } catch (Exception e) {
-
-        }
-    }
-
-    /**
-     * 将定点显示在指定位置
-     *
-     * @param mapView 地图控件
-     * @param point   显示位置
-     * @param isClear 是否清除前面的点
-     */
-    public void setMapViewPoint(MapView mapView, LatLng point, boolean isClear) {
-        try {
-            if (point == null) return;
-            // 构建Marker图标
-            BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_gcoding);
-            // 构建MarkerOption,用于在地图上添加Marker
-            OverlayOptions option = new MarkerOptions().position(point).icon(bitmap);
-            if (isClear) mapView.getMap().clear();
-            // 在地图上添加Marker,并显示
-            mapView.getMap().addOverlay(option);
-            mapView.showZoomControls(false);
-            MapStatus mapStatus = new MapStatus.Builder().zoom(mapView.getMap().getMaxZoomLevel() - 3).target(point).build();
-            MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(mapStatus);
-            mapView.getMap().animateMapStatus(u);//设置为中心显示
-
-        } catch (Exception e) {
-
-        }
-    }
-    /******************end设置在地图上显示******************/
-
-
-    /******************
-     * 检索周围
-     ******************/
-    public void getNearInfo(int radius, int pagerNum, LatLng location, String keyword, OnSearchPoiListener onSearchPoiListener) {
-        if (option == null)
-            option = new PoiNearbySearchOption();
-        if (mPoiSearch == null)
-            mPoiSearch = PoiSearch.newInstance();
-        this.onSearchPoiListener = onSearchPoiListener;
-        option.keyword(keyword);
-        option.sortType(PoiSortType.distance_from_near_to_far);
-        option.location(location);
-        if (radius != 0) {
-            option.radius(radius);
-        } else {
-            option.radius(1000);
-        }
-        if (pagerNum != 0) {
-            option.pageNum(pagerNum);
-        } else {
-            option.pageNum(1);
-        }
-        option.pageCapacity(20);
-        mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
-        mPoiSearch.searchNearby(option);
-    }
-
-    public void getNearInfo(int radius, int pagerNum, LatLng latLng, OnSearchPoiListener onSearchPoiListener) {
-        this.onSearchPoiListener = onSearchPoiListener;
-        if (option == null)
-            option = new PoiNearbySearchOption();
-        if (mPoiSearch == null)
-            mPoiSearch = PoiSearch.newInstance();
-//        .keyword("公司|大厦")
-        option.keyword("公司")
-                .sortType(PoiSortType.distance_from_near_to_far)
-                .radius(radius)
-                .pageNum(pagerNum)
-                .pageCapacity(1000).location(latLng);
-        mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
-        mPoiSearch.searchNearby(option);
-    }
-
-    /**
-     * 查询城市里的地址
-     *
-     * @param location 地址
-     */
-    public void searchByInput(String location, int pagerNum, OnSearchPoiListener onSearchPoiListener) {
-        try {
-            this.onSearchPoiListener = onSearchPoiListener;
-            mPoiSearch = PoiSearch.newInstance();
-            mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
-            mPoiSearch.searchInCity((new PoiCitySearchOption())
-                    .city(MyApplication.getInstance().getBdLocationHelper().getCityName())
-                    .keyword(location).pageNum(pagerNum).pageCapacity(1000)
-            );
-        } catch (Exception e) {
-            if (e != null)
-                Log.i("gongpengming", "e =" + e.getMessage());
-        }
-    }
-
-    public void searchByInputOnChina(String location, int pagerNum,
-                                     OnSearchPoiListener onSearchPoiListener) {
-        try {
-            this.onSearchPoiListener = onSearchPoiListener;
-            mPoiSearch = PoiSearch.newInstance();
-            mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
-            mPoiSearch.searchInCity((new PoiCitySearchOption())
-                    .city("中国")
-                    .keyword(location)
-                    .pageNum(pagerNum).pageCapacity(1000)
-            );
-        } catch (Exception e) {
-            if (e != null)
-                Log.i("gongpengming", "e =" + e.getMessage());
-        }
-    }
-
-    private OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener() {
-        public void onGetPoiResult(PoiResult result) {
-            //获取POI检索结果
-            if (onSearchPoiListener == null || result == null) {
-                return;
-            }
-            onSearchPoiListener.result(result);
-        }
-
-        public void onGetPoiDetailResult(PoiDetailResult result) {
-            //获取Place详情页检索结果
-            Log.i("gongpengming", "onGetPoiDetailResult");
-            if (onSearchPoiListener == null || result == null) return;
-            onSearchPoiListener.result(result);
-        }
-
-        @Override
-        public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
-            Log.i("gongpengming", "onGetPoiIndoorResult");
-            if (onSearchPoiListener == null || poiIndoorResult == null) return;
-            onSearchPoiListener.result(poiIndoorResult);
-        }
-    };
-
-    //获取周围位置信息接口
-    public interface OnSearchPoiListener {
-        void result(SearchResult result);
-    }
-
-    /******************end检索周围******************/
-
-
-    /********************规划路线**************************************/
-    /**
-     * 计算耗时
-     *
-     * @param city     城市
-     * @param from     从地点
-     * @param to       到地点
-     * @param listener 返回数据监听器
-     */
-    public void getDrivingRoute(String city, String from, String to, OnDrivingRouteListener listener) {
-        this.onDrivingRouteListener = listener;
-        drivingSearch = RoutePlanSearch.newInstance();
-        drivingSearch.setOnGetRoutePlanResultListener(onGetRoutePlanResultListener);
-        PlanNode stNode = PlanNode.withCityNameAndPlaceName(city, from);
-        PlanNode enNode = PlanNode.withCityNameAndPlaceName(city, to);
-        drivingSearch.drivingSearch((new DrivingRoutePlanOption())
-                .from(stNode)
-                .to(enNode));
-
-    }
-
-
-    public void getDrivingRoute(LatLng from, LatLng to, OnGetRoutePlanResultListener onGetRoutePlanResultListener) {
-        drivingSearch = RoutePlanSearch.newInstance();
-        drivingSearch.setOnGetRoutePlanResultListener(onGetRoutePlanResultListener);
-        PlanNode stNode = PlanNode.withLocation(from);
-        PlanNode enNode = PlanNode.withLocation(to);
-        drivingSearch.drivingSearch((new DrivingRoutePlanOption())
-                .from(stNode)
-                .to(enNode));
-    }
-
-    //获取周围位置监听器
-    private OnGetRoutePlanResultListener onGetRoutePlanResultListener = new OnGetRoutePlanResultListener() {
-        @Override
-        public void onGetWalkingRouteResult(WalkingRouteResult result) {
-            //获取步行线路规划结果
-            DrivingRouteLine line = null;
-            if (line == null || onDrivingRouteListener == null) return;
-            onDrivingRouteListener.callBack(result, line);
-        }
-
-        @Override
-        public void onGetTransitRouteResult(TransitRouteResult result) {
-            //获取公交换乘路径规划结果
-            DrivingRouteLine line = null;
-            if (line == null || onDrivingRouteListener == null) return;
-            onDrivingRouteListener.callBack(result, line);
-        }
-
-        @Override
-        public void onGetDrivingRouteResult(DrivingRouteResult result) {
-            //获取驾车线路规划结果
-            List<DrivingRouteLine> list = result.getRouteLines();
-            if (ListUtils.isEmpty(list)) return;
-            DrivingRouteLine line = null;
-            for (DrivingRouteLine e : list) {//TODO 获取最优最快路线及时间
-                if (line == null) line = e;
-                else if (line.getDuration() > e.getDuration()) line = e;
-            }
-            if (line == null || onDrivingRouteListener == null) return;
-            onDrivingRouteListener.callBack(result, line);
-        }
-
-        @Override
-        public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {
-            //获取自行车线路规划结果
-        }
-    };
-
-    //获取规划路线监听器
-    public interface OnDrivingRouteListener {
-        void callBack(SearchResult result, DrivingRouteLine line);
-    }
-
-    /********************
-     * end 规划路线
-     **************************************/
-
-    private void show(String str) {
-        if (!AppConfig.DEBUG || StringUtil.isEmpty(str)) return;
-        Log.i("gongpengming", str);
-    }
-
-}

+ 14 - 13
WeiChat/src/main/res/layout/activity_book_add.xml

@@ -2,8 +2,7 @@
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/hine_bg">
+    android:layout_height="match_parent">
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -95,6 +94,19 @@
                 android:drawablePadding="6dp"
 
                 android:hint="@string/common_select" />
+
+            <EditText
+                android:id="@+id/et_book_content"
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_alignParentTop="true"
+                android:layout_centerHorizontal="true"
+                android:layout_marginTop="61dp"
+                android:background="@color/white"
+                android:enabled="false"
+                android:gravity="top"
+                android:paddingLeft="10dp"
+                android:textSize="15sp" />
         </RelativeLayout>
 
         <View
@@ -128,17 +140,6 @@
             android:scrollbars="none"
             android:verticalSpacing="10dp"/>
 
-        <EditText
-            android:id="@+id/et_book_content"
-            android:layout_width="match_parent"
-            android:layout_height="50dp"
-            android:layout_marginBottom="10dp"
-            android:background="@color/white"
-            android:enabled="false"
-            android:gravity="top"
-            android:paddingLeft="10dp"
-            android:textSize="15sp" />
-
 
         <RelativeLayout
             android:layout_width="match_parent"

+ 9 - 5
WeiChat/src/main/res/layout/fragment_me.xml

@@ -64,6 +64,15 @@
                     android:textSize="@dimen/text_hine" />
 
             </RelativeLayout>
+
+            <View
+                android:id="@+id/view5"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/line"
+                android:layout_alignParentTop="true"
+                android:layout_centerHorizontal="true"
+                android:layout_marginTop="27dp"
+                android:background="@color/item_line" />
         </RelativeLayout>
 
         <RelativeLayout
@@ -227,11 +236,6 @@
                 android:contentDescription="@string/app_name" />
         </RelativeLayout>
 
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/line"
-            android:background="@color/item_line" />
-
         <View
             android:layout_width="match_parent"
             android:layout_height="@dimen/line"

+ 1 - 0
app_core/common/src/main/java/com/core/widget/CircleImageView.java

@@ -23,6 +23,7 @@ import com.core.app.R;
  * Created by FANGlh on 2017/3/28.
  * function: 图片设置圆形控件
  */
+@Deprecated
 public class CircleImageView extends ImageView {
 
     private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP;

+ 1 - 1
app_core/common/src/main/java/com/core/widget/view/selectcalendar/SelectCalendarActivity.java

@@ -158,7 +158,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                                 initGridData();
                             }
 
-                            if (StringUtil.isEmpty(imId)) {
+                            if (!StringUtil.isEmpty(imId)) {
                                 getBookingTime(imId);
                             }
                         }

+ 2 - 2
app_core/common/src/main/res/values/styles.xml

@@ -943,8 +943,8 @@
     <!--横线-->
     <style name="app_line_horizontal_05p">
         <item name="android:layout_width">match_parent</item>
-        <item name="android:layout_height">1dp</item>
-        <item name="android:background">@color/item_line</item>
+        <item name="android:layout_height">0.1dp</item>
+        <item name="android:background">@color/transparent</item>
     </style>
     <!--竖线-->
     <style name="app_line_v_1dp">

+ 5 - 3
app_modular/appbooking/src/main/AndroidManifest.xml

@@ -2,14 +2,16 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.modular.booking">
 
-    <application
-        >
+    <application>
         <activity android:name=".activity.business.BBookingAddActivity" />
         <activity android:name=".activity.shares.BBSharesListActivity" />
         <activity android:name=".activity.business.BBCompanyListActivity" />
         <activity android:name=".activity.business.MuilSelectBeanActivity" />
         <activity android:name=".activity.business.BBookingDetailActivity" />
-        <activity android:name=".activity.shares.MuiltSelectShareActivity"></activity>
+        <activity android:name=".activity.shares.MuiltSelectShareActivity" />
+        <activity android:name=".activity.services.BServicesActivity" />
+        <activity android:name=".activity.services.BServiceListActivity" />
+        <activity android:name=".activity.services.BServiceAddActivity"></activity>
     </application>
 
 </manifest>

+ 6 - 2
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingAddActivity.java

@@ -456,12 +456,16 @@ public class BBookingAddActivity extends OABaseActivity implements View.OnClickL
                             JSONObject object = datas.getJSONObject(i);
                             if (i == datas.size() - 1) {
                                 companyBuilder.append(object.getString("company"));
-                                imidBuilder.append(object.getString("imid"));
+                                imidBuilder.append(StringUtil.isEmpty(object.getString("imid"))==true?"0":object.getString("imid"));
                                 phoneBuilder.append(object.getString("usertel"));
                                 nameBuilder.append(object.getString("username"));
                             } else {
                                 companyBuilder.append(object.getString("company") + ",");
-                                imidBuilder.append(object.getString("imid") + ",");
+                                if(StringUtil.isEmpty(object.getString("imid"))){
+                                    imidBuilder.append("0" + ",");
+                                }else{
+                                    imidBuilder.append(object.getString("imid") + ",");
+                                }
                                 phoneBuilder.append(object.getString("usertel") + ",");
                                 nameBuilder.append(object.getString("username") + ",");
                             }

+ 12 - 1
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingDetailActivity.java

@@ -452,7 +452,18 @@ public class BBookingDetailActivity extends OABaseActivity implements View.OnCli
         if (!StringUtil.isEmpty(bmanid)){
             String [] barray=bmanid.split(",");
             for (int i=0;i<barray.length;i++){
-                sendMessage(model.getAb_recordid(),model.getAb_recordman(),barray[i],content);
+                //barray[i]=100263,Ab_recordid:109079,Ab_recordman:陈爱平
+                LogUtil.d("XmppApp","barray[i]="+barray[i]+",Ab_recordid:"+model.getAb_recordid()+",Ab_recordman:"
+                +model.getAb_recordman());
+//                sendMessage(model.getAb_recordid(),model.getAb_recordman(),barray[i],content);
+                if(MyApplication.getInstance().getLoginUserId().equals(model.getAb_recordid())){
+                    sendMessage(MyApplication.getInstance().mLoginUser.getUserId(),
+                            MyApplication.getInstance().mLoginUser.getNickName(),barray[i],content);
+                }else{
+                    sendMessage(MyApplication.getInstance().mLoginUser.getUserId(),
+                            MyApplication.getInstance().mLoginUser.getNickName(),model.getAb_recordid(),content);
+                }
+               
             }
         }
     }

+ 15 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceAddActivity.java

@@ -0,0 +1,15 @@
+package com.modular.booking.activity.services;
+
+import android.os.Bundle;
+
+import com.core.base.OABaseActivity;
+import com.modular.booking.R;
+
+public class BServiceAddActivity extends OABaseActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_bservice_add);
+    }
+}

+ 115 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceListActivity.java

@@ -0,0 +1,115 @@
+package com.modular.booking.activity.services;
+
+import android.os.Bundle;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.core.app.Constants;
+import com.core.app.MyApplication;
+import com.core.base.OABaseActivity;
+import com.core.widget.EmptyLayout;
+import com.core.widget.VoiceSearchView;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.modular.booking.R;
+import com.modular.booking.adapter.ItemBserviceListAdapter;
+import com.modular.booking.model.SBListModel;
+import com.modular.booking.model.SBMenuModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+  * @desc:
+  * @author:Arison on 2017/9/28
+  */
+public class BServiceListActivity extends OABaseActivity {
+    private VoiceSearchView voiceSearchView;
+    private PullToRefreshListView mListView;
+    private ItemBserviceListAdapter mListAdapter;
+    private List<SBListModel> modelList=new ArrayList<>();
+    private  SBMenuModel menuModel;
+    
+    private EmptyLayout emptyLayout;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_bservices);
+        
+        initView();
+        initEvent();
+        initData();
+    }
+
+    private void initView() {
+        if (getIntent()!=null){
+            menuModel=getIntent().getParcelableExtra("SBMenuModel");
+            LogUtil.d("myTest","menuModel:"+JSON.toJSONString(menuModel));
+        }
+        voiceSearchView = (VoiceSearchView) findViewById(R.id.voiceSearchView);
+        mListView = (PullToRefreshListView) findViewById(R.id.mListView);
+        emptyLayout=new EmptyLayout(mContext,mListView.getRefreshableView());
+        mListAdapter=new ItemBserviceListAdapter(mContext,modelList);
+        mListView.setAdapter(mListAdapter);
+    }
+ 
+    private void initEvent() {
+        
+    }
+    
+    private void initData() {
+        if (menuModel!=null){
+            loadListData(menuModel.getCode(),1);
+        }
+    }
+
+    
+    public void loadListData(String type,int page){
+        HttpClient httpClient=new HttpClient.Builder(Constants.IM_BASE_URL).isDebug(true).build();
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("/user/appStoreList")
+                .add("type",type)
+                .add("pageIndex",page)
+                .add("token", MyApplication.getInstance().mAccessToken)
+                .method(Method.POST)
+                .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                modelList.clear();
+                LogUtil.d("o.toString"+o.toString());
+                if (JSONUtil.validate(o.toString())){
+                    JSONObject object= JSON.parseObject(o.toString());
+                    JSONArray jsonArray=object.getJSONArray("reslut");
+                    if (!ListUtils.isEmpty(jsonArray)){
+                        for (int i=0;i<jsonArray.size();i++){
+                            JSONObject mObject=jsonArray.getJSONObject(i);
+                            SBListModel sbListModel=new SBListModel();
+                            sbListModel.setName(mObject.getString("sc_companyname"));
+                            sbListModel.setUrl(mObject.getString("sc_imageurl"));
+                            sbListModel.setType(mObject.getString("sc_industry"));
+                            modelList.add(sbListModel);
+                        }
+                        LogUtil.d("myTest", JSON.toJSONString(modelList));
+                        mListAdapter=new ItemBserviceListAdapter(mContext,modelList);
+                        mListView.setAdapter(mListAdapter);
+                        if (mListAdapter.getCount()==0){
+                            emptyLayout.showEmpty();
+                        }
+                        //mListAdapter.notifyDataSetChanged();
+                    }else{
+                        if (mListAdapter.getCount()==0){
+                            emptyLayout.showEmpty();
+                        }
+                    }
+                }
+            }
+        }));
+    }
+}

+ 188 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServicesActivity.java

@@ -0,0 +1,188 @@
+package com.modular.booking.activity.services;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.AdapterView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.core.app.Constants;
+import com.core.app.MyApplication;
+import com.core.base.OABaseActivity;
+import com.core.widget.VoiceSearchView;
+import com.core.widget.view.MyGridView;
+import com.handmark.pulltorefresh.library.PullToRefreshBase;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.modular.booking.R;
+import com.modular.booking.adapter.ItemBserviceHeaderAdapter;
+import com.modular.booking.adapter.ItemBserviceListAdapter;
+import com.modular.booking.model.SBListModel;
+import com.modular.booking.model.SBMenuModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+  * @desc:服务预约
+  * @author:Arison on 2017/9/26
+  */
+public class BServicesActivity extends OABaseActivity {
+
+    private VoiceSearchView voiceSearchView;
+    private PullToRefreshListView mListView;
+    ItemBserviceHeaderAdapter itemAdapter;
+    ItemBserviceListAdapter  mListAdapter;
+    List<SBListModel> modelList=new ArrayList<>();
+  
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_bservices);
+        
+        initView();
+        initEvent();
+        intData();
+    }
+
+    private void initView() {
+        voiceSearchView = (VoiceSearchView) findViewById(R.id.voiceSearchView);
+        mListView = (PullToRefreshListView) findViewById(R.id.mListView);
+        initHeader();
+        mListAdapter=new ItemBserviceListAdapter(mContext,modelList);
+        mListView.setAdapter(mListAdapter);
+    }
+
+    private void initHeader() {
+        View headview = LayoutInflater.from(ct).inflate(R.layout.header_bservices_grid, null);
+        mListView.getRefreshableView().addHeaderView(headview);
+        MyGridView  mGridView = (MyGridView) findViewById(R.id.mGridView);
+        List<SBMenuModel> menuModels=new ArrayList<>();
+        SBMenuModel menuModel=new SBMenuModel();
+        menuModel.setUrl("");
+        menuModel.setCode("10003");
+        menuModel.setIcon(R.drawable.icon_food);
+        menuModel.setDesc("美味齐全");
+        menuModel.setTitle("餐饮");
+        menuModels.add(menuModel);
+       
+        menuModel=new SBMenuModel();
+        menuModel.setUrl("");
+        menuModel.setCode("10004");
+        menuModel.setIcon(R.drawable.icon_hair);
+        menuModel.setDesc("时尚潮流");
+        menuModel.setTitle("美容美发");
+        menuModels.add(menuModel);
+        
+        menuModel=new SBMenuModel();
+        menuModel.setUrl("");
+        menuModel.setCode("10006");
+        menuModel.setIcon(R.drawable.icon_ktv);
+        menuModel.setDesc("音乐节");
+        menuModel.setTitle("KTV");
+        menuModels.add(menuModel);
+        
+        menuModel=new SBMenuModel();
+        menuModel.setUrl("");
+        menuModel.setCode("10002");
+        menuModel.setIcon(R.drawable.icon_sport);
+        menuModel.setDesc("hi起来");
+        menuModel.setTitle("运动健身");
+        menuModels.add(menuModel);
+        
+        menuModel=new SBMenuModel();
+        menuModel.setUrl("");
+        menuModel.setCode("10005");
+        menuModel.setIcon(R.drawable.icon_club);
+        menuModel.setDesc("预约有优惠");
+        menuModel.setTitle("会所");
+        menuModels.add(menuModel);
+
+        menuModel=new SBMenuModel();
+        menuModel.setUrl(""); 
+        menuModel.setCode("10001");
+        menuModel.setIcon(R.drawable.icon_hospital);
+        menuModel.setDesc("您的健康助手");
+        menuModel.setTitle("医院挂号");
+        menuModels.add(menuModel);
+
+        itemAdapter=new ItemBserviceHeaderAdapter(mContext,menuModels);
+        mGridView.setAdapter(itemAdapter);
+        
+        mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                ItemBserviceHeaderAdapter.ViewHolder viewHolder= (ItemBserviceHeaderAdapter.ViewHolder) view.getTag();
+                LogUtil.d("myTest","menuModel:"+JSON.toJSONString(viewHolder.menuModel));
+                Intent intent=new Intent(mContext,BServiceListActivity.class);
+                intent.putExtra("SBMenuModel",viewHolder.menuModel);
+                startActivity(intent);
+            }
+        });
+    }
+
+
+    private void initEvent() {
+         mListView.setMode(PullToRefreshBase.Mode.BOTH);
+         mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+             @Override
+             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                 
+             }
+         });
+    }
+
+    private void intData() {
+        loadListData();
+    }
+
+    
+    public void loadListData(){
+        HttpClient httpClient=new HttpClient.Builder(Constants.IM_BASE_URL).isDebug(true).build();
+        httpClient.Api().send(new HttpClient.Builder()
+        .url("/user/appStoreList")
+        .add("type","0")
+        .add("pageIndex","1")
+        .add("token", MyApplication.getInstance().mAccessToken)
+        .method(Method.POST)
+        .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                try {
+                    modelList.clear();
+                    LogUtil.d("o.toString"+o.toString());
+                    if (JSONUtil.validate(o.toString())){
+                       JSONObject object= JSON.parseObject(o.toString());
+                        JSONArray jsonArray=object.getJSONArray("reslut");
+                        if (!ListUtils.isEmpty(jsonArray)){
+                            for (int i=0;i<jsonArray.size();i++){
+                                JSONObject mObject=jsonArray.getJSONObject(i);
+                                SBListModel sbListModel=new SBListModel();
+                                sbListModel.setName(mObject.getString("sc_companyname"));
+                                sbListModel.setUrl(mObject.getString("sc_imageurl"));
+                                sbListModel.setType(mObject.getString("sc_industry"));
+                                modelList.add(sbListModel);
+                            }
+                            LogUtil.d("myTest",JSON.toJSONString(modelList));
+                            mListAdapter=new ItemBserviceListAdapter(mContext,modelList);
+                            mListView.setAdapter(mListAdapter);
+                            //mListAdapter.notifyDataSetChanged();
+                        }
+                    }
+                } catch (Exception e) {
+                    
+                }
+            }
+        }));
+    }
+
+}

+ 81 - 0
app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemBserviceHeaderAdapter.java

@@ -0,0 +1,81 @@
+package com.modular.booking.adapter;
+
+/**
+ * Created by Arison on 2017/9/27.
+ */
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.modular.booking.R;
+import com.modular.booking.model.SBMenuModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.hdodenhof.circleimageview.CircleImageView;
+
+public class ItemBserviceHeaderAdapter extends BaseAdapter {
+
+    private List<SBMenuModel> objects = new ArrayList<SBMenuModel>();
+
+    private Context context;
+    private LayoutInflater layoutInflater;
+
+    public ItemBserviceHeaderAdapter(Context context,List<SBMenuModel> objects ) {
+        this.context = context;
+        this.objects=objects;
+        this.layoutInflater = LayoutInflater.from(context);
+    }
+
+    @Override
+    public int getCount() {
+        return objects.size();
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return objects.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = layoutInflater.inflate(R.layout.item_bservice_header, null);
+            convertView.setTag(new ViewHolder(convertView));
+        }
+        initializeViews((SBMenuModel) getItem(position), (ViewHolder) convertView.getTag());
+        return convertView;
+    }
+
+    private void initializeViews(SBMenuModel object, ViewHolder holder) {
+       holder.tvTitle.setText(object.getTitle());
+       holder.tvDesc.setText(object.getDesc());
+      // holder.ivMenu.setBackgroundResource(object.getIcon());
+       holder.ivMenu.setImageResource(object.getIcon());
+       holder.menuModel=object;
+     //  AvatarHelper.getInstance().display(object.getUrl(),holder.ivMenu,true);
+    }
+
+    public class ViewHolder {
+        public SBMenuModel menuModel;
+        private TextView tvTitle;
+        private TextView tvDesc;
+        private CircleImageView ivMenu;
+
+        public ViewHolder(View view) {
+            tvTitle = (TextView) view.findViewById(R.id.tv_title);
+            tvDesc = (TextView) view.findViewById(R.id.tv_desc);
+            ivMenu = (CircleImageView) view.findViewById(R.id.iv_menu);
+        }
+    }
+}

+ 94 - 0
app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemBserviceListAdapter.java

@@ -0,0 +1,94 @@
+package com.modular.booking.adapter;
+
+/**
+ * Created by Arison on 2017/9/27.
+ */
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.core.utils.helper.AvatarHelper;
+import com.modular.booking.R;
+import com.modular.booking.model.SBListModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+  * @desc:预约列表
+  * @author:Arison on 2017/9/27
+  */
+public class ItemBserviceListAdapter extends BaseAdapter {
+
+    private List<SBListModel> objects = new ArrayList<SBListModel>();
+
+    private Context context;
+    private LayoutInflater layoutInflater;
+
+    public ItemBserviceListAdapter(Context context,List<SBListModel> objects) {
+        this.context = context;
+        this.objects=objects;
+        this.layoutInflater = LayoutInflater.from(context);
+    }
+
+    @Override
+    public int getCount() {
+        return objects.size();
+    }
+
+    @Override
+    public SBListModel getItem(int position) {
+        return objects.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = layoutInflater.inflate(R.layout.item_bservice_list, null);
+            convertView.setTag(new ViewHolder(convertView));
+        }
+        initializeViews((SBListModel)getItem(position), (ViewHolder) convertView.getTag());
+        return convertView;
+    }
+
+    private void initializeViews(SBListModel object, ViewHolder holder) {
+        AvatarHelper.getInstance().display(object.getUrl(),holder.ivIcon,true);
+        holder.tvTitle.setText(object.getName());
+        holder.tvType.setText(object.getType());
+        holder.tvDistance.setText(object.getDistance());
+        holder.tvCash.setText(object.getCash());
+        holder.model=object;
+    }
+
+    protected class ViewHolder {
+        private SBListModel model;
+        private ImageView ivIcon;
+        private TextView tvTitle;
+        private TextView tvType;
+        private TextView tvStart;
+        private TextView tvDistance;
+        private TextView tvCash;
+        private Button btBook;
+
+        public ViewHolder(View view) {
+            ivIcon = (ImageView) view.findViewById(R.id.iv_icon);
+            tvTitle = (TextView) view.findViewById(R.id.tvTitle);
+            tvType = (TextView) view.findViewById(R.id.tvType);
+            tvStart = (TextView) view.findViewById(R.id.tvStart);
+            tvDistance = (TextView) view.findViewById(R.id.tvDistance);
+            tvCash = (TextView) view.findViewById(R.id.tvCash);
+            btBook = (Button) view.findViewById(R.id.btBook);
+        }
+    }
+}

+ 76 - 0
app_modular/appbooking/src/main/java/com/modular/booking/model/SBListModel.java

@@ -0,0 +1,76 @@
+package com.modular.booking.model;
+
+/**
+ * 预约列表
+ * Created by Arison on 2017/9/27.
+ */
+public class SBListModel {
+//    "sc_address":"深圳南山区科技园",
+//            "sc_adminname":"吕全明",
+//            "sc_companyname":"北大医院",
+//            "sc_id":"1",
+//            "sc_imageurl":"http://113.105.74.140:8081/u/123/100123/201709/o/ab6d93f74f9b4ec7a06f7dbfd725ec38.png",
+//            "sc_imid":"100254",
+//            "sc_industry":"医疗",
+//            "sc_industrycode":"10003",
+//            "sc_latitude":"22",
+//            "sc_longitude":"11",
+//            "sc_rank":"10",
+//            "sc_telephone":"13430818775",
+//            "sc_uu":"201"
+    private String url;
+    private String name;
+    private String type;
+    private String stars;
+    private String distance;
+    private String cash;
+    
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getStars() {
+        return stars;
+    }
+
+    public void setStars(String stars) {
+        this.stars = stars;
+    }
+
+    public String getDistance() {
+        return distance;
+    }
+
+    public void setDistance(String distance) {
+        this.distance = distance;
+    }
+
+    public String getCash() {
+        return cash;
+    }
+
+    public void setCash(String cash) {
+        this.cash = cash;
+    }
+}

+ 107 - 0
app_modular/appbooking/src/main/java/com/modular/booking/model/SBMenuModel.java

@@ -0,0 +1,107 @@
+package com.modular.booking.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * 服務预约
+ * Created by Arison on 2017/9/27.
+ */
+
+public class SBMenuModel implements Parcelable {
+    
+    private int icon;
+    private String code;
+    private String title;
+    private int descColor;
+    private String desc;
+    private String url;
+
+    public int getIcon() {
+        return icon;
+    }
+
+    public void setIcon(int icon) {
+        this.icon = icon;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public int getDescColor() {
+        return descColor;
+    }
+
+    public void setDescColor(int descColor) {
+        this.descColor = descColor;
+    }
+
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(this.icon);
+        dest.writeString(this.code);
+        dest.writeString(this.title);
+        dest.writeInt(this.descColor);
+        dest.writeString(this.desc);
+        dest.writeString(this.url);
+    }
+
+    public SBMenuModel() {
+    }
+
+    protected SBMenuModel(Parcel in) {
+        this.icon = in.readInt();
+        this.code = in.readString();
+        this.title = in.readString();
+        this.descColor = in.readInt();
+        this.desc = in.readString();
+        this.url = in.readString();
+    }
+
+    public static final Parcelable.Creator<SBMenuModel> CREATOR = new Parcelable.Creator<SBMenuModel>() {
+        @Override
+        public SBMenuModel createFromParcel(Parcel source) {
+            return new SBMenuModel(source);
+        }
+
+        @Override
+        public SBMenuModel[] newArray(int size) {
+            return new SBMenuModel[size];
+        }
+    };
+}

BIN
app_modular/appbooking/src/main/res/drawable-hdpi/icon_club.png


BIN
app_modular/appbooking/src/main/res/drawable-hdpi/icon_food.png


BIN
app_modular/appbooking/src/main/res/drawable-hdpi/icon_hair.png


BIN
app_modular/appbooking/src/main/res/drawable-hdpi/icon_hospital.png


BIN
app_modular/appbooking/src/main/res/drawable-hdpi/icon_ktv.png


BIN
app_modular/appbooking/src/main/res/drawable-hdpi/icon_sport.png


BIN
app_modular/appbooking/src/main/res/drawable-xhdpi/icon_club.png


BIN
app_modular/appbooking/src/main/res/drawable-xhdpi/icon_food.png


BIN
app_modular/appbooking/src/main/res/drawable-xhdpi/icon_hair.png


BIN
app_modular/appbooking/src/main/res/drawable-xhdpi/icon_hospital.png


BIN
app_modular/appbooking/src/main/res/drawable-xhdpi/icon_ktv.png


BIN
app_modular/appbooking/src/main/res/drawable-xhdpi/icon_sport.png


BIN
app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_club.png


BIN
app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_food.png


BIN
app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_hair.png


BIN
app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_hospital.png


BIN
app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_ktv.png


BIN
app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_sport.png


+ 635 - 0
app_modular/appbooking/src/main/res/layout/activity_bservice_add.xml

@@ -0,0 +1,635 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.modular.booking.activity.services.BServiceAddActivity">
+    <ScrollView 
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:fillViewport="true"
+        android:scrollbars="none">
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@color/hine_bg"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:orientation="vertical">
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:padding="10dp">
+
+                <de.hdodenhof.circleimageview.CircleImageView
+                    android:id="@+id/iv_menu"
+                    android:layout_width="55dp"
+                    android:layout_height="55dp"
+                    android:layout_alignParentLeft="true"
+                    android:layout_alignParentStart="true"
+                    android:layout_centerVertical="true"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="10dp"
+                    android:layout_marginStart="12dp"
+                    android:background="@null"
+                    android:src="@drawable/defaultpic"></de.hdodenhof.circleimageview.CircleImageView>
+
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:layout_toRightOf="@+id/iv_menu"
+                    android:orientation="vertical">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="********"
+                        android:textSize="18sp" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="14sp"
+                        android:text="********" />
+                </LinearLayout>
+            </RelativeLayout>
+
+          <LinearLayout
+              android:id="@+id/ll_ktv"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:orientation="vertical"
+              android:visibility="gone">
+
+            <RelativeLayout
+                android:id="@+id/ktv_time_rl"
+                style="@style/item_menu">
+
+              <TextView
+                  style="@style/item_menu_tag"
+                  android:layout_alignParentLeft="true"
+                  android:layout_alignParentStart="true"
+                  android:layout_alignParentTop="true"
+                  android:gravity="center_vertical"
+                  android:text="@string/service_ktv_times" />
+
+              <TextView
+               
+                  style="@style/item_menu_input"
+                  android:layout_width="290dp"
+                  android:layout_toRightOf="@id/remark_tag"
+                  android:drawablePadding="6dp"
+                  android:drawableRight="@drawable/oa_next"
+                  android:ellipsize="end"
+                  android:hint="@string/common_select" />
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/ktv_room_rl"
+                style="@style/item_menu"
+                android:layout_alignParentTop="true"
+                android:layout_centerHorizontal="true">
+
+              <TextView
+
+                  style="@style/item_menu_tag"
+                  android:gravity="center_vertical"
+                  android:text="@string/service_ktv_rooms"
+                  android:textColor="@color/hintColor" />
+
+              <TextView
+                
+                  style="@style/item_menu_input"
+                  android:layout_width="290dp"
+                  android:layout_toRightOf="@id/company_add_tag"
+                  android:drawableRight="@drawable/oa_next"
+                  android:hint="@string/common_select"
+                  android:textColor="@color/hintColor" />
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/ktv_people_rl"
+                style="@style/item_menu">
+
+              <TextView
+                  style="@style/item_menu_tag"
+                  android:gravity="center_vertical"
+                  android:text="@string/service_ktv_peoples" />
+
+              <TextView
+             
+                  style="@style/item_menu_input"
+                  android:layout_width="290dp"
+                  android:layout_toRightOf="@id/company_tag"
+                  android:drawablePadding="6dp"
+                  android:drawableRight="@drawable/oa_next"
+                  android:hint="@string/common_select" />
+            </RelativeLayout>
+          </LinearLayout>
+
+         <LinearLayout
+             android:id="@+id/ll_club"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:orientation="vertical"
+             android:visibility="gone">
+
+          <RelativeLayout
+              android:id="@+id/club_time_rl"
+              style="@style/item_menu">
+
+           <TextView
+               style="@style/item_menu_tag"
+               android:layout_alignParentLeft="true"
+               android:layout_alignParentStart="true"
+               android:layout_alignParentTop="true"
+               android:gravity="center_vertical"
+               android:text="@string/service_club_times" />
+
+           <TextView
+               android:id="@+id/tv_club_time"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/remark_tag"
+               android:drawablePadding="6dp"
+               android:drawableRight="@drawable/oa_next"
+               android:ellipsize="end"
+               android:hint="@string/common_select" />
+          </RelativeLayout>
+
+          <RelativeLayout
+              android:id="@+id/club_rooms_rl"
+              style="@style/item_menu">
+
+           <TextView
+
+               style="@style/item_menu_tag"
+               android:gravity="center_vertical"
+               android:text="@string/times"
+               android:textColor="@color/hintColor" />
+
+           <TextView
+               android:id="@+id/tv_club_rooms"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/company_add_tag"
+               android:drawableRight="@drawable/oa_next"
+               android:hint="@string/common_select"
+               android:textColor="@color/hintColor" />
+          </RelativeLayout>
+
+          <RelativeLayout
+              android:id="@+id/club_pepoles_rl"
+              style="@style/item_menu">
+
+           <TextView
+               style="@style/item_menu_tag"
+               android:gravity="center_vertical"
+               android:text="@string/booking_object" />
+
+           <TextView
+               android:id="@+id/tv_club_peoples"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/company_tag"
+               android:drawablePadding="6dp"
+               android:drawableRight="@drawable/oa_next"
+               android:hint="@string/common_select" />
+          </RelativeLayout>
+         </LinearLayout>
+
+         <LinearLayout
+             android:id="@+id/ll_hospital"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:orientation="vertical"
+             android:visibility="gone">
+
+          <RelativeLayout
+              android:id="@+id/hospital_time_rl"
+              style="@style/item_menu">
+
+           <TextView
+               style="@style/item_menu_tag"
+               android:layout_alignParentLeft="true"
+               android:layout_alignParentStart="true"
+               android:layout_alignParentTop="true"
+               android:gravity="center_vertical"
+               android:text="@string/service_hospital_times" />
+
+           <TextView
+               android:id="@+id/tv_hospital_time"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/remark_tag"
+               android:drawablePadding="6dp"
+               android:drawableRight="@drawable/oa_next"
+               android:ellipsize="end"
+               android:hint="@string/common_select" />
+          </RelativeLayout>
+
+          <RelativeLayout
+              android:id="@+id/hospital_rooms_rl"
+              style="@style/item_menu">
+
+           <TextView
+
+               style="@style/item_menu_tag"
+               android:gravity="center_vertical"
+               android:text="@string/service_hospital_rooms"
+               android:textColor="@color/hintColor" />
+
+           <TextView
+               android:id="@+id/tv_hospital_rooms"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/company_add_tag"
+               android:drawableRight="@drawable/oa_next"
+               android:hint="@string/common_select"
+               android:textColor="@color/hintColor" />
+          </RelativeLayout>
+
+          <RelativeLayout
+              android:id="@+id/hospital_people_rl"
+              style="@style/item_menu">
+
+           <TextView
+               style="@style/item_menu_tag"
+               android:gravity="center_vertical"
+               android:text="@string/service_hospital_peoples" />
+
+           <TextView
+               android:id="@+id/tv_hospital_people"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/company_tag"
+               android:drawablePadding="6dp"
+               android:drawableRight="@drawable/oa_next"
+               android:hint="@string/common_select" />
+          </RelativeLayout>
+         </LinearLayout>
+
+         <LinearLayout
+             android:id="@+id/ll_sport"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:orientation="vertical"
+             android:visibility="gone">
+
+          <RelativeLayout
+              android:id="@+id/sport_time_rl"
+              style="@style/item_menu">
+
+           <TextView
+               style="@style/item_menu_tag"
+               android:layout_alignParentLeft="true"
+               android:layout_alignParentStart="true"
+               android:layout_alignParentTop="true"
+               android:gravity="center_vertical"
+               android:text="@string/service_sport_times" />
+
+           <TextView
+               android:id="@+id/tv_sport_time"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/remark_tag"
+               android:drawablePadding="6dp"
+               android:drawableRight="@drawable/oa_next"
+               android:ellipsize="end"
+               android:hint="@string/common_select" />
+          </RelativeLayout>
+
+          <RelativeLayout
+              android:id="@+id/sport_rooms_rl"
+              style="@style/item_menu">
+
+           <TextView
+
+               style="@style/item_menu_tag"
+               android:gravity="center_vertical"
+               android:text="@string/times"
+               android:textColor="@color/hintColor" />
+
+           <TextView
+               android:id="@+id/tv_sport_rooms"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/company_add_tag"
+               android:drawableRight="@drawable/oa_next"
+               android:hint="@string/common_select"
+               android:textColor="@color/hintColor" />
+          </RelativeLayout>
+
+          <RelativeLayout
+              android:id="@+id/sport_peoples_rl"
+              style="@style/item_menu">
+
+           <TextView
+               style="@style/item_menu_tag"
+               android:gravity="center_vertical"
+               android:text="@string/service_ktv_peoples" />
+
+           <TextView
+               android:id="@+id/tv_sport_peoples"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/company_tag"
+               android:drawablePadding="6dp"
+               android:drawableRight="@drawable/oa_next"
+               android:hint="@string/common_select" />
+          </RelativeLayout>
+         </LinearLayout>
+
+         <LinearLayout
+             android:id="@+id/ll_hair"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:orientation="vertical"
+             android:visibility="gone">
+
+          <RelativeLayout
+              android:id="@+id/hair_times_rl"
+              style="@style/item_menu">
+
+           <TextView
+               style="@style/item_menu_tag"
+               android:layout_alignParentLeft="true"
+               android:layout_alignParentStart="true"
+               android:layout_alignParentTop="true"
+               android:gravity="center_vertical"
+               android:text="@string/service_hair_times" />
+
+           <TextView
+               android:id="@+id/tv_hair_times"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/remark_tag"
+               android:drawablePadding="6dp"
+               android:drawableRight="@drawable/oa_next"
+               android:ellipsize="end"
+               android:hint="@string/common_select" />
+          </RelativeLayout>
+
+          <RelativeLayout
+              android:id="@+id/hair_rooms_rl"
+              style="@style/item_menu">
+
+           <TextView
+
+               style="@style/item_menu_tag"
+               android:gravity="center_vertical"
+               android:text="@string/service_hair_rooms"
+               android:textColor="@color/hintColor" />
+
+           <TextView
+               android:id="@+id/tv_hair_rooms"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_alignParentEnd="true"
+               android:layout_alignParentRight="true"
+               android:layout_alignParentTop="true"
+               android:drawableRight="@drawable/oa_next"
+               android:hint="@string/common_select"
+               android:textColor="@color/hintColor" />
+          </RelativeLayout>
+
+          <RelativeLayout
+              android:id="@+id/hair_peoples_rl"
+              style="@style/item_menu">
+
+           <TextView
+               style="@style/item_menu_tag"
+               android:gravity="center_vertical"
+               android:text="@string/service_ktv_peoples" />
+
+           <TextView
+               android:id="@+id/tv_hair_peoples"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/company_tag"
+               android:drawablePadding="6dp"
+               android:drawableRight="@drawable/oa_next"
+               android:hint="@string/common_select" />
+          </RelativeLayout>
+         </LinearLayout>
+
+         <LinearLayout
+             android:id="@+id/ll_food"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:orientation="vertical"
+             android:visibility="visible">
+
+          <RelativeLayout
+              android:id="@+id/food_times_rl"
+              style="@style/item_menu">
+
+           <TextView
+               style="@style/item_menu_tag"
+               android:layout_alignParentLeft="true"
+               android:layout_alignParentStart="true"
+               android:layout_alignParentTop="true"
+               android:gravity="center_vertical"
+               android:text="@string/service_food_times" />
+
+           <TextView
+               android:id="@+id/tv_food_times"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/remark_tag"
+               android:drawablePadding="6dp"
+               android:drawableRight="@drawable/oa_next"
+               android:ellipsize="end"
+               android:hint="@string/common_select" />
+          </RelativeLayout>
+
+          <RelativeLayout
+              android:id="@+id/food_rooms_rl"
+              style="@style/item_menu">
+
+           <TextView
+
+               style="@style/item_menu_tag"
+               android:gravity="center_vertical"
+               android:text="@string/service_food_rooms"
+               android:textColor="@color/hintColor" />
+
+           <TextView
+               android:id="@+id/tv_food_rooms"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/company_add_tag"
+               android:drawableRight="@drawable/oa_next"
+               android:hint="@string/common_select"
+               android:textColor="@color/hintColor" />
+          </RelativeLayout>
+
+          <RelativeLayout
+              android:id="@+id/food_peoples_rl"
+              style="@style/item_menu">
+
+           <TextView
+               style="@style/item_menu_tag"
+               android:gravity="center_vertical"
+               android:text="@string/service_food_peoples" />
+
+           <TextView
+               android:id="@+id/tv_food_peoples"
+               style="@style/item_menu_input"
+               android:layout_width="290dp"
+               android:layout_toRightOf="@id/company_tag"
+               android:drawablePadding="6dp"
+               android:drawableRight="@drawable/oa_next"
+               android:hint="@string/common_select" />
+          </RelativeLayout>
+         </LinearLayout>
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="10dp" />
+
+
+          <LinearLayout
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:orientation="vertical">
+
+            <RelativeLayout
+                android:id="@+id/name_rl"
+                style="@style/item_menu">
+
+              <TextView
+                  style="@style/item_menu_tag"
+                  android:layout_alignParentLeft="true"
+                  android:layout_alignParentStart="true"
+                  android:layout_alignParentTop="true"
+                  android:gravity="center_vertical"
+                  android:text="@string/service_name" />
+
+              <EditText
+                  android:id="@+id/tv_book_name"
+                  style="@style/item_menu_input"
+                  android:layout_width="290dp"
+                  android:layout_toRightOf="@id/remark_tag"
+                  android:drawablePadding="6dp"
+                  android:ellipsize="end"
+
+                  android:hint="@string/common_select" />
+
+              <EditText
+                  android:id="@+id/et_book_name"
+                  android:layout_width="match_parent"
+                  android:layout_height="50dp"
+                  android:layout_alignParentTop="true"
+                  android:layout_centerHorizontal="true"
+                  android:layout_marginTop="61dp"
+                  android:background="@color/white"
+                  android:enabled="false"
+                  android:gravity="top"
+                  android:paddingLeft="10dp"
+                  android:textSize="15sp" />
+
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/phone_rl"
+                style="@style/item_menu">
+
+              <TextView
+                  style="@style/item_menu_tag"
+                  android:layout_alignParentLeft="true"
+                  android:layout_alignParentStart="true"
+                  android:layout_alignParentTop="true"
+                  android:gravity="center_vertical"
+                  android:text="@string/service_phone" />
+
+              <EditText
+                  android:id="@+id/tv_book_phone"
+                  style="@style/item_menu_input"
+                  android:layout_width="290dp"
+                  android:layout_toRightOf="@id/remark_tag"
+                  android:drawablePadding="6dp"
+                  android:ellipsize="end"
+
+                  android:hint="@string/common_select" />
+
+              <EditText
+                  android:id="@+id/et_book_phone"
+                  android:layout_width="match_parent"
+                  android:layout_height="50dp"
+                  android:layout_alignParentTop="true"
+                  android:layout_centerHorizontal="true"
+                  android:layout_marginTop="61dp"
+                  android:background="@color/white"
+                  android:enabled="false"
+                  android:gravity="top"
+                  android:paddingLeft="10dp"
+                  android:textSize="15sp" />
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/notes_rl"
+                style="@style/item_menu">
+
+              <TextView
+                  style="@style/item_menu_tag"
+                  android:layout_alignParentLeft="true"
+                  android:layout_alignParentStart="true"
+                  android:layout_alignParentTop="true"
+                  android:gravity="center_vertical"
+                  android:text="@string/service_notes" />
+
+              <EditText
+                  android:id="@+id/tv_book_notes"
+                  style="@style/item_menu_input"
+                  android:layout_width="290dp"
+                  android:layout_toRightOf="@id/remark_tag"
+                  android:drawablePadding="6dp"
+                  android:ellipsize="end"
+
+                  android:hint="@string/common_select" />
+
+              <EditText
+                  android:id="@+id/et_book_notes"
+                  android:layout_width="match_parent"
+                  android:layout_height="50dp"
+                  android:layout_alignParentTop="true"
+                  android:layout_centerHorizontal="true"
+                  android:layout_marginTop="61dp"
+                  android:background="@color/white"
+                  android:enabled="false"
+                  android:gravity="top"
+                  android:paddingLeft="10dp"
+                  android:textSize="15sp" />
+            </RelativeLayout>
+          </LinearLayout>
+
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginBottom="30dp"
+                android:layout_marginTop="60dp">
+
+                <Button
+                    android:id="@+id/submit_btn"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentBottom="true"
+                    android:layout_marginBottom="10dp"
+                    android:layout_marginLeft="20dp"
+                    android:layout_marginRight="20dp"
+                    android:background="@drawable/bg_bule_btn"
+                    android:padding="10dp"
+                    android:text="@string/app_button_commit"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/text_main" />
+            </RelativeLayout>
+        </LinearLayout>
+
+
+    </ScrollView>
+</android.support.constraint.ConstraintLayout>

+ 9 - 0
app_modular/appbooking/src/main/res/layout/activity_bservice_list.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.modular.booking.activity.services.BServiceListActivity">
+
+</android.support.constraint.ConstraintLayout>

+ 19 - 0
app_modular/appbooking/src/main/res/layout/activity_bservices.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/bg_main"
+    tools:context="com.modular.booking.activity.services.BServicesActivity">
+    <com.core.widget.VoiceSearchView
+        android:id="@+id/voiceSearchView"
+        android:layout_width="match_parent"
+        android:layout_height="48dp" />
+    <com.handmark.pulltorefresh.library.PullToRefreshListView
+        android:id="@+id/mListView"
+        android:layout_below="@+id/voiceSearchView"
+        style="@style/normalListView"
+        android:listSelector="@null"
+        android:divider="@drawable/bg_bar" />
+</RelativeLayout>

+ 38 - 0
app_modular/appbooking/src/main/res/layout/header_bservices_grid.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" 
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+     <com.core.widget.view.MyGridView
+         android:id="@+id/mGridView"
+         android:layout_width="match_parent"
+         android:layout_height="wrap_content"
+         android:background="@color/white"
+         android:horizontalSpacing="1dp"
+         android:verticalSpacing="1dp"
+         android:numColumns="3"
+         android:paddingTop="5dp"
+         android:scrollbars="none">
+     </com.core.widget.view.MyGridView>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:background="@color/white"
+    
+        android:gravity="center"
+        android:orientation="vertical">
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:layout_gravity="center"
+            android:padding="5dp"
+            android:text="@string/service_hot_list"/>
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:background="@color/item_line" />
+        
+    </LinearLayout>
+</LinearLayout>

+ 29 - 0
app_modular/appbooking/src/main/res/layout/item_bservice_header.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:gravity="center"
+    android:layout_height="match_parent">
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="@color/black"
+        android:textStyle="bold"
+        android:layout_margin="3dp"
+        android:textSize="17sp"
+        android:text="*****"/>
+    <TextView
+        android:id="@id/tv_desc"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_margin="3dp"
+        android:text="*****"/>
+    <de.hdodenhof.circleimageview.CircleImageView
+        android:id="@+id/iv_menu"
+        android:layout_width="45dp"
+        android:layout_height="45dp"
+        android:layout_marginBottom="10dp"
+        android:background="@null"
+        android:src="@drawable/defaultpic">
+    </de.hdodenhof.circleimageview.CircleImageView>
+</LinearLayout>

+ 92 - 0
app_modular/appbooking/src/main/res/layout/item_bservice_list.xml

@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal" 
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center_vertical">
+<ImageView
+    android:id="@+id/iv_icon"
+    android:layout_width="80dp"
+    android:layout_height="80dp" 
+    android:layout_margin="10dp"
+    android:src="@drawable/defaultpic"/>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="10dp"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tvTitle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="南山连锁店"
+                android:textSize="18sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/tvType"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:text="餐饮"
+                android:textSize="10sp" />
+        </LinearLayout>
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tvStart"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="****" />
+        </LinearLayout>
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tvDistance"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="339m" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tvCash"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="58代100"
+                android:textColor="@color/light_green" />
+
+            <Button
+                android:id="@+id/btBook"
+                android:layout_width="65dp"
+                android:layout_height="25dp"
+                android:background="@drawable/bg_bule_btn"
+                android:text="@string/booking"
+                android:textColor="@color/white" />
+        </LinearLayout>
+
+       
+
+    </LinearLayout>
+</LinearLayout>

+ 28 - 0
app_modular/appbooking/src/main/res/values/strings.xml

@@ -1,6 +1,33 @@
 <resources>
     <string name="app_name">appbooking</string>
+    <string name="booking">预约</string>
+     <!-- 服务预约-->
+    <string name="service_name">姓名</string>
+    <string name="service_phone">电话</string>
+    <string name="service_notes">备注</string>
+    <string name="service_hot_list">热门推荐</string>
+    
+    <string name="service_ktv_times">欢唱时段</string>
+    <string name="service_ktv_rooms">包房预定</string>
+    <string name="service_ktv_peoples">人数</string>
 
+    <string name="service_club_times">预约技师</string>
+    <string name="service_club_rooms">服务时段</string>
+    
+    <string name="service_hospital_times">科室</string>
+    <string name="service_hospital_rooms">医生</string>
+    <string name="service_hospital_peoples">时间</string>
+
+    <string name="service_sport_times">运动时间</string>
+    <string name="service_sport_rooms">运动项目</string>
+    <!--美容美发-->
+    <string name="service_hair_times">服务时间</string>
+    <string name="service_hair_rooms">服务项目</string>
+
+    <string name="service_food_times">用餐时间</string>
+    <string name="service_food_rooms">用餐人数</string>
+    <string name="service_food_peoples">需要包间</string>
+    
     <!--预约功能-->
     <string name="booking_personal">个人预约</string>
     <string name="booking_business">商务预约</string>
@@ -10,6 +37,7 @@
     <string name="booking_add_company">企业</string>
 
 
+
     <string-array name="booking_reject">
         <item>请选择拒理由</item>
         <item>工作繁忙</item>

+ 4 - 0
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/ContactsActivity.java

@@ -292,9 +292,13 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         ArrayList<ContactsModel> models = new ArrayList<>();
         for (int i = 0; i < adapter.getModels().size(); i++) {
             if (adapter.getModels().get(i).isClick) {
+                if (StringUtil.isEmpty(adapter.getModels().get(i).getImid())){
+                    adapter.getItem(i).setImid("0");
+                }
                 models.add(adapter.getItem(i));
             }
         }
+        LogUtil.d("myTest","选择的联系人:"+JSON.toJSONString(models));
         return models;
     }