Commit 33d53e1f by 罗翻

处理工单前增加活体检测

parent d46bcf9d
Showing with 694 additions and 213 deletions
......@@ -379,7 +379,7 @@ public class LivenessActivity extends Activity
/**
* 跳转Activity传递信息
*/
private void handleResult(final int resID, String delta, Map<String, byte[]> images) {
public void handleResult(final int resID, String delta, Map<String, byte[]> images) {
String resultString = getResources().getString(resID);
try {
jsonObject.put("result", resultString);
......
package com.dayu.common;
import android.text.Editable;
import android.text.TextWatcher;
/**
* Created by luofan
* on 2018/6/20.
*/
public class MyTextWatcher implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
}
......@@ -31,8 +31,8 @@ public class UserManager {
}
}
public void saveUserForJson(String json){
SPUtils.put("USER_INFO",json);
public void saveUserForJson(String json) {
SPUtils.put("USER_INFO", json);
}
public UserInfo getUser() {
......@@ -63,8 +63,9 @@ public class UserManager {
UserInfo userInfo = getUser();
if (userInfo != null) {
//有数据
//TODO
if (!TextUtils.isEmpty(userInfo.getAccountId()) && !TextUtils.isEmpty(userInfo.getSiteId())
&& !TextUtils.isEmpty(userInfo.getAccountName()) && userInfo.getDetectStatus() == 1) {
&& !TextUtils.isEmpty(userInfo.getAccountName()) && userInfo.getDetectStatus() == 1 && !TextUtils.isEmpty((String) SPUtils.get("USER_IDENTITY", ""))) {
return true;
} else {
return false;
......
......@@ -274,7 +274,8 @@
<string name="send_already">已发货</string>
<string name="modify_part_info">修改信息</string>
<string name="customer_acceptance">客户验收</string>
<string name="scan_code_for_appointment">请扫描二维码验收</string>
<string name="scan_code_for_appointment">请扫描二维码关注大鱼服务公众号</string>
<string name="scan_code_for_appointment_two">点击-我的服务-进行绑定登录后,选择工单付款</string>
<string name="order_record">工单记录</string>
<string name="order_num">工单编号</string>
<string name="order_state">工单状态</string>
......@@ -311,8 +312,8 @@
<string name="order_select_payer_notice">修改费用承担方可能会导致费用争议,请一定要确认清楚之后再操作</string>
<string name="order_payer_prove">费用承担证明</string>
<string name="server_info">服务信息</string>
<string name="payer_baonei">派单方承担(保内)</string>
<string name="payer_baowai">用户承担(保外)</string>
<string name="payer_baonei">派单方承担</string>
<string name="payer_baowai">用户承担</string>
<string name="payer_dialog_content">您还没有选择费用承担方,请选择后再提交验收</string>
<string name="payer_dialog_title">未选择费用承担方</string>
<string name="payer_select_title">确认操作</string>
......
......@@ -68,4 +68,5 @@ dependencies {
//ARouter
annotationProcessor "com.alibaba:arouter-compiler:$arouter_compiler_version"
compile project(':provider')
compile project(':IDCardLib')
}
......@@ -137,4 +137,8 @@ public class OrderApiFactory {
public static Observable<companyManager> getManagerMobile(int companyId, int managerType) {
return Api.getService(OrderService.class).getManagerMobile(companyId,managerType).compose(Api.applySchedulers());
}
public static Observable<Boolean> certificationLive(RequestBody body) {
return Api.getService(OrderService.class).certificationLive(body).compose(Api.applySchedulers());
}
}
......@@ -284,6 +284,7 @@ interface OrderService {
/**
* 单任务多数量提交工单.
*
* @param body
* @return
*/
......@@ -292,6 +293,7 @@ interface OrderService {
/**
* 查看多任务处理工单信息.
*
* @param id
* @return
*/
......@@ -300,8 +302,17 @@ interface OrderService {
/**
* 获取技术支持电话
*
* @return
*/
@GET(OrderConstant.COMPAY_MANAGER_MOBILE)
Observable<BaseResponse<companyManager>> getManagerMobile(@Query("companyId") int companyId, @Query("managerType") int managerType);
/**
* 接单活体检测.
*
* @return
*/
@GET(OrderConstant.FACE_CERTIFICAITON)
Observable<BaseResponse<Boolean>> certificationLive(@Body RequestBody body);
}
package com.dayu.order.api.protocol;
import java.io.Serializable;
import java.util.List;
/**
* 工单列表,异常单列表,工单记录列表的bean
* Created by luofan on 2017/11/14.
*/
public class Order {
public class Order implements Serializable{
/**
* id : 20
* orderNum : 201709249030024287834 接单数
......@@ -53,6 +54,15 @@ public class Order {
private List<Spu> spus;
private Integer commited;
private Integer kaCompanyId;
private Integer faceSwitch ;//0:关闭;1:打开
public Integer getFaceSwitch() {
return faceSwitch;
}
public void setFaceSwitch(Integer faceSwitch) {
this.faceSwitch = faceSwitch;
}
public Integer getKaCompanyId() {
return kaCompanyId;
......
......@@ -47,15 +47,15 @@ public class OrderDetail implements Serializable {
private Object customerCheckComment;
private Integer isPay;
private Object payType;
private Integer doorPrice;
private Double doorPrice;
private String doorPriceComment;
private Integer servicePrice;
private Double servicePrice;
private Object servicePriceComment;
private Integer materialCost;
private Object materialCostComment;
private Integer otherPrice;
private double otherPrice;
private Object otherPriceComment;
private Integer totalPrice;
private Double totalPrice;
private Object cancelOrderReason;
private Object closePhase;
private int siteId;
......@@ -428,11 +428,11 @@ public class OrderDetail implements Serializable {
this.payType = payType;
}
public Integer getDoorPrice() {
public Double getDoorPrice() {
return doorPrice;
}
public void setDoorPrice(Integer doorPrice) {
public void setDoorPrice(Double doorPrice) {
this.doorPrice = doorPrice;
}
......@@ -444,11 +444,11 @@ public class OrderDetail implements Serializable {
this.doorPriceComment = doorPriceComment;
}
public Integer getServicePrice() {
public Double getServicePrice() {
return servicePrice;
}
public void setServicePrice(Integer servicePrice) {
public void setServicePrice(Double servicePrice) {
this.servicePrice = servicePrice;
}
......@@ -476,11 +476,11 @@ public class OrderDetail implements Serializable {
this.materialCostComment = materialCostComment;
}
public Integer getOtherPrice() {
public Double getOtherPrice() {
return otherPrice;
}
public void setOtherPrice(Integer otherPrice) {
public void setOtherPrice(Double otherPrice) {
this.otherPrice = otherPrice;
}
......@@ -492,11 +492,11 @@ public class OrderDetail implements Serializable {
this.otherPriceComment = otherPriceComment;
}
public Integer getTotalPrice() {
public Double getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(Integer totalPrice) {
public void setTotalPrice(Double totalPrice) {
this.totalPrice = totalPrice;
}
......
......@@ -152,4 +152,8 @@ public class OrderConstant {
*/
public final static String COMPAY_MANAGER_MOBILE = "/api-ka-user/" + "companyManager/findCompanyManagerBy";
/**
* 接单活体检测校验.
*/
public final static String FACE_CERTIFICAITON = "/api-third/" +"detect/receiptOrderVerify";
}
......@@ -3,6 +3,7 @@ package com.dayu.order.presenter.multipleprocess;
import com.dayu.base.ui.presenter.BaseListPresenter;
import com.dayu.common.BaseView;
import com.dayu.widgets.listener.OnCloseListener;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -27,6 +28,12 @@ public interface MultipleProcessContract {
void showSignature();
void setPayStatus();
void showSelectPayerDialog(OnCloseListener listener);
void showNoPayerDialog();
boolean getSelectPayer();
}
abstract class Presenter extends BaseListPresenter<View> {
......
package com.dayu.order.presenter.multipleprocess;
import android.databinding.ObservableField;
import android.os.Bundle;
import com.alibaba.android.arouter.launcher.ARouter;
import com.dayu.base.api.BaseApiFactory;
import com.dayu.common.Constants;
import com.dayu.order.R;
import com.dayu.order.api.OrderApiFactory;
import com.dayu.order.api.protocol.Spu;
import com.dayu.order.common.OrderConstant;
import com.dayu.order.ui.activity.QrCodeActivity;
import com.dayu.order.ui.activity.SignatureActivity;
import com.dayu.provider.event.RefreshServe;
import com.dayu.provider.router.RouterPath;
......@@ -41,7 +44,6 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
private ArrayList<String> mImages = new ArrayList<>();
private Integer mNeedEsignature;
private String mSignatureUrl;
private boolean canPay;
@Override
public void onAttached() {
......@@ -67,11 +69,19 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
public void process() {
File file = new File(SignatureActivity.path);
if (!file.exists()) {
if (mNeedEsignature == 1 && !file.exists()) {
ToastUtils.showShortToast("请让客户签名!");
return;
}
commitePhoto();
if (mView.getSelectPayer()) {
mView.showNoPayerDialog();
} else {
mView.showSelectPayerDialog((dialog, confirm) -> {
if (confirm) {
commitePhoto();
}
});
}
}
private void commitePhoto() {
......@@ -154,8 +164,14 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString());
OrderApiFactory.commitOrder(body).subscribe(baseObserver(integer -> {
ToastUtils.showShortToast("提交验收成功");
ARouter.getInstance().build(RouterPath.PATH_MAIN).navigation();
EventBus.getDefault().post(new RefreshServe(1));
if (integer == 6) {
Bundle bundle = new Bundle();
bundle.putInt(Constants.TYPE, 1);
mView.startActivity(QrCodeActivity.class, bundle);
} else {
ARouter.getInstance().build(RouterPath.PATH_MAIN).navigation();
EventBus.getDefault().post(new RefreshServe(1));
}
}));
}
......@@ -175,8 +191,8 @@ public class MultipleProcessPresenter extends MultipleProcessContract.Presenter
}
Integer isPay = detail.getIsPay();
Integer payState = detail.getPayStatus();
if (isPay == 2 && payState == 3) {
mView.setPayStatus();
if (isPay == 2 && (payState == 3 || payState == 2)) {
mView.setPayStatus();
}
}));
}
......
......@@ -5,12 +5,18 @@ import android.os.Bundle;
import com.dayu.common.BaseApplication;
import com.dayu.common.Constants;
import com.dayu.provider.event.RefreshTab;
import com.dayu.event.UserInfo;
import com.dayu.order.R;
import com.dayu.order.api.OrderApiFactory;
import com.dayu.order.api.protocol.Order;
import com.dayu.order.common.OrderConstant;
import com.dayu.order.ui.activity.OrderDetailsActivity;
import com.dayu.order.ui.activity.OrderLivenessActivity;
import com.dayu.order.ui.fragment.OrderThreeTabFragment;
import com.dayu.provider.event.RefreshTab;
import com.dayu.utils.AppManager;
import com.dayu.utils.UserManager;
import com.dayu.widgets.CustomDialog;
import com.umeng.analytics.MobclickAgent;
import org.greenrobot.eventbus.EventBus;
......@@ -22,12 +28,15 @@ import io.reactivex.Observable;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import static com.dayu.utils.UIUtils.getString;
/**
* Created by luofan
* on 2017/11/8.
*/
public class OrderDoingPresenter extends orderDoingContract.Presenter {
private ObservableField<Object> datas = new ObservableField<>();
private static final int PAGE_INTO_LIVENESS = 100;
private int mUserId;
private int mSiteId;
private int mState;
......@@ -75,7 +84,7 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter {
@Override
public void getErrorOrder() {
OrderApiFactory.getErrorOrders(mUserId, mSiteId).subscribe(
baseObserver( errorOrder -> {
baseObserver(errorOrder -> {
datas.set(errorOrder);
EventBus.getDefault().post(new RefreshTab(-1));
}, responeThrowable -> datas.set(Constants.FAILED)));
......@@ -104,10 +113,27 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter {
}
@Override
public void dumpToFaceCert(Order order) {
CustomDialog customDialog = new CustomDialog(AppManager.getInstance().currentActivity(), R.style.CustomDialog, "为了保证您的账号安全和用户安全,请您本人进行人脸识别操作",
(dialog, confirm) -> {
if (confirm) {
Bundle bundle = new Bundle();
bundle.putSerializable(OrderConstant.ORDERS,order);
mView.startActivity(OrderLivenessActivity.class, bundle);
}
});
customDialog.setTitle("人脸识别")
.setNegativeButton(getString(R.string.cancle))
.setPositiveButton("去认证");
customDialog.show();
}
@Override
public void dumpDetail(int orderId) {
Bundle bundle = new Bundle();
bundle.putInt(Constants.ORDER_ID,orderId);
mView.startActivity(OrderDetailsActivity.class,bundle);
bundle.putInt(Constants.ORDER_ID, orderId);
mView.startActivity(OrderDetailsActivity.class, bundle);
MobclickAgent.onEvent(BaseApplication.getContext(), "check_order_detail");
}
}
......@@ -2,6 +2,7 @@ package com.dayu.order.presenter.orderdoing;
import com.dayu.common.BaseView;
import com.dayu.order.api.protocol.Order;
import com.dayu.order.presenter.BaseOrderPresenter;
import io.reactivex.Observable;
......@@ -45,5 +46,7 @@ public interface orderDoingContract {
*/
public abstract Observable<Integer> startServer(int orderId, double latitude, double longitude);
public abstract void dumpToFaceCert(Order order);
}
}
package com.dayu.order.presenter.orderliveness;
import com.dayu.base.ui.presenter.BasePresenter;
import com.dayu.common.BaseView;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* Created by luo
* on 2016/8/4.
*/
public interface OrderLivenessContract {
interface View extends BaseView {
}
abstract class Presenter extends BasePresenter<View> {
public abstract void verifyIdentity(List<String> list);
public abstract void commitePhoto(ArrayList<File> list, String delta);
}
}
package com.dayu.order.presenter.orderliveness;
import android.os.Bundle;
import com.dayu.base.api.BaseApiFactory;
import com.dayu.common.Constants;
import com.dayu.order.R;
import com.dayu.order.api.OrderApiFactory;
import com.dayu.order.api.protocol.Order;
import com.dayu.order.common.OrderConstant;
import com.dayu.order.ui.activity.ServerInfoActivity;
import com.dayu.order.ui.activity.ServerListActivity;
import com.dayu.utils.SPUtils;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UserManager;
import org.json.JSONObject;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
/**
* Created by luofan
* on 2017/11/8.
*/
public class OrderLivenessPresenter extends OrderLivenessContract.Presenter {
private String mDelta;
private Order mOrder;
private String mName;
private String mCardNum;
@Override
public void onAttached() {
Bundle bundle = mView.getBundle();
mOrder = (Order) bundle.getSerializable(OrderConstant.ORDERS);
mName = UserManager.getInstance().getUser().getAccountName();
mCardNum = (String) SPUtils.get("USER_IDENTITY", "");
}
@Override
public void commitePhoto(ArrayList<File> list, String delta) {
mDelta = delta;
BaseApiFactory.uploadPhoto(packPhoto(list), "nowatermark").subscribe(baseObserver(this::verifyIdentity));
}
private MultipartBody.Part[] packPhoto(List<File> files) {
MultipartBody.Part[] part = new MultipartBody.Part[files.size()];
for (int i = 0; i < files.size(); i++) {
RequestBody requestFile =
RequestBody.create(MediaType.parse("multipart/form-data"), files.get(i));
MultipartBody.Part body =
MultipartBody.Part.createFormData("fileUpload", files.get(i).getName(), requestFile);
part[i] = body;
}
return part;
}
@Override
public void verifyIdentity(List<String> list) {
HashMap<String, Object> params = new HashMap<>();
params.put("name", mName);
params.put("cardNumber", mCardNum);
params.put("checkDelta", 0);
params.put("comparisonType", 1);
params.put("delta", mDelta);
params.put("imageAction1Url", list.get(2));
params.put("imageBestUrl", list.get(0));
params.put("imageEnvUrl", list.get(1));
params.put("multiOrientedDetection", 1);
JSONObject jsonObject = new JSONObject(params);
RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString());
mView.showDialog();
Bundle bundle = new Bundle();
OrderApiFactory.certificationLive(body).subscribe(baseObserver(aBoolean -> {
if (aBoolean) {
SPUtils.put(Constants.ORDER_ID+mOrder.getId(),true);
if (mOrder.getKaCompanyId() != null) {
bundle.putInt(OrderConstant.KAADDRESSID, mOrder.getKaCompanyId());
}
if (mOrder.getSpus().size() > 1) {
bundle.putInt(Constants.ID, mOrder.getId());
mView.startActivity(ServerInfoActivity.class, bundle);
} else if (mOrder.getSpus().size() == 1) {
bundle.putInt(Constants.ID, mOrder.getSpus().get(0).getId());
mView.startActivity(ServerListActivity.class, bundle);
}
}
}, responeThrowable -> {
if ("DETECT_ERROR00001".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.please_upload_cleare_identity);
} else if ("DETECT_ERROR00003".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.please_upload_yourself_face);
} else if ("DETECT_ERROR00003".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.server_error);
} else if ("DETECT_ERROR00003".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.please_upload_identity_front);
} else {
ToastUtils.showShortToast(R.string.certification_not_pass);
}
mView.dumpBack();
}));
}
}
......@@ -23,12 +23,14 @@ public interface ProcessOrderContract {
/**
* 初始化图片.
*
* @param list
*/
void initPhotoView(ArrayList<String> list);
/**
* 初始化费用承担证明图片.
*
* @param list
*/
void initPayerPhotoView(ArrayList<String> list);
......@@ -59,7 +61,6 @@ public interface ProcessOrderContract {
public abstract void getOrderInfo(int orderId);
/**
*
* @param imageUrl
* @param orderId
* @param editText
......@@ -79,9 +80,9 @@ public interface ProcessOrderContract {
public abstract void commitOrder(List<String> imageUrl, int orderId, String editText, int engineerId,
int isPay, String doorPrice, String doorPriceComment,
String servicePrice, String materialCost, String otherPrice,
String brandName,String productModel,String sn,int repairType,List<String> picsCost);
String brandName, String productModel, String sn, int repairType, List<String> picsCost);
public abstract void commitPhoto(List<String> imageUrl,List<String> payerUrl);
public abstract void commitPhoto(List<String> imageUrl, List<String> payerUrl);
/**
* 保存订单.
......@@ -100,13 +101,12 @@ public interface ProcessOrderContract {
/**
* 跳转到服务说明.
*/
*/
public abstract void dumpToServerInstruction();
/**
* 显示费用承担方.
*/
public abstract void showPayerDialog();
}
}
......@@ -2,6 +2,8 @@ package com.dayu.order.ui.activity;
import android.content.Intent;
import android.os.Environment;
import android.text.Editable;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -15,6 +17,7 @@ import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.common.Constants;
import com.dayu.common.MyTextWatcher;
import com.dayu.order.R;
import com.dayu.order.databinding.ActivityMultipleProcessBinding;
import com.dayu.order.presenter.multipleprocess.MultipleProcessContract;
......@@ -23,7 +26,9 @@ import com.dayu.utils.GlideImageLoader;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UtilsScreen;
import com.dayu.widgets.CustomDialog;
import com.dayu.widgets.SwitchImage;
import com.dayu.widgets.listener.OnCloseListener;
import com.luck.picture.lib.PictureSelectionModel;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
......@@ -31,6 +36,7 @@ import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import java.io.File;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -63,6 +69,7 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
private boolean isShowSignature;
private SwitchImage swtich;
private boolean canPay;
private TextView mTotalMoney;
@Override
public void setPresenter() {
......@@ -105,6 +112,7 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
mServerPrice = view.findViewById(R.id.et_serve_price);
mMaterialsPrice = view.findViewById(R.id.et_materials_price);
mOtherPrice = view.findViewById(R.id.et_other_price);
mTotalMoney = view.findViewById(R.id.tv_total_money);
mDoorInfo = view.findViewById(R.id.et_door_info);
mRepairType = view.findViewById(R.id.tv_payer);
mArrow = view.findViewById(R.id.iv_payer);
......@@ -114,7 +122,7 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
mIcon = view.findViewById(R.id.tv_icon);
swtich.setOnClickListener(v -> {
if (true) {
if (canPay) {
ToastUtils.showShortToast("您上次已经收取过客户费用,请勿重新收取!");
} else {
if (swtich.getSwitchButton()) {
......@@ -146,12 +154,50 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
mArrow.setVisibility(View.GONE);
mPayerNotice.setVisibility(View.GONE);
}
mSignature.setOnClickListener(v -> {
startActivityForReult(SignatureActivity.class, 100);
});
mSignature.setOnClickListener(v -> startActivityForReult(SignatureActivity.class, 100));
if (isShowSignature) {
mAllSignature.setVisibility(View.VISIBLE);
}
initTotal();
}
private void initTotal() {
mDoorPrice.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
mTotalMoney.setText(getSum());
}
});
mServerPrice.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
mTotalMoney.setText(getSum());
}
});
mMaterialsPrice.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
mTotalMoney.setText(getSum());
}
});
mOtherPrice.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
mTotalMoney.setText(getSum());
}
});
}
public String getSum() {
return new DecimalFormat("0.00").format(parseDb(mDoorPrice.getText().toString()) + parseDb(mServerPrice.getText().toString()) + parseDb(mMaterialsPrice.getText().toString()) + parseDb(mOtherPrice.getText().toString()));
}
public Double parseDb(String str) {
if (TextUtils.isEmpty(str)) {
return 0.0;
} else {
return Double.parseDouble(str);
}
}
@Override
......@@ -298,6 +344,32 @@ public class MultipleProcessActivity extends BaseActivity<MultipleProcessPresent
}
@Override
public void showNoPayerDialog() {
CustomDialog customDialog = new CustomDialog(mActivity, R.style.CustomDialog, getString(R.string.payer_dialog_content)
, (dialog, confirm) -> dialog.dismiss());
customDialog.setTitle(getString(R.string.payer_dialog_title))
.setPositiveButton(getString(R.string.comfirm))
.setOneButton(true);
customDialog.show();
}
@Override
public boolean getSelectPayer() {
return TextUtils.isEmpty(mRepairType.getText().toString());
}
@Override
public void showSelectPayerDialog(OnCloseListener listener) {
CustomDialog customDialog = new CustomDialog(mActivity, R.style.CustomDialog, getString(R.string.payer_select_content)
, listener);
customDialog.setTitle(getString(R.string.payer_select_title))
.setNegativeButton(getString(R.string.cancle))
.setPositiveButton(getString(R.string.submit))
.setPositiveButtonColor(UIUtils.getColor(R.color.common_red));
customDialog.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
......
......@@ -2,6 +2,8 @@ package com.dayu.order.ui.activity;
import android.content.Intent;
import android.os.Environment;
import android.text.Editable;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -14,6 +16,7 @@ import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.common.Constants;
import com.dayu.common.MyTextWatcher;
import com.dayu.order.R;
import com.dayu.order.databinding.ActivityProcessOrderBinding;
import com.dayu.order.presenter.processorder.ProcessOrderContract;
......@@ -32,6 +35,7 @@ import com.luck.picture.lib.entity.LocalMedia;
import com.umeng.analytics.MobclickAgent;
import java.io.File;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
......@@ -80,6 +84,46 @@ public class ProcessOrderActivity extends BaseActivity<ProcessOrderPresenter, Ac
mBind.ivDelete.setVisibility(View.GONE);
mSnImages.clear();
});
initTotal();
}
private void initTotal() {
mBind.etDoorPrice.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
mBind.tvTotalMoney.setText(getSum());
}
});
mBind.etServePrice.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
mBind.tvTotalMoney.setText(getSum());
}
});
mBind.etMaterialsPrice.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
mBind.tvTotalMoney.setText(getSum());
}
});
mBind.etOtherPrice.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
mBind.tvTotalMoney.setText(getSum());
}
});
}
public String getSum() {
return new DecimalFormat("0.00").format(parseDb(mBind.etDoorPrice.getText().toString()) + parseDb(mBind.etServePrice.getText().toString()) + parseDb(mBind.etMaterialsPrice.getText().toString()) + parseDb(mBind.etOtherPrice.getText().toString()));
}
public Double parseDb(String str) {
if (TextUtils.isEmpty(str)) {
return 0.0;
} else {
return Double.parseDouble(str);
}
}
@Override
......@@ -206,8 +250,10 @@ public class ProcessOrderActivity extends BaseActivity<ProcessOrderPresenter, Ac
info.setProductModel(mBind.etVersion.getText().toString());
info.setSn(mBind.etSerialNum.getText().toString());
mPresenter.mOrderField.set(info);
}
private void dumpPic(ArrayList<String> list) {
Intent intent = new Intent(this, PreviewActivty.class);
intent.putStringArrayListExtra(Constants.BUNDLE_KEY_ID, list);
......
package com.dayu.order.ui.activity;
import android.os.Bundle;
import com.alibaba.android.arouter.launcher.ARouter;
import com.dayu.base.ui.activity.DataBindingActivity;
import com.dayu.common.Constants;
import com.dayu.order.R;
import com.dayu.order.databinding.QrCodeLayoutBinding;
import com.dayu.provider.event.RefreshServe;
import com.dayu.provider.router.RouterPath;
import org.greenrobot.eventbus.EventBus;
/**
* Created by luofan
......@@ -17,6 +25,15 @@ public class QrCodeActivity extends DataBindingActivity<QrCodeLayoutBinding> {
@Override
public void initView() {
mBind.titleBack.setOnClickListener(v -> finish());
Bundle bundle = getIntent().getBundleExtra(Constants.BUNDLE);
int type = bundle.getInt(Constants.TYPE, 0);
mBind.titleBack.setOnClickListener(v -> {
if (type == 0) {
finish();
} else {
ARouter.getInstance().build(RouterPath.PATH_MAIN).navigation();
EventBus.getDefault().post(new RefreshServe(1));
}
});
}
}
......@@ -24,6 +24,7 @@ import com.dayu.order.ui.activity.SubcribeTimeActivity;
import com.dayu.provider.event.RefreshServe;
import com.dayu.provider.event.RefreshTab;
import com.dayu.utils.ProgressUtil;
import com.dayu.utils.SPUtils;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UtilsDate;
import com.umeng.analytics.MobclickAgent;
......@@ -269,7 +270,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
mItem = it;
mBind = h;
if ((mItem.getCreatedSource() == 2 || mItem.getCreatedSource() == 3 || mItem.getCreatedSource() == 4) && mItem.getStatus() == 4) {
dumpServerActivity(mItem, posiiton);
dumpServerActivity(mItem);
} else if (mItem.getStatus() == 4 && mItem.getSubStatus() == 3) {
dumpProcessActivity(mItem, posiiton);
} else if (mItem.getStatus() == 4 && mItem.getSubStatus() == 4) {
......@@ -354,23 +355,28 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
MobclickAgent.onEvent(mContext, "process_order");
}
private void dumpServerActivity(Order order, int adapterPosition) {
private void dumpServerActivity(Order order) {
Intent intent;
Bundle bundle = new Bundle();
if (order.getSpus().size() > 1) {
intent = new Intent(mContext, ServerInfoActivity.class);
bundle.putInt(Constants.ID, order.getId());
} else if (order.getSpus().size() == 1) {
intent = new Intent(mContext, ServerListActivity.class);
bundle.putInt(Constants.ID, order.getSpus().get(0).getId());
boolean flag = (boolean) SPUtils.get(Constants.ORDER_ID + order.getId(), false);
if (!flag && order.getFaceSwitch() != null && order.getFaceSwitch() == 1) {
mPresenter.dumpToFaceCert(order);
} else {
return;
}
if (order.getKaCompanyId() != null) {
bundle.putInt(OrderConstant.KAADDRESSID, order.getKaCompanyId());
if (order.getSpus().size() > 1) {
intent = new Intent(mContext, ServerInfoActivity.class);
bundle.putInt(Constants.ID, order.getId());
} else if (order.getSpus().size() == 1) {
intent = new Intent(mContext, ServerListActivity.class);
bundle.putInt(Constants.ID, order.getSpus().get(0).getId());
} else {
return;
}
if (order.getKaCompanyId() != null) {
bundle.putInt(OrderConstant.KAADDRESSID, order.getKaCompanyId());
}
intent.putExtra(Constants.BUNDLE, bundle);
mContext.startActivity(intent);
}
intent.putExtra(Constants.BUNDLE, bundle);
mContext.startActivity(intent);
}
private void dumpSOPActivity(int id, int adapterPosition) {
......
......@@ -74,5 +74,8 @@
<activity
android:name=".ui.activity.SignatureActivity"
android:screenOrientation="landscape" />
<activity
android:name=".ui.activity.OrderLivenessActivity"
android:screenOrientation="portrait" />
</application>
</manifest>
......@@ -676,6 +676,7 @@
android:textSize="@dimen/sp_13.3" />
<TextView
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
......@@ -691,11 +692,53 @@
style="@style/line"
android:layout_below="@id/up_other" />
<RelativeLayout
android:id="@+id/ll_all_money"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/image_two_four_lin"
android:layout_marginLeft="@dimen/dp_13.3"
android:layout_marginRight="@dimen/dp_13.3"
android:layout_marginTop="15.7dp"
android:layout_marginBottom="15dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="总金额"
android:textColor="@color/cl_tab_line"
android:textSize="@dimen/sp_13.3" />
<TextView
android:id="@+id/tv_total_money"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:textColor="@color/cl_home_title_text_color"
android:textSize="@dimen/sp_13.3" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/tv_order_yuan"
android:textColor="@color/cl_tab_line"
android:textSize="@dimen/sp_13.3" />
</RelativeLayout>
<ImageView
android:id="@+id/iv_line_total"
style="@style/line"
android:layout_below="@id/ll_all_money" />
<EditText
android:id="@+id/et_door_info"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_163"
android:layout_below="@id/up_other"
android:layout_below="@id/iv_line_total"
android:layout_centerHorizontal="true"
android:layout_marginLeft="@dimen/dp_13.3"
android:layout_marginRight="@dimen/dp_13.3"
......@@ -710,46 +753,12 @@
android:textSize="@dimen/sp_13.3" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/ll_all_money"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/rl_pay"
android:layout_marginLeft="@dimen/dp_13.3"
android:layout_marginRight="@dimen/dp_13.3"
android:layout_marginTop="15.7dp"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="总金额"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_total_money"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="元"
android:textStyle="bold" />
</RelativeLayout>
<Button
android:id="@+id/save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/ll_all_money"
android:layout_below="@id/rl_pay"
android:layout_marginLeft="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_33"
android:background="@drawable/save_back"
......@@ -763,7 +772,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/ll_all_money"
android:layout_below="@id/rl_pay"
android:layout_marginRight="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_33"
android:background="@drawable/save_submit"
......
......@@ -126,15 +126,6 @@
android:orientation="horizontal" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="43dp"
android:paddingLeft="@dimen/dp_15"
android:paddingTop="@dimen/dp_17"
android:text="收取费用"
android:textColor="@color/tv_cl"
android:textSize="14sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="51dp"
......@@ -250,6 +241,19 @@
android:text="@string/tv_order_yuan"
android:textColor="@color/cl_tab_line"
android:textSize="@dimen/sp_13.3" />
<TextView
android:layout_width="match_parent"
android:layout_height="43dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="104dp"
android:paddingLeft="@dimen/dp_15"
android:paddingTop="@dimen/dp_17"
android:text="收取费用"
android:textColor="@color/tv_cl"
android:textSize="14sp" />
</RelativeLayout>
<ImageView
......@@ -345,11 +349,53 @@
style="@style/line"
android:layout_below="@id/up_other" />
<RelativeLayout
android:id="@+id/ll_all_money"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/image_two_four_lin"
android:layout_marginBottom="15dp"
android:layout_marginLeft="@dimen/dp_13.3"
android:layout_marginRight="@dimen/dp_13.3"
android:layout_marginTop="15.7dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="总金额"
android:textColor="@color/cl_tab_line"
android:textSize="@dimen/sp_13.3" />
<TextView
android:id="@+id/tv_total_money"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:textColor="@color/cl_home_title_text_color"
android:textSize="@dimen/sp_13.3" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/tv_order_yuan"
android:textColor="@color/cl_tab_line"
android:textSize="@dimen/sp_13.3" />
</RelativeLayout>
<ImageView
android:id="@+id/iv_line_total"
style="@style/line"
android:layout_below="@id/ll_all_money" />
<EditText
android:id="@+id/et_door_info"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_163"
android:layout_below="@id/up_other"
android:layout_below="@id/iv_line_total"
android:layout_centerHorizontal="true"
android:layout_marginLeft="@dimen/dp_13.3"
android:layout_marginRight="@dimen/dp_13.3"
......
......@@ -25,13 +25,13 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="100dp"
android:src="@drawable/icon_appointment_code" />
<TextView
......@@ -42,6 +42,14 @@
android:text="@string/scan_code_for_appointment"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp_15"
android:text="@string/scan_code_for_appointment_two"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</layout>
\ No newline at end of file
......@@ -20,4 +20,8 @@ public class RouterPath {
public final static String PATH_ORDER_HISTORY = "/order/history";
/**
* 用户模块.
*/
public final static String PATH_USER_FACE = "/user/face";
}
......@@ -62,5 +62,4 @@ dependencies {
annotationProcessor "com.alibaba:arouter-compiler:$arouter_compiler_version"
compile project(':provider')
compile project(':IDCardLib')
// compile project(':livenesslib')
}
......@@ -60,5 +60,7 @@ public interface LoginContract {
*/
public abstract void dumpAndSave(UserInfo info);
public abstract void getUserInfo(int accountId);
}
}
......@@ -9,9 +9,11 @@ import com.dayu.event.UserInfo;
import com.dayu.provider.router.RouterPath;
import com.dayu.usercenter.R;
import com.dayu.usercenter.api.UserApiFactory;
import com.dayu.usercenter.data.protocol.EngineerInfo;
import com.dayu.usercenter.ui.activity.AgreementActivity;
import com.dayu.usercenter.ui.activity.IdentityCertificationActivity;
import com.dayu.utils.LogUtils;
import com.dayu.utils.SPUtils;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UserManager;
......@@ -20,6 +22,8 @@ import com.hyphenate.EMCallBack;
import com.hyphenate.chat.EMClient;
import com.umeng.analytics.MobclickAgent;
import io.reactivex.functions.Consumer;
/**
* Created by luofan
* on 2017/11/8.
......@@ -72,6 +76,7 @@ public class LoginPresenter extends LoginContract.Presenter {
UserApiFactory.login(userName.get(), password.get()).subscribe(baseObserver(userInfo -> {
if (userInfo.getDetectStatus() == 1) {
loginHx(userInfo.getHxAccount(), userInfo.getHxPwd());
getUserInfo(Integer.parseInt(userInfo.getAccountId()));
dumpAndSave(userInfo);
}
// else if (userInfo.getDetectStatus() == 2) {
......@@ -125,6 +130,16 @@ public class LoginPresenter extends LoginContract.Presenter {
}
@Override
public void getUserInfo(int accountId) {
UserApiFactory.getEngineerInfo(accountId).subscribe(baseObserver(new Consumer<EngineerInfo>() {
@Override
public void accept(EngineerInfo engineerInfo) throws Exception {
SPUtils.put("USER_IDENTITY", engineerInfo.getIdentity());
}
}));
}
@Override
public void dumpAgreement() {
mView.startActivity(AgreementActivity.class);
MobclickAgent.onEvent(BaseApplication.getContext(), "customer_agreement");
......
......@@ -7,8 +7,10 @@ import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.common.Constants;
import com.dayu.provider.router.RouterPath;
import com.dayu.usercenter.R;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.databinding.ActivityFaceCertificationBinding;
......@@ -33,7 +35,7 @@ import static android.os.Build.VERSION_CODES.M;
* Created by luofan
* on 2018/5/10.
*/
@Route(path = RouterPath.PATH_USER_FACE)
public class FaceCertificationActivity extends BaseActivity<FaceCertificaitonPresenter, ActivityFaceCertificationBinding>
implements FaceCertificaitonContract.View {
private String uuid;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment