|
|
@@ -3,16 +3,19 @@ package shop.alien.second.service.impl;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import io.swagger.models.auth.In;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import shop.alien.entity.second.SecondRiskControlRecord;
|
|
|
import shop.alien.entity.second.SecondTradeOperation;
|
|
|
import shop.alien.entity.second.SecondTradeRecord;
|
|
|
@@ -23,6 +26,7 @@ import shop.alien.mapper.second.SecondTradeRecordMapper;
|
|
|
import shop.alien.second.service.PlatformSecondTradeService;
|
|
|
import shop.alien.second.service.SecondGoodsService;
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.ArrayList;
|
|
|
@@ -326,4 +330,56 @@ public class PlatformSecondTradeServiceImpl extends ServiceImpl<SecondTradeRecor
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void bannedAccountCancelTrade(Integer userId) throws Exception {
|
|
|
+ try {
|
|
|
+ // 查询封禁信息
|
|
|
+ LambdaQueryWrapper<SecondRiskControlRecord> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(SecondRiskControlRecord::getUserId, userId);
|
|
|
+ wrapper.eq(SecondRiskControlRecord::getRuleType, 1);
|
|
|
+ wrapper.eq(SecondRiskControlRecord::getRiskStatus, 0);
|
|
|
+ List<SecondRiskControlRecord> list = secondRiskControlRecordMapper.selectList(wrapper);
|
|
|
+ List<String> infoList = list.stream().map(SecondRiskControlRecord::getDetailInfo).collect(Collectors.toList());
|
|
|
+ List<JSONArray> array = infoList.stream().map(JSONArray::parseArray).collect(Collectors.toList());
|
|
|
+ List<Integer> idList = new ArrayList<>();
|
|
|
+ for (JSONArray item : array) {
|
|
|
+ idList.addAll(item.toJavaList(Integer.class));
|
|
|
+ }
|
|
|
+ idList = idList.stream().distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 查询需要取消的交易信息
|
|
|
+ LambdaQueryWrapper<SecondTradeRecord> wrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ List<Integer> finalIdList = idList;
|
|
|
+ wrapper1.eq(SecondTradeRecord::getTradeStatus, 3)
|
|
|
+ .and(item -> item.in(SecondTradeRecord::getId, finalIdList)
|
|
|
+ .or(io -> io.eq(SecondTradeRecord::getSellerId, userId)
|
|
|
+ .between(SecondTradeRecord::getTransactionTime, LocalDate.now() + " 00:00:00", LocalDate.now().plusDays(7) + " 23:59:59")));
|
|
|
+// .or(item -> item.eq(SecondTradeRecord::getSellerId, userId)
|
|
|
+// .between(SecondTradeRecord::getTransactionTime, LocalDate.now() + " 00:00:00", LocalDate.now().plusDays(7) + " 23:59:59"));
|
|
|
+ List<SecondTradeRecord> tradeList = secondTradeRecordMapper.selectList(wrapper1);
|
|
|
+ List<Integer> tradeIds = tradeList.stream().map(SecondTradeRecord::getId).distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (CollectionUtil.isEmpty(tradeIds)) return;
|
|
|
+
|
|
|
+ // 取消交易
|
|
|
+ LambdaUpdateWrapper<SecondTradeRecord> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
+ updateWrapper.in(SecondTradeRecord::getId, tradeIds);
|
|
|
+ updateWrapper.set(SecondTradeRecord::getTradeStatus, 6);
|
|
|
+ secondTradeRecordMapper.update(null, updateWrapper);
|
|
|
+
|
|
|
+ // 添加交易操作记录
|
|
|
+ for (Integer id : tradeIds) {
|
|
|
+ SecondTradeOperation operation = new SecondTradeOperation();
|
|
|
+ operation.setTradeId(id);
|
|
|
+ operation.setUserId(0);
|
|
|
+ operation.setType(7);
|
|
|
+ secondTradeOperationMapper.insert(operation);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("PlatformSecondTradeServiceImpl.bannedAccountCancelTrade(): Error Msg={}", e.getMessage());
|
|
|
+ throw new Exception(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|