package com.electric.chargingpile.activity; import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.blankj.utilcode.util.EmptyUtils; import com.blankj.utilcode.util.LogUtils; import com.electric.chargingpile.R; import com.electric.chargingpile.adapter.SelectPileAdapter; import com.electric.chargingpile.application.MainApplication; import com.electric.chargingpile.constant.BaseConstants; import com.electric.chargingpile.constant.ChargingConstants; import com.electric.chargingpile.constant.UrlConstants; import com.electric.chargingpile.data.PileBean; import com.electric.chargingpile.util.BarColorUtil; import com.electric.chargingpile.util.EventBusUtil; import com.electric.chargingpile.util.JsonUtils; import com.electric.chargingpile.util.LoadingDialog; import com.electric.chargingpile.util.ToastUtil; import com.electric.chargingpile.view.AlertDialogTwo; import com.tencent.bugly.crashreport.CrashReport; import com.zhy.http.okhttp.OkHttpUtils; import com.zhy.http.okhttp.callback.StringCallback; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.net.URLEncoder; import java.util.List; import okhttp3.Call; import pub.devrel.easypermissions.AfterPermissionGranted; import pub.devrel.easypermissions.AppSettingsDialog; import pub.devrel.easypermissions.EasyPermissions; public class SelectPileActivity extends Activity implements View.OnClickListener ,EasyPermissions.PermissionCallbacks{ private ImageView ivBack; private SelectPileAdapter selectPileAdapter; private RecyclerView recyclerView; private LoadingDialog loadingDialog; private String pileId,result; private TextView tvRefresh,tvCharging; private static final String numType = "2"; private static final int startInterface = 2; private AlertDialogTwo alertDialog; private static final int RC_TELL_PERM = 124; private SelectPileActivity activity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_select_pile); BarColorUtil.initStatusBarColor(SelectPileActivity.this); activity =this; getIntentData(); initViews(); inirEvent(); if (EmptyUtils.isNotEmpty(pileId)) { getPileData(pileId); } } private void getIntentData(){ pileId = getIntent().getStringExtra(ChargingConstants.ORDERID); } private void initViews(){ ivBack = findViewById(R.id.iv_back); recyclerView = findViewById(R.id.rv_pile); loadingDialog= new LoadingDialog(this); loadingDialog.setCanceledOnTouchOutside(false); tvRefresh = findViewById(R.id.tv_refresh); tvCharging= findViewById(R.id.tv_charging); alertDialog = new AlertDialogTwo(this); } private void inirEvent(){ ivBack.setOnClickListener(this); tvRefresh.setOnClickListener(this); tvCharging.setOnClickListener(this); EventBusUtil.register(this); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.iv_back: finish(); break; case R.id.tv_refresh: result =""; if (EmptyUtils.isNotEmpty(pileId)) { getPileData(pileId); } break; case R.id.tv_charging: if (EmptyUtils.isNotEmpty(result)){ startCharging(result); }else { ToastUtil.showToast(getApplicationContext(),"请选择要充电的充电枪后开启",Toast.LENGTH_SHORT); } break; } } private void getPileData(String pileId){ loadingDialog.show(); String url = UrlConstants.HOST_URL+"api/charge/pile-info"; OkHttpUtils.get().url(url) .addParams("pileId",pileId) .build().execute(new StringCallback() { @Override public void onError(Call call, Exception e) { ToastUtil.showToast(getApplicationContext(),"网络异常,请检查您的网络连接", Toast.LENGTH_SHORT); CrashReport.postCatchedException(e); } @Override public void onResponse(String response) { if (loadingDialog.isShowing()){ loadingDialog.dismiss(); } if (EmptyUtils.isNotEmpty(response)){ LogUtils.e(response); String rtnCode = JsonUtils.getKeyResult(response,"rtnCode"); if ("01".equals(rtnCode)){ String data = JsonUtils.getKeyResult(response,"data"); List list = JsonUtils.parseToObjectList(data,PileBean.class); LogUtils.e(list.size()); selectPileAdapter = new SelectPileAdapter(getApplicationContext(), list); recyclerView.setLayoutManager(new GridLayoutManager(getApplicationContext(), 2)); recyclerView.setHasFixedSize(false); recyclerView.setAdapter(selectPileAdapter); } } } }); } private void startCharging(String result){ LogUtils.e(result); loadingDialog.show(); OkHttpUtils.get().url(UrlConstants.START_CHARGING_URL) .addParams(ChargingConstants.FLAG,numType) .addParams(ChargingConstants.URL, URLEncoder.encode(result)) .addParams(ChargingConstants.USERID, MainApplication.userId) .addParams(ChargingConstants.PWD,MainApplication.userPassword) .addParams("type","1") .build().connTimeOut(30000).readTimeOut(30000).execute(new StringCallback() { @Override public void onError(Call call, Exception e) { ToastUtil.showToast(getApplicationContext(),"网络异常,请检查您的网络连接", Toast.LENGTH_SHORT); CrashReport.postCatchedException(e); } @Override public void onResponse(String response) { LogUtils.e(response); if (EmptyUtils.isNotEmpty(response)) { dismissDialog(); handlingOperations(response, startInterface); } } }); } private void handlingOperations(String response,int interfaceType){ String rtnCode = com.google.zxing.client.android.JsonUtils.getKeyResult(response,"rtnCode"); String rtnMsg = com.google.zxing.client.android.JsonUtils.getKeyResult(response,"rtnMsg"); switch (rtnCode){ case "01": if (interfaceType == startInterface){ String data = JsonUtils.getKeyResult(response,"data"); String orderid = JsonUtils.getKeyResult(data,"orderId"); Intent intent = new Intent(getApplicationContext(),TLDLoadingActivity.class); intent.putExtra(ChargingConstants.ORDERID,orderid); startActivity(intent); finish(); } break; case "304": alertDialog.builder() .setMsg(rtnMsg) .setPositiveButton("去充值", new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(),AccountRechargeActivity.class); startActivity(intent); } }) // .setNegativeButton("开通免密支付", new View.OnClickListener() { // @Override // public void onClick(View v) { // Intent intent = new Intent(getApplicationContext(),NonSecretSeettingActivity.class); // Uri uri = Uri.parse("chongdianzhuang://"); // intent.setData(uri); // startActivity(intent); // } // }) .show(); break; case "305": alertDialog.builder() .setMsg(rtnMsg) .setPositiveButton("联系客服", new View.OnClickListener() { @Override public void onClick(View v) { tellTask(); } }).setNegativeButton("取消", new View.OnClickListener() { @Override public void onClick(View v) { } }).show(); break; case "309": alertDialog.builder() .setMsg(rtnMsg) .setPositiveButton("联系客服", new View.OnClickListener() { @Override public void onClick(View v) { tellTask(); } }).setNegativeButton("取消", new View.OnClickListener() { @Override public void onClick(View v) { } }).show(); break; case "306": //跳转到充电详情界面 String data306 = JsonUtils.getKeyResult(response,"data"); String orderid = JsonUtils.getKeyResult(data306, "orderId"); Intent intent306 = new Intent(getApplicationContext(),ChargingStatusActivity.class); intent306.putExtra(ChargingConstants.ORDERID,orderid); startActivity(intent306); finish(); break; case "307": alertDialog.builder() .setMsg(rtnMsg) .setPositiveButton("去充值", new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(),AccountRechargeActivity.class); startActivity(intent); } }).show(); break; case "311": alertDialog.builder() .setMsg(rtnMsg) .setPositiveButton("开通免密支付", new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(),NonSecretSeettingActivity.class); Uri uri = Uri.parse("chongdianzhuang://"); intent.setData(uri); startActivity(intent); } }).show(); break; case "1800": String data1800 = JsonUtils.getKeyResult(response,"data"); String pileId = JsonUtils.getKeyResult(data1800,"pileId"); Intent intent1800 = new Intent(getApplicationContext(),SelectPileActivity.class); intent1800.putExtra(ChargingConstants.ORDERID,pileId); startActivity(intent1800); break; default: ToastUtil.showToast(getApplicationContext(),rtnMsg,Toast.LENGTH_SHORT); break; } } @Subscribe(threadMode = ThreadMode.MAIN) public void eventHandler(String pileId){ result = pileId; } @Override protected void onDestroy() { super.onDestroy(); EventBusUtil.unregister(this); } @AfterPermissionGranted(RC_TELL_PERM) public void tellTask() { if (hasTellPermission()) { // Have permission, do the thing! // Toast.makeText(this, "TODO: Camera things", Toast.LENGTH_LONG).show(); String telNum = "4008810405"; Intent intent = new Intent(); intent.setAction("android.intent.action.CALL"); intent.addCategory("android.intent.category.DEFAULT"); intent.setData(Uri.parse("tel:" + telNum)); SelectPileActivity.this.startActivity(intent); } else { LogUtils.e("@@@@@@@"); // Ask for one permission EasyPermissions.requestPermissions( this, "该功能需要开启拨号权限,是否前往开启?", RC_TELL_PERM, Manifest.permission.CALL_PHONE); } } private boolean hasTellPermission() { return EasyPermissions.hasPermissions(this, Manifest.permission.CALL_PHONE); } @Override public void onPermissionsGranted(int requestCode, List perms) { } @Override public void onPermissionsDenied(int requestCode, List perms) { if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) { new AppSettingsDialog.Builder(SelectPileActivity.this, "该功能需要开启拨号权限,是否前往开启??").build().show(); } } private void dismissDialog(){ if (activity != null && !activity.isFinishing()) { if (loadingDialog.isShowing()){ loadingDialog.dismiss(); } } } }