提交 deb6d648 authored 作者: wangmenglong's avatar wangmenglong

首次提交

上级 17dfe875
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
差异被折叠。
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.cm.crm</groupId>
<artifactId>cm</artifactId>
<version>1.0</version>
</parent>
<groupId>com.cm.crm</groupId>
<artifactId>cm-crm-lib</artifactId>
<version>1.0</version>
<name>cm-crm-lib</name>
<description>lib</description>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.70</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
import java.util.ArrayList;
import java.util.List;
public class TestArrayList {
private static List<Integer> list = new ArrayList<>();
public static void main(String[] args) throws InterruptedException {
// for (int i = 0; i < 10; i++) {
testList();
// list.clear();
// }
}
private static void testList() throws InterruptedException {
Runnable runnable = () -> {
for (int i = 0; i < 10000; i++) {
list.add(i);
}
System.out.println(list.size());
};
Thread t1 = new Thread(runnable);
Thread t2 = new Thread(runnable);
Thread t3 = new Thread(runnable);
t1.start();
t2.start();
t3.start();
t1.join();
System.out.println("==========================1");
t2.join();
System.out.println("==========================2");
t3.join();
}
}
package base.controller;
import javax.servlet.http.HttpServletRequest;
/**
* web层通用数据处理
*
* @author ruoyi
*/
public class BaseController
{
public int pageNum ;
public int pageSize ;
public void PageInit(HttpServletRequest request) {
// 在这里处理请求参数
pageNum = request.getParameter("pageNum") != null ? Integer.parseInt(request.getParameter("pageNum")) : 1;
pageSize = request.getParameter("pageSize") != null ? Integer.parseInt(request.getParameter("pageSize")) : 10;
}
}
package base.result;
import enums.ExceptionCodeEnum;
public class BaseResult {
private Object data;
private boolean isSuccess = false;
private String status = "";
private String message = "";
private String code;
public BaseResult() {
}
public static BaseResult success(String code, Object data) {
BaseResult result = new BaseResult();
result.data = data;
result.code = code;
result.isSuccess = true;
result.status = "success";
return result;
}
public static BaseResult success(String code) {
BaseResult result = new BaseResult();
result.code = code;
result.isSuccess = true;
result.status = "success";
return result;
}
public static BaseResult success(Object data) {
BaseResult result = new BaseResult();
result.data = data;
result.code = "normal_001";
result.isSuccess = true;
result.status = "success";
return result;
}
public static BaseResult success() {
BaseResult result = new BaseResult();
result.code = "normal_001";
result.isSuccess = true;
result.status = "success";
return result;
}
public static BaseResult error(String code) {
BaseResult result = new BaseResult();
result.code = code;
result.isSuccess = false;
result.status = "error";
return result;
}
public static BaseResult error(String code,Object data) {
BaseResult result = new BaseResult();
result.code = code;
result.isSuccess = false;
result.status = "error";
result.data = data;
return result;
}
public static BaseResult error(ExceptionCodeEnum exceptionCodeEnum) {
BaseResult result = new BaseResult();
result.code = exceptionCodeEnum.getCode();
result.message = exceptionCodeEnum.getMessage();
result.isSuccess = false;
result.status = "error";
return result;
}
public Object getData() {
return this.data;
}
public boolean getIsSuccess() {
return this.isSuccess;
}
public String getStatus() {
return this.status;
}
public String getMessage() {
return this.message;
}
public String getCode() {
return this.code;
}
}
\ No newline at end of file
package data.parent;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
abstract public class IdentityObj {
@TableId("id")
private String id;
@TableField(value = "del")
private Boolean del;
@TableField(value = "base_code")
private String baseCode;
@TableField(value = "create_time")
private String createTime;
@TableField(value = "update_time")
private String updateTime;
@TableField(value = "user_id")
private String userId;
@TableField(value = "user_name")
private String userName;
/**
* @description: 删除时间(如果数据使用过,执行删除操作时更新del=1和删除时间;如果未使用过,直接真删)
* @author: wangmenglong
* @date; 2023/12/8 10:20
**/
@TableField(value = "del_time")
private String delTime;
}
package data.parent;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
@Data
abstract public class NameObj extends IdentityObj {
@TableField("name")
private String name;
}
package data.parent;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
abstract public class SimpleIdentityObj {
@TableId("id")
private String id;
@TableField(value = "base_code")
private String baseCode;
}
package data.parent;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
/**
* @author wangmenglong
* @description:
* @date 2023/12/28 14:22
*/
@Data
public class SimpleNameObj extends SimpleIdentityObj{
@TableField("name")
private String name;
}
package data.system;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 合作伙伴
* @date 2025/5/9 10:50
*/
@Data
@TableName(value = "tb_branch_office")
public class BranchOffice extends NameObj {
/**
* 备注
**/
@TableField("remark")
private String remark;
}
package data.system;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 合作伙伴
* @date 2025/5/9 10:50
*/
@Data
@TableName(value = "tb_cooperate")
public class Cooperate extends NameObj {
/**
* 编码
**/
@TableField("code")
private String code;
/**
* 备注
**/
@TableField("remark")
private String remark;
/**
* 区县id
**/
@TableField("county_district_id")
private String countyDistrictId;
/**
* 区县
**/
@TableField("county_district")
private String countyDistrict;
}
package data.system;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.SimpleNameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 县区
* @date 2025/5/9 10:50
*/
@Data
@TableName(value = "tb_county_district")
public class CountyDistrict extends SimpleNameObj {
}
package data.user;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.NameObj;
import lombok.Data;
import mongo.parent.MongoNameObj;
/**
* @author wangmenglong
* @description: 用户
* @date 2023/12/11 10:50
*/
@Data
@TableName(value = "tb_user")
public class User extends NameObj {
/**
* 用户名
**/
@TableField("account")
private String account;
/**
* 密码
**/
@TableField("password")
private String password;
/**
* 状态(normal 正常,disable停用)
**/
@TableField("state")
private String state;
/**
* 用户类型,普通(只能登录前端general),管理(前后端都可以登录admin),
**/
@TableField("type")
private String type;
}
package data.visitRecord;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.IdentityObj;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 走访记录
* @date 2025/5/9 10:50
*/
@Data
@TableName(value = "tb_visit_record")
public class VisitRecord extends IdentityObj {
/**
* 分公司id
**/
@TableField("branch_office_id")
private String branchOfficeId;
/**
* 分公司
**/
@TableField("branch_office")
private String branchOffice;
/**
* 合作伙伴id
**/
@TableField("cooperate_id")
private String cooperateId;
/**
* 合作伙伴
**/
@TableField("cooperate")
private String cooperate;
/**
* 合作伙伴code
**/
@TableField("cooperate_code")
private String cooperateCode;
/**
* 是否合作过
**/
@TableField("interact")
private Boolean interact;
/**
* 商机名称
**/
@TableField("business_title")
private String businessTitle;
@TableField("money")
private Integer money;
/**
* 建设内容
**/
@TableField("business_content")
private String businessContent;
/**
* 预计签约时间
**/
@TableField("sign_date")
private String signDate;
/**
* 走访照片
**/
@TableField("photo_url")
private String photoUrl;
}
package enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
/**
* 异常码枚举
*/
@AllArgsConstructor
@Getter
public enum ExceptionCodeEnum {
NORMAL_001("normal_001", "保存成功"),
NORMAL_002("normal_002", "提交成功"),
ERROR_001("error_001", "保存失败"),
ERROR_002("error_002", "提交失败")
;
private static final Map<String, ExceptionCodeEnum> CACHE = new HashMap<>(ExceptionCodeEnum.values().length);
static {
for (ExceptionCodeEnum value : ExceptionCodeEnum.values()) {
CACHE.put(value.getCode(), value);
}
}
private final String code;
private final String message;
public static ExceptionCodeEnum getByCode(String code) {
return CACHE.get(code);
}
}
package excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.poi.ss.usermodel.FillPatternType;
import java.net.URL;
import java.util.Date;
/**
* @author zhangsufang
* @description: 简历导出
* @date 2023/12/22 10:25
*/
@Data
@HeadRowHeight(20)
@HeadStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 22)
@HeadFontStyle(fontHeightInPoints = 11)
@ContentStyle(wrapped = true)
@ColumnWidth(20)
@TableName(value = "tb_visit_record")
//设置行高,其他导出不需要可以删掉
@ContentRowHeight(100)
public class ExportVisitRecord {
@ExcelProperty("分公司")
@TableField("branch_office")
private String branchOffice;
@ExcelProperty("合作伙伴编号")
@TableField("cooperate_code")
private String cooperateCode;
@ExcelProperty("合作伙伴")
@TableField("cooperate")
private String cooperate;
@ExcelProperty("是否合作过")
private String interact;
@ExcelProperty("商机名称")
private String businessTitle;
@ExcelProperty("金额")
private Integer money;
@ExcelProperty("创建时间")
private String createTime;
@ExcelProperty("建设内容")
private String businessContent;
@ExcelProperty(value = "走访图片")
private URL photoUrl;
@ExcelProperty("预计签约时间")
private String signDate;
}
package mongo.collection;
/**
* 集合名称
*/
public class CollectionName {
/**
* 后台账号
*/
public static final String USER_ACCOUNT = "user";
/**
* 对话框
*/
public static final String DIALOGUE = "dialogue";
/**
* 内容
*/
public static final String CONTENT = "content";
/**
* 系统设置
*/
public static final String SYSTEM_CONFIG = "system_config";
/**
* 热词排行
*/
public static final String PROBLEM_TOP = "problem_top";
/**
* 热词排行
*/
public static final String PROBLEM_YEAR_TOP = "problem_year_top";
/**
* 热词排行
*/
public static final String PROBLEM_MONTH_TOP = "problem_month_top";
}
package mongo.parent;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.context.annotation.Primary;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
@Data
@Primary
abstract public class MongoIdentityObj {
private String id;
private Boolean del;
private String baseCode;
//@TableField(value = "createTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
private String userId;
private String userName;
/**
* @description: 删除时间(如果数据使用过,执行删除操作时更新del=1和删除时间;如果未使用过,直接真删)
* @author: wangmenglong
* @date; 2023/12/8 10:20
**/
private String delTime;
public MongoIdentityObj(){
this.del = false;
try {
//this.createTime = getMongoDate(new Date());
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 计算得到MongoDB存储的日期,(默认情况下mongo中存储的是标准的时间,中国时间是东八区,存在mongo中少8小时,所以增加8小时)
* http://www.iteye.com/problems/88507
*
* @author: Gao Peng
* @date: 2016年5月4日 上午9:26:23
* @param: @param
* date
* @param: @return
* @return: Date
*/
public static Date getMongoDate(Date date) throws Exception{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar ca = Calendar.getInstance();
ca.setTime(date);
ca.add(Calendar.HOUR_OF_DAY, 8);
return DateUtils.parseDate(sdf.format(ca.getTime()));
}
}
package mongo.parent;
import lombok.Data;
@Data
abstract public class MongoNameObj extends MongoIdentityObj {
private String name;
}
package redis;
public class RedisKey {
/**
* 锁定+userId
*/
public static final String CONTENT_LIMIT = "cm-crm:content:limit:";
/**
* 问题时间+userId
*/
public static final String CONTENT_TIME = "cm-crm:content:time:";
}
package util;
public class AppStartParam {
public static String getMqInstanceId(String[] args) {
String instanceId = "";
if (args.length >= 6) {
String param = args[6];
// String param = "--rocketmq.instance-id=MQ_INST_1776639105090731_BX4zKKfW%";
instanceId = param.substring(param.indexOf("=") + 1, param.length());
}
return instanceId;
}
// public static void main(String[] args) {
// System.setProperty("instanceId",getMqInstanceId());
// System.out.println(System.getProperty("instanceId"));
// }
}
package util;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @Author wangmenglong
* @Description 公共工具类
* @Date 2022/3/8 10:04
* @Version 1.0
*/
public class CommonUtils {
/**
* @Author wangmenglong
* @Description 去除字符串中的空格、回车、换行符、制表符
* @Date 2022/3/8 10:22
* @Param [str]
* @return java.lang.String
**/
public static String replaceBlank(String str) {
String dest = "";
if (!StringUtils.isEmpty(str)) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
dest = m.replaceAll("");
}
return dest;
}
/**
* @author: wangmenglong
* @date; 2024/1/9 15:26
* @description: 计算当前时间距离明天凌晨0时0分0秒的秒数
* @param: [currentDate]
* @return: java.lang.Integer
**/
public static Integer getRemainSecondsOneDay(Date currentDate) {
//使用plusDays加传入的时间加1天,将时分秒设置成0
LocalDateTime midnight = LocalDateTime.ofInstant(currentDate.toInstant(),
ZoneId.systemDefault()).plusDays(1).withHour(0).withMinute(0)
.withSecond(0).withNano(0);
LocalDateTime currentDateTime = LocalDateTime.ofInstant(currentDate.toInstant(),
ZoneId.systemDefault());
//使用ChronoUnit.SECONDS.between方法,传入两个LocalDateTime对象即可得到相差的秒数
long seconds = ChronoUnit.SECONDS.between(currentDateTime, midnight);
return (int) seconds;
}
/**
* @author: wangmenglong
* @date; 2024/3/8 14:42
* @description: 获取两个日期之间所有的日期yyyy-MM-dd
* @param: [startDate, endDate]
* @return: java.util.List<java.lang.String>
**/
public static List<String> getDateRange(String startDate, String endDate) {
List<String> dateRange = new ArrayList<>();
LocalDate startLocalDate = LocalDate.parse(startDate);
LocalDate endLocalDate = LocalDate.parse(endDate);
long daysBetween = ChronoUnit.DAYS.between(startLocalDate, endLocalDate);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
for (int i = 0; i <= daysBetween; i++) {
LocalDate currentDate = startLocalDate.plusDays(i);
String localDateNowStr = currentDate.format(formatter);
dateRange.add(localDateNowStr);
}
return dateRange;
}
/**
* @author: wangmenglong
* @date; 2024/3/8 14:42
* @description: 获取两个日期之间所有的月份yyyy-MM
* @param: [startDate, endDate]
* @return: java.util.List<java.lang.String>
**/
public static List<String> getMonthDateRange(String startDate, String endDate) {
List<String> dateRange = new ArrayList<>();
LocalDate startLocalDate = LocalDate.parse(startDate);
LocalDate endLocalDate = LocalDate.parse(endDate);
long monthsBetween = ChronoUnit.MONTHS.between(startLocalDate, endLocalDate);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
for (int i = 0; i <= monthsBetween; i++) {
LocalDate date = startLocalDate.plusMonths(i);
String localDateNowStr = date.format(formatter);
dateRange.add(localDateNowStr);
}
return dateRange;
}
/**
* @author: wangmenglong
* @date; 2024/5/15 18:13
* @description: 比较金额是否在区间范围内
* @param: [value, lower, upper]
* @return: boolean
**/
public static boolean isInRange(BigDecimal value, BigDecimal lower, BigDecimal upper) {
int lowerCompare = value.compareTo(lower);
int upperCompare = value.compareTo(upper);
return lowerCompare >= 0 && upperCompare <= 0;
}
}
package util;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* 常用配置
*/
public class ConfigCache {
/**
* 数值及状态名
*/
private static Map<Integer, String> valStateMap;
/**
* 状态名及数值
*/
private static Map<String, Integer> stateValMap;
private static ConfigCache instance;
private ConfigCache() {
valStateMap = new HashMap<>();
/**
* 招聘状态取值
* 报备report 1,状态:上车:bycar 2,到达:arrived 3,面试:interview 4,面试通过:interviewpass 5,入职:entry 6
*/
valStateMap.put(2, "bycar");
valStateMap.put(3, "arrived");
valStateMap.put(4, "interview");
valStateMap.put(5, "interviewpass");
valStateMap.put(6, "entry");
stateValMap = new HashMap<>();
stateValMap.put("bycar", 2);
stateValMap.put("arrived", 3);
stateValMap.put("interview", 4);
}
public static ConfigCache getInstance() {
if (instance == null) {
instance = new ConfigCache();
}
return instance;
}
public Map<Integer, String> getValStateMap() {
return valStateMap;
}
public Map<String, Integer> getstateValMap() {
return stateValMap;
}
}
package util;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;
/**
* @author yuetianwang
* @description 加密工具类
* @date 2021/8/4 18:38
*/
public class CryptoUtil {
public static final String SALT = "K2mQCycm";
/**
* 加盐签名
*
* @param map 签名的数据
* @return
*/
public static String SHA256(String slat, TreeMap<String, Object> map) {
StringBuilder sb = new StringBuilder();
map.forEach((k, v) -> {
sb.append(k).append("=").append("v");
sb.append("&");
});
if (sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
}
sb.append(slat);
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(sb.toString().getBytes(StandardCharsets.UTF_8));
byte[] digest = messageDigest.digest();
return byte2Hex(digest);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
/**
* 校验加盐签名
*
* @param map 签名的数据
* @param sign 比对的签名
* @return
*/
public static boolean SHA256Validate(String slat, TreeMap<String, Object> map, String sign) {
String otherSign = SHA256(slat, map);
return Objects.equals(sign, otherSign);
}
/**
* 将byte转为16进制
*
* @param bytes
* @return
*/
private static String byte2Hex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
String temp = null;
for (int i = 0; i < bytes.length; i++) {
temp = Integer.toHexString(bytes[i] & 0xFF);
if (temp.length() == 1) {
//1得到一位的进行补0操作
sb.append("0");
}
sb.append(temp);
}
return sb.toString();
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论