左晓为主开发手持机充值管理机
zuoxiao
2024-04-02 732e4481b8437719468cddfb4971ee54a4b36625
app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java
@@ -1,28 +1,18 @@
package com.dayu.recharge.activity;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import com.dayu.recharge.MyApplication;
import com.dayu.recharge.databinding.ActivityAdminSetupBinding;
import com.dayu.recharge.dbBean.AdminDataBean;
import com.dayu.recharge.dbBean.IpBean;
import com.dayu.recharge.utils.SocketUtil;
import com.dayu.recharge.utils.TipUtil;
import com.example.pickerviewlibrary.picker.TeaPickerView;
import com.example.pickerviewlibrary.picker.entity.PickerData;
import com.example.pickerviewlibrary.picker.listener.OnPickerClickListener;
import com.tencent.bugly.crashreport.CrashReport;
import java.lang.reflect.Method;
import java.util.Random;
import java.util.zip.CRC32;
/**
 * Copyright (C), 2023,
@@ -54,71 +44,48 @@
    }
    private void initView() {
        adminBinding.setupOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!TextUtils.isEmpty(adminData.getCun())
                        && !TextUtils.isEmpty(adminBinding.adminSerial.getText().toString())
                ) {
                    if (Integer.valueOf(adminBinding.adminSerial.getText().toString()) <= 16777215) {
                        adminBinding.adminAddressCode.setText(adminData.getAddressCode());
                        adminData.setSerial(adminBinding.adminSerial.getText().toString());
                        baseDao.adminDao().insert(adminData);
                        setData();
                        IpBean ipBean = MyApplication.myApplication.ipBean;
                        if (ipBean != null) {
                            MyApplication.myApplication.initMachineRequestBean(ipBean.getIp(), ipBean.getPort(), adminData.getAddressCode());
                        }
                        TipUtil.show(AdminSetupActivity.this, "设置成功", new TipUtil.TipListener() {
                            @Override
                            public void onCancle() {
                                AdminSetupActivity.this.finish();
                            }
                        });
                    } else {
                        TipUtil.show(AdminSetupActivity.this, "输入的数字不能超过16777215");
        adminBinding.setupOk.setOnClickListener(v -> {
            if (!TextUtils.isEmpty(adminData.getCun())
                    && !TextUtils.isEmpty(adminBinding.adminSerial.getText().toString())
            ) {
                if (Integer.valueOf(adminBinding.adminSerial.getText().toString()) <= 16777215) {
                    adminBinding.adminAddressCode.setText(adminData.getAddressCode());
                    adminData.setSerial(adminBinding.adminSerial.getText().toString());
                    baseDao.adminDao().insert(adminData);
                    setData();
                    IpBean ipBean = MyApplication.myApplication.ipBean;
                    if (ipBean != null) {
                        MyApplication.myApplication.initMachineRequestBean(ipBean.getIp(), ipBean.getPort(), adminData.getAddressCode());
                    }
                    TipUtil.show(AdminSetupActivity.this, "设置成功", () -> AdminSetupActivity.this.finish());
                } else {
                    TipUtil.show(AdminSetupActivity.this, "请输入完整内容");
                    TipUtil.show(AdminSetupActivity.this, "输入的数字不能超过16777215");
                }
            } else {
                TipUtil.show(AdminSetupActivity.this, "请输入完整内容");
            }
        });
        adminBinding.choseAddress.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(adminBinding.adminSerial.getWindowToken(), 0);
                intiPickerView();
            }
        adminBinding.choseAddress.setOnClickListener(v -> {
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(adminBinding.adminSerial.getWindowToken(), 0);
            intiPickerView();
        });
        pickerView = new TeaPickerView(this);
        new Thread(new Runnable() {
            @Override
            public void run() {
                pickerView.initAddressData();
            }
        }).start();
        new Thread(() -> pickerView.initAddressData()).start();
    }
    private void setData() {
        try {
            AdminDataBean adminData = baseDao.adminDao().findFirst();
            if (adminData != null) {
                this.adminData = adminData;
             adminData = baseDao.adminDao().findFirst();
            if (adminData.isHasAddressCode()) {
                adminBinding.adminSerial.setText(adminData.getSerial());
                adminBinding.adminAddressCode.setText(adminData.getAddressCode());
                adminBinding.adminAddress.setText(adminData.getSheng() + adminData.getShi() + adminData.getXian() + adminData.getZhen() + adminData.getCun());
            } else {
                // 创建一个随机数生成器对象
                Random random = new Random();
                // 生成 1 到 12 之间的随机数字
                int randomNumber = random.nextInt(12) + 1;
                adminBinding.adminSerial.setText(randomNumber + generateUniqueNumber(getSN()));
                adminBinding.adminSerial.setText(adminData.getSerial());
            }
        } catch (Exception e) {
@@ -138,28 +105,25 @@
                    .setRadius(25)
                    .build();
            pickerView.show(adminBinding.choseAddress);
            pickerView.setOnPickerClickListener(new OnPickerClickListener() {
                @Override
                public void OnPickerClick(PickerData pickerData) {
                    adminData.setSheng("河南");
                    adminData.setShi(pickerData.getFirstText().getName());
                    adminData.setXian(pickerData.getSecondText().getName());
                    if (pickerData.getThirdText() != null) {
                        adminData.setZhen(pickerData.getThirdText().getName());
                    } else {
                        adminData.setZhen("");
                    }
                    if (pickerData.getFourthText() != null) {
                        adminData.setCun(pickerData.getFourthText().getName());
                        adminData.setAddressCode(pickerData.getFourthText().getCode());
                    } else {
                        adminData.setCun("");
                        adminData.setAddressCode(pickerData.getSecondText().getCode());
                    }
                    adminBinding.adminAddress.setText(adminData.getSheng() + adminData.getShi() + adminData.getXian() + adminData.getZhen() + adminData.getCun());
                    adminBinding.adminAddressCode.setText(adminData.getAddressCode());
                    pickerView.dismiss();
            pickerView.setOnPickerClickListener(pickerData -> {
                adminData.setSheng("河南");
                adminData.setShi(pickerData.getFirstText().getName());
                adminData.setXian(pickerData.getSecondText().getName());
                if (pickerData.getThirdText() != null) {
                    adminData.setZhen(pickerData.getThirdText().getName());
                } else {
                    adminData.setZhen("");
                }
                if (pickerData.getFourthText() != null) {
                    adminData.setCun(pickerData.getFourthText().getName());
                    adminData.setAddressCode(pickerData.getFourthText().getCode());
                } else {
                    adminData.setCun("");
                    adminData.setAddressCode(pickerData.getSecondText().getCode());
                }
                adminBinding.adminAddress.setText(adminData.getSheng() + adminData.getShi() + adminData.getXian() + adminData.getZhen() + adminData.getCun());
                adminBinding.adminAddressCode.setText(adminData.getAddressCode());
                pickerView.dismiss();
            });
        } catch (Exception e) {
            CrashReport.postCatchedException(e);
@@ -168,53 +132,5 @@
        }
    }
    @SuppressLint("MissingPermission")
    public static String getSN() {
        String serial = null;
        try {
            Class<?> c = Class.forName("android.os.SystemProperties");
            Method get = c.getMethod("get", String.class);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                try {
                    serial = (String) get.invoke(c, "ro.sunmi.serial");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return serial;
            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                serial = Build.getSerial();
                return serial;
            } else {
                //安卓8以下使用Build.SERIAL相同方式
                //return Build.SERIAL;
                try {
                    serial = (String) get.invoke(c, "ro.serialno");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return serial;
            }
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        } catch (NoSuchMethodException e) {
            throw new RuntimeException(e);
        }
    }
    public static String generateUniqueNumber(String input) {
        try {
            // 使用CRC32哈希函数
            CRC32 crc32 = new CRC32();
            crc32.update(input.getBytes());
            long crcValue = crc32.getValue();
            // 将哈希值映射到6位数字的范围
            long sixDigitNumber = Math.abs(crcValue) % 1000000;
            // 格式化为6位数字的字符串
            return String.format("%06d", sixDigitNumber);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}