|
@@ -1,5 +1,6 @@
|
|
|
package shop.alien.second.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
@@ -8,9 +9,15 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import shop.alien.entity.second.SecondGoods;
|
|
|
import shop.alien.entity.second.SecondTradeRecord;
|
|
|
+import shop.alien.entity.second.vo.SecondTradeRecordVo;
|
|
|
+import shop.alien.entity.store.LifeMessage;
|
|
|
+import shop.alien.entity.store.LifeUser;
|
|
|
+import shop.alien.entity.store.vo.WebsocketVo;
|
|
|
import shop.alien.mapper.LifeMessageMapper;
|
|
|
+import shop.alien.mapper.LifeUserMapper;
|
|
|
import shop.alien.mapper.second.SecondGoodsMapper;
|
|
|
import shop.alien.mapper.second.SecondTradeRecordMapper;
|
|
|
+import shop.alien.second.feign.AlienStoreFeign;
|
|
|
import shop.alien.second.service.SecondTradeRecordService;
|
|
|
import shop.alien.util.common.JwtUtil;
|
|
|
|
|
@@ -33,15 +40,17 @@ public class SecondTradeRecordServiceImpl extends ServiceImpl<SecondTradeRecordM
|
|
|
private final SecondTradeRecordMapper secondTradeRecordMapper;
|
|
|
private final SecondGoodsMapper secondGoodsMapper;
|
|
|
private final LifeMessageMapper lifeMessageMapper;
|
|
|
+ private final LifeUserMapper lifeUserMapper;
|
|
|
+ private final AlienStoreFeign alienStoreFeign;
|
|
|
|
|
|
@Override
|
|
|
- public List<SecondTradeRecord> getTradeRecord(int sideId) throws Exception {
|
|
|
+ public List<SecondTradeRecordVo> getTradeRecord(int sideId) throws Exception {
|
|
|
try {
|
|
|
int userId = Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getInteger("userId");
|
|
|
- QueryWrapper<SecondTradeRecord> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.apply("(buyer_id = '" + sideId + "' and seller_id = '" + userId + "') || (buyer_id = '" + userId + "' and seller_id = '" + sideId + "')");
|
|
|
- wrapper.orderByDesc("created_time");
|
|
|
- return secondTradeRecordMapper.selectList(wrapper);
|
|
|
+ QueryWrapper<SecondTradeRecordVo> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.apply("(trade.buyer_id = '" + sideId + "' and trade.seller_id = '" + userId + "') || (trade.buyer_id = '" + userId + "' and trade.seller_id = '" + sideId + "')");
|
|
|
+ wrapper.orderByDesc("trade.created_time");
|
|
|
+ return secondTradeRecordMapper.getTradeRecord(wrapper);
|
|
|
} catch (Exception e) {
|
|
|
log.error("SecondTradeRecordServiceImpl.getTradeRecord Error Mgs={}", e.getMessage());
|
|
|
throw new Exception(e);
|
|
@@ -50,17 +59,65 @@ public class SecondTradeRecordServiceImpl extends ServiceImpl<SecondTradeRecordM
|
|
|
|
|
|
/**
|
|
|
* 创建交易
|
|
|
- * @param entity 交易记录对象
|
|
|
+ * @param trade 交易记录对象
|
|
|
* @return 操作结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public boolean createTrade(SecondTradeRecord entity) throws Exception {
|
|
|
+ public boolean createTrade(SecondTradeRecord trade) throws Exception {
|
|
|
try {
|
|
|
- secondTradeRecordMapper.insert(entity);
|
|
|
+ // 保存交易记录
|
|
|
+ secondTradeRecordMapper.insert(trade);
|
|
|
+
|
|
|
+ // 商品更新交易id
|
|
|
SecondGoods goods = new SecondGoods();
|
|
|
- goods.setId(entity.getGoodsId());
|
|
|
- goods.setTradeId(entity.getId());
|
|
|
+ goods.setId(trade.getGoodsId());
|
|
|
+ goods.setTradeId(trade.getId());
|
|
|
secondGoodsMapper.updateById(goods);
|
|
|
+
|
|
|
+ // 查询商品
|
|
|
+ goods = secondGoodsMapper.selectById(trade.getGoodsId());
|
|
|
+
|
|
|
+ // 封装交易信息
|
|
|
+ JSONObject message = new JSONObject();
|
|
|
+ message.put("title", goods.getTitle());
|
|
|
+ message.put("homeImage", goods.getHomeImage());
|
|
|
+ message.put("tradeId", trade.getId());
|
|
|
+ message.put("transactionAmount", trade.getTransactionAmount());
|
|
|
+ message.put("transactionLatitudeLongitude", trade.getTransactionLatitudeLongitude());
|
|
|
+ message.put("transactionLatitudeLongitudeAddress", trade.getTransactionLatitudeLongitudeAddress());
|
|
|
+ message.put("transactionLocation", trade.getTransactionLocation());
|
|
|
+ message.put("transactionTime", trade.getTransactionTime());
|
|
|
+ message.put("tradeStatus", 1);
|
|
|
+
|
|
|
+ // 发起交易人信息
|
|
|
+ Integer userId = Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getInteger("userId");
|
|
|
+ String phoneId = JwtUtil.getCurrentUserInfo().getString("userType") + "_" + JwtUtil.getCurrentUserInfo().getString("phone");
|
|
|
+
|
|
|
+ // 获取交易对方信息
|
|
|
+ LifeUser lifeUser = lifeUserMapper.selectById(Objects.equals(userId, trade.getBuyerId()) ? trade.getSellerId() : trade.getBuyerId());
|
|
|
+ String receiverId = "user_" + lifeUser.getUserPhone();
|
|
|
+
|
|
|
+ // 消息
|
|
|
+ LifeMessage lifeMessage = new LifeMessage();
|
|
|
+ lifeMessage.setSenderId(phoneId);
|
|
|
+ lifeMessage.setReceiverId(receiverId);
|
|
|
+ lifeMessage.setType("4");
|
|
|
+ lifeMessage.setContent(message.toJSONString());
|
|
|
+ lifeMessageMapper.insert(lifeMessage);
|
|
|
+
|
|
|
+ // 给买家与卖家发送交易消息
|
|
|
+// WebsocketVo websocketVo = new WebsocketVo();
|
|
|
+// websocketVo.setSenderId(phoneId);
|
|
|
+// websocketVo.setReceiverId("user_" + lifeUser.getUserPhone());
|
|
|
+// websocketVo.setCategory("message");
|
|
|
+// websocketVo.setType("4");
|
|
|
+// websocketVo.setText(message.toJSONString());
|
|
|
+// websocketVo.setMessageId(lifeMessage.getId());
|
|
|
+
|
|
|
+ // 给买家与卖家发送交易消息
|
|
|
+ alienStoreFeign.sendMsgToClientByPhoneId(phoneId, phoneId, receiverId, "message", "4", message.toJSONString(), lifeMessage.getId());
|
|
|
+ alienStoreFeign.sendMsgToClientByPhoneId(receiverId, phoneId, receiverId, "message", "4", message.toJSONString(), lifeMessage.getId());
|
|
|
+
|
|
|
return true;
|
|
|
} catch (Exception e) {
|
|
|
log.error("SecondTradeRecordServiceImpl.createTrade Error Mgs={}", e.getMessage());
|
|
@@ -155,7 +212,7 @@ public class SecondTradeRecordServiceImpl extends ServiceImpl<SecondTradeRecordM
|
|
|
SecondTradeRecord record = new SecondTradeRecord();
|
|
|
record.setId(tradeId);
|
|
|
record.setTradeStatus(3);
|
|
|
- record.setCancelId(userId);
|
|
|
+ record.setCancelUserId(userId);
|
|
|
record.setCancelReason(cancelReason);
|
|
|
record.setCancelReasonSupplement(cancelReasonSupplement);
|
|
|
return secondTradeRecordMapper.updateById(record) > 0;
|