mirror of
https://github.com/hpd840321/craftlabs-authorization-sdk.git
synced 2026-06-09 10:00:30 +08:00
feat(m4): add SN batch import with text area dialog
This commit is contained in:
+8
@@ -6,10 +6,12 @@ import cn.craftlabs.platform.api.web.dto.LicenseSnResponse;
|
||||
import cn.craftlabs.platform.api.web.dto.LicenseSnStatusPatchRequest;
|
||||
import cn.craftlabs.platform.api.web.dto.LicenseSnUpdateRequest;
|
||||
import cn.craftlabs.platform.api.web.dto.PageResponse;
|
||||
import cn.craftlabs.platform.api.web.dto.SnBatchImportRequest;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.Max;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PatchMapping;
|
||||
@@ -21,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/license-sns")
|
||||
@@ -65,4 +68,9 @@ public class LicenseSnController {
|
||||
@PathVariable("id") long id, @Valid @RequestBody LicenseSnStatusPatchRequest request) {
|
||||
return licenseSnService.patchStatus(id, request);
|
||||
}
|
||||
|
||||
@PostMapping("/batch-import")
|
||||
public ResponseEntity<Map<String, Object>> batchImport(@RequestBody SnBatchImportRequest request) {
|
||||
return ResponseEntity.ok(licenseSnService.batchImport(request));
|
||||
}
|
||||
}
|
||||
|
||||
+42
@@ -15,6 +15,7 @@ import cn.craftlabs.platform.api.web.dto.LicenseSnResponse;
|
||||
import cn.craftlabs.platform.api.web.dto.LicenseSnStatusPatchRequest;
|
||||
import cn.craftlabs.platform.api.web.dto.LicenseSnUpdateRequest;
|
||||
import cn.craftlabs.platform.api.web.dto.PageResponse;
|
||||
import cn.craftlabs.platform.api.web.dto.SnBatchImportRequest;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -103,6 +104,47 @@ public class LicenseSnService {
|
||||
return toResponse(row);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Map<String, Object> batchImport(SnBatchImportRequest request) {
|
||||
int success = 0;
|
||||
int failed = 0;
|
||||
List<String> errors = new java.util.ArrayList<>();
|
||||
|
||||
for (String snCode : request.getSnCodes()) {
|
||||
try {
|
||||
if (snCode == null || snCode.trim().isEmpty()) {
|
||||
failed++;
|
||||
continue;
|
||||
}
|
||||
var existing = licenseSnMapper.selectOne(
|
||||
Wrappers.lambdaQuery(PlatformLicenseSn.class)
|
||||
.eq(PlatformLicenseSn::getSnCode, snCode.trim()));
|
||||
if (existing != null) {
|
||||
failed++;
|
||||
errors.add("SN " + snCode + " 已存在");
|
||||
continue;
|
||||
}
|
||||
PlatformLicenseSn sn = new PlatformLicenseSn();
|
||||
sn.setSnCode(snCode.trim());
|
||||
sn.setProjectId(request.getProjectId());
|
||||
sn.setContractLineId(request.getContractLineId());
|
||||
sn.setActivationRemark(request.getActivationRemark());
|
||||
sn.setStatus(LicenseSnStatus.REGISTERED.name());
|
||||
licenseSnMapper.insert(sn);
|
||||
success++;
|
||||
} catch (Exception e) {
|
||||
failed++;
|
||||
errors.add("SN " + snCode + ": " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> result = new LinkedHashMap<>();
|
||||
result.put("success", success);
|
||||
result.put("failed", failed);
|
||||
result.put("errors", errors);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public PageResponse<LicenseSnResponse> page(
|
||||
int page, int size, Long projectId, String keyword, String status) {
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package cn.craftlabs.platform.api.web.dto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SnBatchImportRequest {
|
||||
private List<String> snCodes;
|
||||
private Long projectId;
|
||||
private Long contractLineId;
|
||||
private String activationRemark;
|
||||
|
||||
public List<String> getSnCodes() { return snCodes; }
|
||||
public void setSnCodes(List<String> snCodes) { this.snCodes = snCodes; }
|
||||
public Long getProjectId() { return projectId; }
|
||||
public void setProjectId(Long projectId) { this.projectId = projectId; }
|
||||
public Long getContractLineId() { return contractLineId; }
|
||||
public void setContractLineId(Long contractLineId) { this.contractLineId = contractLineId; }
|
||||
public String getActivationRemark() { return activationRemark; }
|
||||
public void setActivationRemark(String activationRemark) { this.activationRemark = activationRemark; }
|
||||
}
|
||||
Reference in New Issue
Block a user