package cn.shangyu.gdxzExpert.activity; import android.app.Activity; import android.content.Intent; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import com.gyf.immersionbar.ImmersionBar; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.RequestParams; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack; import com.lidroid.xutils.http.client.HttpRequest.HttpMethod; import org.json.JSONException; import org.json.JSONObject; import java.util.List; import cn.shangyu.gdxzExpert.R; import cn.shangyu.gdxzExpert.base.BaseActivity; import cn.shangyu.gdxzExpert.bean.MonthDetailBean; import cn.shangyu.gdxzExpert.bean.MonthDetailBean.DataFee; import cn.shangyu.gdxzExpert.bean.MonthDetailBean.DataTime; import cn.shangyu.gdxzExpert.ecdemo.ui.SettingItem; import cn.shangyu.gdxzExpert.http.HttpHelper; import cn.shangyu.gdxzExpert.utils.Constant; import cn.shangyu.gdxzExpert.utils.GsonTools; import cn.shangyu.gdxzExpert.utils.LogUtil; import cn.shangyu.gdxzExpert.utils.SharePrefUtil; import cn.shangyu.gdxzExpert.utils.ToastUtil; import cn.shangyu.gdxzExpert.utils.UIUtils; import cn.shangyu.gdxzExpert.utils.Url; import cn.shangyu.gdxzExpert.widget.LoadingPage.ResultState; /** * * @author ssy * @date 2015-8-31 下午2:47:47 * Copyright (C) 2015 河南商宇科技有限公司 * * 功能说明:我的-服务设置-电话咨询 */ public class TelephoneConsultationActivity extends BaseActivity { private TextView tv_howLong; private EditText et_ten_price; private EditText et_twenty_price; private SettingItem m_consultation; public static final int RESILTCODE = 99; private String price = ""; private String howLong = ""; private String isEnable = ""; //电话咨询服务查看 public static String callServiceDetailUrl=Url.getcallServiceDetail; //电话服务设置1(价格、人次等设置) public static String callServiceFeeUrl=Url.getcallServiceFee; //电话服务设置2(时间设置) public static String callServiceTimeUrl=Url.getcallServiceTime; private String callWeek = ""; private String startDate = ""; private String hl = ""; private Button bt_ok; private LinearLayout m_service; private String startDateArr = ""; @Override public void setTitle() { top_title.setText("电话咨询"); } @Override public View onCreateSuccessedView() { ImmersionBar.with(this).keyboardEnable(true).statusBarDarkFont(true).titleBar(mToolbar).init(); View view = UIUtils.inflate(R.layout.activity_telephone_consultation); m_consultation = (SettingItem) view.findViewById(R.id.switch_telephone_consultation);//是否开启服务 et_ten_price = (EditText) view.findViewById(R.id.et_ten_price);//10分钟价格 et_twenty_price = (EditText) view.findViewById(R.id.et_twenty_price);//20分钟价格 m_service = (LinearLayout) view.findViewById(R.id.rl_setting_howLong); tv_howLong = (TextView) view.findViewById(R.id.tv_howLong);//服务时段回显 bt_ok = (Button) view.findViewById(R.id.bt_ok); //初始化是否开启 boolean isOpen = SharePrefUtil.getBoolean(ct, "Telephone_m_consultation", false); m_consultation.setChecked(isOpen); //是否开启服务 m_consultation.getCheckedTextView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { m_consultation.toggle(); if (m_consultation.isChecked()) { setEnable(true); operaterVIP(1); } else { setEnable(false); operaterVIP(0); } } }); //初始化是否选中 if (m_consultation.isChecked()) { setEnable(true); }else{ setEnable(false); } m_service.setOnClickListener(this); bt_ok.setOnClickListener(this); //从sp里取出缓存 String monthDetail = SharePrefUtil.getString(ct, callServiceDetailUrl, null); if (!TextUtils.isEmpty(monthDetail)) { processData(monthDetail, true, 0, true); }else{ showProgressDialog("正在加载"); } // showProgressDialog("加载中..."); //查看服务设置 lookAndSetMonth(callServiceDetailUrl, true, 0, false); return view; } /** * 设置未选中则禁止输入 * setEnable * * @param isEnable * void */ private void setEnable(boolean isEnable){ // et_ten_price.setEnabled(isEnable); // et_twenty_price.setEnabled(isEnable); // bt_ok.setEnabled(isEnable); // m_service.setEnabled(isEnable); if (isEnable) { bt_ok.setVisibility(View.VISIBLE); }else{ bt_ok.setVisibility(View.GONE); } } @Override public ResultState onLoad() { return ResultState.STATE_SUCCESSED; } @Override protected void processClick(View v) { switch (v.getId()) { case R.id.bt_ok: //确定提交设置 submitSetting(); break; case R.id.rl_setting_howLong: // 服务时段 Intent intent = new Intent(ct, SelectDateTimeActivity.class); intent.putExtra("callWeek", callWeek);//把获取的星期几传过去 intent.putExtra("startDate", startDateArr);//把选择的时间传过去,以便回显设置的时间 LogUtil.i("callWeek = "+callWeek+", startDate = "+startDateArr); startActivityForResult(intent, RESILTCODE); break; default: break; } } /** * 修改设置提交 * submitSetting * * void */ private void submitSetting() { String ten_price = et_ten_price.getText().toString();//价格 String twenty_price = et_twenty_price.getText().toString();//次数 if (m_consultation.isChecked()) { isEnable = "1";//开启 }else{ isEnable = "0";//关闭 } if (TextUtils.isEmpty(ten_price) || TextUtils.isEmpty(twenty_price)) { ToastUtil.showToast("请输入价格"); return ; } if (Double.parseDouble(ten_price) >= Double.parseDouble(twenty_price)) { ToastUtil.showToast("10分钟的电话咨询价格不可以大于或者等于20分钟的电话咨询价格!"); return ; } if (0 > Double.parseDouble(ten_price)) { ToastUtil.showToast("价格最小0元"); return ; } if (100000 < Double.parseDouble(ten_price)) { ToastUtil.showToast("价格最大100000元"); return ; } if (0 > Double.parseDouble(twenty_price)) { ToastUtil.showToast("价格最小0元"); return ; } if (100000 < Double.parseDouble(twenty_price)) { ToastUtil.showToast("价格最大100000元"); return ; } if (TextUtils.isEmpty(callWeek) && TextUtils.isEmpty(startDate)) { ToastUtil.showToast("请设置电话咨询时间"); return ; } showProgressDialog("提交中..."); //价格 (多个价格以逗号隔开) 必填 price = ten_price + "," + twenty_price; //时长 (多个以逗号隔开,与价格一一对应)必填 howLong = "10,20";//这里按照页面的是10分钟,20分钟,写死,如果以后更改分钟,请注意。 //价格、人次等设置 lookAndSetMonth(callServiceFeeUrl, false, 1, false); } private void lookAndSetMonth(final String loadUrl, final boolean isLook, final int type, final boolean isCache) { String expertUuid = SharePrefUtil.getString(UIUtils.getContext(), Constant.uuid, ""); RequestParams params = new RequestParams();//封装参数 if (isLook && 0 == type) {//判断是查看服务,还是设置服务 params.addBodyParameter("expertUuid", expertUuid); }else if (!isLook && 1 == type) {//价格,人次设置 params.addBodyParameter("price", price); params.addBodyParameter("howLong", howLong); params.addBodyParameter("isEnable", isEnable); params.addBodyParameter("expertUuid", expertUuid); }else if (!isLook && 2 == type) {//时间设置 //取出电话咨询uuid String callServiceUuid = SharePrefUtil.getString(ct, "callServiceUuid",""); params.addBodyParameter("callWeek", callWeek); params.addBodyParameter("startDate", startDate); params.addBodyParameter("callServiceUuid", callServiceUuid); } //请求数据 HttpHelper.loadData(HttpMethod.POST, loadUrl, params, new RequestCallBack() { @Override public void onSuccess(ResponseInfo info) { if (isCache) { SharePrefUtil.saveString(ct, callServiceDetailUrl, info.result); }else{ processData(info.result, isLook, type, false); } } @Override public void onFailure(HttpException arg0, String arg1) { LogUtil.i("数据请求失败了: " + arg1); closeProgressDialog(); ToastUtil.showToast("请求失败,请稍候再试"); } }); } //解析数据 protected void processData(String result, boolean isLook, int type, boolean isCache) { MonthDetailBean bean = GsonTools.fromGsonToBean(result,MonthDetailBean.class); //判断是查看还是修改 if (isLook) { SharePrefUtil.saveString(ct, callServiceDetailUrl, result); closeProgressDialog(); if ("1".equals(bean.code)) {//查询成功 if (bean.data != null && !isCache) { if (1 == bean.data.isEnable) {//是否开启,1是,0否 m_consultation.setChecked(true); }else{ m_consultation.setChecked(false); } SharePrefUtil.saveBoolean(ct, "Telephone_m_consultation", m_consultation.isChecked()); } //价格 List fee = bean.fee; if (fee != null && fee.size() > 0) { for (int i = 0; i < fee.size(); i++) { int hl = fee.get(i).howLong; // int price = Integer.parseInt(fee.get(i).price); int price = (int) Math.round(Double.parseDouble(fee.get(i).price)); switch (hl) { case 10://10分钟的价格 et_ten_price.setText(price+""); break; case 20://20分钟的 et_twenty_price.setText(price+""); break; default: break; } } } LogUtil.i("bean.data====="+result); //时间 List time = bean.time; tv_howLong.setText(""); callWeek = ""; startDate = ""; if (time != null && time.size() > 0) { for (int i = 0; i < time.size(); i++) { String cw = time.get(i).callWeek; String w = ""; if (!TextUtils.isEmpty(cw)) { callWeek += cw + ","; switch (Integer.parseInt(cw)) { case 1: w = "星期日 "; break; case 2: w = "星期一 "; break; case 3: w = "星期二 "; break; case 4: w = "星期三 "; break; case 5: w = "星期四 "; break; case 6: w = "星期五 "; break; case 7: w = "星期六 "; break; } } String sd = time.get(i).startDate; String ed = time.get(i).endDate; String m = sd + "-" + ed; startDate += m + ";"; startDateArr += "#" + sd + ";"; //查看的回显 if (i == time.size() - 1) { tv_howLong.append(w+m); }else{ tv_howLong.append(w + m + ","); } } } //如果返回的code是 3 说明该服务已经被禁用 radiobutton禁用 }else if("3".equals(bean.code)){ SharePrefUtil.saveString(ct, callServiceDetailUrl, null); m_consultation.setChecked(false); m_consultation.setEnabled(false); ToastUtil.showMessage(bean.message, 1); } } else {//修改设置 if ("1".equals(bean.code)) {//设置成功 if (1 == type) { //时间设置 //保存电话uuid到sp MonthDetailBean b = GsonTools.fromGsonToBean(result,MonthDetailBean.class); SharePrefUtil.saveString(ct, "callServiceUuid",b.data.uuid); if (1 == bean.data.isEnable) {//是否开启,1是,0否 SharePrefUtil.saveBoolean(ct, "Telephone_m_consultation", true); }else{ SharePrefUtil.saveBoolean(ct, "Telephone_m_consultation", false); } lookAndSetMonth(callServiceTimeUrl, false, 2, false); }else if (2 == type) { closeProgressDialog(); ToastUtil.showToast("设置成功"); lookAndSetMonth(callServiceDetailUrl, true, 0, true); } }else{ closeProgressDialog(); ToastUtil.showToast(bean.message); } } //初始化是否选中 if (m_consultation.isChecked()) { setEnable(true); }else{ setEnable(false); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { LogUtil.i("onActivityResult=="+requestCode+"==="+resultCode+"=="+data); super.onActivityResult(requestCode, resultCode, data); if (requestCode == RESILTCODE && data != null && resultCode == Activity.RESULT_OK) { startDate = ""; callWeek = ""; startDateArr = ""; hl = ""; String[] Date = data.getStringArrayExtra("startDates"); String[] Week = data.getStringArrayExtra("callWeeks"); String[] weeks = data.getStringArrayExtra("weeks"); String[] DateArr = data.getStringArrayExtra("DateArr"); //时间(与星期对应,以分号分隔,如当天设置多个时段,时段之间以逗号分隔。 //如周日8:00-9:00,13:00-15:00 周一8:00-15:00 周二 13:00-15:00, //传参格式为”8:00-9:00,13:00-15:00;8:00-15:00;13:00-15:00;”) for (int i = 0; i < Date.length; i++) { if (!TextUtils.isEmpty(Date[i])) { Date[i] = Date[i].substring(0, Date[i].length() - 1); startDate += Date[i] + ";"; hl += weeks[i] + Date[i]; startDateArr += DateArr[i] + ";"; } LogUtil.i("Date=="+Date[i] + "startDateArr="+ startDateArr); } //遍历星期,并以星期 (多天以逗号分隔,如周日、周一、周二,传参格式为”1,2,3”)传参 for (int i = 0; i < Week.length; i++) { if (!TextUtils.isEmpty(Week[i])) { callWeek += Week[i] + ","; } LogUtil.i("Week=="+Week[i]); } LogUtil.i("callWeek = "+callWeek+", startDate = "+startDate); //回显 tv_howLong.setText(hl); } } /** * 服务是否开启 */ private void operaterVIP(int type) { String expertUuid = SharePrefUtil.getString(UIUtils.getContext(), Constant.uuid, ""); RequestParams params = new RequestParams(); params.addBodyParameter("expertUuid", expertUuid); params.addBodyParameter("VIPType", String.valueOf(1)); params.addBodyParameter("operaterType", String.valueOf(type)); LogUtil.d("expertUuid = " + expertUuid + ", VIPType = 1" + ", operaterType = " + type); showProgressDialog("操作中..."); HttpHelper.loadData(HttpMethod.POST, Url.operaterVIP, params, new RequestCallBack() { @Override public void onFailure(HttpException arg0, String arg1) { closeProgressDialog(); // ToastUtil.showToast(arg1); LogUtil.d("onFailure = " + arg1); m_consultation.toggle(); setEnable(false); SharePrefUtil.saveBoolean(ct, "Telephone_m_consultation", m_consultation.isChecked()); } @Override public void onSuccess(ResponseInfo info) { closeProgressDialog(); LogUtil.d("onSuccess = " + info.result); try { JSONObject objs = new JSONObject(info.result); String retcode = objs.getString("code"); String message = objs.getString("message"); if (retcode.equals(String.valueOf(1))) { //ToastUtil.showToast("开启成功!"); } else if (retcode.equals(String.valueOf(3))) { //ToastUtil.showToast("关闭成功"); setEnable(false); //如果返回状态是5 说明该专家所在医院或地区限制开启服务 默认关闭该服务 } else if (retcode.equals(String.valueOf(5))){ ToastUtil.showToast(message); m_consultation.toggle(); setEnable(false); m_consultation.setEnabled(false); }else{ ToastUtil.showToast(message); m_consultation.toggle(); setEnable(false); } SharePrefUtil.saveBoolean(ct, "Telephone_m_consultation", m_consultation.isChecked()); } catch (JSONException e) { e.printStackTrace(); // ToastUtil.showToast("提交失败!"); m_consultation.toggle(); setEnable(false); SharePrefUtil.saveBoolean(ct, "Telephone_m_consultation", m_consultation.isChecked()); } } }); } }