diff --git a/ruoyi-office/src/main/java/com/ruoyi/office/controller/TtCopyTemplateController.java b/ruoyi-office/src/main/java/com/ruoyi/office/controller/TtCopyTemplateController.java new file mode 100644 index 0000000..7b1001a --- /dev/null +++ b/ruoyi-office/src/main/java/com/ruoyi/office/controller/TtCopyTemplateController.java @@ -0,0 +1,106 @@ +package com.ruoyi.office.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.office.domain.TtCopyTemplate; +import com.ruoyi.office.service.ITtCopyTemplateService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 文案模板Controller + * + * @author ruoyi + * @date 2026-04-10 + */ +@RestController +@RequestMapping("/office/copyTemplate") +public class TtCopyTemplateController extends BaseController { + + @Autowired + private ITtCopyTemplateService ttCopyTemplateService; + + /** + * 查询文案模板列表 + */ + @PreAuthorize("@ss.hasPermi('office:copyTemplate:list')") + @GetMapping("/list") + public TableDataInfo list(TtCopyTemplate ttCopyTemplate) { + startPage(); + List list = ttCopyTemplateService.selectTtCopyTemplateList(ttCopyTemplate); + return getDataTable(list); + } + + /** + * 查询所有启用的文案模板(供源码明细页动态按钮使用,无需分页权限) + */ + @GetMapping("/enabled") + public AjaxResult listEnabled() { + return success(ttCopyTemplateService.selectEnabledTemplates()); + } + + /** + * 导出文案模板列表 + */ + @PreAuthorize("@ss.hasPermi('office:copyTemplate:export')") + @Log(title = "文案模板", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, TtCopyTemplate ttCopyTemplate) { + List list = ttCopyTemplateService.selectTtCopyTemplateList(ttCopyTemplate); + ExcelUtil util = new ExcelUtil(TtCopyTemplate.class); + util.exportExcel(response, list, "文案模板数据"); + } + + /** + * 获取文案模板详细信息 + */ + @PreAuthorize("@ss.hasPermi('office:copyTemplate:query')") + @GetMapping(value = "/{templateId}") + public AjaxResult getInfo(@PathVariable("templateId") Long templateId) { + return success(ttCopyTemplateService.selectTtCopyTemplateByTemplateId(templateId)); + } + + /** + * 新增文案模板 + */ + @PreAuthorize("@ss.hasPermi('office:copyTemplate:add')") + @Log(title = "文案模板", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody TtCopyTemplate ttCopyTemplate) { + return toAjax(ttCopyTemplateService.insertTtCopyTemplate(ttCopyTemplate)); + } + + /** + * 修改文案模板 + */ + @PreAuthorize("@ss.hasPermi('office:copyTemplate:edit')") + @Log(title = "文案模板", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody TtCopyTemplate ttCopyTemplate) { + return toAjax(ttCopyTemplateService.updateTtCopyTemplate(ttCopyTemplate)); + } + + /** + * 删除文案模板 + */ + @PreAuthorize("@ss.hasPermi('office:copyTemplate:remove')") + @Log(title = "文案模板", businessType = BusinessType.DELETE) + @DeleteMapping("/{templateIds}") + public AjaxResult remove(@PathVariable Long[] templateIds) { + return toAjax(ttCopyTemplateService.deleteTtCopyTemplateByTemplateIds(templateIds)); + } +} \ No newline at end of file diff --git a/ruoyi-office/src/main/java/com/ruoyi/office/domain/TtCopyTemplate.java b/ruoyi-office/src/main/java/com/ruoyi/office/domain/TtCopyTemplate.java new file mode 100644 index 0000000..b8e9ca2 --- /dev/null +++ b/ruoyi-office/src/main/java/com/ruoyi/office/domain/TtCopyTemplate.java @@ -0,0 +1,88 @@ +package com.ruoyi.office.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 文案模板对象 tt_copy_template + * + * @author ruoyi + * @date 2026-04-10 + */ +public class TtCopyTemplate extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 模板ID */ + private Long templateId; + + /** 按钮显示名称 */ + @Excel(name = "按钮名称") + private String templateName; + + /** 文案模板内容,支持 {变量} 占位符 */ + @Excel(name = "模板内容") + private String templateBody; + + /** 排序号 */ + @Excel(name = "排序") + private Integer sortNum; + + /** 状态(0正常 1停用) */ + @Excel(name = "状态") + private String status; + + public void setTemplateId(Long templateId) { + this.templateId = templateId; + } + + public Long getTemplateId() { + return templateId; + } + + public void setTemplateName(String templateName) { + this.templateName = templateName; + } + + public String getTemplateName() { + return templateName; + } + + public void setTemplateBody(String templateBody) { + this.templateBody = templateBody; + } + + public String getTemplateBody() { + return templateBody; + } + + public void setSortNum(Integer sortNum) { + this.sortNum = sortNum; + } + + public Integer getSortNum() { + return sortNum; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatus() { + return status; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("templateId", getTemplateId()) + .append("templateName", getTemplateName()) + .append("templateBody", getTemplateBody()) + .append("sortNum", getSortNum()) + .append("status", getStatus()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} \ No newline at end of file diff --git a/ruoyi-office/src/main/java/com/ruoyi/office/mapper/TtCopyTemplateMapper.java b/ruoyi-office/src/main/java/com/ruoyi/office/mapper/TtCopyTemplateMapper.java new file mode 100644 index 0000000..57c0c5e --- /dev/null +++ b/ruoyi-office/src/main/java/com/ruoyi/office/mapper/TtCopyTemplateMapper.java @@ -0,0 +1,48 @@ +package com.ruoyi.office.mapper; + +import java.util.List; +import com.ruoyi.office.domain.TtCopyTemplate; + +/** + * 文案模板Mapper接口 + * + * @author ruoyi + * @date 2026-04-10 + */ +public interface TtCopyTemplateMapper { + + /** + * 查询文案模板 + */ + public TtCopyTemplate selectTtCopyTemplateByTemplateId(Long templateId); + + /** + * 查询文案模板列表 + */ + public List selectTtCopyTemplateList(TtCopyTemplate ttCopyTemplate); + + /** + * 查询所有启用的文案模板(按排序号升序) + */ + public List selectEnabledTemplates(); + + /** + * 新增文案模板 + */ + public int insertTtCopyTemplate(TtCopyTemplate ttCopyTemplate); + + /** + * 修改文案模板 + */ + public int updateTtCopyTemplate(TtCopyTemplate ttCopyTemplate); + + /** + * 批量删除文案模板 + */ + public int deleteTtCopyTemplateByTemplateIds(Long[] templateIds); + + /** + * 删除文案模板信息 + */ + public int deleteTtCopyTemplateByTemplateId(Long templateId); +} \ No newline at end of file diff --git a/ruoyi-office/src/main/java/com/ruoyi/office/service/ITtCopyTemplateService.java b/ruoyi-office/src/main/java/com/ruoyi/office/service/ITtCopyTemplateService.java new file mode 100644 index 0000000..fd60d16 --- /dev/null +++ b/ruoyi-office/src/main/java/com/ruoyi/office/service/ITtCopyTemplateService.java @@ -0,0 +1,48 @@ +package com.ruoyi.office.service; + +import java.util.List; +import com.ruoyi.office.domain.TtCopyTemplate; + +/** + * 文案模板Service接口 + * + * @author ruoyi + * @date 2026-04-10 + */ +public interface ITtCopyTemplateService { + + /** + * 查询文案模板 + */ + public TtCopyTemplate selectTtCopyTemplateByTemplateId(Long templateId); + + /** + * 查询文案模板列表(带分页、筛选) + */ + public List selectTtCopyTemplateList(TtCopyTemplate ttCopyTemplate); + + /** + * 查询所有启用的文案模板(供源码明细页按钮使用) + */ + public List selectEnabledTemplates(); + + /** + * 新增文案模板 + */ + public int insertTtCopyTemplate(TtCopyTemplate ttCopyTemplate); + + /** + * 修改文案模板 + */ + public int updateTtCopyTemplate(TtCopyTemplate ttCopyTemplate); + + /** + * 批量删除文案模板 + */ + public int deleteTtCopyTemplateByTemplateIds(Long[] templateIds); + + /** + * 删除文案模板信息 + */ + public int deleteTtCopyTemplateByTemplateId(Long templateId); +} \ No newline at end of file diff --git a/ruoyi-office/src/main/java/com/ruoyi/office/service/impl/TtCopyTemplateServiceImpl.java b/ruoyi-office/src/main/java/com/ruoyi/office/service/impl/TtCopyTemplateServiceImpl.java new file mode 100644 index 0000000..514429d --- /dev/null +++ b/ruoyi-office/src/main/java/com/ruoyi/office/service/impl/TtCopyTemplateServiceImpl.java @@ -0,0 +1,59 @@ +package com.ruoyi.office.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.office.domain.TtCopyTemplate; +import com.ruoyi.office.mapper.TtCopyTemplateMapper; +import com.ruoyi.office.service.ITtCopyTemplateService; + +/** + * 文案模板Service业务层处理 + * + * @author ruoyi + * @date 2026-04-10 + */ +@Service +public class TtCopyTemplateServiceImpl implements ITtCopyTemplateService { + + @Autowired + private TtCopyTemplateMapper ttCopyTemplateMapper; + + @Override + public TtCopyTemplate selectTtCopyTemplateByTemplateId(Long templateId) { + return ttCopyTemplateMapper.selectTtCopyTemplateByTemplateId(templateId); + } + + @Override + public List selectTtCopyTemplateList(TtCopyTemplate ttCopyTemplate) { + return ttCopyTemplateMapper.selectTtCopyTemplateList(ttCopyTemplate); + } + + @Override + public List selectEnabledTemplates() { + return ttCopyTemplateMapper.selectEnabledTemplates(); + } + + @Override + public int insertTtCopyTemplate(TtCopyTemplate ttCopyTemplate) { + ttCopyTemplate.setCreateTime(DateUtils.getNowDate()); + return ttCopyTemplateMapper.insertTtCopyTemplate(ttCopyTemplate); + } + + @Override + public int updateTtCopyTemplate(TtCopyTemplate ttCopyTemplate) { + ttCopyTemplate.setUpdateTime(DateUtils.getNowDate()); + return ttCopyTemplateMapper.updateTtCopyTemplate(ttCopyTemplate); + } + + @Override + public int deleteTtCopyTemplateByTemplateIds(Long[] templateIds) { + return ttCopyTemplateMapper.deleteTtCopyTemplateByTemplateIds(templateIds); + } + + @Override + public int deleteTtCopyTemplateByTemplateId(Long templateId) { + return ttCopyTemplateMapper.deleteTtCopyTemplateByTemplateId(templateId); + } +} \ No newline at end of file diff --git a/ruoyi-office/src/main/resources/mapper/office/TtCopyTemplateMapper.xml b/ruoyi-office/src/main/resources/mapper/office/TtCopyTemplateMapper.xml new file mode 100644 index 0000000..bf933eb --- /dev/null +++ b/ruoyi-office/src/main/resources/mapper/office/TtCopyTemplateMapper.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + select template_id, template_name, template_body, sort_num, status, create_time, update_time + from tt_copy_template + + + + + + + + + + insert into tt_copy_template + + template_name, + template_body, + sort_num, + status, + create_time, + update_time, + + + #{templateName}, + #{templateBody}, + #{sortNum}, + #{status}, + #{createTime}, + #{updateTime}, + + + + + update tt_copy_template + + template_name = #{templateName}, + template_body = #{templateBody}, + sort_num = #{sortNum}, + status = #{status}, + update_time = #{updateTime}, + + where template_id = #{templateId} + + + + delete from tt_copy_template where template_id = #{templateId} + + + + delete from tt_copy_template where template_id in + + #{templateId} + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/api/office/copyTemplate.js b/ruoyi-ui/src/api/office/copyTemplate.js new file mode 100644 index 0000000..5ea6400 --- /dev/null +++ b/ruoyi-ui/src/api/office/copyTemplate.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询文案模板列表 +export function listCopyTemplate(query) { + return request({ + url: '/office/copyTemplate/list', + method: 'get', + params: query + }) +} + +// 查询所有启用的文案模板(源码明细页按钮用) +export function listEnabledTemplates() { + return request({ + url: '/office/copyTemplate/enabled', + method: 'get' + }) +} + +// 查询文案模板详细 +export function getCopyTemplate(templateId) { + return request({ + url: '/office/copyTemplate/' + templateId, + method: 'get' + }) +} + +// 新增文案模板 +export function addCopyTemplate(data) { + return request({ + url: '/office/copyTemplate', + method: 'post', + data: data + }) +} + +// 修改文案模板 +export function updateCopyTemplate(data) { + return request({ + url: '/office/copyTemplate', + method: 'put', + data: data + }) +} + +// 删除文案模板 +export function delCopyTemplate(templateId) { + return request({ + url: '/office/copyTemplate/' + templateId, + method: 'delete' + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/views/office/code/index.vue b/ruoyi-ui/src/views/office/code/index.vue index 416aabb..753230c 100644 --- a/ruoyi-ui/src/views/office/code/index.vue +++ b/ruoyi-ui/src/views/office/code/index.vue @@ -308,13 +308,13 @@ @@ -335,6 +335,7 @@ \ No newline at end of file diff --git a/sql/copy_template.sql b/sql/copy_template.sql new file mode 100644 index 0000000..4516c2d --- /dev/null +++ b/sql/copy_template.sql @@ -0,0 +1,258 @@ +-- ---------------------------- +-- 文案模板表 +-- ---------------------------- +DROP TABLE IF EXISTS tt_copy_template; +CREATE TABLE tt_copy_template ( + template_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '模板ID', + template_name VARCHAR(100) NOT NULL COMMENT '按钮显示名称', + template_body LONGTEXT NOT NULL COMMENT '文案模板内容,支持 {变量} 占位符', + sort_num INT DEFAULT 0 COMMENT '排序号', + status CHAR(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + create_by VARCHAR(64) DEFAULT '' COMMENT '创建者', + create_time DATETIME COMMENT '创建时间', + update_by VARCHAR(64) DEFAULT '' COMMENT '更新者', + update_time DATETIME COMMENT '更新时间', + remark VARCHAR(500) DEFAULT NULL COMMENT '备注', + PRIMARY KEY (template_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文案模板表'; + +-- ---------------------------- +-- 文案模板初始数据 +-- ---------------------------- +INSERT INTO tt_copy_template (template_name, template_body, sort_num, status, create_time, create_by) VALUES + +('复制网站文案', '{codeName} + +#### 项目描述 +{codeDesc} + +#### 运行环境 +{codeEnvironment} + +#### 项目技术 +{codeTechnology} + +#### 项目截图 +{screenshots} + +#### 资源下载 +![](https://img.yidaima.cn/qrcode.jpg) + +请打开微信扫描上面小程序码,打开小程序搜索 "**{projectCode}**" 即可下载资源', 1, '0', NOW(), 'admin'), + +('复制闲鱼文案', '{codeName} + +### 项目描述 +{codeDesc} + +### 运行环境 +{codeEnvironment} + +### 项目技术 +{codeTechnology} + +标价包含项目源码+数据库脚本+文档,没有调试解答,由于此商品的可复制性,发货后,不退不换,介意勿拍', 2, '0', NOW(), 'admin'), + +('复制闲鱼文案1', '{projectName}|Vue3|Java|SpringBoot|前后端分离|可提供远程调试|项目编号:{projectCode} + +重要‼️:项目源码+环境部署教程+软件安装破解教程+项目运行教程 + +技术 +①:架构: B/S、MVC +②:系统环境:Windows/Mac +③:开发环境:{codeEnvironment} +④:技术栈:{codeTechnology} + +功能 +{codeDesc}', 3, '0', NOW(), 'admin'), + +('复制抖音、视频号、小红书文案', '{codeName} + +### 项目描述 +{codeDesc} + +### 运行环境 +{codeEnvironment} + +### 项目技术 +{codeTechnology} + +获取项目源码资源,\\/X小CX:南音源码库', 4, '0', NOW(), 'admin'), + +('FeastCoding', '![](https://img.yidaima.cn/weicome.gif) +# 项目描述 +#### 视频演示 +{codeDesc} + +# 技术选型 +* 开发工具:Idea + Vscode +* 运行环境:JDK 1.8 + Maven + MySQL 5.7以上 + Node.js 14 +* 服务端技术:SpringBoot + Mybatis-Plus + Maven +* 前端技术:Vue3 + Axios + Element-UI + +# 系统截图 +{screenshots} + +# 运行步骤 +### 准备环境 + 安装JDK 1.8、Maven、Node.js 14 和 MySQL 5.7以上 + +### 创建数据库 + 使用Navicat工具创建数据库并导入SQL脚本 + +### 配置后端 + 修改`application.yml`中的数据库连接信息(用户名/密码/库名) + +### 启动后端服务 + 进入后端项目(`/server_code`) 执行: + ``` + mvn clean install + mvn spring-boot:run + ``` + +### 前端依赖安装 + 进入前端目录(`/manage_code`或者`/client_code`),执行安装命令: + ``` + npm install + ``` + +### 启动前端服务 + 执行启动命令: + ``` + npm run serve + ``` + +### 访问系统 + - 后端接口系统访问地址: + `http://localhost:8080` + - 后台系统前端访问地址: + `http://localhost:8081` + - 前台系统前端访问地址: + `http://localhost:8082` + +### 常见问题 +#### 端口冲突 + - 修改后端配置文件`application.yml` + - 修改前端配置文件`vue.config.js` + +#### 前端安装依赖失败 + - 删除node_modules、package-lock.json文件 + ``` + rm -rf node_modules package-lock.json + ``` + - 清除缓存 + ``` + npm cache clean --force + ``` + - 切换npm镜像源 + ``` + npm config set registry https://registry.npmmirror.com + ``` + +# 推荐阅读 +- [基于Springboot + vue3实现的果树系统](https://mp.weixin.qq.com/s/F7mO-9ENdfKqa89InlPUlg) +- [基于Springboot + vue3实现的个人健康管理系统](https://mp.weixin.qq.com/s/UUUh4S2KfOnRKnLKZLlS3Q) +- [基于Springboot + vue3实现的旅游网站系统](https://mp.weixin.qq.com/s/EY6XVtJXyY5FThfn0PoOew) +- [基于Springboot + vue3实现的房屋租售系统](https://mp.weixin.qq.com/s/tbDCa5504JwOt-ECt3t_Yg) + +# 其他说明 +>* 1、本系统源码由**南音工作室**精心收集整理,并经过严格测试验证,确保运行稳定可靠。 +>* 2、**南音工作室**开始招募合伙人,有兴趣一起搞钱的小伙伴,可以在公众号后台回复关键词【**合伙人**】查看详细介绍。 +>* 3、如需获取详细运行教程,欢迎在公众号后台回复关键词【**运行教程**】,即可自助领取完整指导文档。 +>* 4、我们已为您整理上万套优质源码项目资源,回复【**源码搜索**】即可快速查找您需要的源码资源。 +>* 5、为了回馈粉丝,特意整理了海量福利资源免费分享,回复【**免费资源**】即可领取。 +>* 6、创作不易,如果觉得内容有帮助,别忘了**点赞/推荐/分享/收藏**支持我们,您的鼓励是我们持续更新的最大动力! + +# 源码获取 + +
+ +
+ 长按小程序码,打开小程序搜索 "{projectCode}" 即可获取资源 +
', 5, '0', NOW(), 'admin'), + +('南音', '![](https://img.yidaima.cn/weicome.gif) +### 项目描述 +##### 视频演示 +{codeDesc} + +### 技术选型 +**开发工具**:Idea + Vscode +**运行环境**:JDK 1.8 + Maven + MySQL 5.7以上 + Node.js 14 +**服务端技术**:SpringBoot + Mybatis-Plus + Maven +**前端技术**:Vue3 + Axios + Element-UI + +### 系统截图 +{screenshots} + +### 运行步骤 +##### 准备环境 + 安装JDK 1.8、Maven、Node.js 14 和 MySQL 5.7以上 + +##### 创建数据库 + 使用Navicat工具创建数据库并导入SQL脚本 + +##### 配置后端 + 修改`application.yml`中的数据库连接信息(用户名/密码/库名) + +##### 启动后端服务 + 进入后端项目(`/server_code`) 执行: + ``` + mvn clean install + mvn spring-boot:run + ``` + +##### 前端依赖安装 + 进入前端目录(`/manage_code`或者`/client_code`), 执行安装命令: + ``` + npm install + ``` + +##### 启动前端服务 + 执行启动命令: + ``` + npm run serve + ``` + +##### 访问系统 + - 后端接口系统访问地址:`http://localhost:8080` + - 后台系统前端访问地址:`http://localhost:8081` + - 前台系统前端访问地址:`http://localhost:8082` + +##### 常见问题 +###### 端口冲突 + - 修改后端配置文件`application.yml` + - 修改前端配置文件`vue.config.js` + +###### 前端安装依赖失败 + - 删除node_modules、package-lock.json文件 + ``` + rm -rf node_modules package-lock.json + ``` + - 清除缓存 + ``` + npm cache clean --force + ``` + - 切换npm镜像源 + ``` + npm config set registry https://registry.npmmirror.com + ``` + +### 推荐阅读 +- [基于Springboot + vue3实现的果树系统](https://mp.weixin.qq.com/s/F7mO-9ENdfKqa89InlPUlg) +- [基于Springboot + vue3实现的个人健康管理系统](https://mp.weixin.qq.com/s/UUUh4S2KfOnRKnLKZLlS3Q) +- [基于Springboot + vue3实现的旅游网站系统](https://mp.weixin.qq.com/s/EY6XVtJXyY5FThfn0PoOew) +- [基于Springboot + vue3实现的房屋租售系统](https://mp.weixin.qq.com/s/tbDCa5504JwOt-ECt3t_Yg) + +### 其他说明 +>1、本系统源码由**程序员南音**精心收集整理,并经过严格测试验证,确保运行稳定可靠。 +>2、创作不易,如果觉得内容有帮助,别忘了**点赞/推荐/分享/收藏**支持我们,您的鼓励是我们持续更新的最大动力! +>3、温馨提示:系统可能存在少量待完善功能,欢迎有技术热情的小伙伴共同参与优化改进。 + +# 源码获取 + +
+ +
+ 长按小程序码,打开小程序搜索 "{projectCode}" 即可获取资源 +
', 6, '0', NOW(), 'admin'); \ No newline at end of file