|
@@ -26,6 +26,7 @@ import shop.alien.mapper.second.SecondTradeRecordMapper;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.time.ZoneId;
|
|
import java.time.ZoneId;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
@Slf4j
|
|
@Slf4j
|
|
@@ -52,64 +53,115 @@ public class SecondGoodsTradeXxlJob {
|
|
*/
|
|
*/
|
|
@XxlJob("secondTradeRemind")
|
|
@XxlJob("secondTradeRemind")
|
|
public void secondTradeRemind() throws Exception {
|
|
public void secondTradeRemind() throws Exception {
|
|
- LocalDateTime now = LocalDateTime.now().withSecond(0).withNano(0);
|
|
|
|
|
|
+ Date now = Date.from(LocalDateTime.now().plusMinutes(10).withSecond(0).withNano(0).atZone(ZoneId.systemDefault()).toInstant());
|
|
|
|
|
|
// 查询所有待交易
|
|
// 查询所有待交易
|
|
LambdaQueryWrapper<SecondTradeRecord> wrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<SecondTradeRecord> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq(SecondTradeRecord::getTradeStatus, 3);
|
|
wrapper.eq(SecondTradeRecord::getTradeStatus, 3);
|
|
|
|
+ wrapper.eq(SecondTradeRecord::getTransactionTime, now);
|
|
List<SecondTradeRecord> tradeRecordList = secondTradeRecordMapper.selectList(wrapper);
|
|
List<SecondTradeRecord> tradeRecordList = secondTradeRecordMapper.selectList(wrapper);
|
|
|
|
|
|
for (SecondTradeRecord tradeRecord : tradeRecordList) {
|
|
for (SecondTradeRecord tradeRecord : tradeRecordList) {
|
|
- LocalDateTime tenMinutesAgo = tradeRecord.getTransactionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().withSecond(0).withNano(0);
|
|
|
|
- if (now.isEqual(tenMinutesAgo)) {
|
|
|
|
|
|
+ // 十分钟前
|
|
|
|
+// LocalDateTime tenMinutesAgo = tradeRecord.getTransactionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().minusMinutes(10).withSecond(0).withNano(0);
|
|
|
|
+// // 交易时间的十分钟前
|
|
|
|
+// if (now.isEqual(tenMinutesAgo)) {
|
|
LifeUser buyer = lifeUserMapper.selectById(tradeRecord.getBuyerId());
|
|
LifeUser buyer = lifeUserMapper.selectById(tradeRecord.getBuyerId());
|
|
LifeUser seller = lifeUserMapper.selectById(tradeRecord.getSellerId());
|
|
LifeUser seller = lifeUserMapper.selectById(tradeRecord.getSellerId());
|
|
- SecondGoods goods = secondGoodsMapper.selectById(tradeRecord.getGoodsId());
|
|
|
|
|
|
|
|
String buyerPhoneId = null == buyer ? "" : "user_" + buyer.getUserPhone();
|
|
String buyerPhoneId = null == buyer ? "" : "user_" + buyer.getUserPhone();
|
|
String sellerPhoneId = null == seller ? "" : "user_" + seller.getUserPhone();
|
|
String sellerPhoneId = null == seller ? "" : "user_" + seller.getUserPhone();
|
|
|
|
|
|
|
|
+ // 封装交易信息
|
|
|
|
+ JSONObject message = new JSONObject();
|
|
|
|
+ message.put("tradeId", tradeRecord.getId());
|
|
|
|
+ message.put("transactionAmount", tradeRecord.getTransactionAmount());
|
|
|
|
+ message.put("transactionLatitudeLongitude", tradeRecord.getTransactionLatitudeLongitude());
|
|
|
|
+ message.put("transactionLatitudeLongitudeAddress", tradeRecord.getTransactionLatitudeLongitudeAddress());
|
|
|
|
+ message.put("transactionLocation", tradeRecord.getTransactionLocation());
|
|
|
|
+ message.put("transactionTime", tradeRecord.getTransactionTime());
|
|
|
|
+ message.put("tradeStatus", tradeRecord.getTradeStatus());
|
|
|
|
+
|
|
|
|
+ // 给买家发送消息
|
|
|
|
+ LifeMessage lifeMessage = new LifeMessage();
|
|
|
|
+ lifeMessage.setSenderId(sellerPhoneId);
|
|
|
|
+ lifeMessage.setReceiverId(buyerPhoneId);
|
|
|
|
+ lifeMessage.setContent(message.toJSONString());
|
|
|
|
+ lifeMessage.setType("5");
|
|
|
|
+ lifeMessageMapper.insert(lifeMessage);
|
|
|
|
+
|
|
|
|
+ // 给买家推送消息
|
|
|
|
+ WebSocketVo webSocketVo = new WebSocketVo();
|
|
|
|
+ webSocketVo.setSenderId(sellerPhoneId);
|
|
|
|
+ webSocketVo.setReceiverId(buyerPhoneId);
|
|
|
|
+ webSocketVo.setCategory("message");
|
|
|
|
+ webSocketVo.setType("5");
|
|
|
|
+ webSocketVo.setText(message.toJSONString());
|
|
|
|
+ webSocketVo.setMessageId(lifeMessage.getId());
|
|
|
|
+ alienStoreFeign.sendMsgToClientByPhoneId(buyerPhoneId, JSONObject.from(webSocketVo).toJSONString());
|
|
|
|
+
|
|
// 给买家发送通知
|
|
// 给买家发送通知
|
|
LifeNotice lifeNotice = new LifeNotice();
|
|
LifeNotice lifeNotice = new LifeNotice();
|
|
lifeNotice.setSenderId("system");
|
|
lifeNotice.setSenderId("system");
|
|
lifeNotice.setReceiverId(buyerPhoneId);
|
|
lifeNotice.setReceiverId(buyerPhoneId);
|
|
lifeNotice.setBusinessId(tradeRecord.getId());
|
|
lifeNotice.setBusinessId(tradeRecord.getId());
|
|
- lifeNotice.setTitle("商品是否交易成功");
|
|
|
|
|
|
+ lifeNotice.setTitle("商品交易签到");
|
|
lifeNotice.setNoticeType(1);
|
|
lifeNotice.setNoticeType(1);
|
|
// 封装通知信息
|
|
// 封装通知信息
|
|
JSONObject noticeMessage = new JSONObject();
|
|
JSONObject noticeMessage = new JSONObject();
|
|
- noticeMessage.put("goodsId", goods.getId());
|
|
|
|
- noticeMessage.put("goodsHomeImage", goods.getHomeImage());
|
|
|
|
- noticeMessage.put("goodsTitle", goods.getTitle());
|
|
|
|
noticeMessage.put("tradeId", tradeRecord.getId());
|
|
noticeMessage.put("tradeId", tradeRecord.getId());
|
|
- noticeMessage.put("transactionAmount", tradeRecord.getTransactionAmount());
|
|
|
|
- noticeMessage.put("transactionLatitudeLongitude", tradeRecord.getTransactionLatitudeLongitude());
|
|
|
|
- noticeMessage.put("transactionLatitudeLongitudeAddress", tradeRecord.getTransactionLatitudeLongitudeAddress());
|
|
|
|
- noticeMessage.put("transactionLocation", tradeRecord.getTransactionLocation());
|
|
|
|
- noticeMessage.put("transactionTime", tradeRecord.getTransactionTime());
|
|
|
|
- noticeMessage.put("tradeStatus", tradeRecord.getTradeStatus());
|
|
|
|
- noticeMessage.put("message", "您有一笔交易已完成, 请前往确认");
|
|
|
|
|
|
+ noticeMessage.put("otherSideUserId", tradeRecord.getSellerId());
|
|
|
|
+ noticeMessage.put("otherSidePhoneId", sellerPhoneId);
|
|
|
|
+ noticeMessage.put("otherSideName", null == seller ? "" : seller.getUserName());
|
|
|
|
+ noticeMessage.put("otherSideImage", null == seller ? "" : seller.getUserImage());
|
|
|
|
+ noticeMessage.put("message", "您有一笔交易即将开始, 请及时前往查看");
|
|
lifeNotice.setContext(noticeMessage.toJSONString());
|
|
lifeNotice.setContext(noticeMessage.toJSONString());
|
|
lifeNoticeMapper.insert(lifeNotice);
|
|
lifeNoticeMapper.insert(lifeNotice);
|
|
|
|
|
|
// 给买家推送通知
|
|
// 给买家推送通知
|
|
- WebSocketVo webSocketVo = new WebSocketVo();
|
|
|
|
|
|
+ webSocketVo = new WebSocketVo();
|
|
webSocketVo.setSenderId("system");
|
|
webSocketVo.setSenderId("system");
|
|
webSocketVo.setReceiverId(buyerPhoneId);
|
|
webSocketVo.setReceiverId(buyerPhoneId);
|
|
webSocketVo.setCategory("notice");
|
|
webSocketVo.setCategory("notice");
|
|
webSocketVo.setNoticeType("1");
|
|
webSocketVo.setNoticeType("1");
|
|
webSocketVo.setType("5");
|
|
webSocketVo.setType("5");
|
|
- webSocketVo.setIsRead(0);
|
|
|
|
webSocketVo.setText(JSONObject.from(lifeNotice).toJSONString());
|
|
webSocketVo.setText(JSONObject.from(lifeNotice).toJSONString());
|
|
|
|
+ webSocketVo.setMessageId(lifeMessage.getId());
|
|
alienStoreFeign.sendMsgToClientByPhoneId(buyerPhoneId, JSONObject.from(webSocketVo).toJSONString());
|
|
alienStoreFeign.sendMsgToClientByPhoneId(buyerPhoneId, JSONObject.from(webSocketVo).toJSONString());
|
|
|
|
|
|
|
|
+ // 给卖家发送消息
|
|
|
|
+ lifeMessage = new LifeMessage();
|
|
|
|
+ lifeMessage.setSenderId(buyerPhoneId);
|
|
|
|
+ lifeMessage.setReceiverId(sellerPhoneId);
|
|
|
|
+ lifeMessage.setContent(message.toJSONString());
|
|
|
|
+ lifeMessage.setType("5");
|
|
|
|
+ lifeMessageMapper.insert(lifeMessage);
|
|
|
|
+
|
|
|
|
+ // 给卖家推送消息
|
|
|
|
+ webSocketVo = new WebSocketVo();
|
|
|
|
+ webSocketVo.setSenderId(buyerPhoneId);
|
|
|
|
+ webSocketVo.setReceiverId(sellerPhoneId);
|
|
|
|
+ webSocketVo.setCategory("message");
|
|
|
|
+ webSocketVo.setType("5");
|
|
|
|
+ webSocketVo.setText(message.toJSONString());
|
|
|
|
+ webSocketVo.setMessageId(lifeMessage.getId());
|
|
|
|
+ alienStoreFeign.sendMsgToClientByPhoneId(sellerPhoneId, JSONObject.from(webSocketVo).toJSONString());
|
|
|
|
+
|
|
// 给卖家发送通知
|
|
// 给卖家发送通知
|
|
lifeNotice = new LifeNotice();
|
|
lifeNotice = new LifeNotice();
|
|
lifeNotice.setSenderId("system");
|
|
lifeNotice.setSenderId("system");
|
|
lifeNotice.setReceiverId(sellerPhoneId);
|
|
lifeNotice.setReceiverId(sellerPhoneId);
|
|
lifeNotice.setBusinessId(tradeRecord.getId());
|
|
lifeNotice.setBusinessId(tradeRecord.getId());
|
|
- lifeNotice.setTitle("商品是否交易成功");
|
|
|
|
|
|
+ lifeNotice.setTitle("商品交易签到");
|
|
lifeNotice.setNoticeType(1);
|
|
lifeNotice.setNoticeType(1);
|
|
|
|
+ // 封装通知信息
|
|
|
|
+ noticeMessage = new JSONObject();
|
|
|
|
+ noticeMessage.put("tradeId", tradeRecord.getId());
|
|
|
|
+ noticeMessage.put("otherSideUserId", tradeRecord.getBuyerId());
|
|
|
|
+ noticeMessage.put("otherSidePhoneId", buyerPhoneId);
|
|
|
|
+ noticeMessage.put("otherSideName", null == buyer ? "" : buyer.getUserName());
|
|
|
|
+ noticeMessage.put("otherSideImage", null == buyer ? "" : buyer.getUserImage());
|
|
|
|
+ noticeMessage.put("message", "您有一笔交易即将开始, 请及时前往查看");
|
|
lifeNotice.setContext(noticeMessage.toJSONString());
|
|
lifeNotice.setContext(noticeMessage.toJSONString());
|
|
lifeNoticeMapper.insert(lifeNotice);
|
|
lifeNoticeMapper.insert(lifeNotice);
|
|
|
|
|
|
@@ -120,10 +172,10 @@ public class SecondGoodsTradeXxlJob {
|
|
webSocketVo.setCategory("notice");
|
|
webSocketVo.setCategory("notice");
|
|
webSocketVo.setNoticeType("1");
|
|
webSocketVo.setNoticeType("1");
|
|
webSocketVo.setType("5");
|
|
webSocketVo.setType("5");
|
|
- webSocketVo.setIsRead(0);
|
|
|
|
webSocketVo.setText(JSONObject.from(lifeNotice).toJSONString());
|
|
webSocketVo.setText(JSONObject.from(lifeNotice).toJSONString());
|
|
- alienStoreFeign.sendMsgToClientByPhoneId(buyerPhoneId, JSONObject.from(webSocketVo).toJSONString());
|
|
|
|
- }
|
|
|
|
|
|
+ webSocketVo.setMessageId(lifeMessage.getId());
|
|
|
|
+ alienStoreFeign.sendMsgToClientByPhoneId(sellerPhoneId, JSONObject.from(webSocketVo).toJSONString());
|
|
|
|
+// }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -133,16 +185,17 @@ public class SecondGoodsTradeXxlJob {
|
|
@XxlJob("secondTradeConfirm")
|
|
@XxlJob("secondTradeConfirm")
|
|
public void secondTradeConfirm() throws Exception {
|
|
public void secondTradeConfirm() throws Exception {
|
|
try {
|
|
try {
|
|
- LocalDateTime now = LocalDateTime.now().withSecond(0).withNano(0);
|
|
|
|
|
|
+ Date now = Date.from(LocalDateTime.now().withSecond(0).withNano(0).atZone(ZoneId.systemDefault()).toInstant());
|
|
|
|
|
|
// 查询所有待交易
|
|
// 查询所有待交易
|
|
LambdaQueryWrapper<SecondTradeRecord> wrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<SecondTradeRecord> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq(SecondTradeRecord::getTradeStatus, 3);
|
|
wrapper.eq(SecondTradeRecord::getTradeStatus, 3);
|
|
|
|
+ wrapper.eq(SecondTradeRecord::getTransactionTime, now);
|
|
List<SecondTradeRecord> tradeRecordList = secondTradeRecordMapper.selectList(wrapper);
|
|
List<SecondTradeRecord> tradeRecordList = secondTradeRecordMapper.selectList(wrapper);
|
|
|
|
|
|
for (SecondTradeRecord tradeRecord : tradeRecordList) {
|
|
for (SecondTradeRecord tradeRecord : tradeRecordList) {
|
|
- LocalDateTime tenMinutesAgo = tradeRecord.getTransactionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().withSecond(0).withNano(0);
|
|
|
|
- if (now.isEqual(tenMinutesAgo)) {
|
|
|
|
|
|
+// LocalDateTime tenMinutesAgo = tradeRecord.getTransactionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().withSecond(0).withNano(0);
|
|
|
|
+// if (now.isEqual(tenMinutesAgo)) {
|
|
LifeUser buyer = lifeUserMapper.selectById(tradeRecord.getBuyerId());
|
|
LifeUser buyer = lifeUserMapper.selectById(tradeRecord.getBuyerId());
|
|
LifeUser seller = lifeUserMapper.selectById(tradeRecord.getSellerId());
|
|
LifeUser seller = lifeUserMapper.selectById(tradeRecord.getSellerId());
|
|
SecondGoods goods = secondGoodsMapper.selectById(tradeRecord.getGoodsId());
|
|
SecondGoods goods = secondGoodsMapper.selectById(tradeRecord.getGoodsId());
|
|
@@ -203,8 +256,8 @@ public class SecondGoodsTradeXxlJob {
|
|
webSocketVo.setType("5");
|
|
webSocketVo.setType("5");
|
|
webSocketVo.setIsRead(0);
|
|
webSocketVo.setIsRead(0);
|
|
webSocketVo.setText(JSONObject.from(lifeNotice).toJSONString());
|
|
webSocketVo.setText(JSONObject.from(lifeNotice).toJSONString());
|
|
- alienStoreFeign.sendMsgToClientByPhoneId(buyerPhoneId, JSONObject.from(webSocketVo).toJSONString());
|
|
|
|
- }
|
|
|
|
|
|
+ alienStoreFeign.sendMsgToClientByPhoneId(sellerPhoneId, JSONObject.from(webSocketVo).toJSONString());
|
|
|
|
+// }
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
log.error("SecondGoodsTradeXxlJob.secondTradeConfirm Error Mgs={}", e.getMessage());
|
|
log.error("SecondGoodsTradeXxlJob.secondTradeConfirm Error Mgs={}", e.getMessage());
|