代码完善
This commit is contained in:
parent
9d6cc08560
commit
e57bd944d8
49
pom.xml
49
pom.xml
@ -45,11 +45,58 @@
|
||||
|
||||
<dependencies>
|
||||
|
||||
|
||||
<!-- JSerialComm for serial port communication -->
|
||||
<dependency>
|
||||
<groupId>com.fazecast</groupId>
|
||||
<artifactId>jSerialComm</artifactId>
|
||||
<version>2.9.2</version>
|
||||
</dependency>
|
||||
<!-- JFreeChart for charting -->
|
||||
<dependency>
|
||||
<groupId>org.jfree</groupId>
|
||||
<artifactId>jfreechart</artifactId>
|
||||
<version>1.5.3</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
<!-- 微信支付 -->
|
||||
<dependency>
|
||||
<groupId>com.github.wxpay</groupId>
|
||||
<artifactId>wxpay-sdk</artifactId>
|
||||
<version>0.0.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-miniapp</artifactId>
|
||||
<version>4.4.2.B</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-pay</artifactId>
|
||||
<version>4.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-mp</artifactId>
|
||||
<version>4.4.0</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk -->
|
||||
<dependency>
|
||||
<groupId>com.alipay.sdk</groupId>
|
||||
<artifactId>alipay-easysdk</artifactId>
|
||||
<version>2.2.0</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- 支付宝相关-->
|
||||
<dependency>
|
||||
<groupId>com.alipay.sdk</groupId>
|
||||
<artifactId>alipay-sdk-java</artifactId>
|
||||
<version>4.9.28.ALL</version>
|
||||
<version>4.34.0.ALL</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
@ -325,7 +325,7 @@ public class ExcelUtil<T>
|
||||
*
|
||||
* @param list 导出数据集合
|
||||
* @param sheetName 工作表的名称
|
||||
* @return 结果
|
||||
* @return 结果 (导出位置在yml文件)
|
||||
*/
|
||||
public AjaxResult exportExcel(List<T> list, String sheetName)
|
||||
{
|
||||
|
@ -1,12 +1,20 @@
|
||||
package com.ruoyi.project.hit.controller;
|
||||
|
||||
import com.ruoyi.common.utils.ServletUtils;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.framework.security.LoginUser;
|
||||
import com.ruoyi.framework.web.controller.BaseController;
|
||||
import com.ruoyi.framework.web.domain.AjaxResult;
|
||||
import com.ruoyi.framework.web.page.TableDataInfo;
|
||||
import com.ruoyi.project.hit.domain.PupuLog;
|
||||
import com.ruoyi.project.hit.domain.vo.SelectLogVO;
|
||||
import com.ruoyi.project.hit.service.PupuLogService;
|
||||
import com.ruoyi.project.system.domain.SysUser;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@ -23,7 +31,60 @@ public class PupuLogController extends BaseController {
|
||||
*/
|
||||
@PostMapping("/select")
|
||||
public TableDataInfo select(@RequestBody SelectLogVO selectLogVO){
|
||||
startPage();
|
||||
List<HashMap> select = pupuLogService.select(selectLogVO);
|
||||
return getDataTable(select);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 日志表导出
|
||||
* @param selectLogVO
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/export")
|
||||
public AjaxResult export(@RequestBody SelectLogVO selectLogVO)
|
||||
{
|
||||
List<PupuLog> list = pupuLogService.selectLogs(selectLogVO);
|
||||
ExcelUtil<PupuLog> util = new ExcelUtil<PupuLog>(PupuLog.class);
|
||||
return util.exportExcel(list, "日志数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 日志表导入
|
||||
* @param file
|
||||
* @param updateSupport
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@PostMapping("/importData")
|
||||
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
|
||||
{
|
||||
ExcelUtil<PupuLog> util = new ExcelUtil<PupuLog>(PupuLog.class);
|
||||
List<PupuLog> list = util.importExcel(file.getInputStream());
|
||||
System.out.println(list);
|
||||
if(list.size()==0){
|
||||
return AjaxResult.error("空数据");
|
||||
}
|
||||
//执行导入操作。。。
|
||||
boolean b = pupuLogService.saveBatch(list);
|
||||
if(!b){
|
||||
return AjaxResult.error("数据导入失败");
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取导入模版
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/importTemplate")
|
||||
public AjaxResult importTemplate()
|
||||
{
|
||||
ExcelUtil<PupuLog> util = new ExcelUtil<PupuLog>(PupuLog.class);
|
||||
return util.importTemplateExcel("日志数据");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -4,24 +4,35 @@ import com.baomidou.mybatisplus.annotation.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @TableName pupu_log
|
||||
*/
|
||||
@TableName(value ="pupu_log")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PupuLog implements Serializable {
|
||||
@TableId(type = IdType.AUTO)
|
||||
@Excel(name = "日志序号", cellType = Excel.ColumnType.NUMERIC, prompt = "日志编号")
|
||||
private Integer logId;
|
||||
|
||||
@Excel(name = "事件")
|
||||
private String logEvent;
|
||||
|
||||
@Excel(name = "事件种类", readConverterExp = "1=增,2=删,3=改")
|
||||
private Integer logSort;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Excel(name = "时间", width = 30 ,dateFormat = "yyyy-MM-dd HH:mm:ss", type = Excel.Type.EXPORT)
|
||||
private Date time;
|
||||
|
||||
@Excel(name = "用户id")
|
||||
private Integer userId;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@ -17,4 +17,6 @@ public interface PupuLogService extends IService<PupuLog> {
|
||||
int add(PupuLog pupuLog);
|
||||
|
||||
List<HashMap> select(SelectLogVO selectLogVO);
|
||||
|
||||
List<PupuLog> selectLogs(SelectLogVO selectLogVO);
|
||||
}
|
||||
|
@ -41,8 +41,8 @@ public class PupuEquipmentServiceImpl extends ServiceImpl<PupuEquipmentMapper, P
|
||||
if(pupuEquipmentMapper.selectOne(wrapper)!=null){
|
||||
throw new CustomException("标识码重复");
|
||||
};
|
||||
int i=0;
|
||||
i = pupuEquipmentMapper.insertAndReturnId(pupuEquipment);
|
||||
|
||||
int i = pupuEquipmentMapper.insertAndReturnId(pupuEquipment);
|
||||
if(i>0){
|
||||
pupuLogService.add(new PupuLog("设备"+pupuEquipment.getEquipmentId()+"新增",1,new Date(),userId));
|
||||
}
|
||||
@ -54,8 +54,11 @@ public class PupuEquipmentServiceImpl extends ServiceImpl<PupuEquipmentMapper, P
|
||||
if(pupuEquipmentMapper.selectById(equipmentId)==null){
|
||||
throw new CustomException("该设备不存在");
|
||||
}
|
||||
pupuLogService.add(new PupuLog("设备"+equipmentId+"删除",2,new Date(),userId));
|
||||
return pupuEquipmentMapper.deleteById(equipmentId);
|
||||
int i = pupuEquipmentMapper.deleteById(equipmentId);
|
||||
if(i>0){
|
||||
pupuLogService.add(new PupuLog("设备"+equipmentId+"删除",2,new Date(),userId));
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.ruoyi.project.hit.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.common.exception.CustomException;
|
||||
import com.ruoyi.project.hit.domain.PupuLog;
|
||||
@ -35,6 +36,13 @@ public class PupuLogServiceImpl extends ServiceImpl<PupuLogMapper, PupuLog>
|
||||
public List<HashMap> select(SelectLogVO selectLogVO) {
|
||||
return pupuLogMapper.select(selectLogVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PupuLog> selectLogs(SelectLogVO selectLogVO) {
|
||||
LambdaQueryWrapper<PupuLog> wrapper=new LambdaQueryWrapper<>();
|
||||
wrapper.eq(PupuLog::getLogSort,selectLogVO.getSortId());
|
||||
return pupuLogMapper.selectList(wrapper);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -33,12 +33,11 @@ public class PupuStoreServiceImpl extends ServiceImpl<PupuStoreMapper, PupuStore
|
||||
|
||||
@Override
|
||||
public int add(PupuStore pupuStore, Integer userId) {
|
||||
int i=0;
|
||||
i = pupuStoreMapper.insertReturnId(pupuStore);
|
||||
|
||||
int i = pupuStoreMapper.insertReturnId(pupuStore);
|
||||
if(i>0){
|
||||
pupuLogService.add(new PupuLog("门店"+pupuStore.getStoreId()+"新增",1,new Date(),userId));
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
@ -58,9 +57,6 @@ public class PupuStoreServiceImpl extends ServiceImpl<PupuStoreMapper, PupuStore
|
||||
}
|
||||
return i;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,76 +0,0 @@
|
||||
package com.ruoyi.project.hit.test;
|
||||
|
||||
|
||||
|
||||
|
||||
//import com.alipay.easysdk.factory.Factory;
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 支付宝接口
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/alipay")
|
||||
public class AliPayController {
|
||||
|
||||
@Resource
|
||||
AlipayTemplate alipayTemplate;
|
||||
|
||||
@GetMapping(value = "/pay", produces = "text/html")
|
||||
@ResponseBody
|
||||
public String pay(@RequestParam long id) throws AlipayApiException {
|
||||
Order order = new Order();
|
||||
order.setId(120948748372234L);
|
||||
order.setUserId(129904058947L);
|
||||
order.setInterfaceInfoId(294389472934L);
|
||||
order.setMoney(10.0);
|
||||
order.setPaymentMethod("支付宝");
|
||||
return alipayTemplate.pay(order);
|
||||
}
|
||||
|
||||
@PostMapping("/notify") // 注意这里必须是POST接口
|
||||
public String payNotify(HttpServletRequest request) throws Exception {
|
||||
if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
|
||||
System.out.println("=========支付宝异步回调========");
|
||||
|
||||
Map<String, String> params = new HashMap<>();
|
||||
Map<String, String[]> requestParams = request.getParameterMap();
|
||||
for (String name : requestParams.keySet()) {
|
||||
params.put(name, request.getParameter(name));
|
||||
// System.out.println(name + " = " + request.getParameter(name));
|
||||
}
|
||||
|
||||
String tradeNo = params.get("out_trade_no");
|
||||
String gmtPayment = params.get("gmt_payment");
|
||||
String alipayTradeNo = params.get("trade_no");
|
||||
// 支付宝验签
|
||||
// if (Factory.Payment.Common().verifyNotify(params)) {
|
||||
// // 验签通过
|
||||
// System.out.println("交易名称: " + params.get("subject"));
|
||||
// System.out.println("交易状态: " + params.get("trade_status"));
|
||||
// System.out.println("支付宝交易凭证号: " + params.get("trade_no"));
|
||||
// System.out.println("商户订单号: " + params.get("out_trade_no"));
|
||||
// System.out.println("交易金额: " + params.get("total_amount"));
|
||||
// System.out.println("买家在支付宝唯一id: " + params.get("buyer_id"));
|
||||
// System.out.println("买家付款时间: " + params.get("gmt_payment"));
|
||||
// System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
|
||||
// // 更新订单状态
|
||||
// }
|
||||
}
|
||||
return "success";
|
||||
}
|
||||
}
|
||||
|
||||
|
30
src/main/java/com/ruoyi/project/hit/test/ai/AIRequest.java
Normal file
30
src/main/java/com/ruoyi/project/hit/test/ai/AIRequest.java
Normal file
@ -0,0 +1,30 @@
|
||||
package com.ruoyi.project.hit.test.ai;
|
||||
|
||||
|
||||
public class AIRequest {
|
||||
private String url = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s";
|
||||
|
||||
private String message;
|
||||
|
||||
public AIRequest(){}
|
||||
public AIRequest(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return String.format(url, message);//返回完整的url
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
}
|
||||
|
52
src/main/java/com/ruoyi/project/hit/test/ai/AiService.java
Normal file
52
src/main/java/com/ruoyi/project/hit/test/ai/AiService.java
Normal file
@ -0,0 +1,52 @@
|
||||
package com.ruoyi.project.hit.test.ai;
|
||||
|
||||
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.Map;
|
||||
|
||||
public class AiService {
|
||||
|
||||
public static String getdetail(String message){
|
||||
AIRequest request=new AIRequest(message);
|
||||
try {
|
||||
URL url = new URL(request.getUrl());
|
||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||
int code = connection.getResponseCode();
|
||||
if (code >= 200 && code < 300) {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
||||
StringBuffer sb = new StringBuffer();
|
||||
String str;
|
||||
while ((str = reader.readLine()) != null) {
|
||||
sb.append(str);
|
||||
}
|
||||
// System.out.println(sb);
|
||||
return String.valueOf(sb);//返回json格式
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "ai应答失败";
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args){
|
||||
String json=getdetail("现在几点");
|
||||
System.out.println(json);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
try {
|
||||
// 将JSON字符串转换为Map
|
||||
Map<String, Object> map = mapper.readValue(json, Map.class);
|
||||
// 打印转换后的Map
|
||||
System.out.println(map.get("content"));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,123 @@
|
||||
package com.ruoyi.project.hit.test.alipay;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.alipay.api.internal.util.AlipaySignature;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* 支付宝接口
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/hit/alipay")
|
||||
public class AliPayController {
|
||||
|
||||
@Resource
|
||||
AlipayTemplate alipayTemplate;
|
||||
|
||||
@GetMapping(value = "/pay/{orderId}", produces = "text/html")
|
||||
@ResponseBody
|
||||
public String pay(@PathVariable(value = "orderId") Integer orderId) throws AlipayApiException {
|
||||
Order order = new Order();
|
||||
Random random = new Random();
|
||||
|
||||
// 生成一个随机的long型数据
|
||||
long randomLong = random.nextLong();
|
||||
order.setId(randomLong);
|
||||
order.setUserId(129904058947L);
|
||||
order.setInterfaceInfoId(294389472934L);
|
||||
order.setMoney(10.0);
|
||||
order.setPaymentMethod("支付宝");
|
||||
return alipayTemplate.pay(order);
|
||||
}
|
||||
|
||||
@PostMapping("/notify") // 注意这里必须是POST接口
|
||||
public String payNotify(HttpServletRequest request) throws Exception {
|
||||
if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
|
||||
System.out.println("=========支付宝异步回调========");
|
||||
|
||||
/*Map<String, String> params = new HashMap<>();
|
||||
Map<String, String[]> requestParams = request.getParameterMap();
|
||||
for (String name : requestParams.keySet()) {
|
||||
params.put(name, request.getParameter(name));
|
||||
System.out.println(name + " = " + request.getParameter(name));
|
||||
}
|
||||
|
||||
String tradeNo = params.get("out_trade_no");
|
||||
String gmtPayment = params.get("gmt_payment");
|
||||
String alipayTradeNo = params.get("trade_no");
|
||||
|
||||
String sign = params.get("sign");
|
||||
String content = AlipaySignature.getSignCheckContentV1(params);
|
||||
|
||||
// 支付宝验签
|
||||
// System.out.println(alipayTemplate.alipayPublicKey);
|
||||
// System.out.println(alipayTemplate.getCharset());
|
||||
boolean rsa2 = AlipaySignature.rsaCheck(content,sign, alipayTemplate.alipayPublicKey, "UTF-8", "RSA2");
|
||||
// boolean checkSignature = AlipaySignature.rsa256CheckContent(content, sign, alipayTemplate.getAlipayPublicKey(), "UTF-8"); // 验证签名
|
||||
System.out.println(rsa2);
|
||||
if (Factory.Payment.Common().verifyNotify(params)) {
|
||||
// 验签通过
|
||||
System.out.println("交易名称: " + params.get("subject"));
|
||||
System.out.println("交易状态: " + params.get("trade_status"));
|
||||
System.out.println("支付宝交易凭证号: " + params.get("trade_no"));
|
||||
System.out.println("商户订单号: " + params.get("out_trade_no"));
|
||||
System.out.println("交易金额: " + params.get("total_amount"));
|
||||
System.out.println("买家在支付宝唯一id: " + params.get("buyer_id"));
|
||||
System.out.println("买家付款时间: " + params.get("gmt_payment"));
|
||||
System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
|
||||
// 更新订单状态
|
||||
}else {
|
||||
System.out.println("验签失败");
|
||||
}*/
|
||||
|
||||
|
||||
Map<String, String> params = new HashMap<>();
|
||||
// 假设你已经有了一个方法来解析HTTP POST请求的参数
|
||||
Map<String, String[]> requestParams = request.getParameterMap();
|
||||
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
|
||||
String name = iter.next();
|
||||
String[] values = requestParams.get(name);
|
||||
String valueStr = "";
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
valueStr = (i == values.length - 1) ? valueStr + values[i]
|
||||
: valueStr + values[i] + ",";
|
||||
}
|
||||
// 乱码解决,这段代码在出现乱码时使用
|
||||
// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
|
||||
params.put(name, valueStr);
|
||||
}
|
||||
|
||||
// 验签
|
||||
System.out.println(params);
|
||||
boolean isCheck = AlipaySignature.rsaCheckV1(params, alipayTemplate.getAlipayPublicKey(), "UTF-8","RSA2");
|
||||
if (isCheck) {
|
||||
System.out.println("验签成功");
|
||||
// 验签成功,处理业务逻辑
|
||||
} else {
|
||||
// 验签失败,记录日志或返回错误信息
|
||||
System.out.println("验签失败");
|
||||
}
|
||||
|
||||
}
|
||||
return "success";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.ruoyi.project.hit.test;
|
||||
package com.ruoyi.project.hit.test.alipay;
|
||||
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.alipay.api.AlipayClient;
|
||||
@ -11,13 +11,13 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
@ConfigurationProperties(prefix = "alipay")
|
||||
|
||||
@Component
|
||||
@Data
|
||||
@ConfigurationProperties(prefix = "alipay")
|
||||
public class AlipayTemplate {
|
||||
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
|
||||
@Value("{alipay.appId}")
|
||||
|
||||
public String appId;
|
||||
|
||||
// 应用私钥,就是工具生成的应用私钥
|
||||
@ -31,8 +31,8 @@ public class AlipayTemplate {
|
||||
@Value("{alipay.notifyUrl}")
|
||||
public String notifyUrl;
|
||||
//同步通知,支付成功,一般跳转到成功页
|
||||
@Value("{alipay.returnUrl}")
|
||||
public String returnUrl;
|
||||
// @Value("{alipay.returnUrl}")
|
||||
// public String returnUrl;
|
||||
|
||||
// 签名方式
|
||||
@Value("{alipay.signType}")
|
||||
@ -58,15 +58,18 @@ public class AlipayTemplate {
|
||||
|
||||
//2、创建一个支付请求,并设置请求参数
|
||||
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
|
||||
alipayRequest.setReturnUrl(returnUrl);
|
||||
// alipayRequest.setReturnUrl(returnUrl);
|
||||
alipayRequest.setNotifyUrl(notifyUrl);
|
||||
|
||||
System.out.println(notifyUrl);
|
||||
|
||||
Long id = order.getId();
|
||||
Long interfaceInfoId = order.getInterfaceInfoId();
|
||||
Double money = order.getMoney();
|
||||
String paymentMethod = order.getPaymentMethod();
|
||||
|
||||
|
||||
|
||||
alipayRequest.setBizContent(" {\"out_trade_no\":\"" + id + "\","
|
||||
+ "\"total_amount\":\"" + money + "\","
|
||||
+ "\"subject\":\"" + interfaceInfoId
|
@ -1,4 +1,4 @@
|
||||
package com.ruoyi.project.hit.test;
|
||||
package com.ruoyi.project.hit.test.alipay;
|
||||
|
||||
|
||||
|
@ -0,0 +1,48 @@
|
||||
package com.ruoyi.project.hit.test.thickness;
|
||||
|
||||
import org.jfree.chart.ChartFactory;
|
||||
import org.jfree.chart.ChartPanel;
|
||||
import org.jfree.chart.JFreeChart;
|
||||
import org.jfree.chart.plot.PlotOrientation;
|
||||
import org.jfree.data.general.DatasetChangeEvent;
|
||||
import org.jfree.data.xy.XYSeries;
|
||||
import org.jfree.data.xy.XYSeriesCollection;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
public class ChartUpdater {
|
||||
|
||||
private static XYSeries series = new XYSeries("Serial Data");
|
||||
private static XYSeriesCollection dataset = new XYSeriesCollection(series);
|
||||
private static JFreeChart chart;
|
||||
private static JFrame frame;
|
||||
|
||||
public static void main(String[] args) {
|
||||
chart = ChartFactory.createXYLineChart(
|
||||
"Serial Data Chart",
|
||||
"Time",
|
||||
"Value",
|
||||
dataset,
|
||||
PlotOrientation.VERTICAL,
|
||||
true, true, false);
|
||||
|
||||
frame = new JFrame();
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
frame.setSize(800, 600);
|
||||
frame.add(new ChartPanel(chart));
|
||||
frame.setVisible(true);
|
||||
}
|
||||
|
||||
public static synchronized void updateChart(String data) {
|
||||
try {
|
||||
double value = Double.parseDouble(data.trim());
|
||||
series.add(series.getItemCount() + 1, value); // Assuming the x-axis is just the count of data points
|
||||
|
||||
// Update the dataset and chart
|
||||
// dataset.notifyListeners(new DatasetChangeEvent(this, dataset));
|
||||
} catch (NumberFormatException e) {
|
||||
System.out.println("Invalid data received: " + data);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package com.ruoyi.project.hit.test.thickness;
|
||||
|
||||
import com.fazecast.jSerialComm.SerialPort;
|
||||
import org.springframework.security.core.parameters.P;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class SerialPortReader {
|
||||
public static void main(String[] args) {
|
||||
// List all available serial ports
|
||||
SerialPort[] ports = SerialPort.getCommPorts();
|
||||
for (SerialPort port : ports) {
|
||||
System.out.println(port.getSystemPortName());
|
||||
}
|
||||
|
||||
|
||||
|
||||
SerialPort port = SerialPort.getCommPort("COM6"); // 修改为你的串口号
|
||||
port.setBaudRate(57600);
|
||||
port.setNumDataBits(8);
|
||||
port.setNumStopBits(SerialPort.ONE_STOP_BIT);
|
||||
port.setParity(SerialPort.NO_PARITY);
|
||||
|
||||
if (port.openPort()) {
|
||||
System.out.println("Port opened successfully.");
|
||||
try {
|
||||
// 指令数据
|
||||
byte[] command = {0x5a, 0x00, 0x0a, 0x00, 0x00, 0x04, 0x00, (byte) 0x7d, 0x00, 0x29};
|
||||
|
||||
// 发送指令
|
||||
port.writeBytes(command, command.length);
|
||||
System.out.println("Command sent."+ Arrays.toString(command));
|
||||
// 现在你可以开始读取串口数据了
|
||||
|
||||
// 示例:读取串口数据
|
||||
byte[] readBuffer = new byte[1024];
|
||||
int numRead = port.readBytes(readBuffer, readBuffer.length);
|
||||
if (numRead > 0) {
|
||||
String readData = new String(readBuffer, 0, numRead);
|
||||
System.out.println("Read " + numRead + " bytes: " + readData);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
port.closePort(); // 关闭串口
|
||||
}
|
||||
} else {
|
||||
System.out.println("Failed to open port.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Placeholder for the method that updates the chart
|
||||
private static void updateChart(String data) {
|
||||
// Parse the data and update the chart
|
||||
// This will be implemented in the next section
|
||||
ChartUpdater.updateChart(data);
|
||||
}
|
||||
}
|
@ -2,6 +2,8 @@ package com.ruoyi.project.monitor.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.quartz.JobDataMap;
|
||||
import org.quartz.JobKey;
|
||||
import org.quartz.Scheduler;
|
||||
@ -28,7 +30,7 @@ public class SysJobServiceImpl implements ISysJobService
|
||||
@Autowired
|
||||
private Scheduler scheduler;
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private SysJobMapper jobMapper;
|
||||
|
||||
/**
|
||||
|
@ -65,6 +65,11 @@ public class SysUserController extends BaseController
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* excel表导出
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
@Log(title = "用户管理", businessType = BusinessType.EXPORT)
|
||||
@PreAuthorize("@ss.hasPermi('system:user:export')")
|
||||
@GetMapping("/export")
|
||||
@ -75,6 +80,13 @@ public class SysUserController extends BaseController
|
||||
return util.exportExcel(list, "用户数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* excel表导入
|
||||
* @param file
|
||||
* @param updateSupport(是否更新支持)
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
|
||||
@PreAuthorize("@ss.hasPermi('system:user:import')")
|
||||
@PostMapping("/importData")
|
||||
@ -88,6 +100,10 @@ public class SysUserController extends BaseController
|
||||
return AjaxResult.success(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取导入模版
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/importTemplate")
|
||||
public AjaxResult importTemplate()
|
||||
{
|
||||
|
@ -151,11 +151,25 @@ minio:
|
||||
|
||||
alipay:
|
||||
appId: 9021000140665155
|
||||
# 应用私钥(工具生成)
|
||||
merchantPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCeszWzeW3hcNTgJCPisg3AEDTfgSulgg6g5ui/s9eKgeC53zYm8XNyOwEJZoHRz1dk1ekxSHOUYmQbdOVyfqRvdOd5V5xMY3ihvtOIsY1EjrIgU1VzJOpuiWJ1egxsUyc4nDUA00+5YXfeXyTI60Ro5+mQukq4MS6Q3FConQwa8LxLJhWOVuIT/laQpKu6hskldUcgYcWS1pYMo2Z+mnnt1qLkKMRmiFnpo+p4tx3XuN8Uy5o/ZhTxD0WZC+SPqgJ0osfcp/KDFMtUklOefuHlCGc1dBvo2TTnsLl54bGXHQ8HvgN4W4HXRWvPfLbyXsg3ULWaYMmuOkTgQgbZK3NjAgMBAAECggEAfnPVilhrUYMSXDbv0SaHBk7jkmPeX1auSU80jevDBz5Nzk0pXQZvMsoJHXBsaL2JqXM5CGfukIGFusr+OKjoZVcFSg6hH8zyxg7DhtvS8JmzHUbJg6IamlEl/u1tELOBQP5WzX2SvOgJF0tAiEfOjribxxJpjzLBI/Qo4PGiP6PhFiT/A6Dm3U6Qz8G4s168hRsIqXwrpmtYG4vc2acLeUg1Dc3jD4wHZFN0WQbYhKcY7e1xoKiIsYG/MJVKNemMRMPQxmPVLJ4Q3scMRNCYcrEDfj78QryTCUOVKY0Vo7Wx2T6H1CEgjeXHzBjE4zsdqFPE4gSVZ6t43AXQIpTHwQKBgQD9CTYUHaTfnk4zIfLKV5nTEIREV4q0g6b6JDO6uyxrLhnT5Dz2mMFvNtA+Oso65vzc6mxi8uhXCD5SmmmJzPtJ6VBsT4V3A6gg5dpZHassKXlEEWZZ58zE4aCWBbaL8w5GqWcR8X83/ijuSjSpnzQaAWS0D4Kd4F/I4gA1XBtVawKBgQCgjxwU7cilbBKMHYT0Aoxnxw4pS3Qw1Vfk0ij/Np2f1kAo/ylaeWcIRIep5/E7cJbXS2HnmJqjroZ4MISc8ihs5k8EOFdF3S4z4850nH3VmfEJOI2PKxE7smqVoik6sohfYqHYjRJtMFyGsEgvOrvEBNox3ugEkIfeGemsbMhf6QKBgG+b34GR7cZAwkdlgvzjFNN3JpAqeODUbRNKYpLLunTwGa5PruAqUq/mYoYAUnEWr5QVxocCk57H4Q14VHLWukRIqBOOI9VyBHe2StAh+P16saVnc1jWmIiC6N0jWfhy1eovEGpmtfGRpqYsjvv+X/HUiYGukbNnY3hszyC6JshPAoGATQR49v0dC2Ts/LNITHhQe5N7kol0QdyE3emF6u566+otOr0zTAgCSW/+F52AFQAsCzhIzXxhaXTVYh/77QEoLRzI+IBCNOwlNpTnOv66SdUfT0oGdY+2I4mxIPf5iQOM8RxyAFujZCcXqzAyYB1vZlbhh5yidVYTJpINij1gXMkCgYEA7kP3hmFOXqbPcMwWL5FEBc1u+NK/v4dj1FURNj19IkRw15d53pY8/orPHfIFt05NYCyl4jXJhozuEihGw5YwJLi8t2kPAwHX3u2yxrSeI5MrqVhyWD1Nf2HD4VBt1iuGgGj6xoiISc83cKw5ZiJT4I2plq5UIPHRiEM9wcuOeYE=
|
||||
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnrM1s3lt4XDU4CQj4rINwBA034ErpYIOoObov7PXioHgud82JvFzcjsBCWaB0c9XZNXpMUhzlGJkG3Tlcn6kb3TneVecTGN4ob7TiLGNRI6yIFNVcyTqbolidXoMbFMnOJw1ANNPuWF33l8kyOtEaOfpkLpKuDEukNxQqJ0MGvC8SyYVjlbiE/5WkKSruobJJXVHIGHFktaWDKNmfpp57dai5CjEZohZ6aPqeLcd17jfFMuaP2YU8Q9FmQvkj6oCdKLH3KfygxTLVJJTnn7h5QhnNXQb6Nk057C5eeGxlx0PB74DeFuB10Vrz3y28l7IN1C1mmDJrjpE4EIG2StzYwIDAQAB
|
||||
notifyUrl: http://内网穿透地址/api/alipay/notify
|
||||
returnUrl: http://member.zyz.com/memberOrder.html
|
||||
# 应用公钥(工具生成)
|
||||
# merchantPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnrM1s3lt4XDU4CQj4rINwBA034ErpYIOoObov7PXioHgud82JvFzcjsBCWaB0c9XZNXpMUhzlGJkG3Tlcn6kb3TneVecTGN4ob7TiLGNRI6yIFNVcyTqbolidXoMbFMnOJw1ANNPuWF33l8kyOtEaOfpkLpKuDEukNxQqJ0MGvC8SyYVjlbiE/5WkKSruobJJXVHIGHFktaWDKNmfpp57dai5CjEZohZ6aPqeLcd17jfFMuaP2YU8Q9FmQvkj6oCdKLH3KfygxTLVJJTnn7h5QhnNXQb6Nk057C5eeGxlx0PB74DeFuB10Vrz3y28l7IN1C1mmDJrjpE4EIG2StzYwIDAQAB
|
||||
# 支付宝公钥(支付宝查看)
|
||||
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs7d1mpaVxyN7J32FcFyYYO9G1Hpbkxb8ksG61TsP0enCLvmT2xM0U8Ykh90eYFkqLkRMVup18CsPabnC8XIFjpWTtHYm+auGydCTQirUwfhl5XK/r++kO9nXbFmR8c1MLwJ78hjeGXXukhhd0R5s0sST/sqU84k1E4aGZKWZ/snxr4EO4UFXUrUrmyXPMD6bngYZUt/pWg/65prNl7kPwwSxfVY06rYIT6dD6qbDenGw/h0WdgfhXS4tHg6TsoD6L9tybNyxJcVz+cFq1vkp7EwkfaY0O38Jcvd9TLdes63gqSbsA1/M0q0LHNS9iCjCX/arekrvTS8LhH0jNImtlQIDAQAB
|
||||
# natapp端口号配置要与服务器端口一致
|
||||
notifyUrl: http://jqi5wy.natappfree.cc/hit/alipay/notify
|
||||
# returnUrl: http://member.zyz.com/memberOrder.html
|
||||
signType: RSA2
|
||||
charset: utf-8
|
||||
charset: UTF-8
|
||||
# 我的支付宝网关地址
|
||||
gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
|
||||
|
||||
wx:
|
||||
pay:
|
||||
appId: #微信公众号或者小程序等的appid
|
||||
secret:
|
||||
mchId: #微信支付商户号
|
||||
mchKey: #微信支付商户密钥
|
||||
notifyUrl: http://8.130.135.74:8053/api/order/student/pay/wxCallback #支付回调地址
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user