.........

This commit is contained in:
DelLevin-Home
2026-02-05 21:12:23 +08:00
parent 9faa180627
commit d42acb6a02
10 changed files with 0 additions and 643 deletions

View File

@@ -1,120 +0,0 @@
package top.iletter.modules.baitutools.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import top.iletter.common.annotation.LogOperation;
import top.iletter.common.constant.Constant;
import top.iletter.common.page.PageData;
import top.iletter.common.utils.ExcelUtils;
import top.iletter.common.utils.Result;
import top.iletter.common.validator.AssertUtils;
import top.iletter.common.validator.ValidatorUtils;
import top.iletter.common.validator.group.AddGroup;
import top.iletter.common.validator.group.DefaultGroup;
import top.iletter.common.validator.group.UpdateGroup;
import top.iletter.modules.baitutools.dto.DlRenewalRemindDTO;
import top.iletter.modules.baitutools.excel.DlRenewalRemindExcel;
import top.iletter.modules.baitutools.service.DlRenewalRemindService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import jakarta.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 临期续费
*
* @author dellevin dellevin99@gmail.com
* @since 1.0.0 2026-02-04
*/
@RestController
@RequestMapping("baitutools/dlrenewalremind")
@Tag(name="临期续费")
public class DlRenewalRemindController {
private static final Logger log = LoggerFactory.getLogger(DlRenewalRemindController.class);
@Autowired
private DlRenewalRemindService dlRenewalRemindService;
@GetMapping("page")
@Operation(summary = "分页")
@Parameters({
@Parameter(name = Constant.PAGE, description = "当前页码从1开始", in = ParameterIn.QUERY, required = true, ref="int") ,
@Parameter(name = Constant.LIMIT, description = "每页显示记录数", in = ParameterIn.QUERY,required = true, ref="int") ,
@Parameter(name = Constant.ORDER_FIELD, description = "排序字段", in = ParameterIn.QUERY, ref="String") ,
@Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)", in = ParameterIn.QUERY, ref="String"),
@Parameter(name = "名称", description = "名称搜索", in = ParameterIn.QUERY, ref="String")
})
@RequiresPermissions("baitutools:dlrenewalremind:page")
public Result<PageData<DlRenewalRemindDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params){
PageData<DlRenewalRemindDTO> page = dlRenewalRemindService.page(params);
return new Result<PageData<DlRenewalRemindDTO>>().ok(page);
}
@GetMapping("{id}")
@Operation(summary = "信息")
@RequiresPermissions("baitutools:dlrenewalremind:info")
public Result<DlRenewalRemindDTO> get(@PathVariable("id") Long id){
DlRenewalRemindDTO data = dlRenewalRemindService.get(id);
return new Result<DlRenewalRemindDTO>().ok(data);
}
@PostMapping
@Operation(summary = "保存")
@LogOperation("保存")
@RequiresPermissions("baitutools:dlrenewalremind:save")
public Result save(@RequestBody DlRenewalRemindDTO dto){
log.info( ">>>>>>>>>"+dto.toString());
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
dlRenewalRemindService.save(dto);
return new Result();
}
@PutMapping
@Operation(summary = "修改")
@LogOperation("修改")
@RequiresPermissions("baitutools:dlrenewalremind:update")
public Result update(@RequestBody DlRenewalRemindDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
dlRenewalRemindService.update(dto);
return new Result();
}
@DeleteMapping
@Operation(summary = "删除")
@LogOperation("删除")
@RequiresPermissions("baitutools:dlrenewalremind:delete")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
dlRenewalRemindService.delete(ids);
return new Result();
}
@GetMapping("export")
@Operation(summary = "导出")
@LogOperation("导出")
@RequiresPermissions("baitutools:dlrenewalremind:export")
public void export(@Parameter(hidden = true) @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<DlRenewalRemindDTO> list = dlRenewalRemindService.list(params);
ExcelUtils.exportExcelToTarget(response, null, "临期续费", list, DlRenewalRemindExcel.class);
}
}

View File

@@ -1,26 +0,0 @@
package top.iletter.modules.baitutools.dao;
import top.iletter.common.dao.BaseDao;
import top.iletter.modules.baitutools.entity.DlRenewalRemindEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
* 临期续费
*
* @author dellevin dellevin99@gmail.com
* @since 1.0.0 2026-02-04
*/
@Mapper
public interface DlRenewalRemindDao extends BaseDao<DlRenewalRemindEntity> {
/**
* 获取信息
* @param params 查询参数 页码: page 每页条数: limit
* 排序字段: orderField 升/降序: order 区域代码: regionCode
* 页面搜索关键字: keyword 供应商名称: supplierName ...
* @return 符合条件的中标信息列表
*/
List<DlRenewalRemindEntity> getList(Map<String, Object> params);
}

View File

@@ -1,68 +0,0 @@
package top.iletter.modules.baitutools.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.SchemaProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 临期续费
*
* @author dellevin dellevin99@gmail.com
* @since 1.0.0 2026-02-04
*/
@Data
@Schema(name = "临期续费")
public class DlRenewalRemindDTO implements Serializable {
private static final long serialVersionUID = 1L;
@SchemaProperty(name = "")
private String id;
@SchemaProperty(name = " 提供商:阿里/腾讯/网易/百度/")
private String provider;
@SchemaProperty(name = "名称")
private String name;
@SchemaProperty(name = "备注")
private String remark;
@SchemaProperty(name = "其他信息json形式")
private String otherInfo;
@SchemaProperty(name = "续费方式1一次性 2月费 3季费 4年费")
private String renewalType;
@SchemaProperty(name = "具体续费日期:每 月/季/年 的XX号 1~31")
private String renewalDate;
@SchemaProperty(name = "到期时间 年-月-日")
private Date expireTime;
@SchemaProperty(name = "预留字段")
private String mark1;
@SchemaProperty(name = "预留字段")
private String mark2;
@SchemaProperty(name = "预留字段")
private String mark3;
@SchemaProperty(name = "")
private Date createDate;
@SchemaProperty(name = "")
private String createUser;
@SchemaProperty(name = "")
private Date updateDate;
@SchemaProperty(name = "")
private String updateUser;
}

View File

@@ -1,83 +0,0 @@
package top.iletter.modules.baitutools.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 临期续费
*
* @author dellevin dellevin99@gmail.com
* @since 1.0.0 2026-02-04
*/
@Data
@TableName("dl_renewal_remind")
public class DlRenewalRemindEntity {
/**
*
*/
private String id;
/**
* 提供商:阿里/腾讯/网易/百度/
*/
private String provider;
/**
* 名称
*/
private String name;
/**
* 备注
*/
private String remark;
/**
* 其他信息json形式
*/
private String otherInfo;
/**
* 续费方式
1一次性
2月费
3季费
4年费
*/
private String renewalType;
/**
* 具体续费日期:每 月/季/年 的XX号 1~31
*/
private String renewalDate;
/**
* 到期时间 年-月-日
*/
private Date expireTime;
/**
* 预留字段
*/
private String mark1;
/**
* 预留字段
*/
private String mark2;
/**
* 预留字段
*/
private String mark3;
/**
*
*/
private Date createDate;
/**
*
*/
private String createUser;
/**
*
*/
private Date updateDate;
/**
*
*/
private String updateUser;
}

View File

@@ -1,50 +0,0 @@
package top.iletter.modules.baitutools.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.util.Date;
/**
* 临期续费
*
* @author dellevin dellevin99@gmail.com
* @since 1.0.0 2026-02-04
*/
@Data
public class DlRenewalRemindExcel {
@ExcelProperty(value = "")
private String id;
@ExcelProperty(value = "提供商:阿里/腾讯/网易/百度/")
private String provider;
@ExcelProperty(value = "名称")
private String name;
@ExcelProperty(value = "备注")
private String remark;
@ExcelProperty(value = "其他信息json形式")
private String otherInfo;
@ExcelProperty(value = "续费方式1一次性 2月费 3季费 4年费")
private String renewalType;
@ExcelProperty(value = "具体续费日期:每 月/季/年 的XX号 1~31")
private String renewalDate;
@ExcelProperty(value = "到期时间 年-月-日")
private Date expireTime;
@ExcelProperty(value = "预留字段")
private String mark1;
@ExcelProperty(value = "预留字段")
private String mark2;
@ExcelProperty(value = "预留字段")
private String mark3;
@ExcelProperty(value = "")
private Date createDate;
@ExcelProperty(value = "")
private String createUser;
@ExcelProperty(value = "")
private Date updateDate;
@ExcelProperty(value = "")
private String updateUser;
}

View File

@@ -1,15 +0,0 @@
package top.iletter.modules.baitutools.service;
import top.iletter.common.service.CrudService;
import top.iletter.modules.baitutools.dto.DlRenewalRemindDTO;
import top.iletter.modules.baitutools.entity.DlRenewalRemindEntity;
/**
* 临期续费
*
* @author dellevin dellevin99@gmail.com
* @since 1.0.0 2026-02-04
*/
public interface DlRenewalRemindService extends CrudService<DlRenewalRemindEntity, DlRenewalRemindDTO> {
}

View File

@@ -1,43 +0,0 @@
package top.iletter.modules.baitutools.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import top.iletter.common.page.PageData;
import top.iletter.common.service.impl.CrudServiceImpl;
import top.iletter.modules.baitutools.dao.DlRenewalRemindDao;
import top.iletter.modules.baitutools.dto.DlRenewalRemindDTO;
import top.iletter.modules.baitutools.entity.DlRenewalRemindEntity;
import top.iletter.modules.baitutools.service.DlRenewalRemindService;
import cn.hutool.core.util.StrUtil;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* 临期续费
*
* @author dellevin dellevin99@gmail.com
* @since 1.0.0 2026-02-04
*/
@Service
public class DlRenewalRemindServiceImpl extends CrudServiceImpl<DlRenewalRemindDao, DlRenewalRemindEntity, DlRenewalRemindDTO> implements DlRenewalRemindService {
@Override
public QueryWrapper<DlRenewalRemindEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get("id");
QueryWrapper<DlRenewalRemindEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StrUtil.isNotBlank(id), "id", id);
return wrapper;
}
@Override
public PageData<DlRenewalRemindDTO> page(Map<String, Object> params) {
IPage<DlRenewalRemindEntity> page = getPage(params, "create_date", false);
List<DlRenewalRemindEntity> list = baseDao.getList(params);
return getPageData(list, page.getTotal(), DlRenewalRemindDTO.class);
}
}

View File

@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="top.iletter.modules.baitutools.dao.DlRenewalRemindDao">
<resultMap type="top.iletter.modules.baitutools.entity.DlRenewalRemindEntity" id="dlRenewalRemindMap">
<result property="id" column="id"/>
<result property="provider" column="provider"/>
<result property="name" column="name"/>
<result property="remark" column="remark"/>
<result property="otherInfo" column="other_info"/>
<result property="renewalType" column="renewal_type"/>
<result property="renewalDate" column="renewal_date"/>
<result property="expireTime" column="expire_time"/>
<result property="mark1" column="mark1"/>
<result property="mark2" column="mark2"/>
<result property="mark3" column="mark3"/>
<result property="createDate" column="create_date"/>
<result property="createUser" column="create_user"/>
<result property="updateDate" column="update_date"/>
<result property="updateUser" column="update_user"/>
</resultMap>
<!-- 获取分页查询 -->
<select id="getList" resultType="top.iletter.modules.baitutools.entity.DlRenewalRemindEntity">
SELECT * FROM dl_renewal_remind
<where>
<if test="keywordName != null and keywordName.trim() != ''">
AND locate(#{keywordName} , `name` )
</if>
</where>
</select>
</mapper>

View File

@@ -1,142 +0,0 @@
<template>
<el-dialog v-model="visible" :title="!dataForm.id ? '新增' : '修改'" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="rules" ref="dataFormRef" @keyup.enter="dataFormSubmitHandle()" label-width="120px">
<el-form-item label=" 提供商" prop="provider">
<el-input v-model="dataForm.provider" placeholder=" 提供商:阿里/腾讯/网易/百度/"></el-input>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input v-model="dataForm.name" placeholder="名称"></el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="dataForm.remark" placeholder="备注"></el-input>
</el-form-item>
<el-form-item label="续费方式" prop="renewalType">
<el-select v-model="dataForm.renewalType" placeholder="请选择续费方式" style="width: 240px">
<el-option v-for="item in renewalType" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="续费日" prop="renewalDate">
<el-input-number v-model="dataForm.renewalDate" :min="1" :max="29" placeholder="具体续费日期 (1-29)" style="width: 100%" />
</el-form-item>
<el-form-item label="到期时间" prop="expireTime">
<el-date-picker v-model="dataForm.expireTime" type="datetime" placeholder="选择到期时间" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
</el-form-item>
<el-form-item label="其他信息" prop="otherInfo">
<el-input v-model="dataForm.otherInfo" placeholder="其他信息json形式"></el-input>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">确定</el-button>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { reactive, ref, computed } from "vue";
import baseService from "@/service/baseService";
import { ElMessage } from "element-plus";
import { useAppStore } from "@/store";
import { getDictDataList } from "@/utils/utils";
const store = useAppStore();
const renewalType = getDictDataList(store.state.dicts, "renewal_type");
const emit = defineEmits(["refreshDataList"]);
const visible = ref(false);
const dataFormRef = ref();
const dataForm = reactive({
id: "",
provider: "",
name: "",
remark: "",
otherInfo: "",
renewalType: "",
renewalDate: null as number | null,
expireTime: "",
createDate: "",
createUser: "",
updateDate: "",
updateUser: ""
});
const getRules = () => ({
provider: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
name: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
remark: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
renewalType: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
renewalDate:
dataForm.renewalType !== "1"
? [
{ required: true, message: "续费日不能为空", trigger: "blur" },
{ type: "number", min: 1, max: 29, message: "日期必须在1到29之间", trigger: "blur" }
]
: [{ type: "number", min: 1, max: 29, message: "日期必须在1到29之间", trigger: "blur" }],
expireTime: [{ required: true, message: "到期时间不能为空", trigger: "blur" }]
});
// 使用 computed 属性,使其响应式
const rules = computed(() => getRules());
const init = (id?: number) => {
visible.value = true;
dataForm.id = "";
// 重置表单数据
if (dataFormRef.value) {
dataFormRef.value.resetFields();
}
if (id) {
getInfo(id);
}
};
// 获取信息
const getInfo = (id: number) => {
baseService.get("/baitutools/dlrenewalremind/" + id).then((res) => {
const { data } = res; // 解构出 data 对象
// --- 新增处理逻辑 ---
if (data.hasOwnProperty("renewalDate")) {
if (typeof data.renewalDate === "string") {
const parsed = parseInt(data.renewalDate, 10);
data.renewalDate = isNaN(parsed) ? null : parsed;
} else if (typeof data.renewalDate === "number") {
data.renewalDate = data.renewalDate
} else {
data.renewalDate = null;
}
}
// 将处理后的 data 对象合并到 dataForm
Object.assign(dataForm, data);
});
};
// 表单提交
const dataFormSubmitHandle = () => {
dataFormRef.value.validate((valid: boolean) => {
if (!valid) {
return false;
}
(!dataForm.id ? baseService.post : baseService.put)("/baitutools/dlrenewalremind", dataForm).then((res) => {
ElMessage.success({
message: "成功",
duration: 500,
onClose: () => {
visible.value = false;
emit("refreshDataList");
}
});
});
});
};
defineExpose({
init
});
</script>

View File

@@ -1,63 +0,0 @@
<template>
<div class="mod-baitutools__dlrenewalremind">
<el-form :inline="true" :model="state.dataForm" @keyup.enter="state.getDataList()">
<el-form-item>
<el-input v-model="state.dataForm.keywordName" placeholder="名称" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="state.getDataList()">查询</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="state.hasPermission('baitutools:dlrenewalremind:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="state.hasPermission('baitutools:dlrenewalremind:delete')" type="danger" @click="state.deleteHandle()">删除</el-button>
</el-form-item>
</el-form>
<el-table v-loading="state.dataListLoading" :data="state.dataList" border @selection-change="state.dataListSelectionChangeHandle" style="width: 100%">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="provider" label=" 提供商" header-align="center" align="center"></el-table-column>
<el-table-column prop="name" label="名称" header-align="center" align="center"></el-table-column>
<el-table-column prop="remark" label="备注" header-align="center" align="center"></el-table-column>
<el-table-column prop="otherInfo" label="其他信息" header-align="center" align="center"></el-table-column>
<el-table-column prop="renewalType" label="续费方式" header-align="center" align="center"></el-table-column>
<el-table-column prop="renewalDate" label="具体续费日期" width="130" header-align="center" align="center"></el-table-column>
<el-table-column prop="expireTime" label="到期时间" header-align="center" align="center"></el-table-column>
<el-table-column label="操作" fixed="right" header-align="center" align="center" width="150">
<template v-slot="scope">
<el-button v-if="state.hasPermission('baitutools:dlrenewalremind:update')" type="primary" link @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
<el-button v-if="state.hasPermission('baitutools:dlrenewalremind:delete')" type="primary" link @click="state.deleteHandle(scope.row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="state.page" :page-sizes="[10, 20, 50, 100]" :page-size="state.limit" :total="state.total" layout="total, sizes, prev, pager, next, jumper" @size-change="state.pageSizeChangeHandle" @current-change="state.pageCurrentChangeHandle"> </el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update ref="addOrUpdateRef" @refreshDataList="state.getDataList">确定</add-or-update>
</div>
</template>
<script lang="ts" setup>
import useView from "@/hooks/useView";
import { reactive, ref, toRefs } from "vue";
import AddOrUpdate from "./renewalremind-add-or-update.vue";
const view = reactive({
deleteIsBatch: true,
getDataListURL: "/baitutools/dlrenewalremind/page",
getDataListIsPage: true,
exportURL: "/baitutools/dlrenewalremind/export",
deleteURL: "/baitutools/dlrenewalremind",
dataForm: {
keywordName: "",
}
});
const state = reactive({ ...useView(view), ...toRefs(view) });
const addOrUpdateRef = ref();
const addOrUpdateHandle = (id?: number) => {
addOrUpdateRef.value.init(id);
};
</script>