qrs před 1 měsícem
rodič
revize
a261397f4b

+ 1 - 1
alien-entity/src/main/java/shop/alien/entity/second/SecondRiskControlRecord.java

@@ -33,7 +33,7 @@ public class SecondRiskControlRecord extends Model<SecondRiskControlRecord> {
     @ApiModelProperty(value = "规则名称")
     private String ruleName;
 
-    @TableField("rule_type")
+    @TableField("risk_status")
     @ApiModelProperty(value = "风控执行状态 0 未执行,1-已执行 2-已忽略")
     private Integer riskStatus;
 

+ 7 - 10
alien-entity/src/main/java/shop/alien/entity/second/SecondTradeOperation.java

@@ -1,9 +1,6 @@
 package shop.alien.entity.second;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
@@ -41,21 +38,21 @@ public class SecondTradeOperation extends Model<SecondTradeOperation> {
     @ApiModelProperty(value = "删除标记 0:未删除 1:已删除")
     private Integer deleteFlag;
 
-    @TableField("created_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
     private Date createdTime;
 
-    @TableField("created_user_id")
     @ApiModelProperty(value = "创建人ID")
+    @TableField(value = "created_user_id", fill = FieldFill.INSERT)
     private Integer createdUserId;
 
-    @TableField("updated_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @ApiModelProperty(value = "修改时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
     private Date updatedTime;
 
-    @TableField("updated_user_id")
     @ApiModelProperty(value = "修改人ID")
+    @TableField(value = "updated_user_id", fill = FieldFill.INSERT_UPDATE)
     private Integer updatedUserId;
 }

+ 9 - 0
alien-second/src/main/java/shop/alien/second/platform/PlatformSecondTradeController.java

@@ -73,4 +73,13 @@ public class PlatformSecondTradeController {
         return R.data(secondTradeRecordService.getTradeRecordListByRiskId(id));
     }
 
+    @ApiOperation("封禁账号取消交易")
+    @ApiOperationSupport(order = 7)
+    @GetMapping("/bannedAccountCancelTrade")
+    public R<Boolean> bannedAccountCancelTrade(Integer userId) throws Exception {
+        log.info("PlatformSecondTradeController.bannedAccountCancelTrade?userId={}", userId);
+        secondTradeRecordService.bannedAccountCancelTrade(userId);
+        return R.success("操作成功");
+    }
+
 }

+ 2 - 0
alien-second/src/main/java/shop/alien/second/service/PlatformSecondTradeService.java

@@ -25,4 +25,6 @@ public interface PlatformSecondTradeService extends IService<SecondTradeRecord>
     void setTradeFailure(Integer tradeId, String failureReason) throws Exception;
 
     List<SecondTradeRecordVo> getTradeRecordListByRiskId(Integer id) throws Exception;
+
+    void bannedAccountCancelTrade(Integer userId) throws Exception;
 }

+ 56 - 0
alien-second/src/main/java/shop/alien/second/service/impl/PlatformSecondTradeServiceImpl.java

@@ -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);
+        }
+    }
+
 }