123
This commit is contained in:
21
doc/v5.sql
Normal file
21
doc/v5.sql
Normal file
@@ -0,0 +1,21 @@
|
||||
ALTER TABLE `cai_recharge_order`
|
||||
ADD COLUMN `device_type` varchar(255) NULL COMMENT '设备' AFTER `appid`;
|
||||
|
||||
|
||||
DROP TABLE cai_order_logs;
|
||||
CREATE TABLE `cai_order_logs`
|
||||
(
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`order_no` varchar(100) NOT NULL COMMENT '订单号',
|
||||
`step_name` varchar(100) NOT NULL COMMENT '操作名称',
|
||||
`flag_name` varchar(100) NULL COMMENT '标识1',
|
||||
`in_params` JSON COMMENT '入参',
|
||||
`out_params` JSON COMMENT '出参',
|
||||
`remark` varchar(2100) NULL COMMENT '备注',
|
||||
`success` varchar(100) NULL COMMENT '成功',
|
||||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_order` (`order_no`) USING BTREE
|
||||
) ENGINE = InnoDB
|
||||
AUTO_INCREMENT = 1;
|
||||
|
||||
@@ -14,11 +14,13 @@ import com.ijpay.core.kit.HttpKit;
|
||||
import com.ijpay.core.kit.WxPayKit;
|
||||
import com.ijpay.wxpay.WxPayApi;
|
||||
import com.ijpay.wxpay.model.UnifiedOrderModel;
|
||||
import com.ruoyi.cai.domain.OrderLogs;
|
||||
import com.ruoyi.cai.domain.PayConfig;
|
||||
import com.ruoyi.cai.dto.app.vo.pay.OrderPayStatusResp;
|
||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||
import com.ruoyi.cai.manager.SystemConfigManager;
|
||||
import com.ruoyi.cai.pay.*;
|
||||
import com.ruoyi.cai.service.OrderLogsService;
|
||||
import com.ruoyi.cai.service.PayTrdConfigService;
|
||||
import com.ruoyi.cai.trdpay.TrdPayManager;
|
||||
import com.ruoyi.cai.trdpay.TrdPayProperties;
|
||||
@@ -27,6 +29,7 @@ import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
import com.ruoyi.common.utils.ServletUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -57,6 +60,8 @@ public class PayController {
|
||||
private static final String NOTIFY_ALI_URL = "/api/pay/ali/notify";
|
||||
@Autowired
|
||||
private SystemConfigManager systemConfigManager;
|
||||
@Autowired
|
||||
private OrderLogsService orderLogsService;
|
||||
|
||||
|
||||
// @GetMapping(value = "/checkPay")
|
||||
@@ -92,12 +97,15 @@ public class PayController {
|
||||
try {
|
||||
boolean openAliPay = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_ALI_PAY);
|
||||
if(!openAliPay){
|
||||
orderLogsService.createBaseFail(dto.getOrderNo(),"四方支付宝支付","第四方支付宝未开启");
|
||||
return R.fail(600,"支付宝支付失败!未开启支付宝通道!");
|
||||
}
|
||||
log.info("支付宝聚合支付 使用第三方支付 dto={}",JSON.toJSONString(dto));
|
||||
PayReturnResp orderAli = payTrdConfigService.createOrderAli(payOrderInfo);
|
||||
orderLogsService.createBaseSuccess(dto.getOrderNo(),"四方支付宝支付");
|
||||
return R.ok(orderAli);
|
||||
}catch (Exception e){
|
||||
orderLogsService.createBaseFail(dto.getOrderNo(),"四方支付宝支付",StringUtils.cat(e.getMessage(),2000));
|
||||
log.error("支付宝聚合支付 使用第三方支付失败! dto={}",JSON.toJSONString(dto), e);
|
||||
return R.fail(600,"支付宝支付失败!");
|
||||
}
|
||||
@@ -105,12 +113,14 @@ public class PayController {
|
||||
try {
|
||||
boolean openSourceAliPay = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_SOURCE_ALI_PAY);
|
||||
if(!openSourceAliPay){
|
||||
orderLogsService.createBaseFail(dto.getOrderNo(),"支付宝支付","支付宝支付失败!未开启原生支付宝通道!");
|
||||
return R.fail(600,"支付宝支付失败!未开启原生支付宝通道!");
|
||||
}
|
||||
log.info("支付宝聚合支付 使用原生支付 dto={}",JSON.toJSONString(dto));
|
||||
boolean b = payConfigManager.initAliPay();
|
||||
if(!b){
|
||||
log.error("支付失败,未找到可用的支付宝配置");
|
||||
orderLogsService.createBaseFail(dto.getOrderNo(),"支付宝支付","支付失败,未找到可用的支付宝配置");
|
||||
return R.fail(600,"支付失败!未开通支付宝支付!");
|
||||
}
|
||||
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
|
||||
@@ -121,9 +131,11 @@ public class PayController {
|
||||
model.setTotalAmount(payOrderInfo.getPrice().toString());
|
||||
String notifyUrl = AliPayApiConfigKit.getAliPayApiConfig().getDomain();
|
||||
String orderInfo = AliPayApi.appPayToResponse(model, notifyUrl+NOTIFY_ALI_URL).getBody();
|
||||
orderLogsService.createBaseSuccess(dto.getOrderNo(),"支付宝支付");
|
||||
return R.ok(PayReturnResp.createApp(orderInfo));
|
||||
} catch (AlipayApiException e) {
|
||||
log.error("支付宝聚合支付 使用原生支付失败! dto={}",JSON.toJSONString(dto),e);
|
||||
orderLogsService.createBaseFail(dto.getOrderNo(),"支付宝支付",StringUtils.cat(e.getMessage(),2000));
|
||||
return R.fail("支付宝支付失败,请联系客服");
|
||||
}
|
||||
}
|
||||
@@ -172,11 +184,13 @@ public class PayController {
|
||||
String returnMsg = result.get("return_msg");
|
||||
if (!WxPayKit.codeIsOk(returnCode)) {
|
||||
log.error("微信支付失败 returnMsg={}",returnMsg);
|
||||
orderLogsService.createBaseFail(dto.getOrderNo(),"微信支付",StringUtils.cat(returnMsg,2000));
|
||||
return R.fail("微信支付失败,请联系客服");
|
||||
}
|
||||
String resultCode = result.get("result_code");
|
||||
if (!WxPayKit.codeIsOk(resultCode)) {
|
||||
log.error("微信支付失败 returnMsg={}",returnMsg);
|
||||
orderLogsService.createBaseFail(dto.getOrderNo(),"微信支付",StringUtils.cat(returnMsg,2000));
|
||||
return R.fail("微信支付失败,请联系客服");
|
||||
}
|
||||
// 以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回
|
||||
@@ -187,6 +201,7 @@ public class PayController {
|
||||
log.info("返回apk的参数:" + jsonStr);
|
||||
PayReturnResp resp = new PayReturnResp();
|
||||
resp.setData(jsonStr);
|
||||
orderLogsService.createBaseSuccess(dto.getOrderNo(),"微信支付");
|
||||
return R.ok(resp);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.ruoyi.cai.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.ruoyi.cai.domain.OrderLogs;
|
||||
import com.ruoyi.cai.service.OrderLogsService;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单日志
|
||||
*
|
||||
* @author 77
|
||||
* @date 2024-12-13
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/cai/orderLogs")
|
||||
public class OrderLogsController extends BaseController {
|
||||
|
||||
private final OrderLogsService orderLogsService;
|
||||
|
||||
/**
|
||||
* 查询订单日志列表
|
||||
*/
|
||||
@GetMapping("/allByOrderNo")
|
||||
public R<List<OrderLogs>> list(OrderLogs bo) {
|
||||
List<OrderLogs> list = orderLogsService.list(Wrappers.lambdaQuery(OrderLogs.class).eq(OrderLogs::getOrderNo, bo.getOrderNo())
|
||||
.orderByAsc(OrderLogs::getCreateTime));
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单日志详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@GetMapping("/{id}")
|
||||
public R<OrderLogs> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(orderLogsService.getById(id));
|
||||
}
|
||||
|
||||
}
|
||||
54
ruoyi-cai/src/main/java/com/ruoyi/cai/domain/OrderLogs.java
Normal file
54
ruoyi-cai/src/main/java/com/ruoyi/cai/domain/OrderLogs.java
Normal file
@@ -0,0 +1,54 @@
|
||||
package com.ruoyi.cai.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 订单日志对象 cai_order_logs
|
||||
*
|
||||
* @author 77
|
||||
* @date 2024-12-13
|
||||
*/
|
||||
@Data
|
||||
@TableName("cai_order_logs")
|
||||
public class OrderLogs implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
/**
|
||||
* 订单号
|
||||
*/
|
||||
private String orderNo;
|
||||
/**
|
||||
* 操作名称
|
||||
*/
|
||||
private String stepName;
|
||||
/**
|
||||
* 入参
|
||||
*/
|
||||
private String inParams;
|
||||
/**
|
||||
* 出参
|
||||
*/
|
||||
private String outParams;
|
||||
/**
|
||||
* 标识名称
|
||||
*/
|
||||
private String flagName;
|
||||
|
||||
private String remark;
|
||||
|
||||
private String success;
|
||||
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
@@ -26,6 +26,7 @@ public class RechargeOrder implements Serializable {
|
||||
*/
|
||||
@TableId(value = "id",type = IdType.AUTO)
|
||||
private Long id;
|
||||
private String deviceType;
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.ruoyi.cai.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ruoyi.cai.domain.OrderLogs;
|
||||
|
||||
/**
|
||||
* 订单日志Mapper接口
|
||||
*
|
||||
* @author 77
|
||||
* @date 2024-12-13
|
||||
*/
|
||||
public interface OrderLogsMapper extends BaseMapper<OrderLogs> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.ruoyi.cai.service;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.cai.domain.OrderLogs;
|
||||
import com.ruoyi.cai.trdpay.TrdPayTypeEnum;
|
||||
|
||||
/**
|
||||
* 订单日志Service接口
|
||||
*
|
||||
* @author 77
|
||||
* @date 2024-12-13
|
||||
*/
|
||||
public interface OrderLogsService extends IService<OrderLogs> {
|
||||
|
||||
void createOrderLogs(String orderNo, String stepName, String flag, String inParams, String outParams);
|
||||
|
||||
void createOrderLogsNoFlag(String orderNo, String stepName, String inParams, String outParams);
|
||||
|
||||
void createBaseFail(String orderNo, String stepName, String remark);
|
||||
|
||||
void createBaseSuccess(String orderNo, String stepName);
|
||||
|
||||
void createAliPayLogs(String orderNo, String inParams, JSONObject jsonObject, TrdPayTypeEnum typeEnum);
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package com.ruoyi.cai.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.cai.domain.OrderLogs;
|
||||
import com.ruoyi.cai.mapper.OrderLogsMapper;
|
||||
import com.ruoyi.cai.service.OrderLogsService;
|
||||
import com.ruoyi.cai.trdpay.TrdPayTypeEnum;
|
||||
import lombok.Data;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 订单日志Service业务层处理
|
||||
*
|
||||
* @author 77
|
||||
* @date 2024-12-13
|
||||
*/
|
||||
@Service
|
||||
public class OrderLogsServiceImpl extends ServiceImpl<OrderLogsMapper, OrderLogs> implements OrderLogsService {
|
||||
|
||||
@Override
|
||||
public void createOrderLogs(String orderNo, String stepName, String flag, String inParams, String outParams){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createOrderLogsNoFlag(String orderNo, String stepName, String inParams, String outParams){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createBaseFail(String orderNo, String stepName, String remark){
|
||||
OrderLogs orderLogs = new OrderLogs();
|
||||
orderLogs.setOrderNo(orderNo);
|
||||
orderLogs.setStepName(stepName);
|
||||
orderLogs.setSuccess("失败");
|
||||
orderLogs.setRemark(remark);
|
||||
this.save(orderLogs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createBaseSuccess(String orderNo, String stepName){
|
||||
OrderLogs orderLogs = new OrderLogs();
|
||||
orderLogs.setOrderNo(orderNo);
|
||||
orderLogs.setStepName(stepName);
|
||||
orderLogs.setSuccess("成功");
|
||||
this.save(orderLogs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createAliPayLogs(String orderNo, String inParams, JSONObject jsonObject, TrdPayTypeEnum typeEnum){
|
||||
OrderLogs orderLogs = new OrderLogs();
|
||||
orderLogs.setOrderNo(orderNo);
|
||||
orderLogs.setStepName("四方支付宝支付请求日志");
|
||||
orderLogs.setSuccess("请求日志");
|
||||
orderLogs.setInParams(JSON.toJSONString(new UrlJson(inParams)));
|
||||
orderLogs.setOutParams(JSON.toJSONString(jsonObject));
|
||||
orderLogs.setFlagName(typeEnum.name());
|
||||
if(typeEnum == TrdPayTypeEnum.V1) { // V1
|
||||
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
|
||||
orderLogs.setSuccess("失败");
|
||||
}
|
||||
}else if(typeEnum == TrdPayTypeEnum.V2){
|
||||
if(!"0".equals(jsonObject.getString("retCode"))){
|
||||
orderLogs.setSuccess("失败");
|
||||
}
|
||||
}else if(typeEnum == TrdPayTypeEnum.V3){
|
||||
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
|
||||
orderLogs.setSuccess("失败");
|
||||
}
|
||||
}
|
||||
orderLogs.setSuccess("成功");
|
||||
this.save(orderLogs);
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class UrlJson{
|
||||
private String url;
|
||||
|
||||
public UrlJson() {
|
||||
}
|
||||
|
||||
public UrlJson(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -10,6 +10,7 @@ import com.ruoyi.cai.pay.PayManager;
|
||||
import com.ruoyi.cai.pay.PayOrderInfoDTO;
|
||||
import com.ruoyi.cai.pay.PayReturnResp;
|
||||
import com.ruoyi.cai.pay.PayTypeEnum;
|
||||
import com.ruoyi.cai.service.OrderLogsService;
|
||||
import com.ruoyi.cai.service.PayTrdConfigService;
|
||||
import com.ruoyi.cai.trdpay.TrdPayManager;
|
||||
import com.ruoyi.cai.trdpay.TrdPayTypeEnum;
|
||||
@@ -37,6 +38,8 @@ public class PayTrdConfigServiceImpl extends ServiceImpl<PayTrdConfigMapper, Pay
|
||||
private TrdPayManager trdPayManager;
|
||||
@Autowired
|
||||
private PayManager payManager;
|
||||
@Autowired
|
||||
private OrderLogsService orderLogsService;
|
||||
|
||||
@Override
|
||||
public PayReturnResp createOrderAli(PayOrderInfoDTO dto){
|
||||
|
||||
@@ -14,11 +14,13 @@ import com.ruoyi.cai.dto.commom.consumer.RechargeConsumerResp;
|
||||
import com.ruoyi.cai.enums.ConsumeLogType;
|
||||
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
||||
import com.ruoyi.cai.enums.account.AccountTypeEnum;
|
||||
import com.ruoyi.cai.enums.version.VersionPlatformEnum;
|
||||
import com.ruoyi.cai.manager.IdManager;
|
||||
import com.ruoyi.cai.mapper.AccountMapper;
|
||||
import com.ruoyi.cai.mapper.RechargeOrderMapper;
|
||||
import com.ruoyi.cai.pay.*;
|
||||
import com.ruoyi.cai.service.*;
|
||||
import com.ruoyi.cai.util.VersionUtil;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
@@ -79,6 +81,7 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
|
||||
throw new ServiceException("充值价格错误");
|
||||
}
|
||||
RechargeOrder order = new RechargeOrder();
|
||||
order.setDeviceType(VersionUtil.getVersionPlatformString());
|
||||
order.setUserId(addRechargeOrderDto.getUserId());
|
||||
order.setRechargeId(goods.getId());
|
||||
order.setRechargeName(goods.getName());
|
||||
|
||||
@@ -5,13 +5,16 @@ import cn.hutool.crypto.digest.DigestUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.ruoyi.cai.domain.Account;
|
||||
import com.ruoyi.cai.domain.OrderLogs;
|
||||
import com.ruoyi.cai.domain.PayTrdConfig;
|
||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||
import com.ruoyi.cai.manager.SystemConfigManager;
|
||||
import com.ruoyi.cai.pay.PayOrderInfoDTO;
|
||||
import com.ruoyi.cai.service.AccountService;
|
||||
import com.ruoyi.cai.service.OrderLogsService;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.utils.ServletUtils;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -78,14 +81,14 @@ public class TrdPayManager {
|
||||
String url = createOrderUrl + "?" + para;
|
||||
String body = restTemplate.getForEntity(url, String.class).getBody();
|
||||
JSONObject jsonObject = JSON.parseObject(body);
|
||||
if(jsonObject == null){
|
||||
log.error("第三方支付失败 返回数据为空");
|
||||
throw new ServiceException("调用支付失败");
|
||||
}
|
||||
log.info("第三方支付成功 URL={}, body={}",url, body);
|
||||
orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(),url,jsonObject,typeEnum);
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private OrderLogsService orderLogsService;
|
||||
|
||||
@Autowired
|
||||
private AccountService accountService;
|
||||
@Autowired
|
||||
|
||||
@@ -21,6 +21,26 @@ public class VersionUtil {
|
||||
return VersionPlatformEnum.ANDROID;
|
||||
}
|
||||
|
||||
public static String getVersionPlatformString(){
|
||||
VersionPlatformEnum strict = getVersionPlatformStrict();
|
||||
if(strict != null){
|
||||
return strict.getText();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static VersionPlatformEnum getVersionPlatformStrict(){
|
||||
HttpServletRequest request = ServletUtils.getRequest();
|
||||
String sourceId = request.getHeader("source_id");
|
||||
if("2".equals(sourceId)){
|
||||
return VersionPlatformEnum.IOS;
|
||||
}
|
||||
if("1".equals(sourceId)){
|
||||
return VersionPlatformEnum.ANDROID;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static int compareVersion(String v1, String v2) {
|
||||
String[] ss1 = v1.split("\\."), ss2 = v2.split("\\.");
|
||||
int n = ss1.length, m = ss2.length;
|
||||
|
||||
17
ruoyi-cai/src/main/resources/mapper/cai/OrderLogsMapper.xml
Normal file
17
ruoyi-cai/src/main/resources/mapper/cai/OrderLogsMapper.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.cai.mapper.OrderLogsMapper">
|
||||
|
||||
<resultMap type="com.ruoyi.cai.domain.OrderLogs" id="OrderLogsResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="orderNo" column="order_no"/>
|
||||
<result property="stepName" column="step_name"/>
|
||||
<result property="inParams" column="in_params"/>
|
||||
<result property="outParams" column="out_params"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -322,4 +322,15 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
public static String cat(String str,Integer num){
|
||||
if(str == null){
|
||||
return str;
|
||||
}
|
||||
if(str.length() < num){
|
||||
return str;
|
||||
}
|
||||
return str.substring(0,num);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user