Browse Source

update

master
Yen 3 years ago
parent
commit
66f706f5c7
  1. 44
      src/main/java/com/qs/cost/common/dto/U8APIBo.java
  2. 1
      src/main/java/com/qs/cost/common/utils/DateUtil.java
  3. 1
      src/main/java/com/qs/cost/common/utils/HttpUtil.java
  4. 138
      src/main/java/com/qs/cost/module/controller/ApiController.java
  5. 54
      src/main/java/com/qs/cost/module/domain/ApiBook.java
  6. 97
      src/main/java/com/qs/cost/module/domain/ApiRequest.java
  7. 125
      src/main/java/com/qs/cost/module/domain/GetListEntity.java
  8. 26
      src/main/java/com/qs/cost/module/domain/dto/JobCallbackParam.java
  9. 22
      src/main/java/com/qs/cost/module/domain/dto/JobDataBaseParam.java
  10. 16
      src/main/java/com/qs/cost/module/domain/dto/JobErpParam.java
  11. 50
      src/main/java/com/qs/cost/module/domain/dto/JobRequestParam.java
  12. 13
      src/main/java/com/qs/cost/module/mapper/ApiBookMapper.java
  13. 13
      src/main/java/com/qs/cost/module/mapper/ApiRequestMapper.java
  14. 99
      src/main/java/com/qs/cost/module/service/ApiService.java
  15. 59
      src/main/java/com/qs/cost/module/service/JiaJinService.java
  16. 48
      src/test/java/boot/PrintDemo.java

44
src/main/java/com/qs/cost/common/dto/U8APIBo.java

@ -1,44 +0,0 @@
package com.qs.cost.common.dto;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.cost.module.domain.dto.JobDataBaseParam;
import com.qs.cost.module.domain.dto.JobErpParam;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
/**
* @author YenHex
*/
@Builder
@Getter
@Setter
@JsonAutoDetect(fieldVisibility= JsonAutoDetect.Visibility.ANY,getterVisibility= JsonAutoDetect.Visibility.NONE)
public class U8APIBo {
@JsonProperty("Cmd")
private String cmd;
@JsonProperty("Params")
private BeanParams params;
@JsonProperty("SetYear")
private String setYear;
@JsonProperty("SetBook")
private String setBook;
@JsonProperty("RequestId")
private String requestId;
//@JsonProperty("CallbackEnable")
//private String callbackEnable;
@JsonProperty("ErpUser")
private JobErpParam erpUser;
@JsonProperty("DataBase")
private JobDataBaseParam dataBase;
}

1
src/main/java/com/qs/cost/common/utils/DateUtil.java

@ -24,6 +24,7 @@ public class DateUtil {
public static final String FORMAT_SIMPLE_DATE = "yyyy-MM-dd"; public static final String FORMAT_SIMPLE_DATE = "yyyy-MM-dd";
public static final String FORMAT_SIMPLE_DATE2 = "yyyy/MM/dd";
public static final String FORMAT_SIMPLE_MONTH = "yyyy-MM"; public static final String FORMAT_SIMPLE_MONTH = "yyyy-MM";
public static final String FORMAT_SIMPLE_YEAR = "yyyy"; public static final String FORMAT_SIMPLE_YEAR = "yyyy";

1
src/main/java/com/qs/cost/common/utils/HttpUtil.java

@ -65,6 +65,7 @@ public class HttpUtil {
public static HttpResult get(String url){ public static HttpResult get(String url){
HttpGet httpGet = new HttpGet(url); HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
return getHttpResult(httpGet); return getHttpResult(httpGet);
} }

138
src/main/java/com/qs/cost/module/controller/ApiController.java

@ -1,138 +0,0 @@
package com.qs.cost.module.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.cost.common.consts.ApiStatusConst;
import com.qs.cost.common.consts.ApiUrlConst;
import com.qs.cost.common.dto.BeanParams;
import com.qs.cost.common.dto.R;
import com.qs.cost.common.dto.U8APIBo;
import com.qs.cost.common.enums.HttpCode;
import com.qs.cost.common.utils.*;
import com.qs.cost.module.domain.ApiBook;
import com.qs.cost.module.domain.ApiRequest;
import com.qs.cost.module.domain.dto.JobDataBaseParam;
import com.qs.cost.module.domain.dto.JobErpParam;
import com.qs.cost.module.domain.dto.JobRequestParam;
import com.qs.cost.module.mapper.ApiRequestMapper;
import com.qs.cost.module.service.ApiService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.List;
/**
* @author YenHex
* @since 2022/2/25
*/
@RestController
@RequestMapping("/api")
public class ApiController {
@Value("${server.secret-key}")
private String secretKey;
@Resource
private ApiService apiService;
@Resource
private ApiRequestMapper apiRequestMapper;
/**
* 核销系统请求保存任务队列
* @param request
* @param jobParam
* @return
*/
@PostMapping("/jobRequest")
public R jobRequest(HttpServletRequest request,@RequestBody @Valid JobRequestParam jobParam){
boolean callback = jobParam.getCallbackState()!=null&&jobParam.getCallbackState().equals(1);
String tenant = jobParam.getBook();
String token = request.getHeader("Authorization");
if(token==null||!token.equals(secretKey)){Assert.throwEx(HttpCode.FORBIDDEN_403);}
ApiBook bookConf = apiService.getBook(tenant);
if(bookConf==null){Assert.throwEx(HttpCode.FORBIDDEN_403_1);}
if(callback&&StringUtil.isEmpty(jobParam.getCallbackHost())){Assert.throwEx(HttpCode.ERROR_CALLBACK_URL_EMPTY);}
String pk = IdUtil.getLong()+"";
JobErpParam erpParam = new JobErpParam();
erpParam.setPassword(bookConf.getErpPwd());
erpParam.setUsername(bookConf.getErpUser());
JobDataBaseParam dataBaseParam = new JobDataBaseParam();
dataBaseParam.setDbname(bookConf.getDbName());
dataBaseParam.setHost(bookConf.getDbHost());
dataBaseParam.setUsername(bookConf.getDbUser());
dataBaseParam.setPassword(bookConf.getDbPwd());
dataBaseParam.setPort(bookConf.getDbPort());
//拼装请求参数
U8APIBo u8APIBo = U8APIBo.builder()
.cmd(jobParam.getCmd())
.setBook(jobParam.getBook())
.setYear(jobParam.getYear())
.params(new BeanParams(jobParam.getJsonBody(),jobParam.getKeyId()))
.erpUser(erpParam)
.dataBase(dataBaseParam)
.requestId(pk)
.build();
String params = JsonUtil.objectToJson(u8APIBo);
String reqUrl = bookConf.getU8Host().concat(ApiUrlConst.U8API);
ApiRequest apiRequestLog = new ApiRequest();
apiRequestLog.setId(pk);
apiRequestLog.setTenant(jobParam.getBook());
apiRequestLog.setClientHost(jobParam.getCallbackHost());
apiRequestLog.setApiPk(jobParam.getPk());
apiRequestLog.setApiCmd(jobParam.getCmd());
apiRequestLog.setApiYear(jobParam.getYear());
apiRequestLog.setApiKeyId(jobParam.getKeyId());
apiRequestLog.setReqParams(params);
apiRequestLog.setReqUrl(reqUrl);
apiRequestLog.setReqParams(JsonUtil.objectToJson(u8APIBo));
apiRequestLog.setRetryTimes(0);
apiRequestLog.setSettingRetryTimes(jobParam.getSettingRetryTimes());
apiRequestLog.setNeedCallback(callback?1:0);
apiRequestMapper.insert(apiRequestLog);
return R.ok();
}
/**
* 轮询任务(定时任务触发)
* @return
*/
@PostMapping("/doJob")
public R pollingJob(){
LambdaQueryWrapper<ApiRequest> wrapper4U8 = new LambdaQueryWrapper<>();
wrapper4U8.lt(ApiRequest::getStatus,3);
wrapper4U8.eq(ApiRequest::getInterruptStatus,0);
//请求U8
List<ApiRequest> sendU8List = apiRequestMapper.selectList(wrapper4U8);
for (ApiRequest apiRequest : sendU8List) {
apiService.reqU8Service(apiRequest);
}
//执行回调
LambdaQueryWrapper<ApiRequest> wrapper4Client = new LambdaQueryWrapper<>();
wrapper4Client.eq(ApiRequest::getStatus,3);
wrapper4Client.eq(ApiRequest::getInterruptStatus,0);
//请求客户端
List<ApiRequest> callbackList = apiRequestMapper.selectList(wrapper4Client);
for (ApiRequest apiRequest : callbackList) {
if(apiRequest.getRetryTimes()<=0){
apiRequest.setInterruptStatus(1);
apiRequestMapper.updateById(apiRequest);
continue;
}
boolean callbackSuccess = apiService.callback(apiRequest);
if(callbackSuccess){
//判断是否成功
int retryTime = apiRequest.getRetryTimes()==null?0:apiRequest.getRetryTimes();
apiRequest.setRetryTimes(retryTime+1);
apiRequest.setStatus(ApiStatusConst.ApiRequest_Status_4);
}
apiRequestMapper.updateById(apiRequest);
}
return R.ok();
}
}

54
src/main/java/com/qs/cost/module/domain/ApiBook.java

@ -1,54 +0,0 @@
package com.qs.cost.module.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
/**
* 账套信息 实体类
* @author JcYen
* @since 2021-10-12
*/
@Data
@TableName("api_book")
public class ApiBook implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
/** 租户 */
private String tenant;
/** 账套名称 */
private String name;
/** 主题 */
private String topic;
/** 对应品牌 */
private String brand;
/** 账套 */
private String book;
/** 年份 */
private Integer year;
/** 请求地址 */
private String u8Host;
private String erpUser;
private String erpPwd;
private String dbName;
private String dbHost;
private String dbPort;
private String dbUser;
private String dbPwd;
}

97
src/main/java/com/qs/cost/module/domain/ApiRequest.java

@ -1,97 +0,0 @@
package com.qs.cost.module.domain;
import java.time.LocalDateTime;
import java.util.Date;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
/**
* 请求记录历史 实体类
* @author YenHex
* @since 2022-02-28
*/
@Data
@TableName("api_request")
public class ApiRequest implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.INPUT)
private String id;
/** 账套、租户 */
@NotNull(message = "账套、租户不能为空")
private String tenant;
/** 客户端IP */
@NotNull(message = "客户端IP不能为空")
private String clientHost;
/** 接口名称 */
@NotNull(message = "接口名称不能为空")
private String apiCmd;
/** 接口数据主键 */
@NotNull(message = "接口数据主键不能为空")
private String apiPk;
/** 接口年份 */
@NotNull(message = "接口年份不能为空")
private String apiYear;
/** 接口keyId */
@NotNull(message = "接口keyId不能为空")
private String apiKeyId;
/** 请求地址 */
@NotNull(message = "请求地址不能为空")
private String reqUrl;
/** 请求参数 */
@NotNull(message = "请求参数不能为空")
private String reqParams;
/** 请求时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime reqTime;
/** HTTP返回的状态码 */
private Integer respCode;
/** 请求耗时(单位秒) */
private Double respTimes;
/** 数据返回结果 */
private String respContext;
/** 重试次数 */
private Integer retryTimes;
/** 设置重试次数 */
private Integer settingRetryTimes;
private Integer needCallback;
/** 状态【0->无需回调;1->;未回调等待回调;2->请求U8失败;3->请求U8成功,但回调客户端失败;4->回调客户端成功】*/
private Integer status;
/** 是否中断 */
private Integer interruptStatus;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;
}

125
src/main/java/com/qs/cost/module/domain/GetListEntity.java

@ -0,0 +1,125 @@
package com.qs.cost.module.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* @author YenHex
* @since 2022/7/6
*/
@Data
public class GetListEntity {
private List<Object> list;
private OtherEntity other;
@JsonProperty("Status")
private Boolean status;
@JsonProperty("Msg")
private String msg;
private Integer page;
@JsonProperty("total_count")
private Integer totalCount;
@JsonProperty("page_count")
private Integer pageCount;
@JsonProperty("page_size")
private Integer pageSize;
@Data
public static class OrderEntity{
@JsonProperty("OrderNO")
private String orderNO;
@JsonProperty("OrderAmount")
private BigDecimal orderAmount;
@JsonProperty("ShippingFare")
private BigDecimal shippingFare;
@JsonProperty("Consignee")
private String consignee;
@JsonProperty("ConsigneeMobile")
private String consigneeMobile;
@JsonProperty("Provinces")
private String provinces;
@JsonProperty("DetailedAddress")
private String detailedAddress;
@JsonProperty("CreateTime")
private String createTime;
private Object items;
}
@Data
public static class OtherEntity{
@JsonProperty("sales_class")
private String salesClass;
@JsonProperty("sales_man")
private String salesMan;
@JsonProperty("sales_type")
private String salesType;
}
/**
{
"list": [ 订单列表
{
"OrderNO": "2022062920761",//订单编号
"OrderAmount": "1200.00", //订单总额
"ShippingFare": "0.00", //订单运费
"Consignee": "付华", //收件人
"ConsigneeMobile": "13537305956", //收件人手机号
"Provinces": "广东省,东莞市,黄江镇", //收件地址省市区
"DetailedAddress": "东莞市黄江镇星光村亿东洋建材有限公司喻付华13537305956", //详细地址
"CreateTime": "2022-06-29 10:43:28", //下单时间
"Items": [ //订单明细
{
"ProductId": 97, //商品ID
"ProductSkuId": 0, //商品skuid
"ERPCode": "erpjdsg", //erp商品编号
"ProductCode": "202201", //商品编号
"ProductName": "815.秋实(一箱装)", //商品名称
"Qty": 1, //订购数量
"SellingPrice": "1200.00", //商品金额
"TaxIncluded": true, //订单编号是否含税
"TaxPrice": "625.20", //税额
"TaxPercent": 52.1 //税率
}
]
}
],
"other": {
"sales_class": "技术部", //销售部门
"sales_man": "乐乐", //销售员
"sales_type": "高质量" //销售类型
},
"Status": true, //请求成功状态码
"Msg": "获取成功", //信息
"page": 2, //页数
"total_count": 3, //总数
"page_count": 3, //总页数
"page_size": 1 //每页多少条数
}
*/
}

26
src/main/java/com/qs/cost/module/domain/dto/JobCallbackParam.java

@ -1,26 +0,0 @@
package com.qs.cost.module.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author YenHex
* @since 2022/2/25
*/
@Data
public class JobCallbackParam {
/**
* 回调参数
*/
@NotNull
private String jsonBody;
/**
* 回调ID
*/
@NotNull
private String keyId;
}

22
src/main/java/com/qs/cost/module/domain/dto/JobDataBaseParam.java

@ -1,22 +0,0 @@
package com.qs.cost.module.domain.dto;
import lombok.Data;
/**
* @author YenHex
* @since 2022/6/20
*/
@Data
public class JobDataBaseParam {
private String host;
private String port;
private String username;
private String password;
private String dbname;
}

16
src/main/java/com/qs/cost/module/domain/dto/JobErpParam.java

@ -1,16 +0,0 @@
package com.qs.cost.module.domain.dto;
import lombok.Data;
/**
* @author YenHex
* @since 2022/6/20
*/
@Data
public class JobErpParam {
private String username;
private String password;
}

50
src/main/java/com/qs/cost/module/domain/dto/JobRequestParam.java

@ -1,50 +0,0 @@
package com.qs.cost.module.domain.dto;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
/**
* @author YenHex
* @since 2022/2/25
*/
@Data
public class JobRequestParam {
/**
* 拓展存储单号
*/
private String pk;
@NotNull
private String cmd;
@NotNull
private String year;
@NotNull
private String book;
@NotNull
private String jsonBody;
private String keyId;
/**
* 是否需要回调不需要回调只触发一次
*/
private Integer callbackState;
/**
* 设置失败重连次数
*/
@Max(value = 10,message = "尝试次数不能超过10次")
private Integer settingRetryTimes;
/**
* 回调地址
*/
private String callbackHost;
}

13
src/main/java/com/qs/cost/module/mapper/ApiBookMapper.java

@ -1,13 +0,0 @@
package com.qs.cost.module.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.cost.module.domain.ApiBook;
/**
* 账套信息 Mapper
* @Author JcYen
* @Date 2021-10-12
*/
public interface ApiBookMapper extends BaseMapper<ApiBook> {
}

13
src/main/java/com/qs/cost/module/mapper/ApiRequestMapper.java

@ -1,13 +0,0 @@
package com.qs.cost.module.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.cost.module.domain.ApiRequest;
/**
* 请求记录历史 Mapper
* @author YenHex
* @date 2022-02-25
*/
public interface ApiRequestMapper extends BaseMapper<ApiRequest> {
}

99
src/main/java/com/qs/cost/module/service/ApiService.java

@ -1,99 +0,0 @@
package com.qs.cost.module.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.cost.common.consts.ApiStatusConst;
import com.qs.cost.common.dto.HttpResult;
import com.qs.cost.common.utils.DateUtil;
import com.qs.cost.common.utils.HttpUtil;
import com.qs.cost.common.utils.JsonUtil;
import com.qs.cost.module.domain.ApiBook;
import com.qs.cost.module.domain.ApiRequest;
import com.qs.cost.module.mapper.ApiBookMapper;
import com.qs.cost.module.mapper.ApiRequestMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author YenHex
* @since 2022/2/25
*/
@Slf4j
@Service
@AllArgsConstructor
public class ApiService {
private final ApiRequestMapper apiRequestMapper;
private final ApiBookMapper bookConfMapper;
public ApiBook getBook(String tenant){
LambdaQueryWrapper<ApiBook> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ApiBook::getTenant,tenant);
List<ApiBook> list = bookConfMapper.selectList(wrapper);
return list.size()>0?list.get(0):null;
}
/**
* 请求U8服务
* @param apiRequestLog
*/
public void reqU8Service(ApiRequest apiRequestLog){
//超过失败次数
int retryTimes = apiRequestLog.getSettingRetryTimes() - apiRequestLog.getRetryTimes();
if(apiRequestLog.getStatus().equals(ApiStatusConst.ApiRequest_Status_2)&&retryTimes<=0){
apiRequestLog.setInterruptStatus(1);
apiRequestMapper.updateById(apiRequestLog);
return;
}
Map<String,Object> maps = new HashMap<>();
maps.put("json",apiRequestLog.getReqParams());
//请求U8接口
long startTime = System.currentTimeMillis();
HttpResult httpResult = HttpUtil.post(apiRequestLog.getReqUrl(),maps);
long endTime = System.currentTimeMillis();
//回调保存基本信息
apiRequestLog.setRespContext(JsonUtil.objectToJson(httpResult));
apiRequestLog.setRespTimes(DateUtil.printRunTime(startTime,endTime));
apiRequestLog.setRespCode(httpResult.getCode());
//判断是否成功
int retryTime = apiRequestLog.getRetryTimes()==null?0:apiRequestLog.getRetryTimes();
if(httpResult.getCode().equals(200)){
if(httpResult.getData()!=null&&httpResult.getData().contains("code\":200")){
apiRequestLog.setStatus(ApiStatusConst.ApiRequest_Status_4);
//请求客户端
if(apiRequestLog.getNeedCallback().equals(1)){
boolean callbackResult = callback(apiRequestLog);
if(!callbackResult){
apiRequestLog.setStatus(ApiStatusConst.ApiRequest_Status_3);
}
}
}else {
apiRequestLog.setStatus(ApiStatusConst.ApiRequest_Status_2);
}
}else {
apiRequestLog.setStatus(ApiStatusConst.ApiRequest_Status_1);
}
apiRequestLog.setRetryTimes(retryTime+1);
apiRequestMapper.updateById(apiRequestLog);
}
/**
* 请求回调
* @param apiRequestLog
* @return
*/
public boolean callback(ApiRequest apiRequestLog){
HttpResult callback = HttpUtil.post(apiRequestLog.getClientHost(),JsonUtil.jsonToMap(apiRequestLog.getRespContext()));
if(callback.getCode().equals(200)){
return true;
}
return false;
}
}

59
src/main/java/com/qs/cost/module/service/JiaJinService.java

@ -0,0 +1,59 @@
package com.qs.cost.module.service;
import com.qs.cost.common.dto.HttpResult;
import com.qs.cost.common.dto.R;
import com.qs.cost.common.utils.DateUtil;
import com.qs.cost.common.utils.HttpUtil;
import com.qs.cost.common.utils.JsonUtil;
import com.qs.cost.common.utils.SecureUtil;
import com.qs.cost.module.domain.GetListEntity;
import java.util.Calendar;
import java.util.Date;
/**
* @author YenHex
* @since 2022/7/6
*/
public class JiaJinService {
public static final String lzyunli = "lzyunli";
public void query(Integer page){
if(page==null){
page = 1;
}
Date now = new Date();
Date lastMonth = DateUtil.getAfterSomedate(now,-1, Calendar.MONTH);
String date = DateUtil.formatDate(now,DateUtil.FORMAT_SIMPLE_DATE2)+"-"+DateUtil.formatDate(lastMonth,DateUtil.FORMAT_SIMPLE_DATE2);
String pageSize = "10";
String params = "date="+date+"&page="+page+"&page_size="+pageSize;
String signParam = lzyunli + params + lzyunli;
String sign = SecureUtil.md5(signParam);
params = params+"&sign="+sign;
String url = "http://wsapp6.lzyunli.com/index.php/getOrder?"+params;
HttpResult httpResult = HttpUtil.get(url);
if(httpResult.getCode()==200){
String json = httpResult.getData();
GetListEntity getListEntity = JsonUtil.jsonToPojo(json,GetListEntity.class);
Integer pageCount = getListEntity.getPageCount();
if(pageCount!=null&&pageCount.equals(page)){
return;
}else {
query(page+1);
}
}
System.out.println();
}
/**
* U8中台回调接口
* @param orderNos
* @return
*/
public R<?> callback(String orderNos){
return R.ok();
}
}

48
src/test/java/boot/PrintDemo.java

@ -19,60 +19,20 @@ public class PrintDemo {
public static void main(String[] args) { public static void main(String[] args) {
String date = "2020/04/25-2022/07/26"; String date = "2020/04/25-2022/07/26";
String page = "1"; String page = "2";
String pageSize = "10"; String pageSize = "10";
String params = "date="+date+"&page="+page+"&page_size="+pageSize; String params = "date="+date+"&page="+page+"&page_size="+pageSize;
System.out.println(params); System.out.println(params);
String signParam = lzyunli + params + lzyunli; String signParam = lzyunli + params + lzyunli;
System.out.println("加密前:"+signParam); System.out.println("加密前:"+signParam);
String sign = SecureUtil.md5(signParam); String sign = SecureUtil.md5(signParam);
params = params+"&sign="+sign; params = params+"&sign="+sign;
HttpResult httpResult = HttpUtil.get("http://wsapp6.lzyunli.com/getOrder?"+params); String url = "http://wsapp6.lzyunli.com/index.php/getOrder?"+params;
System.out.println(url);
HttpResult httpResult = HttpUtil.get(url);
System.out.println(httpResult.getData()); System.out.println(httpResult.getData());
} }
/**
* @param paraMap 请求参数
* @param urlEncode 是否utf-8编码
* @return
*/
public static String formatUrlMap(Map<String, String> paraMap, boolean urlEncode) {
String buff = "";
Map<String, String> tmpMap = paraMap;
try {
List<Map.Entry<String, String>> infoIds = new ArrayList<Map.Entry<String, String>>(tmpMap.entrySet());
// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
Collections.sort(infoIds, new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
return (o1.getKey()).toString().compareTo(o2.getKey());
}
});
// 构造返回字符串键值对的格式
StringBuilder buf = new StringBuilder();
for (Map.Entry<String, String> item : infoIds) {
if (StringUtils.isNotBlank(item.getKey())) {
String key = item.getKey();
String val = item.getValue();
if (urlEncode) {
val = URLEncoder.encode(val, "utf-8");
}
buf.append(key + "=" + val);
buf.append("&");
}
}
buff = buf.toString();
if (buff.isEmpty() == false) {
buff = buff.substring(0, buff.length() - 1);
}
} catch (Exception e) {
return null;
}
return buff;
}
} }

Loading…
Cancel
Save