新增(移动)一些应该放在“管理”形成列表管理,而非放在“设置”形成单一配置的内容

This commit is contained in:
2025-07-03 15:58:27 +08:00
parent 04cf470ead
commit 148583cdaa
52 changed files with 2433 additions and 362 deletions

View File

@@ -0,0 +1,154 @@
package quant.rich.emoney.controller.manage;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import quant.rich.emoney.controller.common.BaseController;
import quant.rich.emoney.entity.sqlite.ProxySetting;
import quant.rich.emoney.exception.RException;
import quant.rich.emoney.pojo.dto.LayPageReq;
import quant.rich.emoney.pojo.dto.LayPageResp;
import quant.rich.emoney.pojo.dto.R;
import quant.rich.emoney.service.sqlite.ProxySettingService;
@Slf4j
@Controller
@RequestMapping("/admin/v1/manage/proxySetting")
public class ProxySettingControllerV1 extends BaseController {
@Autowired
ProxySettingService proxySettingService;
@GetMapping({"", "/", "/index"})
public String index() {
return "/admin/v1/manage/proxySetting/index";
}
@GetMapping("/list")
@ResponseBody
public LayPageResp<?> list(LayPageReq<ProxySetting> pageReq) {
Page<ProxySetting> planPage = proxySettingService.page(pageReq);
return new LayPageResp<>(planPage);
}
@GetMapping("/getOne")
@ResponseBody
public R<?> getOne(String id) {
// 如果 planId 是空,说明可能希望新建一个 ProxySetting需要返回默认实例化对象
if (id == null) {
return R.ok(new ProxySetting());
}
// 否则从数据库取
ProxySetting proxy = proxySettingService.getById(id);
return R.judge(proxy != null, proxy, "无法找到对应 ID 的 ProxySetting");
}
@PostMapping("/updateBool")
@ResponseBody
public R<?> updateBool(String id, String field, Boolean value) {
TableInfo tableInfo = TableInfoHelper.getTableInfo(ProxySetting.class);
try {
Field declaredField = ProxySetting.class.getDeclaredField(field);
Optional<TableFieldInfo> fieldInfo = tableInfo.getFieldList().stream()
.filter(f -> f.getProperty().equals(field))
.findFirst();
if (declaredField.getType().equals(Boolean.class)) {
proxySettingService.update(
new UpdateWrapper<ProxySetting>()
.eq("id", id)
.set(fieldInfo.get().getColumn(), value));
return R.ok();
}
}
catch (Exception e) {}
throw RException.badRequest();
}
@PostMapping("/save")
@ResponseBody
public R<?> save(@RequestBody ProxySetting proxySetting) {
if (!Objects.isNull(proxySetting.getId())) {
proxySettingService.updateById(proxySetting);
}
else {
proxySettingService.save(proxySetting.setId(null));
}
return R.ok();
}
@PostMapping("/delete")
@ResponseBody
public R<?> delete(String id) {
return R.judge(proxySettingService.removeById(id), "删除失败,是否已删除?");
}
@PostMapping("/batchOp")
@ResponseBody
public R<?> batchOp(
@RequestParam(value="ids[]", required=true)
String[] ids, ProxySettingBatchOp op) {
if (Objects.isNull(ids) || ids.length == 0) {
throw RException.badRequest("提供的计划 ID 不能为空");
}
List<String> idArray = Arrays.asList(ids);
if (op == null) {
// op 为空是删除
throw RException.badRequest("操作类型不能为空");
}
else if (ProxySettingBatchOp.DELETE == op) {
return R.judge(
proxySettingService.removeBatchByIds(idArray));
}
LambdaUpdateWrapper<ProxySetting> uw = new LambdaUpdateWrapper<>();
uw.in(ProxySetting::getId, idArray);
switch (op) {
case CHECK:
// TODO: 检查连通性
break;
case DISABLE_HTTPS_VERIFY:
uw.set(ProxySetting::getIgnoreHttpsVerification, false);
break;
case ENABLE_HTTP_VERIFY:
uw.set(ProxySetting::getIgnoreHttpsVerification, true);
break;
default:
throw RException.badRequest("未知操作");
}
return R.judge(() -> proxySettingService.update(uw));
}
private static enum ProxySettingBatchOp {
DELETE,
CHECK,
DISABLE_HTTPS_VERIFY,
ENABLE_HTTP_VERIFY
}
}