Commit 83c576d0 authored by tangtuo's avatar tangtuo

微信支付

parent 4819f7b0
......@@ -47,41 +47,6 @@ public class RabbitMQConfig {
return new DirectExchange(DEAD_LETTER_DIRECT, true, false, null);
}
/**
* 存放死信的队列,用户监听这个队列
*
* @return
*/
@Bean
public Queue copyrightQueue() {
return new Queue(COPYRIGHT_QUEUE, true);
}
/**
* 定义死信队列
*
* @return
*/
@Bean
public Queue dlQueue() {
return QueueBuilder.durable(DEAD_LETTER_QUEUE)
.ttl(1000 * 60 * 60 * 6)
.ttl(1000 * 60 * 2) // 测试环境
.deadLetterExchange(DEAD_LETTER_DIRECT)
.deadLetterRoutingKey("copyright.notify")
.build();
}
@Bean
public Binding dlBinding() {
return BindingBuilder.bind(dlQueue()).to(copyrightDirect()).with("copyright.apply");
}
@Bean
public Binding copyrightBinding() {
return BindingBuilder.bind(copyrightQueue()).to(dlDirect()).with("copyright.notify");
}
/**
......
package com.fzm.common.entity.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author tangtuo
* @date 2022/1/21 16:56
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class NftPublishMsg {
private String hash;
private Integer id;
private Long tokenId;
}
......@@ -21,6 +21,7 @@ public enum ResultCode implements IErrorCode {
COPYRIGHT_FAILED(420, "版权申请失败"),
SELECT_FAILED(421, "查询失败"),
PAY_FAILED(422, "支付失败"),
REFUND_FAILED(422, "退款失败"),
;
......
......@@ -34,9 +34,9 @@ public class WxPayProperties {
private String privateKeyPath;
@ApiModelProperty("h5支付回调地址")
private String h5PayNotifyUrl;
private String payNotifyUrl;
@ApiModelProperty("h5退款回调地址")
private String h5RefundNotifyUrl;
@ApiModelProperty("退款回调地址")
private String refundNotifyUrl;
}
package com.fzm.common.service;
import cn.hutool.json.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fzm.common.entity.dto.JsapiPayDto;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Map;
......@@ -34,4 +36,26 @@ public interface WxPayService {
void processOrder(JSONObject jsonObject) throws GeneralSecurityException;
String queryOrder(Long orderId);
/**
* 退款
*
* @param orderId
*/
void refund(Long orderId) throws IOException;
/**
* 退款回调
*
* @param request
* @return
*/
Boolean notifyRefund(HttpServletRequest request);
/**
* 处理退款成功后的订单
*
* @param jsonObject
*/
void processRefund(JSONObject jsonObject);
}
......@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fzm.common.constant.RedisConstant;
import com.fzm.common.constant.SystemConstant;
import com.fzm.common.entity.*;
import com.fzm.common.entity.dto.NftPublishMsg;
import com.fzm.common.entity.vo.CollectionNftVo;
import com.fzm.common.entity.vo.CopyrightVo;
import com.fzm.common.entity.vo.NftListVo;
......@@ -109,7 +110,8 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
@Override
public Integer publish(Integer id) {
User user = userService.getUserByToken();
Nft nft = getById(id);
User user = userService.getUserByWallet(nft.getPublishAddress());
if (!AuthStatus.SUCCESS.getStatus().equals(user.getAuthStatus())) {
throw GlobalException.newException(ResultCode.PUBLISH_ERROR, "您还未实名认证,请先实名认证");
}
......@@ -118,7 +120,6 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
String privkey = paraChainClient.walletDumpPrivkey(wallet);
// 生产tokenId
long tokenId = getTokenId();
Nft nft = getById(id);
TreeMap<String, String> map = new TreeMap<>();
map.put("hash", nft.getFileHash());
map.put("publishAddress", wallet);
......@@ -138,26 +139,9 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
if (StringUtils.isBlank(tradeHash)) {
throw GlobalException.newException(ResultCode.PUBLISH_ERROR, "nft发行失败");
}
// 确认交易结果
TxResult txResult = paraChainClient.cycleConfirmTxWithHash(hash, true, 1000);
if (!TxStatusEnum.SUCCESS.equals(txResult.getStatus())) {
throw GlobalException.newException(ResultCode.PUBLISH_ERROR, txResult.getErrMsg().getValue());
}
String realHash = paraChainClient.getRealTxHashFromGrp(hash);
/*TxResult txResult = paraChainClient.cycleConfirmTxWithHash(realHash, false, 1000);
if (!TxStatusEnum.SUCCESS.equals(txResult.getStatus())) {
throw GlobalException.newException(ResultCode.PUBLISH_ERROR, txResult.getErrMsg().getValue());
}*/
nft.setNftHash(realHash);
nft.setTokenId(tokenId);
nft.setPublishTime(new Date());
updateById(nft);
// 如果用户是第一次发行作品,把用户的isPublish修改成1,并清空用户统计的缓存信息
if (SystemConstant.BOOLEAN_DATA_FALSE.equals(user.getIsPublish())) {
User u = new User().setId(user.getId()).setIsPublish(SystemConstant.BOOLEAN_DATA_TRUE);
userService.updateById(u);
redisUtil.delete("user::statistic");
}
// 给mq发送一条消息,异步确认交易结果
NftPublishMsg nftPublishMsg = new NftPublishMsg(hash, id, tokenId);
rabbitTemplate.convertAndSend("nft-exchange", "nft.publish", nftPublishMsg);
return nft.getId();
}
......
......@@ -13,7 +13,7 @@ import com.fzm.common.enums.*;
import com.fzm.common.exception.GlobalException;
import com.fzm.common.properties.WxPayProperties;
import com.fzm.common.service.*;
import com.fzm.common.utils.JwtUtil;
import com.fzm.common.utils.SnowflakeUtil;
import com.wechat.pay.contrib.apache.httpclient.util.AesUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -74,6 +74,9 @@ public class WxPayServiceImpl implements WxPayService {
@Resource
private RabbitTemplate rabbitTemplate;
@Resource
private SnowflakeUtil snowflakeUtil;
public Map<String, Object> payJsapi(JsapiPayDto jsapiPayDto) throws Exception {
RLock lock = redisson.getLock("pay-" + jsapiPayDto.getOrderId());
if (!lock.tryLock(10, TimeUnit.SECONDS)) {
......@@ -94,7 +97,7 @@ public class WxPayServiceImpl implements WxPayService {
rootNode.put("mchid", wxPayProperties.getMchId())
.put("appid", appId)
.put("description", PayScene.getTypeByCode(order.getPayScene()))
.put("notify_url", wxPayProperties.getH5PayNotifyUrl())
.put("notify_url", wxPayProperties.getPayNotifyUrl())
.put("out_trade_no", String.valueOf(out_trade_no));
rootNode.putObject("amount")
.put("total", order.getFee());
......@@ -216,6 +219,74 @@ public class WxPayServiceImpl implements WxPayService {
return null;
}
@Override
public void refund(Long orderId) throws IOException {
Order order = orderService.getById(orderId);
if (order == null || !order.getOrderStatus().equals(OrderStatus.PAYED.getStatus())) {
throw GlobalException.newException(ResultCode.REFUND_FAILED, "当前订单未支付成功");
}
String out_refund_no = "refund-" + snowflakeUtil.snowflakeId();
String url = "https://api.mch.weixin.qq.com/v3/refund/domestic/refunds";
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Accept", "application/json");
httpPost.addHeader("Content-type", "application/json; charset=utf-8");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode rootNode = objectMapper.createObjectNode();
rootNode.put("mchid", wxPayProperties.getMchId())
.put("appid", wxPayProperties.getAppId())
.put("out_refund_no", out_refund_no)
.put("notify_url", wxPayProperties.getRefundNotifyUrl())
.put("out_trade_no", String.valueOf(orderId));
rootNode.putObject("amount")
.put("refund", order.getFee())
.put("total", order.getFee())
.put("currency", "CNY");
String json = objectMapper.writeValueAsString(rootNode);
log.info("退款接口请求参数: {}", json);
objectMapper.writeValue(bos, rootNode);
httpPost.setEntity(new StringEntity(bos.toString("UTF-8"), "UTF-8"));
CloseableHttpResponse response = httpClient.execute(httpPost);
String bodyAsString = EntityUtils.toString(response.getEntity());
JSONObject jsonObject = JSONUtil.parseObj(bodyAsString);
// 修改订单状态为退款中
orderService.updateOrderStatus(orderId, OrderStatus.REFUNDING);
}
@Override
public Boolean notifyRefund(HttpServletRequest request) {
try {
String requestBodyData = this.getRequestBodyData(request);
log.info("接收微信退款接口回调请求, 请求参数: {}", requestBodyData);
JSONObject jsonObject = JSONUtil.parseObj(requestBodyData);
JSONObject resource = jsonObject.getJSONObject("resource");
String plainText = this.decrypt(resource);
log.info("解密后的明文信息为: {}", plainText);
JSONObject obj = JSONUtil.parseObj(plainText);
processRefund(jsonObject);
return null;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
public void processRefund(JSONObject jsonObject) {
Long out_trade_no = jsonObject.getLong("out_trade_no");
RLock lock = redisson.getLock("refund-" + out_trade_no);
lock.lock(10, TimeUnit.SECONDS);
try {
// 修改订单未退款成功
orderService.updateOrderStatus(out_trade_no, OrderStatus.REFUNDED);
// 保存流水信息
} finally {
lock.unlock();
}
}
/**
* 解密
*
......
package com.fzm.portal;
import com.fzm.common.entity.dto.OrderProcessMsg;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.scheduling.support.SimpleTriggerContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author tangtuo
* @date 2022/1/21 16:28
*/
@Slf4j
@RestController
@RequestMapping("/test")
public class TestController {
@Resource
private RabbitTemplate rabbitTemplate;
@GetMapping("/send")
public String send(){
log.info("发送消息: {}",123);
rabbitTemplate.convertAndSend("nft-exchange", "nft.publish", 123);
return "SUCCESS";
}
}
package com.fzm.portal.controller;
import com.fzm.common.annotation.Authentication;
import com.fzm.common.entity.Order;
import com.fzm.common.entity.dto.OrderDto;
import com.fzm.common.enums.PayScene;
import com.fzm.common.model.ResponseModel;
import com.fzm.common.service.CopyrightApplyService;
import com.fzm.common.service.NftService;
import com.fzm.common.service.OrderService;
import com.fzm.common.utils.SnowflakeUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
* @author tangtuo
* @date 2022/1/20 18:22
*/
@Authentication
@Api(tags = "作品类别")
@Api(tags = "订单管理")
@RestController
@RequestMapping("/opus/category")
@RequestMapping("/order")
public class OrderController {
@Resource
......@@ -31,13 +28,13 @@ public class OrderController {
@PostMapping("/create")
@ApiOperation("下单")
public ResponseModel<Long> createOrder(@RequestBody OrderDto orderDto) {
public ResponseModel<String> createOrder(@RequestBody OrderDto orderDto) {
Long orderId = orderService.createOrder(orderDto);
return ResponseModel.success(orderId);
return ResponseModel.success(String.valueOf(orderId));
}
@GetMapping("/query-order-status")
@GetMapping("/query-order-status/{orderId}")
@ApiOperation(value = "查询订单状态")
public ResponseModel<Integer> queryOrderStatus(@PathVariable Long orderId) {
return ResponseModel.success(orderService.getById(orderId).getOrderStatus());
......
......@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
......@@ -52,6 +53,23 @@ public class WxPayController {
return result;
}
@ApiOperation("退款回调通知")
@PostMapping("/notify/refund")
public Map<String, String> notifyRefund(HttpServletRequest request, HttpServletResponse response) {
Map<String, String> result = new HashMap<>();
Boolean refund = wxPayService.notifyRefund(request);
if (refund) {
result.put("code", "SUCCESS");
result.put("message", "成功");
response.setStatus(HttpStatus.HTTP_OK);
} else {
result.put("code", "FAILED");
result.put("message", "系统异常");
response.setStatus(HttpStatus.HTTP_INTERNAL_ERROR);
}
return result;
}
}
package com.fzm.portal.listener;
import cn.fzm.chain.simplesdk.client.ParaChainClient;
import cn.fzm.chain.simplesdk.constant.TxStatusEnum;
import cn.fzm.chain.simplesdk.model.TxResult;
import com.fzm.common.constant.SystemConstant;
import com.fzm.common.entity.Nft;
import com.fzm.common.entity.User;
import com.fzm.common.entity.dto.NftPublishMsg;
import com.fzm.common.enums.ResultCode;
import com.fzm.common.exception.GlobalException;
import com.fzm.common.service.NftService;
import com.fzm.common.service.UserService;
import com.fzm.common.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
/**
* @author tangtuo
* @date 2022/1/21 16:49
*/
@Slf4j
@Component
public class NftListener {
@Resource
private ParaChainClient paraChainClient;
@Resource
private NftService nftService;
@Resource
UserService userService;
@Resource
private RedisUtil redisUtil;
/**
* 监听nft发行结果
*
* @param msg
*/
@RabbitListener(queues = "nft.publish.queue")
public void listenNftPublish(NftPublishMsg msg) {
log.info("收到处理确认nft发行结果的消息: {}", msg);
Nft nft = nftService.getById(msg.getId());
User user = userService.getUserByWallet(nft.getPublishAddress());
String hash = msg.getHash();
// 确认交易结果
TxResult txResult = paraChainClient.cycleConfirmTxWithHash(hash, true, 1000);
if (!TxStatusEnum.SUCCESS.equals(txResult.getStatus())) {
throw GlobalException.newException(ResultCode.PUBLISH_ERROR, txResult.getErrMsg().getValue());
}
String realHash = paraChainClient.getRealTxHashFromGrp(hash);
/*TxResult txResult = paraChainClient.cycleConfirmTxWithHash(realHash, false, 1000);
if (!TxStatusEnum.SUCCESS.equals(txResult.getStatus())) {
throw GlobalException.newException(ResultCode.PUBLISH_ERROR, txResult.getErrMsg().getValue());
}*/
nft.setNftHash(realHash);
nft.setTokenId(msg.getTokenId());
nft.setPublishTime(new Date());
nftService.updateById(nft);
// 如果用户是第一次发行作品,把用户的isPublish修改成1,并清空用户统计的缓存信息
if (SystemConstant.BOOLEAN_DATA_FALSE.equals(user.getIsPublish())) {
User u = new User().setId(user.getId()).setIsPublish(SystemConstant.BOOLEAN_DATA_TRUE);
userService.updateById(u);
redisUtil.delete("user::statistic");
}
}
}
......@@ -37,9 +37,4 @@ public class OrderListener {
}
}
@RabbitListener(queues = "nft.publish.queue")
public void listenProcessOrder(Long id) {
log.info("接收到信息: {}", id);
}
}
......@@ -113,5 +113,5 @@ wx-pay:
api-v3-key: D864DA53FEF8ACD41519064967DC10D2
mch-serial-num: 72A62544B0A08A214FAEC780108692EDC6E7D5FA
private-key-path: apiclient_key.pem
h5-pay-notify-url: https://146.56.218.121:12100/wx-pay/notify/h5
h5-refund-notify-url:
pay-notify-url: https://146.56.218.121:12100/wx-pay/notify/jsapi
refund-notify-url: https://146.56.218.121:12100/wx-pay/notify/refund
......@@ -113,5 +113,5 @@ wx-pay:
api-v3-key: D864DA53FEF8ACD41519064967DC10D2
mch-serial-num: 72A62544B0A08A214FAEC780108692EDC6E7D5FA
private-key-path: apiclient_key.pem
h5-pay-notify-url: https://146.56.218.121:12100/wx-pay/notify/h5
h5-refund-notify-url:
\ No newline at end of file
pay-notify-url: https://146.56.218.121:12100/wx-pay/notify/jsapi
refund-notify-url: https://146.56.218.121:12100/wx-pay/notify/refund
\ No newline at end of file
......@@ -126,5 +126,5 @@ wx-pay:
api-v3-key: D864DA53FEF8ACD41519064967DC10D2
mch-serial-num: 72A62544B0A08A214FAEC780108692EDC6E7D5FA
private-key-path: apiclient_key.pem
h5-pay-notify-url: https://test.inmvo.com:8985/proxyApi/wx-pay/notify/h5
h5-refund-notify-url:
pay-notify-url: https://test.inmvo.com:8985/proxyApi/wx-pay/notify/jsapi
refund-notify-url: https://test.inmvo.com:8985/proxyApi/wx-pay/notify/refund
......@@ -115,5 +115,5 @@ wx-pay:
api-v3-key: D864DA53FEF8ACD41519064967DC10D2
mch-serial-num: 72A62544B0A08A214FAEC780108692EDC6E7D5FA
private-key-path: apiclient_key.pem
h5-pay-notify-url: https://nft.inmvo.com/proxyApi/wx-pay/notify/h5
h5-refund-notify-url:
\ No newline at end of file
pay-notify-url: https://nft.inmvo.com/proxyApi/wx-pay/notify/jsapi
refund-notify-url: https://nft.inmvo.com/proxyApi/wx-pay/notify/refund
\ No newline at end of file
spring:
profiles:
active: local
active: nj
application:
name: joying-portal
servlet:
......
package com.fzm.portal;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource;
/**
* @author tangtuo
......@@ -12,4 +17,11 @@ import org.springframework.boot.test.context.SpringBootTest;
public class RabbitTestDemo {
@Resource
private RabbitTemplate rabbitTemplate;
@Test
public void send() {
}
}
......@@ -2,6 +2,7 @@ package com.fzm.portal;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fzm.common.entity.dto.OrderProcessMsg;
import com.fzm.common.properties.WxPayProperties;
import com.fzm.common.service.WxPayService;
import com.fzm.common.utils.SnowflakeUtil;
......@@ -12,6 +13,7 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
......@@ -39,6 +41,9 @@ public class WxPayTest {
@Resource
private SnowflakeUtil snowflakeUtil;
@Resource
private RabbitTemplate rabbitTemplate;
@Test
public void testSnowFlake() {
for (int i = 0; i < 10; i++) {
......@@ -48,9 +53,10 @@ public class WxPayTest {
@Test
public void testH5Pay() throws IOException {
for (int i = 0; i < 10; i++) {
log.info(String.valueOf(snowflakeUtil.snowflakeId()));
}
OrderProcessMsg orderProcessMsg = new OrderProcessMsg(1, 1);
rabbitTemplate.convertAndSend("order-exchange", "order.process", orderProcessMsg);
// for (int i = 0; i < 10; i++) {
// log.info(String.valueOf(snowflakeUtil.snowflakeId()));// }
// String url = "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi";
// HttpPost httpPost = new HttpPost(url);
// httpPost.addHeader("Accept", "application/json");
......
......@@ -376,3 +376,306 @@ org.redisson.client.RedisTimeoutException: Command execution timeout for command
2022-01-21 12:37:12.788 [SpringContextShutdownHook] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Shutting down ExecutorService 'threadPoolTaskExecutor'
2022-01-21 12:37:12.824 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closing ...
2022-01-21 12:37:12.830 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closed
2022-01-21 18:55:36.614 [background-preinit] INFO org.hibernate.validator.internal.util.Version-HV000001: Hibernate Validator 6.1.7.Final
2022-01-21 18:55:36.670 [restartedMain] INFO com.fzm.portal.JoyingPortalApplication-Starting JoyingPortalApplication on LAPTOP-AT8CNAMK with PID 17556 (D:\workspace\fzm-joying\joying-portal\target\classes started by tangtuo in D:\workspace\fzm-joying)
2022-01-21 18:55:36.671 [restartedMain] INFO com.fzm.portal.JoyingPortalApplication-The following profiles are active: nj
2022-01-21 18:55:36.750 [restartedMain] INFO o.s.b.d.env.DevToolsPropertyDefaultsPostProcessor-Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2022-01-21 18:55:36.751 [restartedMain] INFO o.s.b.d.env.DevToolsPropertyDefaultsPostProcessor-For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2022-01-21 18:55:38.519 [restartedMain] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Multiple Spring Data modules found, entering strict repository configuration mode!
2022-01-21 18:55:38.523 [restartedMain] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2022-01-21 18:55:38.568 [restartedMain] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Finished Spring Data repository scanning in 18ms. Found 0 Redis repository interfaces.
2022-01-21 18:55:40.129 [restartedMain] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer-Tomcat initialized with port(s): 8001 (http)
2022-01-21 18:55:40.138 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol-Initializing ProtocolHandler ["http-nio-8001"]
2022-01-21 18:55:40.139 [restartedMain] INFO org.apache.catalina.core.StandardService-Starting service [Tomcat]
2022-01-21 18:55:40.139 [restartedMain] INFO org.apache.catalina.core.StandardEngine-Starting Servlet engine: [Apache Tomcat/9.0.43]
2022-01-21 18:55:40.346 [restartedMain] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]-Initializing Spring embedded WebApplicationContext
2022-01-21 18:55:40.347 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext-Root WebApplicationContext: initialization completed in 3596 ms
2022-01-21 18:55:41.232 [restartedMain] INFO c.a.d.s.b.a.DruidDataSourceAutoConfigure-Init DruidDataSource
2022-01-21 18:55:42.601 [restartedMain] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} inited
2022-01-21 18:55:45.529 [restartedMain] INFO com.obs.services.ObsClient-Storage|1|HTTP+XML|ObsClient||||2022-01-21 18:55:45|2022-01-21 18:55:45|||0|
2022-01-21 18:55:45.533 [restartedMain] WARN com.obs.services.ObsClient-[OBS SDK Version=3.20.6.1];[Endpoint=https://obs.cn-east-3.myhuaweicloud.com:443/];[Access Mode=Virtul Hosting]
2022-01-21 18:55:46.226 [restartedMain] WARN c.b.mybatisplus.core.metadata.TableInfoHelper-Warn: Could not find @TableId in Class: com.fzm.common.entity.CopyrightApplyOwnerRelation.
2022-01-21 18:55:46.403 [restartedMain] WARN c.b.mybatisplus.core.metadata.TableInfoHelper-Warn: Could not find @TableId in Class: com.fzm.common.entity.CopyrightAuthorityRelation.
2022-01-21 18:55:46.632 [restartedMain] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Initializing ExecutorService 'threadPoolTaskExecutor'
2022-01-21 18:55:46.872 [restartedMain] INFO org.redisson.Version-Redisson 3.16.0
2022-01-21 18:55:48.694 [redisson-netty-4-19] INFO o.r.connection.pool.MasterPubSubConnectionPool-1 connections initialized for 146.56.218.121/146.56.218.121:6379
2022-01-21 18:55:48.813 [redisson-netty-4-19] INFO org.redisson.connection.pool.MasterConnectionPool-24 connections initialized for 146.56.218.121/146.56.218.121:6379
2022-01-21 18:55:49.611 [restartedMain] INFO com.fzm.common.utils.SnowflakeUtil-当前机器的workId:167772238
2022-01-21 18:55:50.181 [scheduled_update_cert_thread] INFO c.w.p.c.apache.httpclient.cert.CertificatesManager-Begin update Certificates.Date:2022-01-21T10:55:50.181Z
2022-01-21 18:55:50.368 [scheduled_update_cert_thread] INFO c.w.p.c.apache.httpclient.cert.CertificatesManager-Finish update Certificates.Date:2022-01-21T10:55:50.368Z
2022-01-21 18:55:51.024 [restartedMain] INFO s.d.s.w.PropertySourcedRequestMappingHandlerMapping-Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2022-01-21 18:55:51.443 [restartedMain] INFO o.s.b.d.autoconfigure.OptionalLiveReloadServer-LiveReload server is running on port 35729
2022-01-21 18:55:52.433 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol-Starting ProtocolHandler ["http-nio-8001"]
2022-01-21 18:55:52.468 [restartedMain] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer-Tomcat started on port(s): 8001 (http) with context path ''
2022-01-21 18:55:52.470 [restartedMain] INFO s.d.s.web.plugins.DocumentationPluginsBootstrapper-Context refreshed
2022-01-21 18:55:52.509 [restartedMain] INFO s.d.s.web.plugins.DocumentationPluginsBootstrapper-Found 1 custom documentation plugin(s)
2022-01-21 18:55:52.577 [restartedMain] INFO s.d.spring.web.scanners.ApiListingReferenceScanner-Scanning for api listing references
2022-01-21 18:55:52.787 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_1
2022-01-21 18:55:52.796 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_2
2022-01-21 18:55:52.818 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_3
2022-01-21 18:55:52.862 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_4
2022-01-21 18:55:52.933 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getByIdUsingGET_1
2022-01-21 18:55:52.985 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_5
2022-01-21 18:55:53.054 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: addUsingPOST_1
2022-01-21 18:55:53.056 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_1
2022-01-21 18:55:53.062 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_6
2022-01-21 18:55:53.064 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: updateUsingPOST_1
2022-01-21 18:55:53.069 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_2
2022-01-21 18:55:53.077 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_7
2022-01-21 18:55:53.088 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getByIdUsingGET_2
2022-01-21 18:55:53.090 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: submitUsingPOST_1
2022-01-21 18:55:53.126 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_8
2022-01-21 18:55:53.146 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: saveUsingPOST_1
2022-01-21 18:55:53.153 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getDetailUsingGET_1
2022-01-21 18:55:53.156 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_9
2022-01-21 18:55:53.158 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_10
2022-01-21 18:55:53.164 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_3
2022-01-21 18:55:53.165 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: downloadUsingPOST_1
2022-01-21 18:55:53.166 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: uploadUsingPOST_1
2022-01-21 18:55:53.193 [restartedMain] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: updateUsingPOST_2
2022-01-21 18:55:53.220 [restartedMain] INFO o.s.a.rabbit.connection.CachingConnectionFactory-Attempting to connect to: [129.211.166.223:5672]
2022-01-21 18:55:53.365 [restartedMain] INFO o.s.a.rabbit.connection.CachingConnectionFactory-Created new connection: rabbitConnectionFactory#7222994e:0/SimpleConnection@392c163d [delegate=amqp://guest@129.211.166.223:5672/, localPort= 51529]
2022-01-21 18:55:53.923 [restartedMain] INFO com.fzm.portal.JoyingPortalApplication-Started JoyingPortalApplication in 17.978 seconds (JVM running for 19.753)
2022-01-21 18:55:57.926 [http-nio-8001-exec-1] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]-Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-01-21 18:55:57.926 [http-nio-8001-exec-1] INFO org.springframework.web.servlet.DispatcherServlet-Initializing Servlet 'dispatcherServlet'
2022-01-21 18:55:57.940 [http-nio-8001-exec-1] INFO org.springframework.web.servlet.DispatcherServlet-Completed initialization in 14 ms
2022-01-21 18:55:58.332 [http-nio-8001-exec-1] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Preparing: SELECT id,telephone,email,password,wallet,nickname,signature,avatar,auth_type,auth_status,is_publish,create_date,update_date,create_time,update_time FROM tb_user WHERE id=?
2022-01-21 18:55:58.534 [http-nio-8001-exec-1] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Parameters: 1(Integer)
2022-01-21 18:55:58.606 [http-nio-8001-exec-1] DEBUG com.fzm.common.mapper.UserMapper.selectById-<== Total: 1
2022-01-21 18:55:58.978 [http-nio-8001-exec-1] ERROR c.f.c.exception.handler.GlobalExceptionHandler-您的账号于 2022-01-21 18:52:21 登录另外一台设备,如非您本人所为,请立即修改密码
com.fzm.common.exception.GlobalException: 您的账号于 2022-01-21 18:52:21 登录另外一台设备,如非您本人所为,请立即修改密码
at com.fzm.common.exception.GlobalException.newException(GlobalException.java:30)
at com.fzm.common.interceptor.AuthenticationInterceptor.preHandle(AuthenticationInterceptor.java:88)
at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:151)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1035)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
2022-01-21 18:55:59.034 [http-nio-8001-exec-1] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver-Resolved [com.fzm.common.exception.GlobalException: 您的账号于 2022-01-21 18:52:21 登录另外一台设备,如非您本人所为,请立即修改密码]
2022-01-21 18:56:08.099 [http-nio-8001-exec-2] INFO com.fzm.portal.aop.LogAop-请求路径: /user/login,请求参数:[LoginParam(telephone=17620078872, email=null, password=123456, verificationCode=null, codetype=null)]
2022-01-21 18:56:08.275 [http-nio-8001-exec-2] DEBUG com.fzm.common.mapper.UserMapper.selectOne-==> Preparing: SELECT id,telephone,email,password,wallet,nickname,signature,avatar,auth_type,auth_status,is_publish,create_date,update_date,create_time,update_time FROM tb_user WHERE (telephone = ? OR email = ?)
2022-01-21 18:56:08.280 [http-nio-8001-exec-2] DEBUG com.fzm.common.mapper.UserMapper.selectOne-==> Parameters: 17620078872(String), 17620078872(String)
2022-01-21 18:56:08.303 [http-nio-8001-exec-2] DEBUG com.fzm.common.mapper.UserMapper.selectOne-<== Total: 1
2022-01-21 18:56:08.498 [http-nio-8001-exec-2] DEBUG com.fzm.common.mapper.AuthPersonMapper.selectOne-==> Preparing: SELECT id,user_id,name,id_card,card_picture_front,card_picture_back,create_date,update_date FROM tb_auth_person WHERE (user_id = ?)
2022-01-21 18:56:08.500 [http-nio-8001-exec-2] DEBUG com.fzm.common.mapper.AuthPersonMapper.selectOne-==> Parameters: 2(Integer)
2022-01-21 18:56:08.522 [http-nio-8001-exec-2] DEBUG com.fzm.common.mapper.AuthPersonMapper.selectOne-<== Total: 1
2022-01-21 18:56:08.605 [http-nio-8001-exec-2] INFO com.fzm.portal.aop.LogAop-请求路径:/user/login,接口耗时:511ms
2022-01-21 18:56:23.383 [http-nio-8001-exec-3] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Preparing: SELECT id,telephone,email,password,wallet,nickname,signature,avatar,auth_type,auth_status,is_publish,create_date,update_date,create_time,update_time FROM tb_user WHERE id=?
2022-01-21 18:56:23.384 [http-nio-8001-exec-3] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Parameters: 2(Integer)
2022-01-21 18:56:23.407 [http-nio-8001-exec-3] DEBUG com.fzm.common.mapper.UserMapper.selectById-<== Total: 1
2022-01-21 18:56:23.432 [http-nio-8001-exec-3] INFO com.fzm.portal.aop.LogAop-请求路径: /wx-pay/pay/jsapi,请求参数:[JsapiPayDto(openid=oRpMVw3OiOuVDZPrJTzMwTJALf70, orderId=1484479074691842000)]
2022-01-21 18:56:23.518 [http-nio-8001-exec-3] DEBUG com.fzm.common.mapper.OrderMapper.selectById-==> Preparing: SELECT id,order_name,pay_scene,product_id,user_id,fee,order_status,pay_type,create_date,update_date FROM tb_order WHERE id=?
2022-01-21 18:56:23.523 [http-nio-8001-exec-3] DEBUG com.fzm.common.mapper.OrderMapper.selectById-==> Parameters: 1484479074691842000(Long)
2022-01-21 18:56:23.541 [http-nio-8001-exec-3] DEBUG com.fzm.common.mapper.OrderMapper.selectById-<== Total: 0
2022-01-21 18:56:23.603 [http-nio-8001-exec-3] INFO com.fzm.portal.aop.LogAop-请求路径:/wx-pay/pay/jsapi,接口耗时:171ms
2022-01-21 18:56:23.604 [http-nio-8001-exec-3] ERROR c.f.c.exception.handler.GlobalExceptionHandler-null
java.lang.NullPointerException: null
at com.fzm.common.service.impl.WxPayServiceImpl.payJsapi(WxPayServiceImpl.java:99)
at com.fzm.common.service.impl.WxPayServiceImpl$$FastClassBySpringCGLIB$$8cdc9962.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
at com.fzm.common.service.impl.WxPayServiceImpl$$EnhancerBySpringCGLIB$$a8276b91.payJsapi(<generated>)
at com.fzm.portal.controller.WxPayController.payH5(WxPayController.java:36)
at com.fzm.portal.controller.WxPayController$$FastClassBySpringCGLIB$$24a9b011.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:47)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
at com.fzm.portal.controller.WxPayController$$EnhancerBySpringCGLIB$$bc9a1bb2.payH5(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
2022-01-21 18:56:23.607 [http-nio-8001-exec-3] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver-Resolved [java.lang.NullPointerException]
2022-01-21 18:58:20.197 [http-nio-8001-exec-5] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Preparing: SELECT id,telephone,email,password,wallet,nickname,signature,avatar,auth_type,auth_status,is_publish,create_date,update_date,create_time,update_time FROM tb_user WHERE id=?
2022-01-21 18:58:20.198 [http-nio-8001-exec-5] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Parameters: 2(Integer)
2022-01-21 18:58:20.220 [http-nio-8001-exec-5] DEBUG com.fzm.common.mapper.UserMapper.selectById-<== Total: 1
2022-01-21 18:58:20.241 [http-nio-8001-exec-5] INFO com.fzm.portal.aop.LogAop-请求路径: /wx-pay/pay/jsapi,请求参数:[JsapiPayDto(openid=oRpMVw3OiOuVDZPrJTzMwTJALf70, orderId=1484479074691842000)]
2022-01-21 18:58:20.276 [http-nio-8001-exec-5] DEBUG com.fzm.common.mapper.OrderMapper.selectById-==> Preparing: SELECT id,order_name,pay_scene,product_id,user_id,fee,order_status,pay_type,create_date,update_date FROM tb_order WHERE id=?
2022-01-21 18:58:20.277 [http-nio-8001-exec-5] DEBUG com.fzm.common.mapper.OrderMapper.selectById-==> Parameters: 1484479074691842000(Long)
2022-01-21 18:58:20.296 [http-nio-8001-exec-5] DEBUG com.fzm.common.mapper.OrderMapper.selectById-<== Total: 0
2022-01-21 18:59:48.319 [http-nio-8001-exec-5] INFO com.fzm.portal.aop.LogAop-请求路径:/wx-pay/pay/jsapi,接口耗时:88079ms
2022-01-21 18:59:48.320 [http-nio-8001-exec-5] ERROR c.f.c.exception.handler.GlobalExceptionHandler-attempt to unlock lock, not locked by current thread by node id: 1add3e32-788c-4485-88c3-6428522d920d thread-id: 131
java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node id: 1add3e32-788c-4485-88c3-6428522d920d thread-id: 131
at org.redisson.RedissonBaseLock.lambda$unlockAsync$1(RedissonBaseLock.java:312)
at org.redisson.misc.RedissonPromise.lambda$onComplete$0(RedissonPromise.java:187)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
at org.redisson.misc.RedissonPromise.trySuccess(RedissonPromise.java:82)
at org.redisson.RedissonBaseLock.lambda$evalWriteAsync$0(RedissonBaseLock.java:224)
at org.redisson.misc.RedissonPromise.lambda$onComplete$0(RedissonPromise.java:187)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
at org.redisson.misc.RedissonPromise.trySuccess(RedissonPromise.java:82)
at org.redisson.command.CommandBatchService.lambda$executeAsync$7(CommandBatchService.java:326)
at org.redisson.misc.RedissonPromise.lambda$onComplete$0(RedissonPromise.java:187)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
at org.redisson.misc.RedissonPromise.trySuccess(RedissonPromise.java:82)
at org.redisson.command.RedisCommonBatchExecutor.handleResult(RedisCommonBatchExecutor.java:130)
at org.redisson.command.RedisExecutor.checkAttemptPromise(RedisExecutor.java:447)
at org.redisson.command.RedisExecutor.lambda$execute$3(RedisExecutor.java:169)
at org.redisson.misc.RedissonPromise.lambda$onComplete$0(RedissonPromise.java:187)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
at org.redisson.misc.RedissonPromise.trySuccess(RedissonPromise.java:82)
at org.redisson.client.handler.CommandDecoder.decodeCommandBatch(CommandDecoder.java:293)
at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:188)
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:116)
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:101)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:508)
at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
2022-01-21 18:59:48.323 [http-nio-8001-exec-5] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver-Resolved [java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node id: 1add3e32-788c-4485-88c3-6428522d920d thread-id: 131]
2022-01-21 19:04:22.170 [http-nio-8001-exec-7] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Preparing: SELECT id,telephone,email,password,wallet,nickname,signature,avatar,auth_type,auth_status,is_publish,create_date,update_date,create_time,update_time FROM tb_user WHERE id=?
2022-01-21 19:04:22.170 [http-nio-8001-exec-7] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Parameters: 2(Integer)
2022-01-21 19:04:22.193 [http-nio-8001-exec-7] DEBUG com.fzm.common.mapper.UserMapper.selectById-<== Total: 1
2022-01-21 19:04:22.214 [http-nio-8001-exec-7] INFO com.fzm.portal.aop.LogAop-请求路径: /order/create,请求参数:[OrderDto(fee=1, payScene=1, productId=100)]
2022-01-21 19:04:40.527 [http-nio-8001-exec-7] DEBUG com.fzm.common.mapper.NftMapper.selectById-==> Preparing: SELECT id,category_id,user_id,publish_address,name,cover,author,evidencer,synopsis,file_hash,nft_id,nft_hash,token_id,publish_time,transfer_hash,commemorate_id,is_top,status,is_entrust,is_commemorate,create_date,update_date,create_time,update_time FROM tb_nft WHERE id=?
2022-01-21 19:04:40.542 [http-nio-8001-exec-7] DEBUG com.fzm.common.mapper.NftMapper.selectById-==> Parameters: 100(Integer)
2022-01-21 19:04:40.613 [http-nio-8001-exec-7] DEBUG com.fzm.common.mapper.NftMapper.selectById-<== Total: 1
2022-01-21 19:04:52.857 [http-nio-8001-exec-7] DEBUG com.fzm.common.mapper.OrderMapper.insert-==> Preparing: INSERT INTO tb_order ( id, order_name, pay_scene, product_id, user_id, fee, order_status ) VALUES ( ?, ?, ?, ?, ?, ?, ? )
2022-01-21 19:04:52.899 [http-nio-8001-exec-7] DEBUG com.fzm.common.mapper.OrderMapper.insert-==> Parameters: 1484482014450155520(Long), dfvdf(String), 1(Integer), 100(Integer), 2(Integer), 1(Long), 0(Integer)
2022-01-21 19:04:52.937 [http-nio-8001-exec-7] DEBUG com.fzm.common.mapper.OrderMapper.insert-<== Updates: 1
2022-01-21 19:04:58.199 [http-nio-8001-exec-7] INFO com.fzm.portal.aop.LogAop-请求路径:/order/create,接口耗时:35985ms
2022-01-21 19:07:10.206 [SpringContextShutdownHook] INFO o.s.a.r.listener.SimpleMessageListenerContainer-Waiting for workers to finish.
2022-01-21 19:07:10.415 [SpringContextShutdownHook] INFO o.s.a.r.listener.SimpleMessageListenerContainer-Successfully waited for workers to finish.
2022-01-21 19:07:10.430 [SpringContextShutdownHook] INFO o.s.a.r.listener.SimpleMessageListenerContainer-Waiting for workers to finish.
2022-01-21 19:07:11.407 [SpringContextShutdownHook] INFO o.s.a.r.listener.SimpleMessageListenerContainer-Successfully waited for workers to finish.
2022-01-21 19:07:11.821 [SpringContextShutdownHook] INFO o.s.a.r.listener.SimpleMessageListenerContainer-Shutdown ignored - container is not active already
2022-01-21 19:07:11.821 [SpringContextShutdownHook] INFO o.s.a.r.listener.SimpleMessageListenerContainer-Shutdown ignored - container is not active already
2022-01-21 19:07:11.879 [SpringContextShutdownHook] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Shutting down ExecutorService 'threadPoolTaskExecutor'
2022-01-21 19:07:12.010 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closing ...
2022-01-21 19:07:12.020 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closed
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment